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 WebFrame;
     22 class WebNode;
     23 class WebString;
     24 class WebURLRequest;
     25 class WebView;
     26 struct WebContextMenuData;
     27 }
     28 
     29 namespace gfx {
     30 class Size;
     31 }
     32 
     33 namespace content {
     34 
     35 class RenderFrame;
     36 class RenderViewVisitor;
     37 struct SSLStatus;
     38 
     39 class CONTENT_EXPORT RenderView : public IPC::Sender {
     40  public:
     41   // Returns the RenderView containing the given WebView.
     42   static RenderView* FromWebView(blink::WebView* webview);
     43 
     44   // Returns the RenderView for the given routing ID.
     45   static RenderView* FromRoutingID(int routing_id);
     46 
     47   // Visit all RenderViews with a live WebView (i.e., RenderViews that have
     48   // been closed but not yet destroyed are excluded).
     49   static void ForEach(RenderViewVisitor* visitor);
     50 
     51   // Returns the main RenderFrame.
     52   virtual RenderFrame* GetMainRenderFrame() = 0;
     53 
     54   // Get the routing ID of the view.
     55   virtual int GetRoutingID() const = 0;
     56 
     57   // Page IDs allow the browser to identify pages in each renderer process for
     58   // keeping back/forward history in sync.
     59   // Note that this is NOT updated for every main frame navigation, only for
     60   // "regular" navigations that go into session history. In particular, client
     61   // redirects, like the page cycler uses (document.location.href="foo") do not
     62   // count as regular navigations and do not increment the page id.
     63   virtual int GetPageId() const = 0;
     64 
     65   // Returns the size of the view.
     66   virtual gfx::Size GetSize() const = 0;
     67 
     68   // Gets WebKit related preferences associated with this view.
     69   virtual WebPreferences& GetWebkitPreferences() = 0;
     70 
     71   // Overrides the WebKit related preferences associated with this view. Note
     72   // that the browser process may update the preferences at any time.
     73   virtual void SetWebkitPreferences(const WebPreferences& preferences) = 0;
     74 
     75   // Returns the associated WebView. May return NULL when the view is closing.
     76   virtual blink::WebView* GetWebView() = 0;
     77 
     78   // Gets the focused node. If no such node exists then the node will be isNull.
     79   virtual blink::WebNode GetFocusedNode() const = 0;
     80 
     81   // Gets the node that the context menu was pressed over.
     82   virtual blink::WebNode GetContextMenuNode() 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   // Evaluates a string of JavaScript in a particular frame.
     89   virtual void EvaluateScript(const base::string16& frame_xpath,
     90                               const base::string16& jscript,
     91                               int id,
     92                               bool notify_result) = 0;
     93 
     94   // Returns true if we should display scrollbars for the given view size and
     95   // false if the scrollbars should be hidden.
     96   virtual bool ShouldDisplayScrollbars(int width, int height) const = 0;
     97 
     98   // Bitwise-ORed set of extra bindings that have been enabled.  See
     99   // BindingsPolicy for details.
    100   virtual int GetEnabledBindings() const = 0;
    101 
    102   // Whether content state (such as form state, scroll position and page
    103   // contents) should be sent to the browser immediately. This is normally
    104   // false, but set to true by some tests.
    105   virtual bool GetContentStateImmediately() const = 0;
    106 
    107   // Filtered time per frame based on UpdateRect messages.
    108   virtual float GetFilteredTimePerFrame() const = 0;
    109 
    110   // Returns the current visibility of the WebView.
    111   virtual blink::WebPageVisibilityState GetVisibilityState() const = 0;
    112 
    113   // Displays a modal alert dialog containing the given message.  Returns
    114   // once the user dismisses the dialog.
    115   virtual void RunModalAlertDialog(blink::WebFrame* frame,
    116                                    const blink::WebString& message) = 0;
    117 
    118   // Used by plugins that load data in this RenderView to update the loading
    119   // notifications.
    120   virtual void DidStartLoading() = 0;
    121   virtual void DidStopLoading() = 0;
    122 
    123   // Notifies the renderer that a paint is to be generated for the size
    124   // passed in.
    125   virtual void Repaint(const gfx::Size& size) = 0;
    126 
    127   // Inject edit commands to be used for the next keyboard event.
    128   virtual void SetEditCommandForNextKeyEvent(const std::string& name,
    129                                              const std::string& value) = 0;
    130   virtual void ClearEditCommands() = 0;
    131 
    132   // Returns a collection of security info about |frame|.
    133   virtual SSLStatus GetSSLStatusOfFrame(blink::WebFrame* frame) const = 0;
    134 
    135   // Returns |renderer_preferences_.accept_languages| value.
    136   virtual const std::string& GetAcceptLanguages() const = 0;
    137 
    138 #if defined(OS_ANDROID)
    139   virtual void UpdateTopControlsState(TopControlsState constraints,
    140                                       TopControlsState current,
    141                                       bool animate) = 0;
    142 #endif
    143 
    144  protected:
    145   virtual ~RenderView() {}
    146 
    147  private:
    148   // This interface should only be implemented inside content.
    149   friend class RenderViewImpl;
    150   RenderView() {}
    151 };
    152 
    153 }  // namespace content
    154 
    155 #endif  // CONTENT_PUBLIC_RENDERER_RENDER_VIEW_H_
    156