render_view.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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
18struct WebPreferences;
19
20namespace blink {
21class WebFrame;
22class WebNode;
23class WebString;
24class WebURLRequest;
25class WebView;
26struct WebContextMenuData;
27}
28
29namespace gfx {
30class Size;
31}
32
33namespace content {
34
35class RenderFrame;
36class RenderViewVisitor;
37struct SSLStatus;
38
39class 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