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

Side by Side Diff: media/base/android/media_player_bridge_unittest.cc

Issue 1234483003: Prevent seeking when Android MediaPlayer reports that it's not possible. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months 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
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698