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