In order to show the poster image while casting a video, we pass the poster...

In order to show the poster image while casting a video, we pass the poster image URL to Android. Like favicons, it will be downloaded and be shown in the relevant activity & view.

Relevant CLs:
Blink: https://codereview.chromium.org/131763011/
Chrome for Android: https://chrome-internal-review.googlesource.com/#/c/153405/

BUG=333260
NOTRY=true

Review URL: https://codereview.chromium.org/135863004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251361 0039d316-1c4b-4281-b951-d872f2087c98
parent 1eb9cf3a
...@@ -132,6 +132,7 @@ bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) { ...@@ -132,6 +132,7 @@ bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Seek, OnSeek) IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Seek, OnSeek)
IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Pause, OnPause) IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Pause, OnPause)
IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_SetVolume, OnSetVolume) IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_SetVolume, OnSetVolume)
IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_SetPoster, OnSetPoster)
IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Release, OnReleaseResources) IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Release, OnReleaseResources)
IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyMediaPlayer, OnDestroyPlayer) IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyMediaPlayer, OnDestroyPlayer)
IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyAllMediaPlayers, IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyAllMediaPlayers,
...@@ -567,6 +568,10 @@ void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) { ...@@ -567,6 +568,10 @@ void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) {
player->SetVolume(volume); player->SetVolume(volume);
} }
void BrowserMediaPlayerManager::OnSetPoster(int player_id, const GURL& url) {
// To be overridden by subclasses.
}
void BrowserMediaPlayerManager::OnReleaseResources(int player_id) { void BrowserMediaPlayerManager::OnReleaseResources(int player_id) {
MediaPlayerAndroid* player = GetPlayer(player_id); MediaPlayerAndroid* player = GetPlayer(player_id);
if (player) if (player)
......
...@@ -135,6 +135,7 @@ class CONTENT_EXPORT BrowserMediaPlayerManager ...@@ -135,6 +135,7 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
virtual void OnSeek(int player_id, const base::TimeDelta& time); virtual void OnSeek(int player_id, const base::TimeDelta& time);
virtual void OnPause(int player_id, bool is_media_related_action); virtual void OnPause(int player_id, bool is_media_related_action);
virtual void OnSetVolume(int player_id, double volume); virtual void OnSetVolume(int player_id, double volume);
virtual void OnSetPoster(int player_id, const GURL& poster);
virtual void OnReleaseResources(int player_id); virtual void OnReleaseResources(int player_id);
virtual void OnDestroyPlayer(int player_id); virtual void OnDestroyPlayer(int player_id);
virtual void ReleaseFullscreenPlayer(media::MediaPlayerAndroid* player); virtual void ReleaseFullscreenPlayer(media::MediaPlayerAndroid* player);
......
...@@ -237,11 +237,16 @@ IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_Seek, ...@@ -237,11 +237,16 @@ IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_Seek,
// Start the player for playback. // Start the player for playback.
IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_Start, int /* player_id */) IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_Start, int /* player_id */)
// Start the player for playback. // Set the volume.
IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_SetVolume, IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_SetVolume,
int /* player_id */, int /* player_id */,
double /* volume */) double /* volume */)
// Set the poster image.
IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_SetPoster,
int /* player_id */,
GURL /* poster url */)
// Requests the player to enter fullscreen. // Requests the player to enter fullscreen.
IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_EnterFullscreen, int /* player_id */) IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_EnterFullscreen, int /* player_id */)
......
...@@ -106,6 +106,10 @@ void RendererMediaPlayerManager::SetVolume(int player_id, double volume) { ...@@ -106,6 +106,10 @@ void RendererMediaPlayerManager::SetVolume(int player_id, double volume) {
Send(new MediaPlayerHostMsg_SetVolume(routing_id(), player_id, volume)); Send(new MediaPlayerHostMsg_SetVolume(routing_id(), player_id, volume));
} }
void RendererMediaPlayerManager::SetPoster(int player_id, const GURL& poster) {
Send(new MediaPlayerHostMsg_SetPoster(routing_id(), player_id, poster));
}
void RendererMediaPlayerManager::ReleaseResources(int player_id) { void RendererMediaPlayerManager::ReleaseResources(int player_id) {
Send(new MediaPlayerHostMsg_Release(routing_id(), player_id)); Send(new MediaPlayerHostMsg_Release(routing_id(), player_id));
} }
......
...@@ -64,6 +64,9 @@ class RendererMediaPlayerManager : public RenderViewObserver { ...@@ -64,6 +64,9 @@ class RendererMediaPlayerManager : public RenderViewObserver {
// Sets the player volume. // Sets the player volume.
void SetVolume(int player_id, double volume); void SetVolume(int player_id, double volume);
// Sets the poster image.
void SetPoster(int player_id, const GURL& poster);
// Releases resources for the player. // Releases resources for the player.
void ReleaseResources(int player_id); void ReleaseResources(int player_id);
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "net/base/mime_util.h" #include "net/base/mime_util.h"
#include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
#include "third_party/WebKit/public/platform/WebString.h" #include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/platform/WebURL.h"
#include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebFrame.h" #include "third_party/WebKit/public/web/WebFrame.h"
#include "third_party/WebKit/public/web/WebRuntimeFeatures.h" #include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
...@@ -1057,6 +1058,10 @@ void WebMediaPlayerAndroid::SetNeedsEstablishPeer(bool needs_establish_peer) { ...@@ -1057,6 +1058,10 @@ void WebMediaPlayerAndroid::SetNeedsEstablishPeer(bool needs_establish_peer) {
needs_establish_peer_ = needs_establish_peer; needs_establish_peer_ = needs_establish_peer;
} }
void WebMediaPlayerAndroid::setPoster(const blink::WebURL& poster) {
manager_->SetPoster(player_id_, poster);
}
void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) { void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) {
is_playing_ = is_playing; is_playing_ = is_playing;
if (!delegate_) if (!delegate_)
......
...@@ -37,6 +37,7 @@ class MessageLoopProxy; ...@@ -37,6 +37,7 @@ class MessageLoopProxy;
namespace blink { namespace blink {
class WebFrame; class WebFrame;
class WebURL;
} }
namespace gpu { namespace gpu {
...@@ -100,6 +101,9 @@ class WebMediaPlayerAndroid ...@@ -100,6 +101,9 @@ class WebMediaPlayerAndroid
virtual const blink::WebTimeRanges& buffered(); virtual const blink::WebTimeRanges& buffered();
virtual double maxTimeSeekable() const; virtual double maxTimeSeekable() const;
// Poster image, as defined in the <video> element.
virtual void setPoster(const blink::WebURL& poster) OVERRIDE;
// Methods for painting. // Methods for painting.
virtual void paint(blink::WebCanvas* canvas, virtual void paint(blink::WebCanvas* canvas,
const blink::WebRect& rect, const blink::WebRect& rect,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment