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.
5 #ifndef CONTENT_PUBLIC_RENDERER_RENDER_VIEW_H_
6 #define CONTENT_PUBLIC_RENDERER_RENDER_VIEW_H_
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"
18 struct WebPreferences
;
28 struct WebContextMenuData
;
38 class RenderViewVisitor
;
41 class CONTENT_EXPORT RenderView
: public IPC::Sender
{
43 // Returns the RenderView containing the given WebView.
44 static RenderView
* FromWebView(blink::WebView
* webview
);
46 // Returns the RenderView for the given routing ID.
47 static RenderView
* FromRoutingID(int routing_id
);
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
);
53 // Returns the main RenderFrame.
54 virtual RenderFrame
* GetMainRenderFrame() = 0;
56 // Get the routing ID of the view.
57 virtual int GetRoutingID() const = 0;
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;
67 // Returns the size of the view.
68 virtual gfx::Size
GetSize() const = 0;
70 // Gets WebKit related preferences associated with this view.
71 virtual WebPreferences
& GetWebkitPreferences() = 0;
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;
77 // Returns the associated WebView. May return NULL when the view is closing.
78 virtual blink::WebView
* GetWebView() = 0;
80 // Gets the focused element. If no such element exists then
81 // the element will be Null.
82 virtual blink::WebElement
GetFocusedElement() const = 0;
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;
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;
92 // Bitwise-ORed set of extra bindings that have been enabled. See
93 // BindingsPolicy for details.
94 virtual int GetEnabledBindings() const = 0;
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;
101 // Filtered time per frame based on UpdateRect messages.
102 virtual float GetFilteredTimePerFrame() const = 0;
104 // Returns the current visibility of the WebView.
105 virtual blink::WebPageVisibilityState
GetVisibilityState() const = 0;
107 // Used by plugins that load data in this RenderView to update the loading
109 virtual void DidStartLoading() = 0;
110 virtual void DidStopLoading() = 0;
112 // Notifies the renderer that a paint is to be generated for the size
114 virtual void Repaint(const gfx::Size
& size
) = 0;
116 // Inject edit commands to be used for the next keyboard event.
117 virtual void SetEditCommandForNextKeyEvent(const std::string
& name
,
118 const std::string
& value
) = 0;
119 virtual void ClearEditCommands() = 0;
121 // Returns a collection of security info about |frame|.
122 virtual SSLStatus
GetSSLStatusOfFrame(blink::WebFrame
* frame
) const = 0;
124 // Returns |renderer_preferences_.accept_languages| value.
125 virtual const std::string
& GetAcceptLanguages() const = 0;
127 #if defined(OS_ANDROID)
128 virtual void UpdateTopControlsState(TopControlsState constraints
,
129 TopControlsState current
,
134 virtual ~RenderView() {}
137 // This interface should only be implemented inside content.
138 friend class RenderViewImpl
;
142 } // namespace content
144 #endif // CONTENT_PUBLIC_RENDERER_RENDER_VIEW_H_