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 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 // Mock of MediaPlayerManager for testing purpose. | 41 // Mock of MediaPlayerManager for testing purpose. |
42 class MockMediaPlayerManager : public MediaPlayerManager { | 42 class MockMediaPlayerManager : public MediaPlayerManager { |
43 public: | 43 public: |
44 explicit MockMediaPlayerManager(base::MessageLoop* message_loop) | 44 explicit MockMediaPlayerManager(base::MessageLoop* message_loop) |
45 : message_loop_(message_loop), | 45 : message_loop_(message_loop), |
46 playback_completed_(false), | 46 playback_completed_(false), |
47 num_resources_requested_(0), | 47 num_resources_requested_(0), |
48 num_metadata_changes_(0), | 48 num_metadata_changes_(0), |
49 timestamp_updated_(false), | 49 timestamp_updated_(false), |
50 is_audible_(false), | 50 is_audible_(false), |
51 is_delay_expired_(false) {} | 51 is_delay_expired_(false), |
| 52 allow_play_(true) {} |
52 ~MockMediaPlayerManager() override {} | 53 ~MockMediaPlayerManager() override {} |
53 | 54 |
54 // MediaPlayerManager implementation. | 55 // MediaPlayerManager implementation. |
55 MediaResourceGetter* GetMediaResourceGetter() override { return NULL; } | 56 MediaResourceGetter* GetMediaResourceGetter() override { return NULL; } |
56 MediaUrlInterceptor* GetMediaUrlInterceptor() override { return NULL; } | 57 MediaUrlInterceptor* GetMediaUrlInterceptor() override { return NULL; } |
57 void OnTimeUpdate(int player_id, | 58 void OnTimeUpdate(int player_id, |
58 base::TimeDelta current_time, | 59 base::TimeDelta current_time, |
59 base::TimeTicks current_time_ticks) override { | 60 base::TimeTicks current_time_ticks) override { |
60 timestamp_updated_ = true; | 61 timestamp_updated_ = true; |
61 } | 62 } |
(...skipping 13 matching lines...) Expand all Loading... |
75 void OnBufferingUpdate(int player_id, int percentage) override {} | 76 void OnBufferingUpdate(int player_id, int percentage) override {} |
76 void OnSeekComplete(int player_id, | 77 void OnSeekComplete(int player_id, |
77 const base::TimeDelta& current_time) override {} | 78 const base::TimeDelta& current_time) override {} |
78 void OnError(int player_id, int error) override {} | 79 void OnError(int player_id, int error) override {} |
79 void OnVideoSizeChanged(int player_id, int width, int height) override {} | 80 void OnVideoSizeChanged(int player_id, int width, int height) override {} |
80 void OnWaitingForDecryptionKey(int player_id) override {} | 81 void OnWaitingForDecryptionKey(int player_id) override {} |
81 MediaPlayerAndroid* GetFullscreenPlayer() override { return NULL; } | 82 MediaPlayerAndroid* GetFullscreenPlayer() override { return NULL; } |
82 MediaPlayerAndroid* GetPlayer(int player_id) override { return NULL; } | 83 MediaPlayerAndroid* GetPlayer(int player_id) override { return NULL; } |
83 void RequestFullScreen(int player_id) override {} | 84 void RequestFullScreen(int player_id) override {} |
84 | 85 |
| 86 bool RequestPlay(int player_id) override { |
| 87 return allow_play_; |
| 88 } |
| 89 |
85 void OnAudibleStateChanged(int player_id, bool is_audible_now) override { | 90 void OnAudibleStateChanged(int player_id, bool is_audible_now) override { |
86 is_audible_ = is_audible_now; | 91 is_audible_ = is_audible_now; |
87 } | 92 } |
88 | 93 |
89 bool playback_completed() const { | 94 bool playback_completed() const { |
90 return playback_completed_; | 95 return playback_completed_; |
91 } | 96 } |
92 | 97 |
93 int num_resources_requested() const { | 98 int num_resources_requested() const { |
94 return num_resources_requested_; | 99 return num_resources_requested_; |
(...skipping 20 matching lines...) Expand all Loading... |
115 } | 120 } |
116 | 121 |
117 bool is_delay_expired() const { | 122 bool is_delay_expired() const { |
118 return is_delay_expired_; | 123 return is_delay_expired_; |
119 } | 124 } |
120 | 125 |
121 void SetDelayExpired(bool value) { | 126 void SetDelayExpired(bool value) { |
122 is_delay_expired_ = value; | 127 is_delay_expired_ = value; |
123 } | 128 } |
124 | 129 |
| 130 void set_allow_play(bool value) { |
| 131 allow_play_ = value; |
| 132 } |
| 133 |
125 private: | 134 private: |
126 base::MessageLoop* message_loop_; | 135 base::MessageLoop* message_loop_; |
127 bool playback_completed_; | 136 bool playback_completed_; |
128 // The number of resource requests this object has seen. | 137 // The number of resource requests this object has seen. |
129 int num_resources_requested_; | 138 int num_resources_requested_; |
130 // The number of metadata changes reported by the player. | 139 // The number of metadata changes reported by the player. |
131 int num_metadata_changes_; | 140 int num_metadata_changes_; |
132 // Playback timestamp was updated. | 141 // Playback timestamp was updated. |
133 bool timestamp_updated_; | 142 bool timestamp_updated_; |
134 // Audible state of the pipeline | 143 // Audible state of the pipeline |
135 bool is_audible_; | 144 bool is_audible_; |
136 // Helper flag to ensure delay for WaitForDelay(). | 145 // Helper flag to ensure delay for WaitForDelay(). |
137 bool is_delay_expired_; | 146 bool is_delay_expired_; |
| 147 // Whether the manager will allow players that request playing. |
| 148 bool allow_play_; |
138 | 149 |
139 DISALLOW_COPY_AND_ASSIGN(MockMediaPlayerManager); | 150 DISALLOW_COPY_AND_ASSIGN(MockMediaPlayerManager); |
140 }; | 151 }; |
141 | 152 |
142 class MockDemuxerAndroid : public DemuxerAndroid { | 153 class MockDemuxerAndroid : public DemuxerAndroid { |
143 public: | 154 public: |
144 explicit MockDemuxerAndroid(base::MessageLoop* message_loop) | 155 explicit MockDemuxerAndroid(base::MessageLoop* message_loop) |
145 : message_loop_(message_loop), | 156 : message_loop_(message_loop), |
146 num_data_requests_(0), | 157 num_data_requests_(0), |
147 num_seek_requests_(0), | 158 num_seek_requests_(0), |
(...skipping 2358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2506 | 2517 |
2507 // Wait for the metadata change. | 2518 // Wait for the metadata change. |
2508 while(manager_.num_metadata_changes() == 1) { | 2519 while(manager_.num_metadata_changes() == 1) { |
2509 player_.OnDemuxerDataAvailable(data); | 2520 player_.OnDemuxerDataAvailable(data); |
2510 WaitForVideoDecodeDone(); | 2521 WaitForVideoDecodeDone(); |
2511 } | 2522 } |
2512 EXPECT_EQ(2, manager_.num_metadata_changes()); | 2523 EXPECT_EQ(2, manager_.num_metadata_changes()); |
2513 WaitForVideoDecodeDone(); | 2524 WaitForVideoDecodeDone(); |
2514 } | 2525 } |
2515 | 2526 |
| 2527 TEST_F(MediaSourcePlayerTest, RequestPlayDeniedDontPlay_Audio) { |
| 2528 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 2529 |
| 2530 EXPECT_EQ(demuxer_->num_data_requests(), 0); |
| 2531 player_.OnDemuxerConfigsAvailable(CreateDemuxerConfigs(true, false)); |
| 2532 |
| 2533 manager_.set_allow_play(false); |
| 2534 player_.Start(); |
| 2535 EXPECT_FALSE(player_.IsPlaying()); |
| 2536 } |
| 2537 |
| 2538 TEST_F(MediaSourcePlayerTest, RequestPlayDeniedDontPlay_Video) { |
| 2539 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 2540 |
| 2541 EXPECT_EQ(demuxer_->num_data_requests(), 0); |
| 2542 player_.OnDemuxerConfigsAvailable(CreateDemuxerConfigs(false, true)); |
| 2543 |
| 2544 manager_.set_allow_play(false); |
| 2545 player_.Start(); |
| 2546 EXPECT_FALSE(player_.IsPlaying()); |
| 2547 } |
| 2548 |
| 2549 TEST_F(MediaSourcePlayerTest, RequestPlayDeniedDontPlay_AV) { |
| 2550 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 2551 |
| 2552 EXPECT_EQ(demuxer_->num_data_requests(), 0); |
| 2553 player_.OnDemuxerConfigsAvailable(CreateDemuxerConfigs(true, true)); |
| 2554 |
| 2555 manager_.set_allow_play(false); |
| 2556 player_.Start(); |
| 2557 EXPECT_FALSE(player_.IsPlaying()); |
| 2558 } |
| 2559 |
| 2560 TEST_F(MediaSourcePlayerTest, RequestPlayGrantedPlays) { |
| 2561 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 2562 |
| 2563 EXPECT_EQ(demuxer_->num_data_requests(), 0); |
| 2564 player_.OnDemuxerConfigsAvailable(CreateDemuxerConfigs(true, true)); |
| 2565 |
| 2566 manager_.set_allow_play(true); |
| 2567 player_.Start(); |
| 2568 EXPECT_TRUE(player_.IsPlaying()); |
| 2569 } |
| 2570 |
2516 } // namespace media | 2571 } // namespace media |
OLD | NEW |