diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-18 21:40:36 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-18 21:40:36 +0000 |
commit | ec9212f3e7399920c6c50b8943549b995192c5cf (patch) | |
tree | 2f0ebe96ba5c4ec29457ea4f68aa702dc7a99afa /chrome/renderer/webmediaplayer_delegate_impl.h | |
parent | f08f95e9d8e6f36be7162c77acefc834764209e1 (diff) | |
download | chromium_src-ec9212f3e7399920c6c50b8943549b995192c5cf.zip chromium_src-ec9212f3e7399920c6c50b8943549b995192c5cf.tar.gz chromium_src-ec9212f3e7399920c6c50b8943549b995192c5cf.tar.bz2 |
Bridge out media player from MediaPlayerPrivate.
- Remove MediaPlayerPrivateChromium.cpp and move it to webkit/glue/media_player_private_impl.cc
- Added the following classes:
WebMediaPlayer
WebMediaPlayerImpl
WebMediaPlayerDelegate
WebMediaPlayerDelegateImpl
TestWebMediaPlayerDelegate
VideoStackMediaPlayer (Just a forward declaration)
- One include fix for webkit/glue/webframe.h
- Overview of what each class is doing:
WebMediaPlayer and WebMediaPlayerImpl
Wrapper over the MediaPlayerPrivate, it provides methods like Repaint(), NotifyNetworkStateChange(), etc to VideoStackMediaPlayer. It also creates the ResourceHandle for VideoStackMediaPlayer for resource loading, or maybe VideoStackMediaPlayer can simply use webkit_glue::ResourceDispatcher?
WebMediaPlayerDelegate, WebMediaPlayerDelegateImpl
Delegate calls from webkit to the internal media player.
MediaPlayerPrivate
Forward calls to WebMidiaPlayerDelegate, creates WebMediaPlayerDelegate and WebMediaPlayer in the constructor. Expose some public methods to WebMediaPlayer so we can actually do repaint and notification of changes.
Review URL: http://codereview.chromium.org/13762
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7256 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/webmediaplayer_delegate_impl.h')
-rw-r--r-- | chrome/renderer/webmediaplayer_delegate_impl.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/chrome/renderer/webmediaplayer_delegate_impl.h b/chrome/renderer/webmediaplayer_delegate_impl.h new file mode 100644 index 0000000..4e6f53e --- /dev/null +++ b/chrome/renderer/webmediaplayer_delegate_impl.h @@ -0,0 +1,102 @@ +// Copyright (c) 2008 The Chromium Authors. All rights reserved. Use of this +// source code is governed by a BSD-style license that can be found in the +// LICENSE file. +// +// Delegate calls from WebCore::MediaPlayerPrivate to google's video player. +// It is a friend of VideoStackMediaPlayer, which is the actual media player +// VideoStackMediaPlayer will use WebMediaPlayer to create a resource loader +// and bridges the WebCore::ResourceHandle and media::DataSource, so that +// VideoStackMediaPlayer would have no knowledge of WebCore::ResourceHandle. + +#ifndef CHROME_RENDERER_WEBMEDIAPLAYER_DELEGATE_IMPL_H_ +#define CHROME_RENDERER_WEBMEDIAPLAYER_DELEGATE_IMPL_H_ + +#include "webkit/glue/webmediaplayer_delegate.h" + +namespace media { +class VideoStackMediaPlayer; +} + +class WebMediaPlayerDelegateImpl : public webkit_glue::WebMediaPlayerDelegate { + public: + WebMediaPlayerDelegateImpl(); + virtual ~WebMediaPlayerDelegateImpl(); + + virtual void Initialize(webkit_glue::WebMediaPlayer* media_player); + + virtual void Load(const GURL& url); + virtual void CancelLoad(); + + // Playback controls. + virtual void Play(); + virtual void Pause(); + virtual void Stop(); + virtual void Seek(float time); + virtual void SetEndTime(float time); + virtual void SetPlaybackRate(float rate); + virtual void SetVolume(float volume); + virtual void SetVisible(bool visible); + virtual bool IsTotalBytesKnown(); + + // Methods for painting. + virtual void SetRect(const gfx::Rect& rect); + + virtual void Paint(skia::PlatformCanvas *canvas, const gfx::Rect& rect); + + // True if a video is loaded. + virtual bool IsVideo() const { return video_; } + + // Dimension of the video. + virtual size_t GetWidth() const { return width_; } + virtual size_t GetHeight() const { return height_; } + + // Getters fo playback state. + virtual bool IsPaused() const { return paused_; } + virtual bool IsSeeking() const { return seeking_; } + virtual float GetDuration() const { return duration_; } + virtual float GetCurrentTime() const { return current_time_; } + virtual float GetPlayBackRate() const { return playback_rate_; } + virtual float GetVolume() const { return volume_; } + virtual float GetMaxTimeBuffered() const; + virtual float GetMaxTimeSeekable() const; + + // Get rate of loading the resource. + virtual int32 GetDataRate() const { return data_rate_; } + + // Internal states of loading and network. + virtual webkit_glue::WebMediaPlayer::NetworkState GetNetworkState() const { + return network_state_; + } + virtual webkit_glue::WebMediaPlayer::ReadyState GetReadyState() const { + return ready_state_; + } + + virtual int64 GetBytesLoaded() const { return bytes_loaded_; } + virtual int64 GetTotalBytes() const { return total_bytes_; } + + // Inline getters. + webkit_glue::WebMediaPlayer* web_media_player() { return web_media_player_; } + + private: + int64 bytes_loaded_; + float current_time_; + int32 data_rate_; + float duration_; + size_t height_; + webkit_glue::WebMediaPlayer::NetworkState network_state_; + bool paused_; + float playback_rate_; + webkit_glue::WebMediaPlayer::ReadyState ready_state_; + bool seeking_; + int64 total_bytes_; + bool video_; + media::VideoStackMediaPlayer* video_stack_media_player_; + bool visible_; + float volume_; + webkit_glue::WebMediaPlayer* web_media_player_; + size_t width_; + + DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerDelegateImpl); +}; + +#endif // ifndef CHROME_RENDERER_WEBMEDIAPLAYER_DELEGATE_IMPL_H_ |