Index: media/base/android/media_player_bridge.cc |
diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc |
index e0d98688270887f1975dd9900cca3f9d9b75b013..342ceaa79024e6d82c9685c4c79caed04d70e270 100644 |
--- a/media/base/android/media_player_bridge.cc |
+++ b/media/base/android/media_player_bridge.cc |
@@ -390,6 +390,16 @@ void MediaPlayerBridge::PendingSeekInternal(base::TimeDelta time) { |
} |
void MediaPlayerBridge::SeekInternal(base::TimeDelta time) { |
+ if (time > duration_) |
+ time = duration_; |
+ |
+ // Seeking to an invalid position may cause media player to stuck in an |
+ // error state. |
+ if (time < base::TimeDelta()) { |
+ DCHECK_EQ(-1.0, time.InMillisecondsF()); |
+ return; |
+ } |
+ |
JNIEnv* env = base::android::AttachCurrentThread(); |
CHECK(env); |