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

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

Issue 2496173003: Communicate audio state to renderer process on Android. (Closed)
Patch Set: Second iteration Created 4 years, 1 month 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
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 3183 matching lines...) Expand 10 before | Expand all | Expand 10 after
3194 EXPECT_FALSE(has_video_power_save_blocker()); 3194 EXPECT_FALSE(has_video_power_save_blocker());
3195 3195
3196 TestRenderFrameHost* rfh = main_test_rfh(); 3196 TestRenderFrameHost* rfh = main_test_rfh();
3197 AudioStreamMonitor* monitor = contents()->audio_stream_monitor(); 3197 AudioStreamMonitor* monitor = contents()->audio_stream_monitor();
3198 3198
3199 // Ensure RenderFrame is initialized before simulating events coming from it. 3199 // Ensure RenderFrame is initialized before simulating events coming from it.
3200 main_test_rfh()->InitializeRenderFrameIfNeeded(); 3200 main_test_rfh()->InitializeRenderFrameIfNeeded();
3201 3201
3202 // The audio power save blocker should not be based on having a media player 3202 // The audio power save blocker should not be based on having a media player
3203 // when audio stream monitoring is available. 3203 // when audio stream monitoring is available.
3204 if (AudioStreamMonitor::monitoring_available()) { 3204 if (AudioStreamMonitor::power_level_monitoring_available()) {
3205 // Send a fake audio stream monitor notification. The audio power save 3205 // Send a fake audio stream monitor notification. The audio power save
3206 // blocker should be created. 3206 // blocker should be created.
3207 monitor->set_was_recently_audible_for_testing(true); 3207 monitor->set_was_recently_audible_for_testing(true);
3208 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB); 3208 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB);
3209 EXPECT_TRUE(has_audio_power_save_blocker()); 3209 EXPECT_TRUE(has_audio_power_save_blocker());
3210 3210
3211 // Send another fake notification, this time when WasRecentlyAudible() will 3211 // Send another fake notification, this time when WasRecentlyAudible() will
3212 // be false. The power save blocker should be released. 3212 // be false. The power save blocker should be released.
3213 monitor->set_was_recently_audible_for_testing(false); 3213 monitor->set_was_recently_audible_for_testing(false);
3214 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB); 3214 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB);
3215 EXPECT_FALSE(has_audio_power_save_blocker()); 3215 EXPECT_FALSE(has_audio_power_save_blocker());
3216 } 3216 }
3217 3217
3218 // Start a player with both audio and video. A video power save blocker 3218 // Start a player with both audio and video. A video power save blocker
3219 // should be created. If audio stream monitoring is available, an audio power 3219 // should be created. If audio stream monitoring is available, an audio power
3220 // save blocker should be created too. 3220 // save blocker should be created too.
3221 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3221 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3222 0, kPlayerAudioVideoId, true, true, false, 3222 0, kPlayerAudioVideoId, true, true, false,
3223 media::MediaContentType::Persistent)); 3223 media::MediaContentType::Persistent));
3224 EXPECT_TRUE(has_video_power_save_blocker()); 3224 EXPECT_TRUE(has_video_power_save_blocker());
3225 EXPECT_EQ(has_audio_power_save_blocker(), 3225 EXPECT_EQ(has_audio_power_save_blocker(),
3226 !AudioStreamMonitor::monitoring_available()); 3226 !AudioStreamMonitor::power_level_monitoring_available());
3227 3227
3228 // Upon hiding the video power save blocker should be released. 3228 // Upon hiding the video power save blocker should be released.
3229 contents()->WasHidden(); 3229 contents()->WasHidden();
3230 EXPECT_FALSE(has_video_power_save_blocker()); 3230 EXPECT_FALSE(has_video_power_save_blocker());
3231 3231
3232 // Start another player that only has video. There should be no change in 3232 // Start another player that only has video. There should be no change in
3233 // the power save blockers. The notification should take into account the 3233 // the power save blockers. The notification should take into account the
3234 // visibility state of the WebContents. 3234 // visibility state of the WebContents.
3235 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3235 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3236 0, kPlayerVideoOnlyId, true, false, false, 3236 0, kPlayerVideoOnlyId, true, false, false,
3237 media::MediaContentType::Persistent)); 3237 media::MediaContentType::Persistent));
3238 EXPECT_FALSE(has_video_power_save_blocker()); 3238 EXPECT_FALSE(has_video_power_save_blocker());
3239 EXPECT_EQ(has_audio_power_save_blocker(), 3239 EXPECT_EQ(has_audio_power_save_blocker(),
3240 !AudioStreamMonitor::monitoring_available()); 3240 !AudioStreamMonitor::power_level_monitoring_available());
3241 3241
3242 // Showing the WebContents should result in the creation of the blocker. 3242 // Showing the WebContents should result in the creation of the blocker.
3243 contents()->WasShown(); 3243 contents()->WasShown();
3244 EXPECT_TRUE(has_video_power_save_blocker()); 3244 EXPECT_TRUE(has_video_power_save_blocker());
3245 3245
3246 // Start another player that only has audio. There should be no change in 3246 // Start another player that only has audio. There should be no change in
3247 // the power save blockers. 3247 // the power save blockers.
3248 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3248 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3249 0, kPlayerAudioOnlyId, false, true, false, 3249 0, kPlayerAudioOnlyId, false, true, false,
3250 media::MediaContentType::Persistent)); 3250 media::MediaContentType::Persistent));
3251 EXPECT_TRUE(has_video_power_save_blocker()); 3251 EXPECT_TRUE(has_video_power_save_blocker());
3252 EXPECT_EQ(has_audio_power_save_blocker(), 3252 EXPECT_EQ(has_audio_power_save_blocker(),
3253 !AudioStreamMonitor::monitoring_available()); 3253 !AudioStreamMonitor::power_level_monitoring_available());
3254 3254
3255 // Start a remote player. There should be no change in the power save 3255 // Start a remote player. There should be no change in the power save
3256 // blockers. 3256 // blockers.
3257 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3257 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3258 0, kPlayerRemoteId, true, true, true, 3258 0, kPlayerRemoteId, true, true, true,
3259 media::MediaContentType::Persistent)); 3259 media::MediaContentType::Persistent));
3260 EXPECT_TRUE(has_video_power_save_blocker()); 3260 EXPECT_TRUE(has_video_power_save_blocker());
3261 EXPECT_EQ(has_audio_power_save_blocker(), 3261 EXPECT_EQ(has_audio_power_save_blocker(),
3262 !AudioStreamMonitor::monitoring_available()); 3262 !AudioStreamMonitor::power_level_monitoring_available());
3263 3263
3264 // Destroy the original audio video player. Both power save blockers should 3264 // Destroy the original audio video player. Both power save blockers should
3265 // remain. 3265 // remain.
3266 rfh->OnMessageReceived( 3266 rfh->OnMessageReceived(
3267 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerAudioVideoId, false)); 3267 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerAudioVideoId, false));
3268 EXPECT_TRUE(has_video_power_save_blocker()); 3268 EXPECT_TRUE(has_video_power_save_blocker());
3269 EXPECT_EQ(has_audio_power_save_blocker(), 3269 EXPECT_EQ(has_audio_power_save_blocker(),
3270 !AudioStreamMonitor::monitoring_available()); 3270 !AudioStreamMonitor::power_level_monitoring_available());
3271 3271
3272 // Destroy the audio only player. The video power save blocker should remain. 3272 // Destroy the audio only player. The video power save blocker should remain.
3273 rfh->OnMessageReceived( 3273 rfh->OnMessageReceived(
3274 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerAudioOnlyId, false)); 3274 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerAudioOnlyId, false));
3275 EXPECT_TRUE(has_video_power_save_blocker()); 3275 EXPECT_TRUE(has_video_power_save_blocker());
3276 EXPECT_FALSE(has_audio_power_save_blocker()); 3276 EXPECT_FALSE(has_audio_power_save_blocker());
3277 3277
3278 // Destroy the video only player. No power save blockers should remain. 3278 // Destroy the video only player. No power save blockers should remain.
3279 rfh->OnMessageReceived( 3279 rfh->OnMessageReceived(
3280 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerVideoOnlyId, false)); 3280 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerVideoOnlyId, false));
3281 EXPECT_FALSE(has_video_power_save_blocker()); 3281 EXPECT_FALSE(has_video_power_save_blocker());
3282 EXPECT_FALSE(has_audio_power_save_blocker()); 3282 EXPECT_FALSE(has_audio_power_save_blocker());
3283 3283
3284 // Destroy the remote player. No power save blockers should remain. 3284 // Destroy the remote player. No power save blockers should remain.
3285 rfh->OnMessageReceived( 3285 rfh->OnMessageReceived(
3286 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerRemoteId, false)); 3286 MediaPlayerDelegateHostMsg_OnMediaPaused(0, kPlayerRemoteId, false));
3287 EXPECT_FALSE(has_video_power_save_blocker()); 3287 EXPECT_FALSE(has_video_power_save_blocker());
3288 EXPECT_FALSE(has_audio_power_save_blocker()); 3288 EXPECT_FALSE(has_audio_power_save_blocker());
3289 3289
3290 // Start a player with both audio and video. A video power save blocker 3290 // Start a player with both audio and video. A video power save blocker
3291 // should be created. If audio stream monitoring is available, an audio power 3291 // should be created. If audio stream monitoring is available, an audio power
3292 // save blocker should be created too. 3292 // save blocker should be created too.
3293 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying( 3293 rfh->OnMessageReceived(MediaPlayerDelegateHostMsg_OnMediaPlaying(
3294 0, kPlayerAudioVideoId, true, true, false, 3294 0, kPlayerAudioVideoId, true, true, false,
3295 media::MediaContentType::Persistent)); 3295 media::MediaContentType::Persistent));
3296 EXPECT_TRUE(has_video_power_save_blocker()); 3296 EXPECT_TRUE(has_video_power_save_blocker());
3297 EXPECT_EQ(has_audio_power_save_blocker(), 3297 EXPECT_EQ(has_audio_power_save_blocker(),
3298 !AudioStreamMonitor::monitoring_available()); 3298 !AudioStreamMonitor::power_level_monitoring_available());
3299 3299
3300 // Crash the renderer. 3300 // Crash the renderer.
3301 main_test_rfh()->GetProcess()->SimulateCrash(); 3301 main_test_rfh()->GetProcess()->SimulateCrash();
3302 3302
3303 // Verify that all the power save blockers have been released. 3303 // Verify that all the power save blockers have been released.
3304 EXPECT_FALSE(has_video_power_save_blocker()); 3304 EXPECT_FALSE(has_video_power_save_blocker());
3305 EXPECT_FALSE(has_audio_power_save_blocker()); 3305 EXPECT_FALSE(has_audio_power_save_blocker());
3306 } 3306 }
3307 3307
3308 TEST_F(WebContentsImplTest, ThemeColorChangeDependingOnFirstVisiblePaint) { 3308 TEST_F(WebContentsImplTest, ThemeColorChangeDependingOnFirstVisiblePaint) {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
3425 // An automatic navigation. 3425 // An automatic navigation.
3426 main_test_rfh()->SendNavigateWithModificationCallback( 3426 main_test_rfh()->SendNavigateWithModificationCallback(
3427 0, true, GURL(url::kAboutBlankURL), base::Bind(SetAsNonUserGesture)); 3427 0, true, GURL(url::kAboutBlankURL), base::Bind(SetAsNonUserGesture));
3428 3428
3429 EXPECT_EQ(1u, dialog_manager.reset_count()); 3429 EXPECT_EQ(1u, dialog_manager.reset_count());
3430 3430
3431 contents()->SetJavaScriptDialogManagerForTesting(nullptr); 3431 contents()->SetJavaScriptDialogManagerForTesting(nullptr);
3432 } 3432 }
3433 3433
3434 } // namespace content 3434 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698