summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-02 22:25:55 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-02 22:25:55 +0000
commitd726eddc0fb9a344f5a584786307c8d9ffa16cd0 (patch)
tree9a2e9d2cfecae6f03f0f574a277e5ae1eb557334 /chrome
parentcd36c6e67313d9a1b21f6c5806dfab527778f1e8 (diff)
downloadchromium_src-d726eddc0fb9a344f5a584786307c8d9ffa16cd0.zip
chromium_src-d726eddc0fb9a344f5a584786307c8d9ffa16cd0.tar.gz
chromium_src-d726eddc0fb9a344f5a584786307c8d9ffa16cd0.tar.bz2
Update content API in preparation for migrating webkit/renderer/media/ to content/renderer/media/.
The biggest change is to replace the coarse-grained WebMediaPlayer-based content API with finer-grained APIs for controlling media resource loads (e.g., prerendering) and media stream audio/video rendering (e.g., WebRTC layout tests). BUG=239826,251306 Review URL: https://chromiumcodereview.appspot.com/18123002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209797 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc21
-rw-r--r--chrome/renderer/chrome_content_renderer_client.h8
-rw-r--r--chrome/renderer/prerender/prerender_webmediaplayer.cc50
-rw-r--r--chrome/renderer/prerender/prerender_webmediaplayer.h35
4 files changed, 28 insertions, 86 deletions
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index f1e19dc..7959ea0 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -463,22 +463,21 @@ WebPlugin* ChromeContentRendererClient::CreatePluginReplacement(
return placeholder->plugin();
}
-webkit_media::WebMediaPlayerImpl*
-ChromeContentRendererClient::OverrideCreateWebMediaPlayer(
+void ChromeContentRendererClient::DeferMediaLoad(
content::RenderView* render_view,
- WebKit::WebFrame* frame,
- WebKit::WebMediaPlayerClient* client,
- base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
- const webkit_media::WebMediaPlayerParams& params) {
+ const base::Closure& closure) {
#if defined(OS_ANDROID)
// Chromium for Android doesn't support prerender yet.
- return NULL;
+ closure.Run();
+ return;
#else
- if (!prerender::PrerenderHelper::IsPrerendering(render_view))
- return NULL;
+ if (!prerender::PrerenderHelper::IsPrerendering(render_view)) {
+ closure.Run();
+ return;
+ }
- return new prerender::PrerenderWebMediaPlayer(
- render_view, frame, client, delegate, params);
+ // Lifetime is tied to |render_view| via content::RenderViewObserver.
+ new prerender::PrerenderWebMediaPlayer(render_view, closure);
#endif
}
diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h
index be628b21..7d8b225 100644
--- a/chrome/renderer/chrome_content_renderer_client.h
+++ b/chrome/renderer/chrome_content_renderer_client.h
@@ -85,12 +85,8 @@ class ChromeContentRendererClient : public content::ContentRendererClient {
const WebKit::WebURLError& error,
std::string* error_html,
string16* error_description) OVERRIDE;
- virtual webkit_media::WebMediaPlayerImpl* OverrideCreateWebMediaPlayer(
- content::RenderView* render_view,
- WebKit::WebFrame* frame,
- WebKit::WebMediaPlayerClient* client,
- base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
- const webkit_media::WebMediaPlayerParams& params) OVERRIDE;
+ virtual void DeferMediaLoad(content::RenderView* render_view,
+ const base::Closure& closure) OVERRIDE;
virtual bool RunIdleHandlerWhenWidgetsHidden() OVERRIDE;
virtual bool AllowPopup() OVERRIDE;
virtual bool ShouldFork(WebKit::WebFrame* frame,
diff --git a/chrome/renderer/prerender/prerender_webmediaplayer.cc b/chrome/renderer/prerender/prerender_webmediaplayer.cc
index dd7be9a..c81402c 100644
--- a/chrome/renderer/prerender/prerender_webmediaplayer.cc
+++ b/chrome/renderer/prerender/prerender_webmediaplayer.cc
@@ -4,57 +4,23 @@
#include "chrome/renderer/prerender/prerender_webmediaplayer.h"
+#include "base/callback_helpers.h"
#include "chrome/common/prerender_messages.h"
#include "content/public/renderer/render_view.h"
-#include "third_party/WebKit/public/platform/WebURL.h"
-#include "third_party/WebKit/public/web/WebMediaSource.h"
-#include "webkit/renderer/media/webmediaplayer_delegate.h"
namespace prerender {
PrerenderWebMediaPlayer::PrerenderWebMediaPlayer(
content::RenderView* render_view,
- WebKit::WebFrame* frame,
- WebKit::WebMediaPlayerClient* client,
- base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
- const webkit_media::WebMediaPlayerParams& params)
+ const base::Closure& closure)
: RenderViewObserver(render_view),
- WebMediaPlayerImpl(frame, client, delegate, params),
is_prerendering_(true),
- url_loaded_(false),
- cors_mode_(CORSModeUnspecified) {
+ continue_loading_cb_(closure) {
+ DCHECK(!continue_loading_cb_.is_null());
}
PrerenderWebMediaPlayer::~PrerenderWebMediaPlayer() {}
-void PrerenderWebMediaPlayer::load(const WebKit::WebURL& url,
- CORSMode cors_mode) {
- DCHECK(!url_loaded_);
- if (is_prerendering_) {
- url_to_load_.reset(new WebKit::WebURL(url));
- media_source_to_load_.reset();
- cors_mode_ = cors_mode;
- return;
- }
- url_loaded_ = true;
- WebMediaPlayerImpl::load(url, cors_mode);
-}
-
-void PrerenderWebMediaPlayer::load(const WebKit::WebURL& url,
- WebKit::WebMediaSource* media_source,
- CORSMode cors_mode) {
- DCHECK(!url_loaded_);
- if (is_prerendering_) {
- url_to_load_.reset(new WebKit::WebURL(url));
- media_source_to_load_.reset(media_source);
- cors_mode_ = cors_mode;
- return;
- }
-
- url_loaded_ = true;
- WebMediaPlayerImpl::load(url, media_source, cors_mode);
-}
-
bool PrerenderWebMediaPlayer::OnMessageReceived(const IPC::Message& message) {
IPC_BEGIN_MESSAGE_MAP(PrerenderWebMediaPlayer, message)
IPC_MESSAGE_HANDLER(PrerenderMsg_SetIsPrerendering, OnSetIsPrerendering)
@@ -72,13 +38,7 @@ void PrerenderWebMediaPlayer::OnSetIsPrerendering(bool is_prerendering) {
return;
is_prerendering_ = false;
- if (!url_to_load_)
- return;
-
- if (media_source_to_load_)
- load(*url_to_load_, media_source_to_load_.release(), cors_mode_);
- else
- load(*url_to_load_, cors_mode_);
+ base::ResetAndReturn(&continue_loading_cb_).Run();
}
} // namespace prerender
diff --git a/chrome/renderer/prerender/prerender_webmediaplayer.h b/chrome/renderer/prerender/prerender_webmediaplayer.h
index da0b4d3..60f9403 100644
--- a/chrome/renderer/prerender/prerender_webmediaplayer.h
+++ b/chrome/renderer/prerender/prerender_webmediaplayer.h
@@ -5,33 +5,23 @@
#ifndef CHROME_RENDERER_PRERENDER_PRERENDER_WEBMEDIAPLAYER_H_
#define CHROME_RENDERER_PRERENDER_PRERENDER_WEBMEDIAPLAYER_H_
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
+#include "base/callback.h"
#include "content/public/renderer/render_view_observer.h"
-#include "webkit/renderer/media/webmediaplayer_impl.h"
namespace prerender {
-// Substitute for WebMediaPlayerImpl to be used in prerendered pages. Defers
-// the loading of the media till the prerendered page is swapped in.
-class PrerenderWebMediaPlayer
- : public content::RenderViewObserver,
- public webkit_media::WebMediaPlayerImpl {
+// Defers media player loading in prerendered pages until the prerendered page
+// is swapped in.
+//
+// TODO(scherkus): Rename as this class no longer inherits WebMediaPlayer.
+class PrerenderWebMediaPlayer : public content::RenderViewObserver {
public:
- PrerenderWebMediaPlayer(
- content::RenderView* render_view,
- WebKit::WebFrame* frame,
- WebKit::WebMediaPlayerClient* client,
- base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
- const webkit_media::WebMediaPlayerParams& params);
+ // Will run |closure| to continue loading the media resource once the page is
+ // swapped in.
+ PrerenderWebMediaPlayer(content::RenderView* render_view,
+ const base::Closure& closure);
virtual ~PrerenderWebMediaPlayer();
- // WebMediaPlayerImpl methods:
- virtual void load(const WebKit::WebURL& url, CORSMode cors_mode) OVERRIDE;
- virtual void load(const WebKit::WebURL& url,
- WebKit::WebMediaSource* media_source,
- CORSMode cors_mode) OVERRIDE;
-
private:
// RenderViewObserver method:
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
@@ -39,10 +29,7 @@ class PrerenderWebMediaPlayer
void OnSetIsPrerendering(bool is_prerendering);
bool is_prerendering_;
- bool url_loaded_;
- scoped_ptr<WebKit::WebURL> url_to_load_;
- scoped_ptr<WebKit::WebMediaSource> media_source_to_load_;
- CORSMode cors_mode_;
+ base::Closure continue_loading_cb_;
DISALLOW_COPY_AND_ASSIGN(PrerenderWebMediaPlayer);
};