Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "base/message_loop/message_loop.h" | |
| 6 #include "media/base/android/media_player_bridge.h" | |
| 7 #include "media/base/android/media_player_manager.h" | |
| 8 #include "testing/gmock/include/gmock/gmock.h" | |
| 9 #include "testing/gtest/include/gtest/gtest.h" | |
| 10 | |
| 11 namespace media { | |
| 12 | |
| 13 namespace { | |
| 14 | |
| 15 class MockMediaPlayerManager : public MediaPlayerManager { | |
| 16 public: | |
| 17 MOCK_METHOD0(GetMediaResourceGetter, MediaResourceGetter*()); | |
| 18 MOCK_METHOD0(GetMediaUrlInterceptor, MediaUrlInterceptor*()); | |
| 19 MOCK_METHOD3(OnTimeUpdate, | |
| 20 void(int player_id, | |
| 21 base::TimeDelta current_timestamp, | |
| 22 base::TimeTicks current_time_ticks)); | |
| 23 MOCK_METHOD5(OnMediaMetadataChanged, | |
| 24 void(int player_id, | |
| 25 base::TimeDelta duration, | |
| 26 int width, | |
| 27 int height, | |
| 28 bool success)); | |
| 29 MOCK_METHOD1(OnPlaybackComplete, void(int player_id)); | |
| 30 MOCK_METHOD1(OnMediaInterrupted, void(int player_id)); | |
| 31 MOCK_METHOD2(OnBufferingUpdate, void(int player_id, int percentage)); | |
| 32 MOCK_METHOD2(OnSeekComplete, | |
| 33 void(int player_id, const base::TimeDelta& current_time)); | |
| 34 MOCK_METHOD2(OnError, void(int player_id, int error)); | |
| 35 MOCK_METHOD3(OnVideoSizeChanged, void(int player_id, int width, int height)); | |
| 36 MOCK_METHOD2(OnAudibleStateChanged, void(int player_id, bool is_audible_now)); | |
| 37 MOCK_METHOD1(OnWaitingForDecryptionKey, void(int player_id)); | |
| 38 MOCK_METHOD0(GetFullscreenPlayer, MediaPlayerAndroid*()); | |
| 39 MOCK_METHOD1(GetPlayer, MediaPlayerAndroid*(int player_id)); | |
| 40 MOCK_METHOD1(RequestPlay, bool(int player_id)); | |
| 41 | |
| 42 void OnMediaResourcesRequested(int player_id) {} | |
| 43 }; | |
| 44 | |
| 45 } // anonymous namespace | |
| 46 | |
| 47 class MediaPlayerBridgeTest : public testing::Test { | |
| 48 public: | |
| 49 MediaPlayerBridgeTest() | |
| 50 : bridge_(0, | |
| 51 GURL(), | |
| 52 GURL(), | |
| 53 "", | |
| 54 false, | |
| 55 &manager_, | |
| 56 base::Bind(&MockMediaPlayerManager::OnMediaResourcesRequested, | |
| 57 base::Unretained(&manager_)), | |
| 58 GURL(), | |
| 59 false) {} | |
| 60 | |
| 61 void SetCanSeekForward(bool can_seek_forward) { | |
| 62 bridge_.can_seek_forward_ = can_seek_forward; | |
| 63 } | |
| 64 | |
| 65 void SetCanSeekBackward(bool can_seek_backward) { | |
| 66 bridge_.can_seek_backward_ = can_seek_backward; | |
| 67 } | |
| 68 | |
| 69 bool SeekInternal(const base::TimeDelta& current_time, base::TimeDelta time) { | |
| 70 return bridge_.SeekInternal(current_time, time); | |
| 71 } | |
| 72 | |
| 73 private: | |
| 74 // A message loop needs to be instantiated in order for the test to run | |
| 75 // properly. | |
| 76 base::MessageLoop message_loop_; | |
| 77 MockMediaPlayerManager manager_; | |
| 78 MediaPlayerBridge bridge_; | |
| 79 }; | |
|
DaleCurtis
2015/07/16 00:29:28
DISALLOW_COPY_AND_ASSIGN()
keitchen
2015/07/17 00:00:06
Done.
| |
| 80 | |
| 81 TEST_F(MediaPlayerBridgeTest, PreventForwardSeekWhenItIsNotPossible) { | |
| 82 // Simulate the Java MediaPlayerBridge reporting that forward seeks are not | |
| 83 // possible | |
| 84 SetCanSeekForward(false); | |
| 85 SetCanSeekBackward(true); | |
| 86 | |
| 87 // If this assertion fails, seeks will be allowed which will result in a | |
| 88 // crash because j_media_player_bridge_ cannot be properly instantiated | |
| 89 // during this test. | |
| 90 ASSERT_FALSE( | |
|
DaleCurtis
2015/07/16 00:29:28
I don't suppose there's a way to intercept the JNI
keitchen
2015/07/17 00:00:06
As far as I know there isn't a way to intercept th
| |
| 91 SeekInternal(base::TimeDelta(), base::TimeDelta::FromSeconds(10))); | |
| 92 } | |
| 93 | |
| 94 TEST_F(MediaPlayerBridgeTest, PreventBackwardSeekWhenItIsNotPossible) { | |
| 95 // Simulate the Java MediaPlayerBridge reporting that backward seeks are not | |
| 96 // possible | |
| 97 SetCanSeekForward(true); | |
| 98 SetCanSeekBackward(false); | |
| 99 | |
| 100 // If this assertion fails, seeks will be allowed which will result in a | |
| 101 // crash because j_media_player_bridge_ cannot be properly instantiated | |
| 102 // during this test. | |
| 103 ASSERT_FALSE( | |
| 104 SeekInternal(base::TimeDelta::FromSeconds(10), base::TimeDelta())); | |
| 105 } | |
| 106 | |
| 107 } // namespace media | |
| OLD | NEW |