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

Side by Side Diff: webkit/media/android/webmediaplayer_android.cc

Issue 11412251: Fix a bug that hasVideo() always returns true even after we have the size info (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "webkit/media/android/webmediaplayer_android.h" 5 #include "webkit/media/android/webmediaplayer_android.h"
6 6
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "media/base/android/media_player_bridge.h" 9 #include "media/base/android/media_player_bridge.h"
10 #include "net/base/mime_util.h" 10 #include "net/base/mime_util.h"
(...skipping 23 matching lines...) Expand all
34 buffered_(1u), 34 buffered_(1u),
35 main_loop_(MessageLoop::current()), 35 main_loop_(MessageLoop::current()),
36 pending_seek_(0), 36 pending_seek_(0),
37 seeking_(false), 37 seeking_(false),
38 did_loading_progress_(false), 38 did_loading_progress_(false),
39 manager_(manager), 39 manager_(manager),
40 network_state_(WebMediaPlayer::NetworkStateEmpty), 40 network_state_(WebMediaPlayer::NetworkStateEmpty),
41 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), 41 ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
42 is_playing_(false), 42 is_playing_(false),
43 needs_establish_peer_(true), 43 needs_establish_peer_(true),
44 has_size_info_(false),
44 stream_texture_factory_(factory) { 45 stream_texture_factory_(factory) {
45 main_loop_->AddDestructionObserver(this); 46 main_loop_->AddDestructionObserver(this);
46 if (manager_) 47 if (manager_)
47 player_id_ = manager_->RegisterMediaPlayer(this); 48 player_id_ = manager_->RegisterMediaPlayer(this);
48 49
49 if (stream_texture_factory_.get()) { 50 if (stream_texture_factory_.get()) {
50 stream_texture_proxy_.reset(stream_texture_factory_->CreateProxy()); 51 stream_texture_proxy_.reset(stream_texture_factory_->CreateProxy());
51 stream_id_ = stream_texture_factory_->CreateStreamTexture(&texture_id_); 52 stream_id_ = stream_texture_factory_->CreateStreamTexture(&texture_id_);
52 ReallocateVideoFrame(); 53 ReallocateVideoFrame();
53 } 54 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 // TODO(qinmin): Remove this from WebKit::WebMediaPlayer as it is never used. 124 // TODO(qinmin): Remove this from WebKit::WebMediaPlayer as it is never used.
124 } 125 }
125 126
126 bool WebMediaPlayerAndroid::totalBytesKnown() { 127 bool WebMediaPlayerAndroid::totalBytesKnown() {
127 NOTIMPLEMENTED(); 128 NOTIMPLEMENTED();
128 return false; 129 return false;
129 } 130 }
130 131
131 bool WebMediaPlayerAndroid::hasVideo() const { 132 bool WebMediaPlayerAndroid::hasVideo() const {
132 // If we have obtained video size information before, use it. 133 // If we have obtained video size information before, use it.
133 if (!natural_size_.isEmpty()) 134 if (has_size_info_)
134 return true; 135 return !natural_size_.isEmpty();
135 136
136 // TODO(qinmin): need a better method to determine whether the current media 137 // TODO(qinmin): need a better method to determine whether the current media
137 // content contains video. Android does not provide any function to do 138 // content contains video. Android does not provide any function to do
138 // this. 139 // this.
139 // We don't know whether the current media content has video unless 140 // We don't know whether the current media content has video unless
140 // the player is prepared. If the player is not prepared, we fall back 141 // the player is prepared. If the player is not prepared, we fall back
141 // to the mime-type. There may be no mime-type on a redirect URL. 142 // to the mime-type. There may be no mime-type on a redirect URL.
142 // In that case, we conservatively assume it contains video so that 143 // In that case, we conservatively assume it contains video so that
143 // enterfullscreen call will not fail. 144 // enterfullscreen call will not fail.
144 if (!url_.has_path()) 145 if (!url_.has_path())
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 case MediaPlayerBridge::MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK: 317 case MediaPlayerBridge::MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
317 UpdateNetworkState(WebMediaPlayer::NetworkStateFormatError); 318 UpdateNetworkState(WebMediaPlayer::NetworkStateFormatError);
318 break; 319 break;
319 case MediaPlayerBridge::MEDIA_ERROR_INVALID_CODE: 320 case MediaPlayerBridge::MEDIA_ERROR_INVALID_CODE:
320 break; 321 break;
321 } 322 }
322 client_->repaint(); 323 client_->repaint();
323 } 324 }
324 325
325 void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) { 326 void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) {
327 has_size_info_ = true;
Miguel Garcia 2012/11/29 20:28:02 shouldn't you check that width or height is > 0?
qinmin 2012/11/29 20:39:33 No, we don't. This is called by the android media
Miguel Garcia 2012/11/29 20:43:36 OK, makes sense On 2012/11/29 20:39:33, qinmin w
326 if (natural_size_.width == width && natural_size_.height == height) 328 if (natural_size_.width == width && natural_size_.height == height)
327 return; 329 return;
328 330
329 natural_size_.width = width; 331 natural_size_.width = width;
330 natural_size_.height = height; 332 natural_size_.height = height;
331 ReallocateVideoFrame(); 333 ReallocateVideoFrame();
332 } 334 }
333 335
334 void WebMediaPlayerAndroid::UpdateNetworkState( 336 void WebMediaPlayerAndroid::UpdateNetworkState(
335 WebMediaPlayer::NetworkState state) { 337 WebMediaPlayer::NetworkState state) {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 413
412 void WebMediaPlayerAndroid::SetNeedsEstablishPeer(bool needs_establish_peer) { 414 void WebMediaPlayerAndroid::SetNeedsEstablishPeer(bool needs_establish_peer) {
413 needs_establish_peer_ = needs_establish_peer; 415 needs_establish_peer_ = needs_establish_peer;
414 } 416 }
415 417
416 void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) { 418 void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) {
417 is_playing_ = is_playing; 419 is_playing_ = is_playing;
418 } 420 }
419 421
420 } // namespace webkit_media 422 } // namespace webkit_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698