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 <vector> 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/basictypes.h" 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/files/file_path.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/gtest_prod_util.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/id_map.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/weak_ptr.h" 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/observer_list.h" 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/process/process_handle.h" 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/common/accessibility_mode_enums.h" 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/common/mojo/service_registry_impl.h" 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "content/public/common/javascript_message_type.h" 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "content/public/common/referrer.h" 21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/public/renderer/render_frame.h" 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/renderer/render_frame_proxy.h" 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/renderer/renderer_webcookiejar_impl.h" 24868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ipc/ipc_message.h" 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "media/blink/webmediaplayer_delegate.h" 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "third_party/WebKit/public/web/WebAXObject.h" 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebDataSource.h" 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebFrameClient.h" 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "third_party/WebKit/public/web/WebHistoryCommitType.h" 30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ui/gfx/range/range.h" 31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_ANDROID) 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/renderer/media/android/renderer_media_player_manager.h" 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class TransportDIB; 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct FrameMsg_Navigate_Params; 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace blink { 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass WebGeolocationClient; 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class WebInputEvent; 42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class WebMouseEvent; 43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass WebContentDecryptionModule; 44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class WebMediaPlayer; 45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass WebNotificationPresenter; 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass WebPushClient; 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass WebSecurityOrigin; 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)struct WebCompositionUnderline; 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct WebContextMenuData; 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)struct WebCursorInfo; 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace gfx { 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class Point; 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class Range; 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class Rect; 57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 59868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace content { 60868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ChildFrameCompositingHelper; 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ExternalPopupMenu; 6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class GeolocationDispatcher; 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ManifestManager; 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass MediaStreamDispatcher; 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class MediaStreamRendererFactory; 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class MidiDispatcher; 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class NotificationPermissionDispatcher; 690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass NotificationProvider; 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class PepperPluginInstanceImpl; 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass PushMessagingDispatcher; 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass RendererAccessibility; 73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class RendererCdmManager; 74f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class RendererMediaPlayerManager; 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RendererPpapiHost; 76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RenderFrameObserver; 77868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class RenderViewImpl; 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RenderWidget; 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RenderWidgetFullscreenPepper; 80f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class ScreenOrientationDispatcher; 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass UserMediaClientImpl; 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct CustomContextMenuContext; 83868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class CONTENT_EXPORT RenderFrameImpl 857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : public RenderFrame, 86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) NON_EXPORTED_BASE(public blink::WebFrameClient), 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NON_EXPORTED_BASE(public media::WebMediaPlayerDelegate) { 88868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public: 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Creates a new RenderFrame. |render_view| is the RenderView object that this 90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // frame belongs to. 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Callers *must* call |SetWebFrame| immediately after creation. 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Note: This is called only when RenderFrame is created by Blink through 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // createChildFrame. 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(creis): We should structure this so that |SetWebFrame| isn't needed. 95eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static RenderFrameImpl* Create(RenderViewImpl* render_view, int32 routing_id); 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Creates a new RenderFrame with |routing_id| as a child of the RenderFrame 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // identified by |parent_routing_id| or as the top-level frame if the latter 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // is MSG_ROUTING_NONE. It creates the Blink WebLocalFrame and inserts it in 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // the proper place in the frame tree. 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Note: This is called only when RenderFrame is being created in response to 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // IPC message from the browser process. All other frame creation is driven 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // through Blink and Create. 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static void CreateFrame(int routing_id, int parent_routing_id); 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 106cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Returns the RenderFrameImpl for the given routing ID. 107cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static RenderFrameImpl* FromRoutingID(int routing_id); 108cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Just like RenderFrame::FromWebFrame but returns the implementation. 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static RenderFrameImpl* FromWebFrame(blink::WebFrame* web_frame); 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Used by content_layouttest_support to hook into the creation of 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // RenderFrameImpls. 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static void InstallCreateHook( 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)); 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 117868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~RenderFrameImpl(); 118868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool is_swapped_out() const { 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return is_swapped_out_; 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 123cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // TODO(nasko): This can be removed once we don't have a swapped out state on 124cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // RenderFrames. See https://crbug.com/357747. 125cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void set_render_frame_proxy(RenderFrameProxy* proxy) { 126cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) render_frame_proxy_ = proxy; 127cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 128cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Out-of-process child frames receive a signal from RenderWidgetCompositor 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // when a compositor frame has committed. 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void DidCommitCompositorFrame(); 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TODO(jam): this is a temporary getter until all the code is transitioned 134a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // to using RenderFrame instead of RenderView. 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderViewImpl* render_view() { return render_view_.get(); } 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RendererWebCookieJarImpl* cookie_jar() { return &cookie_jar_; } 138a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 139a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Returns the RenderWidget associated with this frame. 140a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderWidget* GetRenderWidget(); 141a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 142c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // This is called right after creation with the WebLocalFrame for this 143a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // RenderFrame. It must be called before Initialize. 144c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void SetWebFrame(blink::WebLocalFrame* web_frame); 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 146a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // This method must be called after the frame has been added to the frame 147a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // tree. It creates all objects that depend on the frame being at its proper 148a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // spot. 149a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void Initialize(); 150a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 151cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Notifications from RenderWidget. 152cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void WasHidden(); 153cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void WasShown(); 154cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Start/Stop loading notifications. 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(nasko): Those are page-level methods at this time and come from 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // WebViewClient. We should move them to be WebFrameClient calls and put 1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // logic in the browser side to balance starts/stops. 159effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // |to_different_document| will be true unless the load is a fragment 160effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // navigation, or triggered by history.pushState/replaceState. 161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void didStartLoading(bool to_different_document); 162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void didStopLoading(); 163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void didChangeLoadProgress(double load_progress); 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AccessibilityMode accessibility_mode() { 166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return accessibility_mode_; 167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch RendererAccessibility* renderer_accessibility() { 170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return renderer_accessibility_; 171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void HandleWebAccessibilityEvent(const blink::WebAXObject& obj, 174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch blink::WebAXEvent event); 175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // TODO(dmazzoni): the only reason this is here is to plumb it through to 177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // RendererAccessibility. It should be part of RenderFrameObserver, once 178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // blink has a separate accessibility tree per frame. 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void FocusedNodeChanged(const blink::WebNode& node); 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 181a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(ENABLE_PLUGINS) 182a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notification that a PPAPI plugin has been created. 183a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperPluginCreated(RendererPpapiHost* host); 184a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 185a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notifies that |instance| has changed the cursor. 186a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // This will update the cursor appearance if it is currently over the plugin 187a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // instance. 188a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperDidChangeCursor(PepperPluginInstanceImpl* instance, 189a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const blink::WebCursorInfo& cursor); 190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 191a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notifies that |instance| has received a mouse event. 192a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperDidReceiveMouseEvent(PepperPluginInstanceImpl* instance); 193a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Informs the render view that a PPAPI plugin has changed text input status. 195a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperTextInputTypeChanged(PepperPluginInstanceImpl* instance); 196a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperCaretPositionChanged(PepperPluginInstanceImpl* instance); 197a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 198a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Cancels current composition. 199a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperCancelComposition(PepperPluginInstanceImpl* instance); 200a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 201a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Informs the render view that a PPAPI plugin has changed selection. 202a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PepperSelectionChanged(PepperPluginInstanceImpl* instance); 203a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 204a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Creates a fullscreen container for a pepper plugin instance. 205a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderWidgetFullscreenPepper* CreatePepperFullscreenContainer( 206a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PepperPluginInstanceImpl* plugin); 207a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 208a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool IsPepperAcceptingCompositionEvents() const; 209a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 210a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Notification that the given plugin has crashed. 211a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PluginCrashed(const base::FilePath& plugin_path, 212a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::ProcessId plugin_pid); 213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Simulates IME events for testing purpose. 215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SimulateImeSetComposition( 216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& text, 217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const std::vector<blink::WebCompositionUnderline>& underlines, 218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int selection_start, 219a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int selection_end); 220a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SimulateImeConfirmComposition(const base::string16& text, 221a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const gfx::Range& replacement_range); 222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 223a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TODO(jam): remove these once the IPC handler moves from RenderView to 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // RenderFrame. 225a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnImeSetComposition( 226a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& text, 227a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const std::vector<blink::WebCompositionUnderline>& underlines, 228a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int selection_start, 229a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int selection_end); 230a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnImeConfirmComposition( 231a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& text, 232a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const gfx::Range& replacement_range, 233a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool keep_selection); 234a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // ENABLE_PLUGINS 235a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // May return NULL in some cases, especially if userMediaClient() returns 237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // NULL. 238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MediaStreamDispatcher* GetMediaStreamDispatcher(); 239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_MACOSX) || defined(OS_ANDROID) 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void DidHideExternalPopupMenu(); 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 244868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // IPC::Sender 245868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual bool Send(IPC::Message* msg) OVERRIDE; 246868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 247868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // IPC::Listener 248868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 249868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 250a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // RenderFrame implementation: 251a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual RenderView* GetRenderView() OVERRIDE; 252a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual int GetRoutingID() OVERRIDE; 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual blink::WebLocalFrame* GetWebFrame() OVERRIDE; 254a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual WebPreferences& GetWebkitPreferences() OVERRIDE; 255a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual int ShowContextMenu(ContextMenuClient* client, 256a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const ContextMenuParams& params) OVERRIDE; 257a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void CancelContextMenu(int request_id) OVERRIDE; 258a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual blink::WebNode GetContextMenuNode() const OVERRIDE; 259a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual blink::WebPlugin* CreatePlugin( 260a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) blink::WebFrame* frame, 261a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const WebPluginInfo& info, 262a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const blink::WebPluginParams& params) OVERRIDE; 263c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void LoadURLExternally(blink::WebLocalFrame* frame, 264c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebURLRequest& request, 265c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebNavigationPolicy policy) OVERRIDE; 266effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void ExecuteJavaScript(const base::string16& javascript) OVERRIDE; 26746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual bool IsHidden() OVERRIDE; 268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ServiceRegistry* GetServiceRegistry() OVERRIDE; 2695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool IsFTPDirectoryListing() OVERRIDE; 27003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void AttachGuest(int element_instance_id) OVERRIDE; 271a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 272010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // blink::WebFrameClient implementation: 273c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebPlugin* createPlugin(blink::WebLocalFrame* frame, 274c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebPluginParams& params); 2751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(jrummell): Remove this method once blink updated. 276f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebMediaPlayer* createMediaPlayer( 277c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame, 278f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURL& url, 279f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebMediaPlayerClient* client); 2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual blink::WebMediaPlayer* createMediaPlayer( 2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebLocalFrame* frame, 2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const blink::WebURL& url, 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebMediaPlayerClient* client, 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebContentDecryptionModule* initial_cdm); 285effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual blink::WebContentDecryptionModule* createContentDecryptionModule( 286c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame, 287effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const blink::WebSecurityOrigin& security_origin, 288effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const blink::WebString& key_system); 289f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebApplicationCacheHost* createApplicationCacheHost( 290c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame, 291f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebApplicationCacheHostClient* client); 292f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebWorkerPermissionClientProxy* 293c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch createWorkerPermissionClientProxy(blink::WebLocalFrame* frame); 29403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual blink::WebExternalPopupMenu* createExternalPopupMenu( 29503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const blink::WebPopupMenuInfo& popup_menu_info, 29603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) blink::WebExternalPopupMenuClient* popup_menu_client); 297c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebCookieJar* cookieJar(blink::WebLocalFrame* frame); 298f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebServiceWorkerProvider* createServiceWorkerProvider( 299c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame); 300c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didAccessInitialDocument(blink::WebLocalFrame* frame); 301c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebFrame* createChildFrame(blink::WebLocalFrame* parent, 302c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& name); 303c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didDisownOpener(blink::WebLocalFrame* frame); 304f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void frameDetached(blink::WebFrame* frame); 305a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void frameFocused(); 306f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void willClose(blink::WebFrame* frame); 307c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didChangeName(blink::WebLocalFrame* frame, 308f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& name); 3094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void didMatchCSS( 310c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame, 311f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebVector<blink::WebString>& newly_matching_selectors, 312f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebVector<blink::WebString>& stopped_matching_selectors); 313c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool shouldReportDetailedMessageForSource( 314c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& source); 315c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didAddMessageToConsole(const blink::WebConsoleMessage& message, 316c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& source_name, 317c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch unsigned source_line, 318c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& stack_trace); 319c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void loadURLExternally(blink::WebLocalFrame* frame, 320f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request, 321c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebNavigationPolicy policy, 322c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& suggested_name); 3235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The WebDataSource::ExtraData* is assumed to be a DocumentState* subclass. 324f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebNavigationPolicy decidePolicyForNavigation( 3255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const NavigationPolicyInfo& info); 326c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebHistoryItem historyItemForNewChildFrame( 327c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebFrame* frame); 328c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void willSendSubmitEvent(blink::WebLocalFrame* frame, 329f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebFormElement& form); 330c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void willSubmitForm(blink::WebLocalFrame* frame, 331f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebFormElement& form); 332c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didCreateDataSource(blink::WebLocalFrame* frame, 333f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDataSource* datasource); 3345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void didStartProvisionalLoad(blink::WebLocalFrame* frame, 3355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool is_transition_navigation); 3367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void didReceiveServerRedirectForProvisionalLoad( 337c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame); 3387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void didFailProvisionalLoad( 339c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame, 340f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLError& error); 341c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didCommitProvisionalLoad( 342c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame, 343c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebHistoryItem& item, 344c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebHistoryCommitType commit_type); 345cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void didClearWindowObject(blink::WebLocalFrame* frame); 346c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didCreateDocumentElement(blink::WebLocalFrame* frame); 347c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didReceiveTitle(blink::WebLocalFrame* frame, 348f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& title, 349f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebTextDirection direction); 350c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didChangeIcon(blink::WebLocalFrame* frame, 351f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebIconURL::Type icon_type); 352c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didFinishDocumentLoad(blink::WebLocalFrame* frame); 353c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didHandleOnloadEvents(blink::WebLocalFrame* frame); 354c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didFailLoad(blink::WebLocalFrame* frame, 355f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLError& error); 356c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didFinishLoad(blink::WebLocalFrame* frame); 357c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didNavigateWithinPage(blink::WebLocalFrame* frame, 358c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebHistoryItem& item, 359c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebHistoryCommitType commit_type); 360c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didUpdateCurrentHistoryItem(blink::WebLocalFrame* frame); 3616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void addNavigationTransitionData( 3626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const blink::WebString& allowedDestinationOrigin, 3636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const blink::WebString& selector, 3646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const blink::WebString& markup); 365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void didChangeThemeColor(); 3665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void requestNotificationPermission( 3675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const blink::WebSecurityOrigin& origin, 3685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) blink::WebNotificationPermissionCallback* callback); 369a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual blink::WebNotificationPresenter* notificationPresenter(); 37023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual void didChangeSelection(bool is_empty_selection); 371c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebColorChooser* createColorChooser( 372c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebColorChooserClient* client, 373c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebColor& initial_color, 374c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebVector<blink::WebColorSuggestion>& suggestions); 375c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void runModalAlertDialog(const blink::WebString& message); 376c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool runModalConfirmDialog(const blink::WebString& message); 377c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool runModalPromptDialog(const blink::WebString& message, 378c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& default_value, 379c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebString* actual_value); 380c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool runModalBeforeUnloadDialog(bool is_reload, 381c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& message); 382a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void showContextMenu(const blink::WebContextMenuData& data); 383a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void clearContextMenu(); 384c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void willSendRequest(blink::WebLocalFrame* frame, 385c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch unsigned identifier, 386c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebURLRequest& request, 387c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebURLResponse& redirect_response); 388c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didReceiveResponse(blink::WebLocalFrame* frame, 389c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch unsigned identifier, 390c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebURLResponse& response); 391c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didFinishResourceLoad(blink::WebLocalFrame* frame, 392eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch unsigned identifier); 3937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void didLoadResourceFromMemoryCache( 394c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame, 395f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request, 396f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLResponse& response); 397c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didDisplayInsecureContent(blink::WebLocalFrame* frame); 398c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didRunInsecureContent(blink::WebLocalFrame* frame, 399f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebSecurityOrigin& origin, 400f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURL& target); 401c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didAbortLoading(blink::WebLocalFrame* frame); 402c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didCreateScriptContext(blink::WebLocalFrame* frame, 4037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) v8::Handle<v8::Context> context, 4047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) int extension_group, 405eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int world_id); 406c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void willReleaseScriptContext(blink::WebLocalFrame* frame, 4077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) v8::Handle<v8::Context> context, 408eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int world_id); 409c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didFirstVisuallyNonEmptyLayout(blink::WebLocalFrame* frame); 410c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didChangeScrollOffset(blink::WebLocalFrame* frame); 411c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void willInsertBody(blink::WebLocalFrame* frame); 4127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void reportFindInPageMatchCount(int request_id, 4137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) int count, 414eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool final_update); 4157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void reportFindInPageSelection(int request_id, 4167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) int active_match_ordinal, 417f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebRect& sel); 418c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void requestStorageQuota(blink::WebLocalFrame* frame, 419c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebStorageQuotaType type, 420c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch unsigned long long requested_size, 421c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebStorageQuotaCallbacks callbacks); 4227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void willOpenSocketStream( 423f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebSocketStreamHandle* handle); 42446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void willOpenWebSocket(blink::WebSocketHandle* handle); 4255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual blink::WebGeolocationClient* geolocationClient(); 426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual blink::WebPushClient* pushClient(); 4277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void willStartUsingPeerConnectionHandler( 428c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame, 429f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebRTCPeerConnectionHandler* handler); 4305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual blink::WebUserMediaClient* userMediaClient(); 4315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual blink::WebMIDIClient* webMIDIClient(); 4327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual bool willCheckAndDispatchMessageEvent( 433010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebLocalFrame* source_frame, 434010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebFrame* target_frame, 435010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebSecurityOrigin target_origin, 436f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDOMMessageEvent event); 437c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebString userAgentOverride(blink::WebLocalFrame* frame, 438c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebURL& url); 439c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebString doNotTrackValue(blink::WebLocalFrame* frame); 440c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool allowWebGL(blink::WebLocalFrame* frame, bool default_value); 441c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void didLoseWebGLContext(blink::WebLocalFrame* frame, 442eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int arb_robustness_status_code); 4435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void forwardInputEvent(const blink::WebInputEvent* event); 444f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual blink::WebScreenOrientationClient* webScreenOrientationClient(); 4451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool isControlledByServiceWorker(); 4461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void postAccessibilityEvent(const blink::WebAXObject& obj, 4471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebAXEvent event); 4481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void didChangeManifest(blink::WebLocalFrame*); 4495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 450010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // WebMediaPlayerDelegate implementation: 451010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void DidPlay(blink::WebMediaPlayer* player) OVERRIDE; 452010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void DidPause(blink::WebMediaPlayer* player) OVERRIDE; 453010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void PlayerGone(blink::WebMediaPlayer* player) OVERRIDE; 454010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 4555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(nasko): Make all tests in RenderViewImplTest friends and then move 4565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // this back to private member. 4575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnNavigate(const FrameMsg_Navigate_Params& params); 4587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Binds this render frame's service registry to a handle to the remote 460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // service registry. 461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void BindServiceRegistry( 462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mojo::ScopedMessagePipeHandle service_provider_handle); 463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 464eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 465eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id); 466eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 467868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private: 468a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) friend class RenderFrameObserver; 469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch friend class RendererAccessibilityTest; 4701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuDisplayNoneTest, SelectItem); 4711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuRemoveTest, RemoveOnChange); 4721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, NormalCase); 4731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, ShowPopupThenNavigate); 474effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch FRIEND_TEST_ALL_PREFIXES(RendererAccessibilityTest, 475effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch AccessibilityMessagesQueueWhileSwappedOut); 476cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderFrameImplTest, 4775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ShouldUpdateSelectionTextFromContextMenuParams); 478effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 479effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch OnExtendSelectionAndDelete); 480effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ReloadWhileSwappedOut); 481effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SendSwapOutACK); 482effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 483effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SetEditableSelectionAndComposition); 484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch OnSetAccessibilityMode); 4865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef std::map<GURL, double> HostZoomLevels; 488a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 489a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Functions to add and remove observers for this object. 490a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void AddObserver(RenderFrameObserver* observer); 491a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void RemoveObserver(RenderFrameObserver* observer); 492424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 4935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Builds and sends DidCommitProvisionalLoad to the host. 4945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void SendDidCommitProvisionalLoad(blink::WebFrame* frame); 4955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 496a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Gets the focused element. If no such element exists then the element will 497a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // be NULL. 498a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) blink::WebElement GetFocusedElement(); 499a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // IPC message handlers ------------------------------------------------------ 5015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // 5025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The documentation for these functions should be in 5035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // content/common/*_messages.h for the message that the function is handling. 504a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnBeforeUnload(); 505cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnSwapOut(int proxy_routing_id); 50603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void OnStop(); 5075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnShowContextMenu(const gfx::Point& location); 5085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnContextMenuClosed(const CustomContextMenuContext& custom_context); 5095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnCustomContextMenuAction(const CustomContextMenuContext& custom_context, 5105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) unsigned action); 511effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnUndo(); 512effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnRedo(); 513a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnCut(); 514a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnCopy(); 515a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnPaste(); 516effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnPasteAndMatchStyle(); 517effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnDelete(); 518effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnSelectAll(); 519effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnSelectRange(const gfx::Point& start, const gfx::Point& end); 520effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnUnselect(); 521c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void OnReplace(const base::string16& text); 522c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void OnReplaceMisspelling(const base::string16& text); 523a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnCSSInsertRequest(const std::string& css); 524a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnJavaScriptExecuteRequest(const base::string16& javascript, 525a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int id, 526a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool notify_result); 5271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void OnJavaScriptExecuteRequestForTests(const base::string16& javascript, 5281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int id, 5291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool notify_result); 530effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnSetEditableSelectionOffsets(int start, int end); 531effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnSetCompositionFromExistingText( 532effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch int start, int end, 533effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const std::vector<blink::WebCompositionUnderline>& underlines); 534effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnExtendSelectionAndDelete(int before, int after); 535e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch void OnReload(bool ignore_cache); 536f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void OnTextSurroundingSelectionRequest(size_t max_length); 5376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void OnAddStyleSheetByURL(const std::string& url); 5386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void OnSetupTransitionView(const std::string& markup); 5396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void OnBeginExitTransition(const std::string& css_selector); 540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnSetAccessibilityMode(AccessibilityMode new_mode); 5411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void OnDisownOpener(); 5421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_ANDROID) 5431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void OnSelectPopupMenuItems(bool canceled, 5441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::vector<int>& selected_indices); 5451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#elif defined(OS_MACOSX) 5461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void OnSelectPopupMenuItem(int selected_index); 547effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnCopyToFindPboard(); 548effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif 549a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 550a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Virtual since overridden by WebTestProxy for layout tests. 551a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual blink::WebNavigationPolicy DecidePolicyForNavigation( 552a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) RenderFrame* render_frame, 5535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const NavigationPolicyInfo& info); 554a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OpenURL(blink::WebFrame* frame, 555a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const GURL& url, 556a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const Referrer& referrer, 557a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) blink::WebNavigationPolicy policy); 5585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 559cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Update current main frame's encoding and send it to browser window. 560cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Since we want to let users see the right encoding info from menu 561cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // before finishing loading, we call the UpdateEncoding in 562cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // a) function:DidCommitLoadForFrame. When this function is called, 563cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // that means we have got first data. In here we try to get encoding 564cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // of page if it has been specified in http header. 565cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // b) function:DidReceiveTitle. When this function is called, 566cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // that means we have got specified title. Because in most of webpages, 567cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // title tags will follow meta tags. In here we try to get encoding of 568cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // page if it has been specified in meta tag. 569cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // c) function:DidFinishDocumentLoadForFrame. When this function is 570cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // called, that means we have got whole html page. In here we should 571cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // finally get right encoding of page. 572cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void UpdateEncoding(blink::WebFrame* frame, 573cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string& encoding_name); 574cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 575effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Dispatches the current state of selection on the webpage to the browser if 576effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // it has changed. 577effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // TODO(varunjain): delete this method once we figure out how to keep 578effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // selection handles in sync with the webpage. 579effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void SyncSelectionIfRequired(); 580effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 5815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns whether |params.selection_text| should be synchronized to the 5825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // browser before bringing up the context menu. Static for testing. 5835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static bool ShouldUpdateSelectionTextFromContextMenuParams( 5845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& selection_text, 5855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) size_t selection_text_offset, 5865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Range& selection_range, 5875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const ContextMenuParams& params); 5885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 589c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool RunJavaScriptMessage(JavaScriptMessageType type, 590c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::string16& message, 591c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::string16& default_value, 592c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const GURL& frame_url, 593c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::string16* result); 594c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 5955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Loads the appropriate error page for the specified failure into the frame. 5965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void LoadNavigationErrorPage(const blink::WebURLRequest& failed_request, 5975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const blink::WebURLError& error, 5985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool replace); 5995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void HandleJavascriptExecutionResult(const base::string16& javascript, 6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int id, 6021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool notify_result, 6031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci v8::Handle<v8::Value> result); 6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Initializes |web_user_media_client_|. If this fails, because it wasn't 606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // possible to create a MediaStreamClient (e.g., WebRTC is disabled), then 607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // |web_user_media_client_| will remain NULL. 608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void InitializeUserMediaClient(); 609010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 610010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebMediaPlayer* CreateWebMediaPlayerForMediaStream( 611010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const blink::WebURL& url, 612010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebMediaPlayerClient* client); 613010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 614cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Creates a factory object used for creating audio and video renderers. 615cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The method is virtual so that layouttests can override it. 616cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual scoped_ptr<MediaStreamRendererFactory> CreateRendererFactory(); 617cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 618f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Returns the URL being loaded by the |frame_|'s request. 619f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) GURL GetLoadingUrl() const; 620f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 621010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_ANDROID) 622cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) blink::WebMediaPlayer* CreateAndroidWebMediaPlayer( 623010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const blink::WebURL& url, 6241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebMediaPlayerClient* client, 6251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebContentDecryptionModule* initial_cdm); 626cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 627cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) RendererMediaPlayerManager* GetMediaPlayerManager(); 628f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif 629f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 630f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(ENABLE_BROWSER_CDMS) 631cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) RendererCdmManager* GetCdmManager(); 632010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif 633010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 634c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Stores the WebLocalFrame we are associated with. 635c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebLocalFrame* frame_; 6365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 6375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::WeakPtr<RenderViewImpl> render_view_; 638868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int routing_id_; 639424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool is_swapped_out_; 640cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // RenderFrameProxy exists only when is_swapped_out_ is true. 641cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // TODO(nasko): This can be removed once we don't have a swapped out state on 642cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // RenderFrame. See https://crbug.com/357747. 643cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) RenderFrameProxy* render_frame_proxy_; 644424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool is_detaching_; 645868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 646a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(ENABLE_PLUGINS) 647a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Current text input composition text. Empty if no composition is in 648a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // progress. 649a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 pepper_composition_text_; 650a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 651a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 6525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RendererWebCookieJarImpl cookie_jar_; 6535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 654a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // All the registered observers. 655a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ObserverList<RenderFrameObserver> observers_; 656a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 6575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_refptr<ChildFrameCompositingHelper> compositing_helper_; 6585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 659a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // The node that the context menu was pressed over. 660a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) blink::WebNode context_menu_node_; 661a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 6625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // External context menu requests we're waiting for. "Internal" 6635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // (WebKit-originated) context menu events will have an ID of 0 and will not 6645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // be in this map. 6655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // 6665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // We don't want to add internal ones since some of the "special" page 6675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // handlers in the browser process just ignore the context menu requests so 6685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // avoid showing context menus, and so this will cause right clicks to leak 6695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // entries in this map. Most users of the custom context menu (e.g. Pepper 6705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // plugins) are normally only on "regular" pages and the regular pages will 6715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // always respond properly to the request, so we don't have to worry so 6725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // much about leaks. 6735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IDMap<ContextMenuClient, IDMapExternalPointer> pending_context_menus_; 6745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 675effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // The text selection the last time DidChangeSelection got called. May contain 676effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // additional characters before and after the selected text, for IMEs. The 677effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // portion of this string that is the actual selected text starts at index 678effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // |selection_range_.GetMin() - selection_text_offset_| and has length 679effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // |selection_range_.length()|. 680effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::string16 selection_text_; 681effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // The offset corresponding to the start of |selection_text_| in the document. 682effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch size_t selection_text_offset_; 683effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Range over the document corresponding to the actual selected text (which 684effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // could correspond to a substring of |selection_text_|; see above). 685effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch gfx::Range selection_range_; 686effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Used to inform didChangeSelection() when it is called in the context 687effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // of handling a InputMsg_SelectRange IPC. 688effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch bool handling_select_range_; 689effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 6900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // The next group of objects all implement RenderFrameObserver, so are deleted 6910529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // along with the RenderFrame automatically. This is why we just store weak 6920529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // references. 6930529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Dispatches permission requests for Web Notifications. 6955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NotificationPermissionDispatcher* notification_permission_dispatcher_; 6965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 6970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Holds a reference to the service which provides desktop notifications. 6985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(peter) Remove this once Web Notifications are routed through Platform. 6990529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch NotificationProvider* notification_provider_; 7000529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Destroyed via the RenderFrameObserver::OnDestruct() mechanism. 7021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UserMediaClientImpl* web_user_media_client_; 703010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 704f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // MidiClient attached to this frame; lazily initialized. 705f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) MidiDispatcher* midi_dispatcher_; 706f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 707cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_ANDROID) 708f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Manages all media players in this render frame for communicating with the 709f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // real media player in the browser process. It's okay to use a raw pointer 710f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // since it's a RenderFrameObserver. 711cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) RendererMediaPlayerManager* media_player_manager_; 712f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif 713f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 714f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(ENABLE_BROWSER_CDMS) 715f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Manage all CDMs in this render frame for communicating with the real CDM in 716f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // the browser process. It's okay to use a raw pointer since it's a 717f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // RenderFrameObserver. 718cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) RendererCdmManager* cdm_manager_; 719cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 720cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#if defined(VIDEO_HOLE) 722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Whether or not this RenderFrameImpl contains a media player. Used to 723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // register as an observer for video-hole-specific events. 724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool contains_media_player_; 725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif 726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The geolocation dispatcher attached to this frame, lazily initialized. 72846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) GeolocationDispatcher* geolocation_dispatcher_; 72946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The push messaging dispatcher attached to this frame, lazily initialized. 731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PushMessagingDispatcher* push_messaging_dispatcher_; 732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ServiceRegistryImpl service_registry_; 734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The screen orientation dispatcher attached to the frame, lazily 736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // initialized. 737f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ScreenOrientationDispatcher* screen_orientation_dispatcher_; 738f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 7391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The Manifest Manager handles the manifest requests from the browser 7401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // process. 7411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ManifestManager* manifest_manager_; 7421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The current accessibility mode. 744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AccessibilityMode accessibility_mode_; 745116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Only valid if |accessibility_mode_| is anything other than 747116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // AccessibilityModeOff. 748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch RendererAccessibility* renderer_accessibility_; 749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_MACOSX) || defined(OS_ANDROID) 7511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The external popup for the currently showing select popup. 7521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ExternalPopupMenu> external_popup_menu_; 7531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 7541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 755010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::WeakPtrFactory<RenderFrameImpl> weak_factory_; 756010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 757868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl); 758868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 759868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 760868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} // namespace content 761868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 7627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 763