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

Side by Side Diff: content/browser/web_contents/web_contents_impl_unittest.cc

Issue 2846813002: Convert MediaWebContentsObsever to be the client of WakeLock mojo interface. (Closed)
Patch Set: remove dependency, code rebase Created 3 years, 7 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
« no previous file with comments | « content/browser/media/media_web_contents_observer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stdint.h> 5 #include <stdint.h>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 WebUIControllerFactory::RegisterFactory( 250 WebUIControllerFactory::RegisterFactory(
251 ContentWebUIControllerFactory::GetInstance()); 251 ContentWebUIControllerFactory::GetInstance());
252 } 252 }
253 253
254 void TearDown() override { 254 void TearDown() override {
255 WebUIControllerFactory::UnregisterFactoryForTesting( 255 WebUIControllerFactory::UnregisterFactoryForTesting(
256 ContentWebUIControllerFactory::GetInstance()); 256 ContentWebUIControllerFactory::GetInstance());
257 RenderViewHostImplTestHarness::TearDown(); 257 RenderViewHostImplTestHarness::TearDown();
258 } 258 }
259 259
260 bool has_audio_power_save_blocker() { 260 bool has_audio_wake_lock() {
261 return contents() 261 return contents()
262 ->media_web_contents_observer() 262 ->media_web_contents_observer()
263 ->has_audio_power_save_blocker_for_testing(); 263 ->has_audio_wake_lock_for_testing();
264 } 264 }
265 265
266 bool has_video_power_save_blocker() { 266 bool has_video_wake_lock() {
267 return contents() 267 return contents()
268 ->media_web_contents_observer() 268 ->media_web_contents_observer()
269 ->has_video_power_save_blocker_for_testing(); 269 ->has_video_wake_lock_for_testing();
270 } 270 }
271 }; 271 };
272 272
273 class TestWebContentsObserver : public WebContentsObserver { 273 class TestWebContentsObserver : public WebContentsObserver {
274 public: 274 public:
275 explicit TestWebContentsObserver(WebContents* contents) 275 explicit TestWebContentsObserver(WebContents* contents)
276 : WebContentsObserver(contents), 276 : WebContentsObserver(contents),
277 last_theme_color_(SK_ColorTRANSPARENT) { 277 last_theme_color_(SK_ColorTRANSPARENT) {
278 } 278 }
279 ~TestWebContentsObserver() override {} 279 ~TestWebContentsObserver() override {}
(...skipping 2927 matching lines...) Expand 10 before | Expand all | Expand 10 after
3207 EXPECT_EQ(3, controller().GetEntryCount()); 3207 EXPECT_EQ(3, controller().GetEntryCount());
3208 3208
3209 // Simulate the new current RenderFrameHost DidStopLoading. The WebContents 3209 // Simulate the new current RenderFrameHost DidStopLoading. The WebContents
3210 // should now have stopped loading. 3210 // should now have stopped loading.
3211 new_current_rfh->OnMessageReceived( 3211 new_current_rfh->OnMessageReceived(
3212 FrameHostMsg_DidStopLoading(new_current_rfh->GetRoutingID())); 3212 FrameHostMsg_DidStopLoading(new_current_rfh->GetRoutingID()));
3213 EXPECT_EQ(main_test_rfh(), new_current_rfh); 3213 EXPECT_EQ(main_test_rfh(), new_current_rfh);
3214 EXPECT_FALSE(contents()->IsLoading()); 3214 EXPECT_FALSE(contents()->IsLoading());
3215 } 3215 }
3216 3216
3217 TEST_F(WebContentsImplTest, MediaPowerSaveBlocking) { 3217 TEST_F(WebContentsImplTest, MediaWakeLock) {
3218 // Verify that both negative and positive player ids don't blow up. 3218 // Verify that both negative and positive player ids don't blow up.
3219 const int kPlayerAudioVideoId = 15; 3219 const int kPlayerAudioVideoId = 15;
3220 const int kPlayerAudioOnlyId = -15; 3220 const int kPlayerAudioOnlyId = -15;
3221 const int kPlayerVideoOnlyId = 30; 3221 const int kPlayerVideoOnlyId = 30;
3222 const int kPlayerRemoteId = -30; 3222 const int kPlayerRemoteId = -30;
3223 3223
3224 EXPECT_FALSE(has_audio_power_save_blocker()); 3224 EXPECT_FALSE(has_audio_wake_lock());
3225 EXPECT_FALSE(has_video_power_save_blocker()); 3225 EXPECT_FALSE(has_video_wake_lock());
3226 3226
3227 TestRenderFrameHost* rfh = main_test_rfh(); 3227 TestRenderFrameHost* rfh = main_test_rfh();
3228 AudioStreamMonitor* monitor = contents()->audio_stream_monitor(); 3228 AudioStreamMonitor* monitor = contents()->audio_stream_monitor();
3229 3229
3230 // Ensure RenderFrame is initialized before simulating events coming from it. 3230 // Ensure RenderFrame is initialized before simulating events coming from it.
3231 main_test_rfh()->InitializeRenderFrameIfNeeded(); 3231 main_test_rfh()->InitializeRenderFrameIfNeeded();
3232 3232
3233 // Send a fake audio stream monitor notification. The audio power save 3233 // Send a fake audio stream monitor notification. The audio wake lock
3234 // blocker should be created. 3234 // should be created.
3235 monitor->set_was_recently_audible_for_testing(true); 3235 monitor->set_was_recently_audible_for_testing(true);
3236 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB); 3236 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB);
3237 EXPECT_TRUE(has_audio_power_save_blocker()); 3237 EXPECT_TRUE(has_audio_wake_lock());
3238 3238
3239 // Send another fake notification, this time when WasRecentlyAudible() will 3239 // Send another fake notification, this time when WasRecentlyAudible() will
3240 // be false. The power save blocker should be released. 3240 // be false. The wake lock should be released.
3241 monitor->set_was_recently_audible_for_testing(false); 3241 monitor->set_was_recently_audible_for_testing(false);
3242 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB); 3242 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB);
3243 EXPECT_FALSE(has_audio_power_save_blocker()); 3243 EXPECT_FALSE(has_audio_wake_lock());
3244 3244
3245 // Start a player with both audio and video. A video power save blocker 3245 // Start a player with both audio and video. A video wake lock
3246 // should be created. If audio stream monitoring is available, an audio power 3246 // should be created. If audio stream monitoring is available, an audio power
3247 // save blocker should be created too. 3247 // save blocker should be created too.
3248 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3248 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3249 0, kPlayerAudioVideoId, true, true, false, 3249 0, kPlayerAudioVideoId, true, true, false,
3250 media::MediaContentType::Persistent)); 3250 media::MediaContentType::Persistent));
3251 EXPECT_TRUE(has_video_power_save_blocker()); 3251 EXPECT_TRUE(has_video_wake_lock());
3252 EXPECT_FALSE(has_audio_power_save_blocker()); 3252 EXPECT_FALSE(has_audio_wake_lock());
3253 3253
3254 // Upon hiding the video power save blocker should be released. 3254 // Upon hiding the video wake lock should be released.
3255 contents()->WasHidden(); 3255 contents()->WasHidden();
3256 EXPECT_FALSE(has_video_power_save_blocker()); 3256 EXPECT_FALSE(has_video_wake_lock());
3257 3257
3258 // Start another player that only has video. There should be no change in 3258 // Start another player that only has video. There should be no change in
3259 // the power save blockers. The notification should take into account the 3259 // the wake locks. The notification should take into account the
3260 // visibility state of the WebContents. 3260 // visibility state of the WebContents.
3261 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3261 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3262 0, kPlayerVideoOnlyId, true, false, false, 3262 0, kPlayerVideoOnlyId, true, false, false,
3263 media::MediaContentType::Persistent)); 3263 media::MediaContentType::Persistent));
3264 EXPECT_FALSE(has_video_power_save_blocker()); 3264 EXPECT_FALSE(has_video_wake_lock());
3265 EXPECT_FALSE(has_audio_power_save_blocker()); 3265 EXPECT_FALSE(has_audio_wake_lock());
3266 3266
3267 // Showing the WebContents should result in the creation of the blocker. 3267 // Showing the WebContents should result in the creation of the blocker.
3268 contents()->WasShown(); 3268 contents()->WasShown();
3269 EXPECT_TRUE(has_video_power_save_blocker()); 3269 EXPECT_TRUE(has_video_wake_lock());
3270 3270
3271 // Start another player that only has audio. There should be no change in 3271 // Start another player that only has audio. There should be no change in
3272 // the power save blockers. 3272 // the wake locks.
3273 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3273 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3274 0, kPlayerAudioOnlyId, false, true, false, 3274 0, kPlayerAudioOnlyId, false, true, false,
3275 media::MediaContentType::Persistent)); 3275 media::MediaContentType::Persistent));
3276 EXPECT_TRUE(has_video_power_save_blocker()); 3276 EXPECT_TRUE(has_video_wake_lock());
3277 EXPECT_FALSE(has_audio_power_save_blocker()); 3277 EXPECT_FALSE(has_audio_wake_lock());
3278 3278
3279 // Start a remote player. There should be no change in the power save 3279 // Start a remote player. There should be no change in the power save
3280 // blockers. 3280 // blockers.
3281 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3281 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3282 0, kPlayerRemoteId, true, true, true, 3282 0, kPlayerRemoteId, true, true, true,
3283 media::MediaContentType::Persistent)); 3283 media::MediaContentType::Persistent));
3284 EXPECT_TRUE(has_video_power_save_blocker()); 3284 EXPECT_TRUE(has_video_wake_lock());
3285 EXPECT_FALSE(has_audio_power_save_blocker()); 3285 EXPECT_FALSE(has_audio_wake_lock());
3286 3286
3287 // Destroy the original audio video player. Both power save blockers should 3287 // Destroy the original audio video player. Both wake locks should
3288 // remain. 3288 // remain.
3289 rfh->OnMessageReceived( 3289 rfh->OnMessageReceived(
3290 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerAudioVideoId, false)); 3290 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerAudioVideoId, false));
3291 EXPECT_TRUE(has_video_power_save_blocker()); 3291 EXPECT_TRUE(has_video_wake_lock());
3292 EXPECT_FALSE(has_audio_power_save_blocker()); 3292 EXPECT_FALSE(has_audio_wake_lock());
3293 3293
3294 // Destroy the audio only player. The video power save blocker should remain. 3294 // Destroy the audio only player. The video wake lock should remain.
3295 rfh->OnMessageReceived( 3295 rfh->OnMessageReceived(
3296 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerAudioOnlyId, false)); 3296 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerAudioOnlyId, false));
3297 EXPECT_TRUE(has_video_power_save_blocker()); 3297 EXPECT_TRUE(has_video_wake_lock());
3298 EXPECT_FALSE(has_audio_power_save_blocker()); 3298 EXPECT_FALSE(has_audio_wake_lock());
3299 3299
3300 // Destroy the video only player. No power save blockers should remain. 3300 // Destroy the video only player. No wake locks should remain.
3301 rfh->OnMessageReceived( 3301 rfh->OnMessageReceived(
3302 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerVideoOnlyId, false)); 3302 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerVideoOnlyId, false));
3303 EXPECT_FALSE(has_video_power_save_blocker()); 3303 EXPECT_FALSE(has_video_wake_lock());
3304 EXPECT_FALSE(has_audio_power_save_blocker()); 3304 EXPECT_FALSE(has_audio_wake_lock());
3305 3305
3306 // Destroy the remote player. No power save blockers should remain. 3306 // Destroy the remote player. No wake locks should remain.
3307 rfh->OnMessageReceived( 3307 rfh->OnMessageReceived(
3308 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerRemoteId, false)); 3308 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerRemoteId, false));
3309 EXPECT_FALSE(has_video_power_save_blocker()); 3309 EXPECT_FALSE(has_video_wake_lock());
3310 EXPECT_FALSE(has_audio_power_save_blocker()); 3310 EXPECT_FALSE(has_audio_wake_lock());
3311 3311
3312 // Start a player with both audio and video. A video power save blocker 3312 // Start a player with both audio and video. A video wake lock
3313 // should be created. If audio stream monitoring is available, an audio power 3313 // should be created. If audio stream monitoring is available, an audio power
3314 // save blocker should be created too. 3314 // save blocker should be created too.
3315 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3315 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3316 0, kPlayerAudioVideoId, true, true, false, 3316 0, kPlayerAudioVideoId, true, true, false,
3317 media::MediaContentType::Persistent)); 3317 media::MediaContentType::Persistent));
3318 EXPECT_TRUE(has_video_power_save_blocker()); 3318 EXPECT_TRUE(has_video_wake_lock());
3319 EXPECT_FALSE(has_audio_power_save_blocker()); 3319 EXPECT_FALSE(has_audio_wake_lock());
3320 3320
3321 // Crash the renderer. 3321 // Crash the renderer.
3322 main_test_rfh()->GetProcess()->SimulateCrash(); 3322 main_test_rfh()->GetProcess()->SimulateCrash();
3323 3323
3324 // Verify that all the power save blockers have been released. 3324 // Verify that all the wake locks have been released.
3325 EXPECT_FALSE(has_video_power_save_blocker()); 3325 EXPECT_FALSE(has_video_wake_lock());
3326 EXPECT_FALSE(has_audio_power_save_blocker()); 3326 EXPECT_FALSE(has_audio_wake_lock());
3327 } 3327 }
3328 3328
3329 TEST_F(WebContentsImplTest, ThemeColorChangeDependingOnFirstVisiblePaint) { 3329 TEST_F(WebContentsImplTest, ThemeColorChangeDependingOnFirstVisiblePaint) {
3330 TestWebContentsObserver observer(contents()); 3330 TestWebContentsObserver observer(contents());
3331 TestRenderFrameHost* rfh = main_test_rfh(); 3331 TestRenderFrameHost* rfh = main_test_rfh();
3332 rfh->InitializeRenderFrameIfNeeded(); 3332 rfh->InitializeRenderFrameIfNeeded();
3333 3333
3334 SkColor transparent = SK_ColorTRANSPARENT; 3334 SkColor transparent = SK_ColorTRANSPARENT;
3335 3335
3336 EXPECT_EQ(transparent, contents()->GetThemeColor()); 3336 EXPECT_EQ(transparent, contents()->GetThemeColor());
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
3443 // An automatic navigation. 3443 // An automatic navigation.
3444 main_test_rfh()->SendNavigateWithModificationCallback( 3444 main_test_rfh()->SendNavigateWithModificationCallback(
3445 0, true, GURL(url::kAboutBlankURL), base::Bind(SetAsNonUserGesture)); 3445 0, true, GURL(url::kAboutBlankURL), base::Bind(SetAsNonUserGesture));
3446 3446
3447 EXPECT_EQ(1u, dialog_manager.reset_count()); 3447 EXPECT_EQ(1u, dialog_manager.reset_count());
3448 3448
3449 contents()->SetJavaScriptDialogManagerForTesting(nullptr); 3449 contents()->SetJavaScriptDialogManagerForTesting(nullptr);
3450 } 3450 }
3451 3451
3452 } // namespace content 3452 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/media_web_contents_observer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698