| OLD | NEW |
| 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_MEDIA_ANDROID_WEBMEDIAPLAYER_ANDROID_H_ | 5 #ifndef CONTENT_RENDERER_MEDIA_ANDROID_WEBMEDIAPLAYER_ANDROID_H_ |
| 6 #define CONTENT_RENDERER_MEDIA_ANDROID_WEBMEDIAPLAYER_ANDROID_H_ | 6 #define CONTENT_RENDERER_MEDIA_ANDROID_WEBMEDIAPLAYER_ANDROID_H_ |
| 7 | 7 |
| 8 #include <jni.h> | 8 #include <jni.h> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 #include "third_party/WebKit/public/platform/WebSize.h" | 29 #include "third_party/WebKit/public/platform/WebSize.h" |
| 30 #include "third_party/WebKit/public/platform/WebURL.h" | 30 #include "third_party/WebKit/public/platform/WebURL.h" |
| 31 #include "third_party/WebKit/public/web/WebMediaPlayer.h" | 31 #include "third_party/WebKit/public/web/WebMediaPlayer.h" |
| 32 #include "ui/gfx/rect_f.h" | 32 #include "ui/gfx/rect_f.h" |
| 33 | 33 |
| 34 namespace media { | 34 namespace media { |
| 35 class Demuxer; | 35 class Demuxer; |
| 36 class MediaLog; | 36 class MediaLog; |
| 37 } | 37 } |
| 38 | 38 |
| 39 namespace WebKit { | 39 namespace blink { |
| 40 class WebFrame; | 40 class WebFrame; |
| 41 } | 41 } |
| 42 | 42 |
| 43 namespace webkit { | 43 namespace webkit { |
| 44 class WebLayerImpl; | 44 class WebLayerImpl; |
| 45 } | 45 } |
| 46 | 46 |
| 47 namespace content { | 47 namespace content { |
| 48 class WebMediaPlayerDelegate; | 48 class WebMediaPlayerDelegate; |
| 49 class RendererMediaPlayerManager; | 49 class RendererMediaPlayerManager; |
| 50 | 50 |
| 51 #if defined(GOOGLE_TV) | 51 #if defined(GOOGLE_TV) |
| 52 class MediaStreamAudioRenderer; | 52 class MediaStreamAudioRenderer; |
| 53 class MediaStreamClient; | 53 class MediaStreamClient; |
| 54 #endif | 54 #endif |
| 55 | 55 |
| 56 // This class implements WebKit::WebMediaPlayer by keeping the android | 56 // This class implements blink::WebMediaPlayer by keeping the android |
| 57 // media player in the browser process. It listens to all the status changes | 57 // media player in the browser process. It listens to all the status changes |
| 58 // sent from the browser process and sends playback controls to the media | 58 // sent from the browser process and sends playback controls to the media |
| 59 // player. | 59 // player. |
| 60 class WebMediaPlayerAndroid | 60 class WebMediaPlayerAndroid |
| 61 : public WebKit::WebMediaPlayer, | 61 : public blink::WebMediaPlayer, |
| 62 public cc::VideoFrameProvider, | 62 public cc::VideoFrameProvider, |
| 63 public base::MessageLoop::DestructionObserver, | 63 public base::MessageLoop::DestructionObserver, |
| 64 public base::SupportsWeakPtr<WebMediaPlayerAndroid> { | 64 public base::SupportsWeakPtr<WebMediaPlayerAndroid> { |
| 65 public: | 65 public: |
| 66 // Construct a WebMediaPlayerAndroid object. This class communicates | 66 // Construct a WebMediaPlayerAndroid object. This class communicates |
| 67 // with the MediaPlayerAndroid object in the browser process through | 67 // with the MediaPlayerAndroid object in the browser process through |
| 68 // |proxy|. | 68 // |proxy|. |
| 69 // TODO(qinmin): |frame| argument is used to determine whether the current | 69 // TODO(qinmin): |frame| argument is used to determine whether the current |
| 70 // player can enter fullscreen. This logic should probably be moved into | 70 // player can enter fullscreen. This logic should probably be moved into |
| 71 // blink, so that enterFullscreen() will not be called if another video is | 71 // blink, so that enterFullscreen() will not be called if another video is |
| 72 // already in fullscreen. | 72 // already in fullscreen. |
| 73 WebMediaPlayerAndroid( | 73 WebMediaPlayerAndroid( |
| 74 WebKit::WebFrame* frame, | 74 blink::WebFrame* frame, |
| 75 WebKit::WebMediaPlayerClient* client, | 75 blink::WebMediaPlayerClient* client, |
| 76 base::WeakPtr<WebMediaPlayerDelegate> delegate, | 76 base::WeakPtr<WebMediaPlayerDelegate> delegate, |
| 77 RendererMediaPlayerManager* manager, | 77 RendererMediaPlayerManager* manager, |
| 78 StreamTextureFactory* factory, | 78 StreamTextureFactory* factory, |
| 79 const scoped_refptr<base::MessageLoopProxy>& media_loop, | 79 const scoped_refptr<base::MessageLoopProxy>& media_loop, |
| 80 media::MediaLog* media_log); | 80 media::MediaLog* media_log); |
| 81 virtual ~WebMediaPlayerAndroid(); | 81 virtual ~WebMediaPlayerAndroid(); |
| 82 | 82 |
| 83 // WebKit::WebMediaPlayer implementation. | 83 // blink::WebMediaPlayer implementation. |
| 84 virtual void enterFullscreen(); | 84 virtual void enterFullscreen(); |
| 85 virtual void exitFullscreen(); | 85 virtual void exitFullscreen(); |
| 86 virtual bool canEnterFullscreen() const; | 86 virtual bool canEnterFullscreen() const; |
| 87 | 87 |
| 88 // Resource loading. | 88 // Resource loading. |
| 89 virtual void load(LoadType load_type, | 89 virtual void load(LoadType load_type, |
| 90 const WebKit::WebURL& url, | 90 const blink::WebURL& url, |
| 91 CORSMode cors_mode) OVERRIDE; | 91 CORSMode cors_mode) OVERRIDE; |
| 92 | 92 |
| 93 // Playback controls. | 93 // Playback controls. |
| 94 virtual void play(); | 94 virtual void play(); |
| 95 virtual void pause(); | 95 virtual void pause(); |
| 96 virtual void pause(bool is_media_related_action); | 96 virtual void pause(bool is_media_related_action); |
| 97 virtual void seek(double seconds); | 97 virtual void seek(double seconds); |
| 98 virtual bool supportsFullscreen() const; | 98 virtual bool supportsFullscreen() const; |
| 99 virtual bool supportsSave() const; | 99 virtual bool supportsSave() const; |
| 100 virtual void setRate(double rate); | 100 virtual void setRate(double rate); |
| 101 virtual void setVolume(double volume); | 101 virtual void setVolume(double volume); |
| 102 virtual const WebKit::WebTimeRanges& buffered(); | 102 virtual const blink::WebTimeRanges& buffered(); |
| 103 virtual double maxTimeSeekable() const; | 103 virtual double maxTimeSeekable() const; |
| 104 | 104 |
| 105 // Methods for painting. | 105 // Methods for painting. |
| 106 virtual void paint(WebKit::WebCanvas* canvas, | 106 virtual void paint(blink::WebCanvas* canvas, |
| 107 const WebKit::WebRect& rect, | 107 const blink::WebRect& rect, |
| 108 unsigned char alpha); | 108 unsigned char alpha); |
| 109 | 109 |
| 110 virtual bool copyVideoTextureToPlatformTexture( | 110 virtual bool copyVideoTextureToPlatformTexture( |
| 111 WebKit::WebGraphicsContext3D* web_graphics_context, | 111 blink::WebGraphicsContext3D* web_graphics_context, |
| 112 unsigned int texture, | 112 unsigned int texture, |
| 113 unsigned int level, | 113 unsigned int level, |
| 114 unsigned int internal_format, | 114 unsigned int internal_format, |
| 115 unsigned int type, | 115 unsigned int type, |
| 116 bool premultiply_alpha, | 116 bool premultiply_alpha, |
| 117 bool flip_y); | 117 bool flip_y); |
| 118 | 118 |
| 119 // True if the loaded media has a playable video/audio track. | 119 // True if the loaded media has a playable video/audio track. |
| 120 virtual bool hasVideo() const; | 120 virtual bool hasVideo() const; |
| 121 virtual bool hasAudio() const; | 121 virtual bool hasAudio() const; |
| 122 | 122 |
| 123 // Dimensions of the video. | 123 // Dimensions of the video. |
| 124 virtual WebKit::WebSize naturalSize() const; | 124 virtual blink::WebSize naturalSize() const; |
| 125 | 125 |
| 126 // Getters of playback state. | 126 // Getters of playback state. |
| 127 virtual bool paused() const; | 127 virtual bool paused() const; |
| 128 virtual bool seeking() const; | 128 virtual bool seeking() const; |
| 129 virtual double duration() const; | 129 virtual double duration() const; |
| 130 virtual double currentTime() const; | 130 virtual double currentTime() const; |
| 131 | 131 |
| 132 virtual bool didLoadingProgress() const; | 132 virtual bool didLoadingProgress() const; |
| 133 | 133 |
| 134 // Internal states of loading and network. | 134 // Internal states of loading and network. |
| 135 virtual WebKit::WebMediaPlayer::NetworkState networkState() const; | 135 virtual blink::WebMediaPlayer::NetworkState networkState() const; |
| 136 virtual WebKit::WebMediaPlayer::ReadyState readyState() const; | 136 virtual blink::WebMediaPlayer::ReadyState readyState() const; |
| 137 | 137 |
| 138 virtual bool hasSingleSecurityOrigin() const; | 138 virtual bool hasSingleSecurityOrigin() const; |
| 139 virtual bool didPassCORSAccessCheck() const; | 139 virtual bool didPassCORSAccessCheck() const; |
| 140 | 140 |
| 141 virtual double mediaTimeForTimeValue(double timeValue) const; | 141 virtual double mediaTimeForTimeValue(double timeValue) const; |
| 142 | 142 |
| 143 // Provide statistics. | 143 // Provide statistics. |
| 144 virtual unsigned decodedFrameCount() const; | 144 virtual unsigned decodedFrameCount() const; |
| 145 virtual unsigned droppedFrameCount() const; | 145 virtual unsigned droppedFrameCount() const; |
| 146 virtual unsigned audioDecodedByteCount() const; | 146 virtual unsigned audioDecodedByteCount() const; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 void Detach(); | 191 void Detach(); |
| 192 | 192 |
| 193 #if defined(GOOGLE_TV) | 193 #if defined(GOOGLE_TV) |
| 194 // Retrieve geometry of the media player (i.e. location and size of the video | 194 // Retrieve geometry of the media player (i.e. location and size of the video |
| 195 // frame) if changed. Returns true only if the geometry has been changed since | 195 // frame) if changed. Returns true only if the geometry has been changed since |
| 196 // the last call. | 196 // the last call. |
| 197 bool RetrieveGeometryChange(gfx::RectF* rect); | 197 bool RetrieveGeometryChange(gfx::RectF* rect); |
| 198 #endif | 198 #endif |
| 199 | 199 |
| 200 virtual MediaKeyException generateKeyRequest( | 200 virtual MediaKeyException generateKeyRequest( |
| 201 const WebKit::WebString& key_system, | 201 const blink::WebString& key_system, |
| 202 const unsigned char* init_data, | 202 const unsigned char* init_data, |
| 203 unsigned init_data_length) OVERRIDE; | 203 unsigned init_data_length) OVERRIDE; |
| 204 virtual MediaKeyException addKey( | 204 virtual MediaKeyException addKey( |
| 205 const WebKit::WebString& key_system, | 205 const blink::WebString& key_system, |
| 206 const unsigned char* key, | 206 const unsigned char* key, |
| 207 unsigned key_length, | 207 unsigned key_length, |
| 208 const unsigned char* init_data, | 208 const unsigned char* init_data, |
| 209 unsigned init_data_length, | 209 unsigned init_data_length, |
| 210 const WebKit::WebString& session_id) OVERRIDE; | 210 const blink::WebString& session_id) OVERRIDE; |
| 211 virtual MediaKeyException cancelKeyRequest( | 211 virtual MediaKeyException cancelKeyRequest( |
| 212 const WebKit::WebString& key_system, | 212 const blink::WebString& key_system, |
| 213 const WebKit::WebString& session_id) OVERRIDE; | 213 const blink::WebString& session_id) OVERRIDE; |
| 214 | 214 |
| 215 void OnKeyAdded(const std::string& session_id); | 215 void OnKeyAdded(const std::string& session_id); |
| 216 void OnKeyError(const std::string& session_id, | 216 void OnKeyError(const std::string& session_id, |
| 217 media::MediaKeys::KeyError error_code, | 217 media::MediaKeys::KeyError error_code, |
| 218 int system_code); | 218 int system_code); |
| 219 void OnKeyMessage(const std::string& session_id, | 219 void OnKeyMessage(const std::string& session_id, |
| 220 const std::vector<uint8>& message, | 220 const std::vector<uint8>& message, |
| 221 const std::string& destination_url); | 221 const std::string& destination_url); |
| 222 | 222 |
| 223 void OnMediaSourceOpened(WebKit::WebMediaSource* web_media_source); | 223 void OnMediaSourceOpened(blink::WebMediaSource* web_media_source); |
| 224 | 224 |
| 225 void OnNeedKey(const std::string& type, | 225 void OnNeedKey(const std::string& type, |
| 226 const std::vector<uint8>& init_data); | 226 const std::vector<uint8>& init_data); |
| 227 | 227 |
| 228 #if defined(GOOGLE_TV) | 228 #if defined(GOOGLE_TV) |
| 229 bool InjectMediaStream(MediaStreamClient* media_stream_client, | 229 bool InjectMediaStream(MediaStreamClient* media_stream_client, |
| 230 media::Demuxer* demuxer, | 230 media::Demuxer* demuxer, |
| 231 const base::Closure& destroy_demuxer_cb); | 231 const base::Closure& destroy_demuxer_cb); |
| 232 #endif | 232 #endif |
| 233 | 233 |
| 234 // Can be called on any thread. | 234 // Can be called on any thread. |
| 235 static void OnReleaseRemotePlaybackTexture( | 235 static void OnReleaseRemotePlaybackTexture( |
| 236 const scoped_refptr<base::MessageLoopProxy>& main_loop, | 236 const scoped_refptr<base::MessageLoopProxy>& main_loop, |
| 237 const base::WeakPtr<WebMediaPlayerAndroid>& player, | 237 const base::WeakPtr<WebMediaPlayerAndroid>& player, |
| 238 uint32 sync_point); | 238 uint32 sync_point); |
| 239 | 239 |
| 240 protected: | 240 protected: |
| 241 // Helper method to update the playing state. | 241 // Helper method to update the playing state. |
| 242 void UpdatePlayingState(bool is_playing_); | 242 void UpdatePlayingState(bool is_playing_); |
| 243 | 243 |
| 244 // Helper methods for posting task for setting states and update WebKit. | 244 // Helper methods for posting task for setting states and update WebKit. |
| 245 void UpdateNetworkState(WebKit::WebMediaPlayer::NetworkState state); | 245 void UpdateNetworkState(blink::WebMediaPlayer::NetworkState state); |
| 246 void UpdateReadyState(WebKit::WebMediaPlayer::ReadyState state); | 246 void UpdateReadyState(blink::WebMediaPlayer::ReadyState state); |
| 247 void TryCreateStreamTextureProxyIfNeeded(); | 247 void TryCreateStreamTextureProxyIfNeeded(); |
| 248 void DoCreateStreamTexture(); | 248 void DoCreateStreamTexture(); |
| 249 | 249 |
| 250 | 250 |
| 251 // Helper method to reestablish the surface texture peer for android | 251 // Helper method to reestablish the surface texture peer for android |
| 252 // media player. | 252 // media player. |
| 253 void EstablishSurfaceTexturePeer(); | 253 void EstablishSurfaceTexturePeer(); |
| 254 | 254 |
| 255 // Requesting whether the surface texture peer needs to be reestablished. | 255 // Requesting whether the surface texture peer needs to be reestablished. |
| 256 void SetNeedsEstablishPeer(bool needs_establish_peer); | 256 void SetNeedsEstablishPeer(bool needs_establish_peer); |
| 257 | 257 |
| 258 #if defined(GOOGLE_TV) | 258 #if defined(GOOGLE_TV) |
| 259 // Request external surface for out-of-band composition. | 259 // Request external surface for out-of-band composition. |
| 260 void RequestExternalSurface(); | 260 void RequestExternalSurface(); |
| 261 #endif | 261 #endif |
| 262 | 262 |
| 263 private: | 263 private: |
| 264 void DrawRemotePlaybackIcon(); | 264 void DrawRemotePlaybackIcon(); |
| 265 void ReallocateVideoFrame(); | 265 void ReallocateVideoFrame(); |
| 266 void SetCurrentFrameInternal(scoped_refptr<media::VideoFrame>& frame); | 266 void SetCurrentFrameInternal(scoped_refptr<media::VideoFrame>& frame); |
| 267 void DidLoadMediaInfo(MediaInfoLoader::Status status); | 267 void DidLoadMediaInfo(MediaInfoLoader::Status status); |
| 268 void DoReleaseRemotePlaybackTexture(uint32 sync_point); | 268 void DoReleaseRemotePlaybackTexture(uint32 sync_point); |
| 269 | 269 |
| 270 // Actually do the work for generateKeyRequest/addKey so they can easily | 270 // Actually do the work for generateKeyRequest/addKey so they can easily |
| 271 // report results to UMA. | 271 // report results to UMA. |
| 272 MediaKeyException GenerateKeyRequestInternal( | 272 MediaKeyException GenerateKeyRequestInternal( |
| 273 const WebKit::WebString& key_system, | 273 const blink::WebString& key_system, |
| 274 const unsigned char* init_data, | 274 const unsigned char* init_data, |
| 275 unsigned init_data_length); | 275 unsigned init_data_length); |
| 276 MediaKeyException AddKeyInternal(const WebKit::WebString& key_system, | 276 MediaKeyException AddKeyInternal(const blink::WebString& key_system, |
| 277 const unsigned char* key, | 277 const unsigned char* key, |
| 278 unsigned key_length, | 278 unsigned key_length, |
| 279 const unsigned char* init_data, | 279 const unsigned char* init_data, |
| 280 unsigned init_data_length, | 280 unsigned init_data_length, |
| 281 const WebKit::WebString& session_id); | 281 const blink::WebString& session_id); |
| 282 MediaKeyException CancelKeyRequestInternal( | 282 MediaKeyException CancelKeyRequestInternal( |
| 283 const WebKit::WebString& key_system, | 283 const blink::WebString& key_system, |
| 284 const WebKit::WebString& session_id); | 284 const blink::WebString& session_id); |
| 285 | 285 |
| 286 WebKit::WebFrame* const frame_; | 286 blink::WebFrame* const frame_; |
| 287 | 287 |
| 288 WebKit::WebMediaPlayerClient* const client_; | 288 blink::WebMediaPlayerClient* const client_; |
| 289 | 289 |
| 290 // |delegate_| is used to notify the browser process of the player status, so | 290 // |delegate_| is used to notify the browser process of the player status, so |
| 291 // that the browser process can control screen locks. | 291 // that the browser process can control screen locks. |
| 292 // TODO(qinmin): Currently android mediaplayer takes care of the screen | 292 // TODO(qinmin): Currently android mediaplayer takes care of the screen |
| 293 // lock. So this is only used for media source. Will apply this to regular | 293 // lock. So this is only used for media source. Will apply this to regular |
| 294 // media tag once http://crbug.com/247892 is fixed. | 294 // media tag once http://crbug.com/247892 is fixed. |
| 295 base::WeakPtr<WebMediaPlayerDelegate> delegate_; | 295 base::WeakPtr<WebMediaPlayerDelegate> delegate_; |
| 296 | 296 |
| 297 // Save the list of buffered time ranges. | 297 // Save the list of buffered time ranges. |
| 298 WebKit::WebTimeRanges buffered_; | 298 blink::WebTimeRanges buffered_; |
| 299 | 299 |
| 300 // Size of the video. | 300 // Size of the video. |
| 301 WebKit::WebSize natural_size_; | 301 blink::WebSize natural_size_; |
| 302 | 302 |
| 303 // Size that has been sent to StreamTexture. | 303 // Size that has been sent to StreamTexture. |
| 304 WebKit::WebSize cached_stream_texture_size_; | 304 blink::WebSize cached_stream_texture_size_; |
| 305 | 305 |
| 306 // The video frame object used for rendering by the compositor. | 306 // The video frame object used for rendering by the compositor. |
| 307 scoped_refptr<media::VideoFrame> current_frame_; | 307 scoped_refptr<media::VideoFrame> current_frame_; |
| 308 base::Lock current_frame_lock_; | 308 base::Lock current_frame_lock_; |
| 309 | 309 |
| 310 base::ThreadChecker main_thread_checker_; | 310 base::ThreadChecker main_thread_checker_; |
| 311 | 311 |
| 312 // Message loop for main renderer thread. | 312 // Message loop for main renderer thread. |
| 313 const scoped_refptr<base::MessageLoopProxy> main_loop_; | 313 const scoped_refptr<base::MessageLoopProxy> main_loop_; |
| 314 | 314 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 339 mutable bool did_loading_progress_; | 339 mutable bool did_loading_progress_; |
| 340 | 340 |
| 341 // Manager for managing this object and for delegating method calls on | 341 // Manager for managing this object and for delegating method calls on |
| 342 // Render Thread. | 342 // Render Thread. |
| 343 RendererMediaPlayerManager* manager_; | 343 RendererMediaPlayerManager* manager_; |
| 344 | 344 |
| 345 // Player ID assigned by the |manager_|. | 345 // Player ID assigned by the |manager_|. |
| 346 int player_id_; | 346 int player_id_; |
| 347 | 347 |
| 348 // Current player states. | 348 // Current player states. |
| 349 WebKit::WebMediaPlayer::NetworkState network_state_; | 349 blink::WebMediaPlayer::NetworkState network_state_; |
| 350 WebKit::WebMediaPlayer::ReadyState ready_state_; | 350 blink::WebMediaPlayer::ReadyState ready_state_; |
| 351 | 351 |
| 352 // GL texture ID used to show the remote playback icon. | 352 // GL texture ID used to show the remote playback icon. |
| 353 unsigned int remote_playback_texture_id_; | 353 unsigned int remote_playback_texture_id_; |
| 354 | 354 |
| 355 // GL texture ID allocated to the video. | 355 // GL texture ID allocated to the video. |
| 356 unsigned int texture_id_; | 356 unsigned int texture_id_; |
| 357 | 357 |
| 358 // GL texture mailbox for texture_id_ to provide in the VideoFrame, and sync | 358 // GL texture mailbox for texture_id_ to provide in the VideoFrame, and sync |
| 359 // point for when the mailbox was produced. | 359 // point for when the mailbox was produced. |
| 360 gpu::Mailbox texture_mailbox_; | 360 gpu::Mailbox texture_mailbox_; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 | 430 |
| 431 // Whether the browser is currently connected to a remote media player. | 431 // Whether the browser is currently connected to a remote media player. |
| 432 bool is_remote_; | 432 bool is_remote_; |
| 433 | 433 |
| 434 media::MediaLog* media_log_; | 434 media::MediaLog* media_log_; |
| 435 | 435 |
| 436 scoped_ptr<MediaInfoLoader> info_loader_; | 436 scoped_ptr<MediaInfoLoader> info_loader_; |
| 437 | 437 |
| 438 // The currently selected key system. Empty string means that no key system | 438 // The currently selected key system. Empty string means that no key system |
| 439 // has been selected. | 439 // has been selected. |
| 440 WebKit::WebString current_key_system_; | 440 blink::WebString current_key_system_; |
| 441 | 441 |
| 442 // Temporary for EME v0.1. In the future the init data type should be passed | 442 // Temporary for EME v0.1. In the future the init data type should be passed |
| 443 // through GenerateKeyRequest() directly from WebKit. | 443 // through GenerateKeyRequest() directly from WebKit. |
| 444 std::string init_data_type_; | 444 std::string init_data_type_; |
| 445 | 445 |
| 446 // The decryptor that manages decryption keys and decrypts encrypted frames. | 446 // The decryptor that manages decryption keys and decrypts encrypted frames. |
| 447 scoped_ptr<ProxyDecryptor> decryptor_; | 447 scoped_ptr<ProxyDecryptor> decryptor_; |
| 448 | 448 |
| 449 base::WeakPtrFactory<WebMediaPlayerAndroid> weak_factory_; | 449 base::WeakPtrFactory<WebMediaPlayerAndroid> weak_factory_; |
| 450 | 450 |
| 451 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerAndroid); | 451 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerAndroid); |
| 452 }; | 452 }; |
| 453 | 453 |
| 454 } // namespace content | 454 } // namespace content |
| 455 | 455 |
| 456 #endif // CONTENT_RENDERER_MEDIA_ANDROID_WEBMEDIAPLAYER_ANDROID_H_ | 456 #endif // CONTENT_RENDERER_MEDIA_ANDROID_WEBMEDIAPLAYER_ANDROID_H_ |
| OLD | NEW |