Index: content/renderer/render_frame_impl.h |
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h |
index 430fe201434d3a1fb3ae0b28428e6b57142af6de..2c9660dffe4c595a1f53fc41c6a69fa676e83ef7 100644 |
--- a/content/renderer/render_frame_impl.h |
+++ b/content/renderer/render_frame_impl.h |
@@ -1,414 +1,417 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ |
-#define CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ |
- |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/files/file_path.h" |
-#include "base/gtest_prod_util.h" |
-#include "base/id_map.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/observer_list.h" |
-#include "base/process/process_handle.h" |
-#include "base/strings/string16.h" |
-#include "content/public/renderer/render_frame.h" |
-#include "content/renderer/renderer_webcookiejar_impl.h" |
-#include "ipc/ipc_message.h" |
-#include "third_party/WebKit/public/web/WebDataSource.h" |
-#include "third_party/WebKit/public/web/WebFrameClient.h" |
- |
-class TransportDIB; |
-struct FrameMsg_BuffersSwapped_Params; |
-struct FrameMsg_CompositorFrameSwapped_Params; |
-struct FrameMsg_Navigate_Params; |
- |
-namespace blink { |
-class WebInputEvent; |
-class WebMouseEvent; |
-struct WebCompositionUnderline; |
-struct WebContextMenuData; |
-struct WebCursorInfo; |
-} |
- |
-namespace gfx { |
-class Point; |
-class Range; |
-class Rect; |
-} |
- |
-namespace content { |
- |
-class ChildFrameCompositingHelper; |
-class PepperPluginInstanceImpl; |
-class RendererPpapiHost; |
-class RenderFrameObserver; |
-class RenderViewImpl; |
-class RenderWidget; |
-class RenderWidgetFullscreenPepper; |
-struct CustomContextMenuContext; |
- |
-class CONTENT_EXPORT RenderFrameImpl |
- : public RenderFrame, |
- NON_EXPORTED_BASE(public blink::WebFrameClient) { |
- public: |
- // Creates a new RenderFrame. |render_view| is the RenderView object that this |
- // frame belongs to. |
- // Callers *must* call |SetWebFrame| immediately after creation. |
- // TODO(creis): We should structure this so that |SetWebFrame| isn't needed. |
- static RenderFrameImpl* Create(RenderViewImpl* render_view, int32 routing_id); |
- |
- // Just like RenderFrame::FromWebFrame but returns the implementation. |
- static RenderFrameImpl* FromWebFrame(blink::WebFrame* web_frame); |
- |
- // Used by content_layouttest_support to hook into the creation of |
- // RenderFrameImpls. |
- static void InstallCreateHook( |
- RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)); |
- |
- virtual ~RenderFrameImpl(); |
- |
- bool is_swapped_out() const { |
- return is_swapped_out_; |
- } |
- |
- // Out-of-process child frames receive a signal from RenderWidgetCompositor |
- // when a compositor frame has committed. |
- void DidCommitCompositorFrame(); |
- |
- // TODO(jam): this is a temporary getter until all the code is transitioned |
- // to using RenderFrame instead of RenderView. |
- RenderViewImpl* render_view() { return render_view_.get(); } |
- |
- RendererWebCookieJarImpl* cookie_jar() { return &cookie_jar_; } |
- |
- // Returns the RenderWidget associated with this frame. |
- RenderWidget* GetRenderWidget(); |
- |
- // This is called right after creation with the WebFrame for this RenderFrame. |
- void SetWebFrame(blink::WebFrame* web_frame); |
- |
- // Notification from RenderView. |
- virtual void OnStop(); |
- |
- // Start/Stop loading notifications. |
- // TODO(nasko): Those are page-level methods at this time and come from |
- // WebViewClient. We should move them to be WebFrameClient calls and put |
- // logic in the browser side to balance starts/stops. |
- void didStartLoading(); |
- void didStopLoading(); |
- |
-#if defined(ENABLE_PLUGINS) |
- // Notification that a PPAPI plugin has been created. |
- void PepperPluginCreated(RendererPpapiHost* host); |
- |
- // Notifies that |instance| has changed the cursor. |
- // This will update the cursor appearance if it is currently over the plugin |
- // instance. |
- void PepperDidChangeCursor(PepperPluginInstanceImpl* instance, |
- const blink::WebCursorInfo& cursor); |
- |
- // Notifies that |instance| has received a mouse event. |
- void PepperDidReceiveMouseEvent(PepperPluginInstanceImpl* instance); |
- |
- // Informs the render view that a PPAPI plugin has changed text input status. |
- void PepperTextInputTypeChanged(PepperPluginInstanceImpl* instance); |
- void PepperCaretPositionChanged(PepperPluginInstanceImpl* instance); |
- |
- // Cancels current composition. |
- void PepperCancelComposition(PepperPluginInstanceImpl* instance); |
- |
- // Informs the render view that a PPAPI plugin has changed selection. |
- void PepperSelectionChanged(PepperPluginInstanceImpl* instance); |
- |
- // Creates a fullscreen container for a pepper plugin instance. |
- RenderWidgetFullscreenPepper* CreatePepperFullscreenContainer( |
- PepperPluginInstanceImpl* plugin); |
- |
- bool IsPepperAcceptingCompositionEvents() const; |
- |
- // Notification that the given plugin has crashed. |
- void PluginCrashed(const base::FilePath& plugin_path, |
- base::ProcessId plugin_pid); |
- |
- // Simulates IME events for testing purpose. |
- void SimulateImeSetComposition( |
- const base::string16& text, |
- const std::vector<blink::WebCompositionUnderline>& underlines, |
- int selection_start, |
- int selection_end); |
- void SimulateImeConfirmComposition(const base::string16& text, |
- const gfx::Range& replacement_range); |
- |
- // TODO(jam): remove these once the IPC handler moves from RenderView to |
- // RenderFrame. |
- void OnImeSetComposition( |
- const base::string16& text, |
- const std::vector<blink::WebCompositionUnderline>& underlines, |
- int selection_start, |
- int selection_end); |
- void OnImeConfirmComposition( |
- const base::string16& text, |
- const gfx::Range& replacement_range, |
- bool keep_selection); |
-#endif // ENABLE_PLUGINS |
- |
- // IPC::Sender |
- virtual bool Send(IPC::Message* msg) OVERRIDE; |
- |
- // IPC::Listener |
- virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; |
- |
- // RenderFrame implementation: |
- virtual RenderView* GetRenderView() OVERRIDE; |
- virtual int GetRoutingID() OVERRIDE; |
- virtual blink::WebFrame* GetWebFrame() OVERRIDE; |
- virtual WebPreferences& GetWebkitPreferences() OVERRIDE; |
- virtual int ShowContextMenu(ContextMenuClient* client, |
- const ContextMenuParams& params) OVERRIDE; |
- virtual void CancelContextMenu(int request_id) OVERRIDE; |
- virtual blink::WebPlugin* CreatePlugin( |
- blink::WebFrame* frame, |
- const WebPluginInfo& info, |
- const blink::WebPluginParams& params) OVERRIDE; |
- virtual void LoadURLExternally( |
- blink::WebFrame* frame, |
- const blink::WebURLRequest& request, |
- blink::WebNavigationPolicy policy) OVERRIDE; |
- |
- // blink::WebFrameClient implementation ------------------------------------- |
- virtual blink::WebPlugin* createPlugin( |
- blink::WebFrame* frame, |
- const blink::WebPluginParams& params); |
- virtual blink::WebMediaPlayer* createMediaPlayer( |
- blink::WebFrame* frame, |
- const blink::WebURL& url, |
- blink::WebMediaPlayerClient* client); |
- virtual blink::WebApplicationCacheHost* createApplicationCacheHost( |
- blink::WebFrame* frame, |
- blink::WebApplicationCacheHostClient* client); |
- virtual blink::WebWorkerPermissionClientProxy* |
- createWorkerPermissionClientProxy(blink::WebFrame* frame); |
- virtual blink::WebCookieJar* cookieJar(blink::WebFrame* frame); |
- virtual blink::WebServiceWorkerProvider* createServiceWorkerProvider( |
- blink::WebFrame* frame, |
- blink::WebServiceWorkerProviderClient*); |
- virtual void didAccessInitialDocument(blink::WebFrame* frame); |
- virtual blink::WebFrame* createChildFrame(blink::WebFrame* parent, |
- const blink::WebString& name); |
- virtual void didDisownOpener(blink::WebFrame* frame); |
- virtual void frameDetached(blink::WebFrame* frame); |
- virtual void willClose(blink::WebFrame* frame); |
- virtual void didChangeName(blink::WebFrame* frame, |
- const blink::WebString& name); |
- virtual void didMatchCSS( |
- blink::WebFrame* frame, |
- const blink::WebVector<blink::WebString>& newly_matching_selectors, |
- const blink::WebVector<blink::WebString>& stopped_matching_selectors); |
- virtual void loadURLExternally(blink::WebFrame* frame, |
- const blink::WebURLRequest& request, |
- blink::WebNavigationPolicy policy); |
- virtual void loadURLExternally( |
- blink::WebFrame* frame, |
- const blink::WebURLRequest& request, |
- blink::WebNavigationPolicy policy, |
- const blink::WebString& suggested_name); |
- // The WebDataSource::ExtraData* is assumed to be a DocumentState* subclass. |
- virtual blink::WebNavigationPolicy decidePolicyForNavigation( |
- blink::WebFrame* frame, |
- blink::WebDataSource::ExtraData* extra_data, |
- const blink::WebURLRequest& request, |
- blink::WebNavigationType type, |
- blink::WebNavigationPolicy default_policy, |
- bool is_redirect); |
- // DEPRECATED |
- virtual blink::WebNavigationPolicy decidePolicyForNavigation( |
- blink::WebFrame* frame, |
- const blink::WebURLRequest& request, |
- blink::WebNavigationType type, |
- blink::WebNavigationPolicy default_policy, |
- bool is_redirect); |
- virtual void willSendSubmitEvent(blink::WebFrame* frame, |
- const blink::WebFormElement& form); |
- virtual void willSubmitForm(blink::WebFrame* frame, |
- const blink::WebFormElement& form); |
- virtual void didCreateDataSource(blink::WebFrame* frame, |
- blink::WebDataSource* datasource); |
- virtual void didStartProvisionalLoad(blink::WebFrame* frame); |
- virtual void didReceiveServerRedirectForProvisionalLoad( |
- blink::WebFrame* frame); |
- virtual void didFailProvisionalLoad( |
- blink::WebFrame* frame, |
- const blink::WebURLError& error); |
- virtual void didCommitProvisionalLoad(blink::WebFrame* frame, |
- bool is_new_navigation); |
- virtual void didClearWindowObject(blink::WebFrame* frame, int world_id); |
- virtual void didCreateDocumentElement(blink::WebFrame* frame); |
- virtual void didReceiveTitle(blink::WebFrame* frame, |
- const blink::WebString& title, |
- blink::WebTextDirection direction); |
- virtual void didChangeIcon(blink::WebFrame* frame, |
- blink::WebIconURL::Type icon_type); |
- virtual void didFinishDocumentLoad(blink::WebFrame* frame); |
- virtual void didHandleOnloadEvents(blink::WebFrame* frame); |
- virtual void didFailLoad(blink::WebFrame* frame, |
- const blink::WebURLError& error); |
- virtual void didFinishLoad(blink::WebFrame* frame); |
- virtual void didNavigateWithinPage(blink::WebFrame* frame, |
- bool is_new_navigation); |
- virtual void didUpdateCurrentHistoryItem(blink::WebFrame* frame); |
- virtual void willRequestAfterPreconnect(blink::WebFrame* frame, |
- blink::WebURLRequest& request); |
- virtual void willSendRequest( |
- blink::WebFrame* frame, |
- unsigned identifier, |
- blink::WebURLRequest& request, |
- const blink::WebURLResponse& redirect_response); |
- virtual void didReceiveResponse( |
- blink::WebFrame* frame, |
- unsigned identifier, |
- const blink::WebURLResponse& response); |
- virtual void didFinishResourceLoad(blink::WebFrame* frame, |
- unsigned identifier); |
- virtual void didLoadResourceFromMemoryCache( |
- blink::WebFrame* frame, |
- const blink::WebURLRequest& request, |
- const blink::WebURLResponse& response); |
- virtual void didDisplayInsecureContent(blink::WebFrame* frame); |
- virtual void didRunInsecureContent(blink::WebFrame* frame, |
- const blink::WebSecurityOrigin& origin, |
- const blink::WebURL& target); |
- virtual void didAbortLoading(blink::WebFrame* frame); |
- virtual void didExhaustMemoryAvailableForScript( |
- blink::WebFrame* frame); |
- virtual void didCreateScriptContext(blink::WebFrame* frame, |
- v8::Handle<v8::Context> context, |
- int extension_group, |
- int world_id); |
- virtual void willReleaseScriptContext(blink::WebFrame* frame, |
- v8::Handle<v8::Context> context, |
- int world_id); |
- virtual void didFirstVisuallyNonEmptyLayout(blink::WebFrame* frame); |
- virtual void didChangeContentsSize(blink::WebFrame* frame, |
- const blink::WebSize& size); |
- virtual void didChangeScrollOffset(blink::WebFrame* frame); |
- virtual void willInsertBody(blink::WebFrame* frame); |
- virtual void reportFindInPageMatchCount(int request_id, |
- int count, |
- bool final_update); |
- virtual void reportFindInPageSelection(int request_id, |
- int active_match_ordinal, |
- const blink::WebRect& sel); |
- virtual void requestStorageQuota( |
- blink::WebFrame* frame, |
- blink::WebStorageQuotaType type, |
- unsigned long long requested_size, |
- blink::WebStorageQuotaCallbacks callbacks); |
- virtual void willOpenSocketStream( |
- blink::WebSocketStreamHandle* handle); |
- virtual void willStartUsingPeerConnectionHandler( |
- blink::WebFrame* frame, |
- blink::WebRTCPeerConnectionHandler* handler); |
- virtual bool willCheckAndDispatchMessageEvent( |
- blink::WebFrame* sourceFrame, |
- blink::WebFrame* targetFrame, |
- blink::WebSecurityOrigin targetOrigin, |
- blink::WebDOMMessageEvent event); |
- virtual blink::WebString userAgentOverride( |
- blink::WebFrame* frame, |
- const blink::WebURL& url); |
- virtual blink::WebString doNotTrackValue(blink::WebFrame* frame); |
- virtual bool allowWebGL(blink::WebFrame* frame, bool default_value); |
- virtual void didLoseWebGLContext(blink::WebFrame* frame, |
- int arb_robustness_status_code); |
- virtual void forwardInputEvent(const blink::WebInputEvent* event); |
- virtual void initializeChildFrame(const blink::WebRect& frame_rect, |
- float scale_factor); |
- |
- // TODO(jam): move this to WebFrameClient |
- virtual void showContextMenu(const blink::WebContextMenuData& data); |
- |
- // TODO(nasko): Make all tests in RenderViewImplTest friends and then move |
- // this back to private member. |
- void OnNavigate(const FrameMsg_Navigate_Params& params); |
- |
- protected: |
- RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id); |
- |
- private: |
- friend class RenderFrameObserver; |
- FRIEND_TEST_ALL_PREFIXES(RenderFrameImplTest, |
- ShouldUpdateSelectionTextFromContextMenuParams); |
- |
- typedef std::map<GURL, double> HostZoomLevels; |
- |
- // Functions to add and remove observers for this object. |
- void AddObserver(RenderFrameObserver* observer); |
- void RemoveObserver(RenderFrameObserver* observer); |
- |
- void UpdateURL(blink::WebFrame* frame); |
- |
- // IPC message handlers ------------------------------------------------------ |
- // |
- // The documentation for these functions should be in |
- // content/common/*_messages.h for the message that the function is handling. |
- void OnSwapOut(); |
- void OnChildFrameProcessGone(); |
- void OnBuffersSwapped(const FrameMsg_BuffersSwapped_Params& params); |
- void OnCompositorFrameSwapped(const IPC::Message& message); |
- void OnShowContextMenu(const gfx::Point& location); |
- void OnContextMenuClosed(const CustomContextMenuContext& custom_context); |
- void OnCustomContextMenuAction(const CustomContextMenuContext& custom_context, |
- unsigned action); |
- |
- // Returns whether |params.selection_text| should be synchronized to the |
- // browser before bringing up the context menu. Static for testing. |
- static bool ShouldUpdateSelectionTextFromContextMenuParams( |
- const base::string16& selection_text, |
- size_t selection_text_offset, |
- const gfx::Range& selection_range, |
- const ContextMenuParams& params); |
- |
- // Stores the WebFrame we are associated with. |
- blink::WebFrame* frame_; |
- |
- base::WeakPtr<RenderViewImpl> render_view_; |
- int routing_id_; |
- bool is_swapped_out_; |
- bool is_detaching_; |
- |
-#if defined(ENABLE_PLUGINS) |
- // Current text input composition text. Empty if no composition is in |
- // progress. |
- base::string16 pepper_composition_text_; |
-#endif |
- |
- RendererWebCookieJarImpl cookie_jar_; |
- |
- // All the registered observers. |
- ObserverList<RenderFrameObserver> observers_; |
- |
- scoped_refptr<ChildFrameCompositingHelper> compositing_helper_; |
- |
- // External context menu requests we're waiting for. "Internal" |
- // (WebKit-originated) context menu events will have an ID of 0 and will not |
- // be in this map. |
- // |
- // We don't want to add internal ones since some of the "special" page |
- // handlers in the browser process just ignore the context menu requests so |
- // avoid showing context menus, and so this will cause right clicks to leak |
- // entries in this map. Most users of the custom context menu (e.g. Pepper |
- // plugins) are normally only on "regular" pages and the regular pages will |
- // always respond properly to the request, so we don't have to worry so |
- // much about leaks. |
- IDMap<ContextMenuClient, IDMapExternalPointer> pending_context_menus_; |
- |
- DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl); |
-}; |
- |
-} // namespace content |
- |
-#endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ |
+#define CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ |
+ |
+#include <vector> |
+ |
+#include "base/basictypes.h" |
+#include "base/files/file_path.h" |
+#include "base/gtest_prod_util.h" |
+#include "base/id_map.h" |
+#include "base/memory/weak_ptr.h" |
+#include "base/observer_list.h" |
+#include "base/process/process_handle.h" |
+#include "base/strings/string16.h" |
+#include "content/public/renderer/render_frame.h" |
+#include "content/renderer/renderer_webcookiejar_impl.h" |
+#include "ipc/ipc_message.h" |
+#include "third_party/WebKit/public/web/WebDataSource.h" |
+#include "third_party/WebKit/public/web/WebFrameClient.h" |
+ |
+class TransportDIB; |
+struct FrameMsg_BuffersSwapped_Params; |
+struct FrameMsg_CompositorFrameSwapped_Params; |
+struct FrameMsg_Navigate_Params; |
+ |
+namespace blink { |
+class WebInputEvent; |
+class WebMouseEvent; |
+struct WebCompositionUnderline; |
+struct WebContextMenuData; |
+struct WebCursorInfo; |
+} |
+ |
+namespace gfx { |
+class Point; |
+class Range; |
+class Rect; |
+} |
+ |
+namespace content { |
+ |
+class ChildFrameCompositingHelper; |
+class PepperPluginInstanceImpl; |
+class RendererPpapiHost; |
+class RenderFrameObserver; |
+class RenderViewImpl; |
+class RenderWidget; |
+class RenderWidgetFullscreenPepper; |
+struct CustomContextMenuContext; |
+ |
+class CONTENT_EXPORT RenderFrameImpl |
+ : public RenderFrame, |
+ NON_EXPORTED_BASE(public blink::WebFrameClient) { |
+ public: |
+ // Creates a new RenderFrame. |render_view| is the RenderView object that this |
+ // frame belongs to. |
+ // Callers *must* call |SetWebFrame| immediately after creation. |
+ // TODO(creis): We should structure this so that |SetWebFrame| isn't needed. |
+ static RenderFrameImpl* Create(RenderViewImpl* render_view, int32 routing_id); |
+ |
+ // Just like RenderFrame::FromWebFrame but returns the implementation. |
+ static RenderFrameImpl* FromWebFrame(blink::WebFrame* web_frame); |
+ |
+ // Used by content_layouttest_support to hook into the creation of |
+ // RenderFrameImpls. |
+ static void InstallCreateHook( |
+ RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)); |
+ |
+ virtual ~RenderFrameImpl(); |
+ |
+ bool is_swapped_out() const { |
+ return is_swapped_out_; |
+ } |
+ |
+ // Out-of-process child frames receive a signal from RenderWidgetCompositor |
+ // when a compositor frame has committed. |
+ void DidCommitCompositorFrame(); |
+ |
+ // TODO(jam): this is a temporary getter until all the code is transitioned |
+ // to using RenderFrame instead of RenderView. |
+ RenderViewImpl* render_view() { return render_view_.get(); } |
+ |
+ RendererWebCookieJarImpl* cookie_jar() { return &cookie_jar_; } |
+ |
+ // Returns the RenderWidget associated with this frame. |
+ RenderWidget* GetRenderWidget(); |
+ |
+ // This is called right after creation with the WebFrame for this RenderFrame. |
+ void SetWebFrame(blink::WebFrame* web_frame); |
+ |
+ // Notification from RenderView. |
+ virtual void OnStop(); |
+ |
+ // Start/Stop loading notifications. |
+ // TODO(nasko): Those are page-level methods at this time and come from |
+ // WebViewClient. We should move them to be WebFrameClient calls and put |
+ // logic in the browser side to balance starts/stops. |
+ void didStartLoading(); |
+ void didStopLoading(); |
+ |
+#if defined(ENABLE_PLUGINS) |
+ // Notification that a PPAPI plugin has been created. |
+ void PepperPluginCreated(RendererPpapiHost* host); |
+ |
+ // Notifies that |instance| has changed the cursor. |
+ // This will update the cursor appearance if it is currently over the plugin |
+ // instance. |
+ void PepperDidChangeCursor(PepperPluginInstanceImpl* instance, |
+ const blink::WebCursorInfo& cursor); |
+ |
+ // Notifies that |instance| has received a mouse event. |
+ void PepperDidReceiveMouseEvent(PepperPluginInstanceImpl* instance); |
+ |
+ // Informs the render view that a PPAPI plugin has changed text input status. |
+ void PepperTextInputTypeChanged(PepperPluginInstanceImpl* instance); |
+ void PepperCaretPositionChanged(PepperPluginInstanceImpl* instance); |
+ |
+ // Cancels current composition. |
+ void PepperCancelComposition(PepperPluginInstanceImpl* instance); |
+ |
+ // Informs the render view that a PPAPI plugin has changed selection. |
+ void PepperSelectionChanged(PepperPluginInstanceImpl* instance); |
+ |
+ // Creates a fullscreen container for a pepper plugin instance. |
+ RenderWidgetFullscreenPepper* CreatePepperFullscreenContainer( |
+ PepperPluginInstanceImpl* plugin); |
+ |
+ bool IsPepperAcceptingCompositionEvents() const; |
+ |
+ // Notification that the given plugin has crashed. |
+ void PluginCrashed(const base::FilePath& plugin_path, |
+ base::ProcessId plugin_pid); |
+ |
+ // Simulates IME events for testing purpose. |
+ void SimulateImeSetComposition( |
+ const base::string16& text, |
+ const std::vector<blink::WebCompositionUnderline>& underlines, |
+ int selection_start, |
+ int selection_end); |
+ void SimulateImeConfirmComposition(const base::string16& text, |
+ const gfx::Range& replacement_range); |
+ |
+ // TODO(jam): remove these once the IPC handler moves from RenderView to |
+ // RenderFrame. |
+ void OnImeSetComposition( |
+ const base::string16& text, |
+ const std::vector<blink::WebCompositionUnderline>& underlines, |
+ int selection_start, |
+ int selection_end); |
+ void OnImeConfirmComposition( |
+ const base::string16& text, |
+ const gfx::Range& replacement_range, |
+ bool keep_selection); |
+#endif // ENABLE_PLUGINS |
+ |
+ // IPC::Sender |
+ virtual bool Send(IPC::Message* msg) OVERRIDE; |
+ |
+ // IPC::Listener |
+ virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; |
+ |
+ // RenderFrame implementation: |
+ virtual RenderView* GetRenderView() OVERRIDE; |
+ virtual int GetRoutingID() OVERRIDE; |
+ virtual blink::WebFrame* GetWebFrame() OVERRIDE; |
+ virtual WebPreferences& GetWebkitPreferences() OVERRIDE; |
+ virtual int ShowContextMenu(ContextMenuClient* client, |
+ const ContextMenuParams& params) OVERRIDE; |
+ virtual void CancelContextMenu(int request_id) OVERRIDE; |
+ virtual blink::WebPlugin* CreatePlugin( |
+ blink::WebFrame* frame, |
+ const WebPluginInfo& info, |
+ const blink::WebPluginParams& params) OVERRIDE; |
+ virtual void LoadURLExternally( |
+ blink::WebFrame* frame, |
+ const blink::WebURLRequest& request, |
+ blink::WebNavigationPolicy policy) OVERRIDE; |
+ |
+ // blink::WebFrameClient implementation ------------------------------------- |
+ virtual blink::WebPlugin* createPlugin( |
+ blink::WebFrame* frame, |
+ const blink::WebPluginParams& params); |
+ virtual blink::WebMediaPlayer* createMediaPlayer( |
+ blink::WebFrame* frame, |
+ const blink::WebURL& url, |
+ blink::WebMediaPlayerClient* client); |
+ virtual blink::WebApplicationCacheHost* createApplicationCacheHost( |
+ blink::WebFrame* frame, |
+ blink::WebApplicationCacheHostClient* client); |
+ virtual blink::WebWorkerPermissionClientProxy* |
+ createWorkerPermissionClientProxy(blink::WebFrame* frame); |
+ virtual blink::WebCookieJar* cookieJar(blink::WebFrame* frame); |
+ virtual blink::WebServiceWorkerProvider* createServiceWorkerProvider( |
+ blink::WebFrame* frame, |
+ blink::WebServiceWorkerProviderClient*); |
+ virtual void didAccessInitialDocument(blink::WebFrame* frame); |
+ virtual blink::WebFrame* createChildFrame(blink::WebFrame* parent, |
+ const blink::WebString& name); |
+ virtual void didDisownOpener(blink::WebFrame* frame); |
+ virtual void frameDetached(blink::WebFrame* frame); |
+ virtual void willClose(blink::WebFrame* frame); |
+ virtual void didChangeName(blink::WebFrame* frame, |
+ const blink::WebString& name); |
+ virtual void didMatchCSS( |
+ blink::WebFrame* frame, |
+ const blink::WebVector<blink::WebString>& newly_matching_selectors, |
+ const blink::WebVector<blink::WebString>& stopped_matching_selectors); |
+ virtual void loadURLExternally(blink::WebFrame* frame, |
+ const blink::WebURLRequest& request, |
+ blink::WebNavigationPolicy policy); |
+ virtual void loadURLExternally( |
+ blink::WebFrame* frame, |
+ const blink::WebURLRequest& request, |
+ blink::WebNavigationPolicy policy, |
+ const blink::WebString& suggested_name); |
+ // The WebDataSource::ExtraData* is assumed to be a DocumentState* subclass. |
+ virtual blink::WebNavigationPolicy decidePolicyForNavigation( |
+ blink::WebFrame* frame, |
+ blink::WebDataSource::ExtraData* extra_data, |
+ const blink::WebURLRequest& request, |
+ blink::WebNavigationType type, |
+ blink::WebNavigationPolicy default_policy, |
+ bool is_redirect); |
+ // DEPRECATED |
+ virtual blink::WebNavigationPolicy decidePolicyForNavigation( |
+ blink::WebFrame* frame, |
+ const blink::WebURLRequest& request, |
+ blink::WebNavigationType type, |
+ blink::WebNavigationPolicy default_policy, |
+ bool is_redirect); |
+ virtual void willSendSubmitEvent(blink::WebFrame* frame, |
+ const blink::WebFormElement& form); |
+ virtual void willSubmitForm(blink::WebFrame* frame, |
+ const blink::WebFormElement& form); |
+ virtual void didCreateDataSource(blink::WebFrame* frame, |
+ blink::WebDataSource* datasource); |
+ virtual void didStartProvisionalLoad(blink::WebFrame* frame); |
+ virtual void didReceiveServerRedirectForProvisionalLoad( |
+ blink::WebFrame* frame); |
+ virtual void didFailProvisionalLoad( |
+ blink::WebFrame* frame, |
+ const blink::WebURLError& error); |
+ virtual void didCommitProvisionalLoad(blink::WebFrame* frame, |
+ bool is_new_navigation); |
+ virtual void didClearWindowObject(blink::WebFrame* frame, int world_id); |
+ virtual void didCreateDocumentElement(blink::WebFrame* frame); |
+ virtual void didReceiveTitle(blink::WebFrame* frame, |
+ const blink::WebString& title, |
+ blink::WebTextDirection direction); |
+ virtual void didChangeIcon(blink::WebFrame* frame, |
+ blink::WebIconURL::Type icon_type); |
+ virtual void didFinishDocumentLoad(blink::WebFrame* frame); |
+ virtual void didHandleOnloadEvents(blink::WebFrame* frame); |
+ virtual void didFailLoad(blink::WebFrame* frame, |
+ const blink::WebURLError& error); |
+ virtual void didFinishLoad(blink::WebFrame* frame); |
+ virtual void didNavigateWithinPage(blink::WebFrame* frame, |
+ bool is_new_navigation); |
+ virtual void didUpdateCurrentHistoryItem(blink::WebFrame* frame); |
+ virtual void willRequestAfterPreconnect(blink::WebFrame* frame, |
+ blink::WebURLRequest& request); |
+ virtual void willSendRequest( |
+ blink::WebFrame* frame, |
+ unsigned identifier, |
+ blink::WebURLRequest& request, |
+ const blink::WebURLResponse& redirect_response); |
+ virtual void didReceiveResponse( |
+ blink::WebFrame* frame, |
+ unsigned identifier, |
+ const blink::WebURLResponse& response); |
+ virtual void didFinishResourceLoad(blink::WebFrame* frame, |
+ unsigned identifier); |
+ virtual void didLoadResourceFromMemoryCache( |
+ blink::WebFrame* frame, |
+ const blink::WebURLRequest& request, |
+ const blink::WebURLResponse& response); |
+ virtual void didDisplayInsecureContent(blink::WebFrame* frame); |
+ virtual void didRunInsecureContent(blink::WebFrame* frame, |
+ const blink::WebSecurityOrigin& origin, |
+ const blink::WebURL& target); |
+ virtual void didAbortLoading(blink::WebFrame* frame); |
+ virtual void didExhaustMemoryAvailableForScript( |
+ blink::WebFrame* frame); |
+ virtual void didCreateScriptContext(blink::WebFrame* frame, |
+ v8::Handle<v8::Context> context, |
+ int extension_group, |
+ int world_id); |
+ virtual void willReleaseScriptContext(blink::WebFrame* frame, |
+ v8::Handle<v8::Context> context, |
+ int world_id); |
+ virtual void didFirstVisuallyNonEmptyLayout(blink::WebFrame* frame); |
+ virtual void didChangeContentsSize(blink::WebFrame* frame, |
+ const blink::WebSize& size); |
+ virtual void didChangeScrollOffset(blink::WebFrame* frame); |
+ virtual void willInsertBody(blink::WebFrame* frame); |
+ virtual void reportFindInPageMatchCount(int request_id, |
+ int count, |
+ bool final_update); |
+ virtual void reportFindInPageSelection(int request_id, |
+ int active_match_ordinal, |
+ const blink::WebRect& sel); |
+ virtual void requestStorageQuota( |
+ blink::WebFrame* frame, |
+ blink::WebStorageQuotaType type, |
+ unsigned long long requested_size, |
+ blink::WebStorageQuotaCallbacks callbacks); |
+ virtual void willOpenSocketStream( |
+ blink::WebSocketStreamHandle* handle); |
+ virtual void willStartUsingPeerConnectionHandler( |
+ blink::WebFrame* frame, |
+ blink::WebRTCPeerConnectionHandler* handler); |
+ virtual bool willCheckAndDispatchMessageEvent( |
+ blink::WebFrame* sourceFrame, |
+ blink::WebFrame* targetFrame, |
+ blink::WebSecurityOrigin targetOrigin, |
+ blink::WebDOMMessageEvent event); |
+ virtual blink::WebString userAgentOverride( |
+ blink::WebFrame* frame, |
+ const blink::WebURL& url); |
+ virtual blink::WebString doNotTrackValue(blink::WebFrame* frame); |
+ virtual bool allowWebGL(blink::WebFrame* frame, bool default_value); |
+ virtual void didLoseWebGLContext(blink::WebFrame* frame, |
+ int arb_robustness_status_code); |
+ virtual void forwardInputEvent(const blink::WebInputEvent* event); |
+ virtual void initializeChildFrame(const blink::WebRect& frame_rect, |
+ float scale_factor); |
+ |
+ // TODO(jam): move this to WebFrameClient |
+ virtual void showContextMenu(const blink::WebContextMenuData& data); |
+ |
+ // TODO(nasko): Make all tests in RenderViewImplTest friends and then move |
+ // this back to private member. |
+ void OnNavigate(const FrameMsg_Navigate_Params& params); |
+ |
+ protected: |
+ RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id); |
+ |
+ private: |
+ friend class RenderFrameObserver; |
+ FRIEND_TEST_ALL_PREFIXES(RenderFrameImplTest, |
+ ShouldUpdateSelectionTextFromContextMenuParams); |
+ |
+ typedef std::map<GURL, double> HostZoomLevels; |
+ |
+ // Function used to close frame asynchronously. |
+ static void closeFrame(blink::WebFrame* frame); |
+ |
+ // Functions to add and remove observers for this object. |
+ void AddObserver(RenderFrameObserver* observer); |
+ void RemoveObserver(RenderFrameObserver* observer); |
+ |
+ void UpdateURL(blink::WebFrame* frame); |
+ |
+ // IPC message handlers ------------------------------------------------------ |
+ // |
+ // The documentation for these functions should be in |
+ // content/common/*_messages.h for the message that the function is handling. |
+ void OnSwapOut(); |
+ void OnChildFrameProcessGone(); |
+ void OnBuffersSwapped(const FrameMsg_BuffersSwapped_Params& params); |
+ void OnCompositorFrameSwapped(const IPC::Message& message); |
+ void OnShowContextMenu(const gfx::Point& location); |
+ void OnContextMenuClosed(const CustomContextMenuContext& custom_context); |
+ void OnCustomContextMenuAction(const CustomContextMenuContext& custom_context, |
+ unsigned action); |
+ |
+ // Returns whether |params.selection_text| should be synchronized to the |
+ // browser before bringing up the context menu. Static for testing. |
+ static bool ShouldUpdateSelectionTextFromContextMenuParams( |
+ const base::string16& selection_text, |
+ size_t selection_text_offset, |
+ const gfx::Range& selection_range, |
+ const ContextMenuParams& params); |
+ |
+ // Stores the WebFrame we are associated with. |
+ blink::WebFrame* frame_; |
+ |
+ base::WeakPtr<RenderViewImpl> render_view_; |
+ int routing_id_; |
+ bool is_swapped_out_; |
+ bool is_detaching_; |
+ |
+#if defined(ENABLE_PLUGINS) |
+ // Current text input composition text. Empty if no composition is in |
+ // progress. |
+ base::string16 pepper_composition_text_; |
+#endif |
+ |
+ RendererWebCookieJarImpl cookie_jar_; |
+ |
+ // All the registered observers. |
+ ObserverList<RenderFrameObserver> observers_; |
+ |
+ scoped_refptr<ChildFrameCompositingHelper> compositing_helper_; |
+ |
+ // External context menu requests we're waiting for. "Internal" |
+ // (WebKit-originated) context menu events will have an ID of 0 and will not |
+ // be in this map. |
+ // |
+ // We don't want to add internal ones since some of the "special" page |
+ // handlers in the browser process just ignore the context menu requests so |
+ // avoid showing context menus, and so this will cause right clicks to leak |
+ // entries in this map. Most users of the custom context menu (e.g. Pepper |
+ // plugins) are normally only on "regular" pages and the regular pages will |
+ // always respond properly to the request, so we don't have to worry so |
+ // much about leaks. |
+ IDMap<ContextMenuClient, IDMapExternalPointer> pending_context_menus_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl); |
+}; |
+ |
+} // namespace content |
+ |
+#endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ |