1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// found in the LICENSE file. 4868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#ifndef CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <set> 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <vector> 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/basictypes.h" 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/files/file_path.h" 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/observer_list.h" 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/process/process_handle.h" 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/strings/string16.h" 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/public/renderer/render_frame.h" 17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ipc/ipc_message.h" 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebDataSource.h" 197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebFrameClient.h" 20868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class TransportDIB; 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace blink { 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class WebMouseEvent; 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)struct WebCompositionUnderline; 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)struct WebCursorInfo; 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace gfx { 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class Range; 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class Rect; 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace content { 35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class PepperPluginInstanceImpl; 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RendererPpapiHost; 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RenderFrameObserver; 39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class RenderViewImpl; 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RenderWidget; 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RenderWidgetFullscreenPepper; 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class CONTENT_EXPORT RenderFrameImpl 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : public RenderFrame, 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) NON_EXPORTED_BASE(public blink::WebFrameClient) { 46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public: 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Creates a new RenderFrame. |render_view| is the RenderView object that this 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // frame belongs to. 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static RenderFrameImpl* Create(RenderViewImpl* render_view, int32 routing_id); 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Used by content_layouttest_support to hook into the creation of 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // RenderFrameImpls. 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static void InstallCreateHook( 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)); 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~RenderFrameImpl(); 57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TODO(jam): this is a temporary getter until all the code is transitioned 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // to using RenderFrame instead of RenderView. 60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderViewImpl* render_view() { return render_view_; } 61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Returns the RenderWidget associated with this frame. 63a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderWidget* GetRenderWidget(); 64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(ENABLE_PLUGINS) 66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notification that a PPAPI plugin has been created. 67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperPluginCreated(RendererPpapiHost* host); 68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Indicates that the given instance has been created. 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperInstanceCreated(PepperPluginInstanceImpl* instance); 71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Indicates that the given instance is being destroyed. This is called from 73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // the destructor, so it's important that the instance is not dereferenced 74a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // from this call. 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperInstanceDeleted(PepperPluginInstanceImpl* instance); 76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notifies that |instance| has changed the cursor. 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // This will update the cursor appearance if it is currently over the plugin 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // instance. 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperDidChangeCursor(PepperPluginInstanceImpl* instance, 81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const blink::WebCursorInfo& cursor); 82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notifies that |instance| has received a mouse event. 84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperDidReceiveMouseEvent(PepperPluginInstanceImpl* instance); 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notification that the given plugin is focused or unfocused. 87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperFocusChanged(PepperPluginInstanceImpl* instance, bool focused); 88a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 89a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Informs the render view that a PPAPI plugin has changed text input status. 90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperTextInputTypeChanged(PepperPluginInstanceImpl* instance); 91a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperCaretPositionChanged(PepperPluginInstanceImpl* instance); 92a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 93a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Cancels current composition. 94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperCancelComposition(PepperPluginInstanceImpl* instance); 95a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Informs the render view that a PPAPI plugin has changed selection. 97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperSelectionChanged(PepperPluginInstanceImpl* instance); 98a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 99a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Creates a fullscreen container for a pepper plugin instance. 100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderWidgetFullscreenPepper* CreatePepperFullscreenContainer( 101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PepperPluginInstanceImpl* plugin); 102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 103a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool IsPepperAcceptingCompositionEvents() const; 104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 105a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notification that the given plugin has crashed. 106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PluginCrashed(const base::FilePath& plugin_path, 107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::ProcessId plugin_pid); 108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // These map to virtual methods on RenderWidget that are used to call out to 110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // RenderView. 111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TODO(jam): once we get rid of RenderView, RenderFrame will own RenderWidget 112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // and methods would be on a delegate interface. 113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void DidInitiatePaint(); 114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void DidFlushPaint(); 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PepperPluginInstanceImpl* GetBitmapForOptimizedPluginPaint( 116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const gfx::Rect& paint_bounds, 117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TransportDIB** dib, 118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) gfx::Rect* location, 119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) gfx::Rect* clip, 120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) float* scale_factor); 121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PageVisibilityChanged(bool shown); 122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnSetFocus(bool enable); 123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void WillHandleMouseEvent(const blink::WebMouseEvent& event); 124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Simulates IME events for testing purpose. 126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SimulateImeSetComposition( 127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& text, 128a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const std::vector<blink::WebCompositionUnderline>& underlines, 129a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int selection_start, 130a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int selection_end); 131a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SimulateImeConfirmComposition(const base::string16& text, 132a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const gfx::Range& replacement_range); 133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 134a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TODO(jam): remove these once the IPC handler moves from RenderView to 135a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // RenderFrame. 136a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnImeSetComposition( 137a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& text, 138a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const std::vector<blink::WebCompositionUnderline>& underlines, 139a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int selection_start, 140a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int selection_end); 141a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnImeConfirmComposition( 142a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& text, 143a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const gfx::Range& replacement_range, 144a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool keep_selection); 145a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // ENABLE_PLUGINS 146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 147868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // IPC::Sender 148868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual bool Send(IPC::Message* msg) OVERRIDE; 149868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 150868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // IPC::Listener 151868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 152868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 153a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // RenderFrame implementation: 154a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual RenderView* GetRenderView() OVERRIDE; 155a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual int GetRoutingID() OVERRIDE; 156a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual WebPreferences& GetWebkitPreferences() OVERRIDE; 157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual int ShowContextMenu(ContextMenuClient* client, 158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const ContextMenuParams& params) OVERRIDE; 159a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void CancelContextMenu(int request_id) OVERRIDE; 160a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual blink::WebPlugin* CreatePlugin( 161a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) blink::WebFrame* frame, 162a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const WebPluginInfo& info, 163a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const blink::WebPluginParams& params) OVERRIDE; 164a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void LoadURLExternally( 165a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) blink::WebFrame* frame, 166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const blink::WebURLRequest& request, 167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) blink::WebNavigationPolicy policy) OVERRIDE; 168a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // blink::WebFrameClient implementation ------------------------------------- 170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebPlugin* createPlugin( 171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebPluginParams& params); 173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebMediaPlayer* createMediaPlayer( 174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURL& url, 176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebMediaPlayerClient* client); 177f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebApplicationCacheHost* createApplicationCacheHost( 178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebApplicationCacheHostClient* client); 180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebWorkerPermissionClientProxy* 181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) createWorkerPermissionClientProxy(blink::WebFrame* frame); 182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebCookieJar* cookieJar(blink::WebFrame* frame); 183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebServiceWorkerProvider* createServiceWorkerProvider( 184f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebServiceWorkerProviderClient*); 186f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didAccessInitialDocument(blink::WebFrame* frame); 187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebFrame* createChildFrame(blink::WebFrame* parent, 188f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& name); 189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didDisownOpener(blink::WebFrame* frame); 190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void frameDetached(blink::WebFrame* frame); 191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void willClose(blink::WebFrame* frame); 192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didChangeName(blink::WebFrame* frame, 193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& name); 1944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void didMatchCSS( 195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebVector<blink::WebString>& newly_matching_selectors, 197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebVector<blink::WebString>& stopped_matching_selectors); 198f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void loadURLExternally(blink::WebFrame* frame, 199f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request, 200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebNavigationPolicy policy); 2017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void loadURLExternally( 202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request, 204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebNavigationPolicy policy, 205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& suggested_name); 206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebNavigationPolicy decidePolicyForNavigation( 207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDataSource::ExtraData* extra_data, 209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request, 210f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebNavigationType type, 211f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebNavigationPolicy default_policy, 2123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool is_redirect); 2133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // DEPRECATED 214f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebNavigationPolicy decidePolicyForNavigation( 215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request, 217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebNavigationType type, 218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebNavigationPolicy default_policy, 2197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool is_redirect); 220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void willSendSubmitEvent(blink::WebFrame* frame, 221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebFormElement& form); 222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void willSubmitForm(blink::WebFrame* frame, 223f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebFormElement& form); 224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didCreateDataSource(blink::WebFrame* frame, 225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDataSource* datasource); 226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didStartProvisionalLoad(blink::WebFrame* frame); 2277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void didReceiveServerRedirectForProvisionalLoad( 228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame); 2297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void didFailProvisionalLoad( 230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLError& error); 232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didCommitProvisionalLoad(blink::WebFrame* frame, 233eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool is_new_navigation); 234f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didClearWindowObject(blink::WebFrame* frame); 235f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didCreateDocumentElement(blink::WebFrame* frame); 236f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didReceiveTitle(blink::WebFrame* frame, 237f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& title, 238f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebTextDirection direction); 239f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didChangeIcon(blink::WebFrame* frame, 240f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebIconURL::Type icon_type); 241f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didFinishDocumentLoad(blink::WebFrame* frame); 242f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didHandleOnloadEvents(blink::WebFrame* frame); 243f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didFailLoad(blink::WebFrame* frame, 244f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLError& error); 245f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didFinishLoad(blink::WebFrame* frame); 246f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didNavigateWithinPage(blink::WebFrame* frame, 247eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool is_new_navigation); 248f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didUpdateCurrentHistoryItem(blink::WebFrame* frame); 249f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void willRequestAfterPreconnect(blink::WebFrame* frame, 250f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebURLRequest& request); 2517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void willSendRequest( 252f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 2537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) unsigned identifier, 254f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebURLRequest& request, 255f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLResponse& redirect_response); 2567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void didReceiveResponse( 257f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 2587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) unsigned identifier, 259f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLResponse& response); 260f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didFinishResourceLoad(blink::WebFrame* frame, 261eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch unsigned identifier); 2627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void didLoadResourceFromMemoryCache( 263f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 264f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request, 265f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLResponse& response); 266f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didDisplayInsecureContent(blink::WebFrame* frame); 267f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didRunInsecureContent(blink::WebFrame* frame, 268f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebSecurityOrigin& origin, 269f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURL& target); 270f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didAbortLoading(blink::WebFrame* frame); 2717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void didExhaustMemoryAvailableForScript( 272f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame); 273f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didCreateScriptContext(blink::WebFrame* frame, 2747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) v8::Handle<v8::Context> context, 2757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) int extension_group, 276eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int world_id); 277f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void willReleaseScriptContext(blink::WebFrame* frame, 2787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) v8::Handle<v8::Context> context, 279eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int world_id); 280f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didFirstVisuallyNonEmptyLayout(blink::WebFrame* frame); 281f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didChangeContentsSize(blink::WebFrame* frame, 282f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebSize& size); 283f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didChangeScrollOffset(blink::WebFrame* frame); 284f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void willInsertBody(blink::WebFrame* frame); 2857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void reportFindInPageMatchCount(int request_id, 2867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) int count, 287eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool final_update); 2887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void reportFindInPageSelection(int request_id, 2897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) int active_match_ordinal, 290f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebRect& sel); 2917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void requestStorageQuota( 292f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 293f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebStorageQuotaType type, 2947d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) unsigned long long requested_size, 295f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebStorageQuotaCallbacks* callbacks); 2967d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void willOpenSocketStream( 297f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebSocketStreamHandle* handle); 2987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void willStartUsingPeerConnectionHandler( 299f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 300f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebRTCPeerConnectionHandler* handler); 3017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual bool willCheckAndDispatchMessageEvent( 302f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* sourceFrame, 303f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* targetFrame, 304f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebSecurityOrigin targetOrigin, 305f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDOMMessageEvent event); 306f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebString userAgentOverride( 307f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 308f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURL& url); 309f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebString doNotTrackValue(blink::WebFrame* frame); 310f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool allowWebGL(blink::WebFrame* frame, bool default_value); 311f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didLoseWebGLContext(blink::WebFrame* frame, 312eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int arb_robustness_status_code); 3137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 314eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 315eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id); 316eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 317868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private: 318a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) friend class RenderFrameObserver; 319a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 320a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Functions to add and remove observers for this object. 321a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void AddObserver(RenderFrameObserver* observer); 322a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void RemoveObserver(RenderFrameObserver* observer); 323424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 324868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RenderViewImpl* render_view_; 325868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int routing_id_; 326424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool is_swapped_out_; 327424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool is_detaching_; 328868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 329a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(ENABLE_PLUGINS) 330a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) typedef std::set<PepperPluginInstanceImpl*> PepperPluginSet; 331a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PepperPluginSet active_pepper_instances_; 332a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 333a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Current text input composition text. Empty if no composition is in 334a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // progress. 335a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 pepper_composition_text_; 336a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 337a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 338a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // All the registered observers. 339a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ObserverList<RenderFrameObserver> observers_; 340a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 341868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl); 342868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 343868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 344868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} // namespace content 345868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 3467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 347