Home | History | Annotate | Download | only in renderer
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_PUBLIC_RENDERER_RENDER_VIEW_H_
      6 #define CONTENT_PUBLIC_RENDERER_RENDER_VIEW_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/strings/string16.h"
     12 #include "content/common/content_export.h"
     13 #include "content/public/common/top_controls_state.h"
     14 #include "ipc/ipc_sender.h"
     15 #include "third_party/WebKit/public/web/WebPageVisibilityState.h"
     16 #include "ui/gfx/native_widget_types.h"
     17 
     18 struct WebPreferences;
     19 
     20 namespace blink {
     21 class WebElement;
     22 class WebFrame;
     23 class WebLocalFrame;
     24 class WebNode;
     25 class WebString;
     26 class WebURLRequest;
     27 class WebView;
     28 struct WebContextMenuData;
     29 }
     30 
     31 namespace gfx {
     32 class Size;
     33 }
     34 
     35 namespace content {
     36 
     37 class RenderFrame;
     38 class RenderViewVisitor;
     39 struct SSLStatus;
     40 
     41 class CONTENT_EXPORT RenderView : public IPC::Sender {
     42  public:
     43   // Returns the RenderView containing the given WebView.
     44   static RenderView* FromWebView(blink::WebView* webview);
     45 
     46   // Returns the RenderView for the given routing ID.
     47   static RenderView* FromRoutingID(int routing_id);
     48 
     49   // Visit all RenderViews with a live WebView (i.e., RenderViews that have
     50   // been closed but not yet destroyed are excluded).
     51   static void ForEach(RenderViewVisitor* visitor);
     52 
     53   // Returns the main RenderFrame.
     54   virtual RenderFrame* GetMainRenderFrame() = 0;
     55 
     56   // Get the routing ID of the view.
     57   virtual int GetRoutingID() const = 0;
     58 
     59   // Page IDs allow the browser to identify pages in each renderer process for
     60   // keeping back/forward history in sync.
     61   // Note that this is NOT updated for every main frame navigation, only for
     62   // "regular" navigations that go into session history. In particular, client
     63   // redirects, like the page cycler uses (document.location.href="foo") do not
     64   // count as regular navigations and do not increment the page id.
     65   virtual int GetPageId() const = 0;
     66 
     67   // Returns the size of the view.
     68   virtual gfx::Size GetSize() const = 0;
     69 
     70   // Gets WebKit related preferences associated with this view.
     71   virtual WebPreferences& GetWebkitPreferences() = 0;
     72 
     73   // Overrides the WebKit related preferences associated with this view. Note
     74   // that the browser process may update the preferences at any time.
     75   virtual void SetWebkitPreferences(const WebPreferences& preferences) = 0;
     76 
     77   // Returns the associated WebView. May return NULL when the view is closing.
     78   virtual blink::WebView* GetWebView() = 0;
     79 
     80   // Gets the focused element. If no such element exists then
     81   // the element will be Null.
     82   virtual blink::WebElement GetFocusedElement() const = 0;
     83 
     84   // Returns true if the parameter node is a textfield, text area, a content
     85   // editable div, or has an ARIA role of textbox.
     86   virtual bool IsEditableNode(const blink::WebNode& node) const = 0;
     87 
     88   // Returns true if we should display scrollbars for the given view size and
     89   // false if the scrollbars should be hidden.
     90   virtual bool ShouldDisplayScrollbars(int width, int height) const = 0;
     91 
     92   // Bitwise-ORed set of extra bindings that have been enabled.  See
     93   // BindingsPolicy for details.
     94   virtual int GetEnabledBindings() const = 0;
     95 
     96   // Whether content state (such as form state, scroll position and page
     97   // contents) should be sent to the browser immediately. This is normally
     98   // false, but set to true by some tests.
     99   virtual bool GetContentStateImmediately() const = 0;
    100 
    101   // Returns the current visibility of the WebView.
    102   virtual blink::WebPageVisibilityState GetVisibilityState() const = 0;
    103 
    104   // Used by plugins that load data in this RenderView to update the loading
    105   // notifications.
    106   virtual void DidStartLoading() = 0;
    107   virtual void DidStopLoading() = 0;
    108 
    109   // Notifies the renderer that a paint is to be generated for the size
    110   // passed in.
    111   virtual void Repaint(const gfx::Size& size) = 0;
    112 
    113   // Inject edit commands to be used for the next keyboard event.
    114   virtual void SetEditCommandForNextKeyEvent(const std::string& name,
    115                                              const std::string& value) = 0;
    116   virtual void ClearEditCommands() = 0;
    117 
    118   // Returns a collection of security info about |frame|.
    119   virtual SSLStatus GetSSLStatusOfFrame(blink::WebFrame* frame) const = 0;
    120 
    121   // Returns |renderer_preferences_.accept_languages| value.
    122   virtual const std::string& GetAcceptLanguages() const = 0;
    123 
    124 #if defined(OS_ANDROID)
    125   virtual void UpdateTopControlsState(TopControlsState constraints,
    126                                       TopControlsState current,
    127                                       bool animate) = 0;
    128 #endif
    129 
    130  protected:
    131   virtual ~RenderView() {}
    132 
    133  private:
    134   // This interface should only be implemented inside content.
    135   friend class RenderViewImpl;
    136   RenderView() {}
    137 };
    138 
    139 }  // namespace content
    140 
    141 #endif  // CONTENT_PUBLIC_RENDERER_RENDER_VIEW_H_
    142