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

Unified 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, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/public/test/layouttest_support.h ('k') | content/renderer/render_frame_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_frame_impl.h
===================================================================
--- content/renderer/render_frame_impl.h (revision 267930)
+++ content/renderer/render_frame_impl.h (working copy)
@@ -17,6 +17,7 @@
#include "content/public/common/javascript_message_type.h"
#include "content/public/common/referrer.h"
#include "content/public/renderer/render_frame.h"
+#include "content/renderer/media/webmediaplayer_delegate.h"
#include "content/renderer/renderer_webcookiejar_impl.h"
#include "ipc/ipc_message.h"
#include "third_party/WebKit/public/web/WebDataSource.h"
@@ -35,9 +36,9 @@
class WebMouseEvent;
class WebContentDecryptionModule;
class WebMIDIClient;
+class WebMediaPlayer;
class WebNotificationPresenter;
class WebSecurityOrigin;
-class WebUserMediaClient;
struct WebCompositionUnderline;
struct WebContextMenuData;
struct WebCursorInfo;
@@ -52,6 +53,7 @@
namespace content {
class ChildFrameCompositingHelper;
+class MediaStreamClient;
class NotificationProvider;
class PepperPluginInstanceImpl;
class RendererPpapiHost;
@@ -63,7 +65,8 @@
class CONTENT_EXPORT RenderFrameImpl
: public RenderFrame,
- NON_EXPORTED_BASE(public blink::WebFrameClient) {
+ NON_EXPORTED_BASE(public blink::WebFrameClient),
+ NON_EXPORTED_BASE(public WebMediaPlayerDelegate) {
public:
// Creates a new RenderFrame. |render_view| is the RenderView object that this
// frame belongs to.
@@ -175,6 +178,10 @@
bool keep_selection);
#endif // ENABLE_PLUGINS
+ // Overrides the MediaStreamClient used when creating MediaStream players.
+ // Must be called before any players are created.
+ void SetMediaStreamClientForTesting(MediaStreamClient* media_stream_client);
+
// IPC::Sender
virtual bool Send(IPC::Message* msg) OVERRIDE;
@@ -199,7 +206,7 @@
blink::WebNavigationPolicy policy) OVERRIDE;
virtual void ExecuteJavaScript(const base::string16& javascript) OVERRIDE;
- // blink::WebFrameClient implementation -------------------------------------
+ // blink::WebFrameClient implementation:
virtual blink::WebPlugin* createPlugin(blink::WebLocalFrame* frame,
const blink::WebPluginParams& params);
virtual blink::WebMediaPlayer* createMediaPlayer(
@@ -363,6 +370,11 @@
virtual void initializeChildFrame(const blink::WebRect& frame_rect,
float scale_factor);
+ // WebMediaPlayerDelegate implementation:
+ virtual void DidPlay(blink::WebMediaPlayer* player) OVERRIDE;
+ virtual void DidPause(blink::WebMediaPlayer* player) OVERRIDE;
+ virtual void PlayerGone(blink::WebMediaPlayer* player) OVERRIDE;
+
// TODO(nasko): Make all tests in RenderViewImplTest friends and then move
// this back to private member.
void OnNavigate(const FrameMsg_Navigate_Params& params);
@@ -473,6 +485,21 @@
const blink::WebURLError& error,
bool replace);
+ // Initializes |media_stream_client_|, returning true if successful. Returns
+ // false if it wasn't possible to create a MediaStreamClient (e.g., WebRTC is
+ // disabled) in which case |media_stream_client_| is NULL.
+ bool InitializeMediaStreamClient();
+
+ blink::WebMediaPlayer* CreateWebMediaPlayerForMediaStream(
+ const blink::WebURL& url,
+ blink::WebMediaPlayerClient* client);
+
+#if defined(OS_ANDROID)
+ blink::WebMediaPlayer* CreateAndroidWebMediaPlayer(
+ const blink::WebURL& url,
+ blink::WebMediaPlayerClient* client);
+#endif
+
// Stores the WebLocalFrame we are associated with.
blink::WebLocalFrame* frame_;
@@ -532,6 +559,12 @@
// Holds a reference to the service which provides desktop notifications.
NotificationProvider* notification_provider_;
+ // MediaStreamClient attached to this frame; lazily initialized.
+ MediaStreamClient* media_stream_client_;
+ blink::WebUserMediaClient* web_user_media_client_;
+
+ base::WeakPtrFactory<RenderFrameImpl> weak_factory_;
+
DISALLOW_COPY_AND_ASSIGN(RenderFrameImpl);
};
« 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