Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Side by Side Diff: content/renderer/render_frame_impl.h

Issue 264773002: Start moving WebUserMediaClient on the chromium side to be per frame instead of view. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/public/test/layouttest_support.h ('k') | content/renderer/render_frame_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 5 #ifndef CONTENT_RENDERER_RENDER_FRAME_IMPL_H_
6 #define CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 6 #define CONTENT_RENDERER_RENDER_FRAME_IMPL_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/files/file_path.h" 11 #include "base/files/file_path.h"
12 #include "base/gtest_prod_util.h" 12 #include "base/gtest_prod_util.h"
13 #include "base/id_map.h" 13 #include "base/id_map.h"
14 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
15 #include "base/observer_list.h" 15 #include "base/observer_list.h"
16 #include "base/process/process_handle.h" 16 #include "base/process/process_handle.h"
17 #include "content/public/common/javascript_message_type.h" 17 #include "content/public/common/javascript_message_type.h"
18 #include "content/public/common/referrer.h" 18 #include "content/public/common/referrer.h"
19 #include "content/public/renderer/render_frame.h" 19 #include "content/public/renderer/render_frame.h"
20 #include "content/renderer/media/webmediaplayer_delegate.h"
20 #include "content/renderer/renderer_webcookiejar_impl.h" 21 #include "content/renderer/renderer_webcookiejar_impl.h"
21 #include "ipc/ipc_message.h" 22 #include "ipc/ipc_message.h"
22 #include "third_party/WebKit/public/web/WebDataSource.h" 23 #include "third_party/WebKit/public/web/WebDataSource.h"
23 #include "third_party/WebKit/public/web/WebFrameClient.h" 24 #include "third_party/WebKit/public/web/WebFrameClient.h"
24 #include "third_party/WebKit/public/web/WebHistoryCommitType.h" 25 #include "third_party/WebKit/public/web/WebHistoryCommitType.h"
25 #include "ui/gfx/range/range.h" 26 #include "ui/gfx/range/range.h"
26 27
27 class TransportDIB; 28 class TransportDIB;
28 struct FrameMsg_BuffersSwapped_Params; 29 struct FrameMsg_BuffersSwapped_Params;
29 struct FrameMsg_CompositorFrameSwapped_Params; 30 struct FrameMsg_CompositorFrameSwapped_Params;
30 struct FrameMsg_Navigate_Params; 31 struct FrameMsg_Navigate_Params;
31 32
32 namespace blink { 33 namespace blink {
33 class WebGeolocationClient; 34 class WebGeolocationClient;
34 class WebInputEvent; 35 class WebInputEvent;
35 class WebMouseEvent; 36 class WebMouseEvent;
36 class WebContentDecryptionModule; 37 class WebContentDecryptionModule;
37 class WebMIDIClient; 38 class WebMIDIClient;
39 class WebMediaPlayer;
38 class WebNotificationPresenter; 40 class WebNotificationPresenter;
39 class WebSecurityOrigin; 41 class WebSecurityOrigin;
40 class WebUserMediaClient;
41 struct WebCompositionUnderline; 42 struct WebCompositionUnderline;
42 struct WebContextMenuData; 43 struct WebContextMenuData;
43 struct WebCursorInfo; 44 struct WebCursorInfo;
44 } 45 }
45 46
46 namespace gfx { 47 namespace gfx {
47 class Point; 48 class Point;
48 class Range; 49 class Range;
49 class Rect; 50 class Rect;
50 } 51 }
51 52
52 namespace content { 53 namespace content {
53 54
54 class ChildFrameCompositingHelper; 55 class ChildFrameCompositingHelper;
56 class MediaStreamClient;
55 class NotificationProvider; 57 class NotificationProvider;
56 class PepperPluginInstanceImpl; 58 class PepperPluginInstanceImpl;
57 class RendererPpapiHost; 59 class RendererPpapiHost;
58 class RenderFrameObserver; 60 class RenderFrameObserver;
59 class RenderViewImpl; 61 class RenderViewImpl;
60 class RenderWidget; 62 class RenderWidget;
61 class RenderWidgetFullscreenPepper; 63 class RenderWidgetFullscreenPepper;
62 struct CustomContextMenuContext; 64 struct CustomContextMenuContext;
63 65
64 class CONTENT_EXPORT RenderFrameImpl 66 class CONTENT_EXPORT RenderFrameImpl
65 : public RenderFrame, 67 : public RenderFrame,
66 NON_EXPORTED_BASE(public blink::WebFrameClient) { 68 NON_EXPORTED_BASE(public blink::WebFrameClient),
69 NON_EXPORTED_BASE(public WebMediaPlayerDelegate) {
67 public: 70 public:
68 // Creates a new RenderFrame. |render_view| is the RenderView object that this 71 // Creates a new RenderFrame. |render_view| is the RenderView object that this
69 // frame belongs to. 72 // frame belongs to.
70 // Callers *must* call |SetWebFrame| immediately after creation. 73 // Callers *must* call |SetWebFrame| immediately after creation.
71 // TODO(creis): We should structure this so that |SetWebFrame| isn't needed. 74 // TODO(creis): We should structure this so that |SetWebFrame| isn't needed.
72 static RenderFrameImpl* Create(RenderViewImpl* render_view, int32 routing_id); 75 static RenderFrameImpl* Create(RenderViewImpl* render_view, int32 routing_id);
73 76
74 // Just like RenderFrame::FromWebFrame but returns the implementation. 77 // Just like RenderFrame::FromWebFrame but returns the implementation.
75 static RenderFrameImpl* FromWebFrame(blink::WebFrame* web_frame); 78 static RenderFrameImpl* FromWebFrame(blink::WebFrame* web_frame);
76 79
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 const base::string16& text, 171 const base::string16& text,
169 const std::vector<blink::WebCompositionUnderline>& underlines, 172 const std::vector<blink::WebCompositionUnderline>& underlines,
170 int selection_start, 173 int selection_start,
171 int selection_end); 174 int selection_end);
172 void OnImeConfirmComposition( 175 void OnImeConfirmComposition(
173 const base::string16& text, 176 const base::string16& text,
174 const gfx::Range& replacement_range, 177 const gfx::Range& replacement_range,
175 bool keep_selection); 178 bool keep_selection);
176 #endif // ENABLE_PLUGINS 179 #endif // ENABLE_PLUGINS
177 180
181 // Overrides the MediaStreamClient used when creating MediaStream players.
182 // Must be called before any players are created.
183 void SetMediaStreamClientForTesting(MediaStreamClient* media_stream_client);
184
178 // IPC::Sender 185 // IPC::Sender
179 virtual bool Send(IPC::Message* msg) OVERRIDE; 186 virtual bool Send(IPC::Message* msg) OVERRIDE;
180 187
181 // IPC::Listener 188 // IPC::Listener
182 virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 189 virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
183 190
184 // RenderFrame implementation: 191 // RenderFrame implementation:
185 virtual RenderView* GetRenderView() OVERRIDE; 192 virtual RenderView* GetRenderView() OVERRIDE;
186 virtual int GetRoutingID() OVERRIDE; 193 virtual int GetRoutingID() OVERRIDE;
187 virtual blink::WebFrame* GetWebFrame() OVERRIDE; 194 virtual blink::WebFrame* GetWebFrame() OVERRIDE;
188 virtual WebPreferences& GetWebkitPreferences() OVERRIDE; 195 virtual WebPreferences& GetWebkitPreferences() OVERRIDE;
189 virtual int ShowContextMenu(ContextMenuClient* client, 196 virtual int ShowContextMenu(ContextMenuClient* client,
190 const ContextMenuParams& params) OVERRIDE; 197 const ContextMenuParams& params) OVERRIDE;
191 virtual void CancelContextMenu(int request_id) OVERRIDE; 198 virtual void CancelContextMenu(int request_id) OVERRIDE;
192 virtual blink::WebNode GetContextMenuNode() const OVERRIDE; 199 virtual blink::WebNode GetContextMenuNode() const OVERRIDE;
193 virtual blink::WebPlugin* CreatePlugin( 200 virtual blink::WebPlugin* CreatePlugin(
194 blink::WebFrame* frame, 201 blink::WebFrame* frame,
195 const WebPluginInfo& info, 202 const WebPluginInfo& info,
196 const blink::WebPluginParams& params) OVERRIDE; 203 const blink::WebPluginParams& params) OVERRIDE;
197 virtual void LoadURLExternally(blink::WebLocalFrame* frame, 204 virtual void LoadURLExternally(blink::WebLocalFrame* frame,
198 const blink::WebURLRequest& request, 205 const blink::WebURLRequest& request,
199 blink::WebNavigationPolicy policy) OVERRIDE; 206 blink::WebNavigationPolicy policy) OVERRIDE;
200 virtual void ExecuteJavaScript(const base::string16& javascript) OVERRIDE; 207 virtual void ExecuteJavaScript(const base::string16& javascript) OVERRIDE;
201 208
202 // blink::WebFrameClient implementation ------------------------------------- 209 // blink::WebFrameClient implementation:
203 virtual blink::WebPlugin* createPlugin(blink::WebLocalFrame* frame, 210 virtual blink::WebPlugin* createPlugin(blink::WebLocalFrame* frame,
204 const blink::WebPluginParams& params); 211 const blink::WebPluginParams& params);
205 virtual blink::WebMediaPlayer* createMediaPlayer( 212 virtual blink::WebMediaPlayer* createMediaPlayer(
206 blink::WebLocalFrame* frame, 213 blink::WebLocalFrame* frame,
207 const blink::WebURL& url, 214 const blink::WebURL& url,
208 blink::WebMediaPlayerClient* client); 215 blink::WebMediaPlayerClient* client);
209 virtual blink::WebContentDecryptionModule* createContentDecryptionModule( 216 virtual blink::WebContentDecryptionModule* createContentDecryptionModule(
210 blink::WebLocalFrame* frame, 217 blink::WebLocalFrame* frame,
211 const blink::WebSecurityOrigin& security_origin, 218 const blink::WebSecurityOrigin& security_origin,
212 const blink::WebString& key_system); 219 const blink::WebString& key_system);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 virtual blink::WebString userAgentOverride(blink::WebLocalFrame* frame, 363 virtual blink::WebString userAgentOverride(blink::WebLocalFrame* frame,
357 const blink::WebURL& url); 364 const blink::WebURL& url);
358 virtual blink::WebString doNotTrackValue(blink::WebLocalFrame* frame); 365 virtual blink::WebString doNotTrackValue(blink::WebLocalFrame* frame);
359 virtual bool allowWebGL(blink::WebLocalFrame* frame, bool default_value); 366 virtual bool allowWebGL(blink::WebLocalFrame* frame, bool default_value);
360 virtual void didLoseWebGLContext(blink::WebLocalFrame* frame, 367 virtual void didLoseWebGLContext(blink::WebLocalFrame* frame,
361 int arb_robustness_status_code); 368 int arb_robustness_status_code);
362 virtual void forwardInputEvent(const blink::WebInputEvent* event); 369 virtual void forwardInputEvent(const blink::WebInputEvent* event);
363 virtual void initializeChildFrame(const blink::WebRect& frame_rect, 370 virtual void initializeChildFrame(const blink::WebRect& frame_rect,
364 float scale_factor); 371 float scale_factor);
365 372
373 // WebMediaPlayerDelegate implementation:
374 virtual void DidPlay(blink::WebMediaPlayer* player) OVERRIDE;
375 virtual void DidPause(blink::WebMediaPlayer* player) OVERRIDE;
376 virtual void PlayerGone(blink::WebMediaPlayer* player) OVERRIDE;
377
366 // TODO(nasko): Make all tests in RenderViewImplTest friends and then move 378 // TODO(nasko): Make all tests in RenderViewImplTest friends and then move
367 // this back to private member. 379 // this back to private member.
368 void OnNavigate(const FrameMsg_Navigate_Params& params); 380 void OnNavigate(const FrameMsg_Navigate_Params& params);
369 381
370 protected: 382 protected:
371 RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id); 383 RenderFrameImpl(RenderViewImpl* render_view, int32 routing_id);
372 384
373 private: 385 private:
374 friend class RenderFrameObserver; 386 friend class RenderFrameObserver;
375 FRIEND_TEST_ALL_PREFIXES(RendererAccessibilityTest, 387 FRIEND_TEST_ALL_PREFIXES(RendererAccessibilityTest,
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 const base::string16& message, 478 const base::string16& message,
467 const base::string16& default_value, 479 const base::string16& default_value,
468 const GURL& frame_url, 480 const GURL& frame_url,
469 base::string16* result); 481 base::string16* result);
470 482
471 // Loads the appropriate error page for the specified failure into the frame. 483 // Loads the appropriate error page for the specified failure into the frame.
472 void LoadNavigationErrorPage(const blink::WebURLRequest& failed_request, 484 void LoadNavigationErrorPage(const blink::WebURLRequest& failed_request,
473 const blink::WebURLError& error, 485 const blink::WebURLError& error,
474 bool replace); 486 bool replace);
475 487
488 // Initializes |media_stream_client_|, returning true if successful. Returns
489 // false if it wasn't possible to create a MediaStreamClient (e.g., WebRTC is
490 // disabled) in which case |media_stream_client_| is NULL.
491 bool InitializeMediaStreamClient();
492
493 blink::WebMediaPlayer* CreateWebMediaPlayerForMediaStream(
494 const blink::WebURL& url,
495 blink::WebMediaPlayerClient* client);
496
497 #if defined(OS_ANDROID)
498 blink::WebMediaPlayer* CreateAndroidWebMediaPlayer(
499 const blink::WebURL& url,
500 blink::WebMediaPlayerClient* client);
501 #endif
502
476 // Stores the WebLocalFrame we are associated with. 503 // Stores the WebLocalFrame we are associated with.
477 blink::WebLocalFrame* frame_; 504 blink::WebLocalFrame* frame_;
478 505
479 base::WeakPtr<RenderViewImpl> render_view_; 506 base::WeakPtr<RenderViewImpl> render_view_;
480 int routing_id_; 507 int routing_id_;
481 bool is_swapped_out_; 508 bool is_swapped_out_;
482 bool is_detaching_; 509 bool is_detaching_;
483 510
484 #if defined(ENABLE_PLUGINS) 511 #if defined(ENABLE_PLUGINS)
485 // Current text input composition text. Empty if no composition is in 512 // Current text input composition text. Empty if no composition is in
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 // of handling a InputMsg_SelectRange IPC. 552 // of handling a InputMsg_SelectRange IPC.
526 bool handling_select_range_; 553 bool handling_select_range_;
527 554
528 // The next group of objects all implement RenderFrameObserver, so are deleted 555 // The next group of objects all implement RenderFrameObserver, so are deleted
529 // along with the RenderFrame automatically. This is why we just store weak 556 // along with the RenderFrame automatically. This is why we just store weak
530 // references. 557 // references.
531 558
532 // Holds a reference to the service which provides desktop notifications. 559 // Holds a reference to the service which provides desktop notifications.
533 NotificationProvider* notification_provider_; 560 NotificationProvider* notification_provider_;
534 561
562 // MediaStreamClient attached to this frame; lazily initialized.
563 MediaStreamClient* media_stream_client_;
564 blink::WebUserMediaClient* web_user_media_client_;
565
566 base::WeakPtrFactory<RenderFrameImpl> weak_factory_;
567
535 DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl); 568 DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl);
536 }; 569 };
537 570
538 } // namespace content 571 } // namespace content
539 572
540 #endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_ 573 #endif // CONTENT_RENDERER_RENDER_FRAME_IMPL_H_
OLDNEW
« no previous file with comments | « content/public/test/layouttest_support.h ('k') | content/renderer/render_frame_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698