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