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: ~RenderView()131 virtual ~RenderView() {} 132 133 private: 134 // This interface should only be implemented inside content. 135 friend class RenderViewImpl; RenderView()136 RenderView() {} 137 }; 138 139 } // namespace content 140 141 #endif // CONTENT_PUBLIC_RENDERER_RENDER_VIEW_H_ 142