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

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

Issue 644463003: [Cast, Android] Don't hold the wake lock if the video is playing remotely. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Ignore remote players altogether Created 6 years, 2 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/web_contents/web_contents_impl.cc ('k') | content/common/frame_messages.h » ('j') | 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "content/browser/frame_host/cross_site_transferring_request.h" 7 #include "content/browser/frame_host/cross_site_transferring_request.h"
8 #include "content/browser/frame_host/interstitial_page_impl.h" 8 #include "content/browser/frame_host/interstitial_page_impl.h"
9 #include "content/browser/frame_host/navigation_entry_impl.h" 9 #include "content/browser/frame_host/navigation_entry_impl.h"
10 #include "content/browser/media/audio_stream_monitor.h" 10 #include "content/browser/media/audio_stream_monitor.h"
(...skipping 2683 matching lines...) Expand 10 before | Expand all | Expand 10 after
2694 } 2694 }
2695 2695
2696 // ChromeOS doesn't use WebContents based power save blocking. 2696 // ChromeOS doesn't use WebContents based power save blocking.
2697 #if !defined(OS_CHROMEOS) 2697 #if !defined(OS_CHROMEOS)
2698 TEST_F(WebContentsImplTest, MediaPowerSaveBlocking) { 2698 TEST_F(WebContentsImplTest, MediaPowerSaveBlocking) {
2699 // PlayerIDs are actually pointers cast to int64, so verify that both negative 2699 // PlayerIDs are actually pointers cast to int64, so verify that both negative
2700 // and positive player ids don't blow up. 2700 // and positive player ids don't blow up.
2701 const int kPlayerAudioVideoId = 15; 2701 const int kPlayerAudioVideoId = 15;
2702 const int kPlayerAudioOnlyId = -15; 2702 const int kPlayerAudioOnlyId = -15;
2703 const int kPlayerVideoOnlyId = 30; 2703 const int kPlayerVideoOnlyId = 30;
2704 const int kPlayerRemoteId = -30;
2704 2705
2705 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing()); 2706 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing());
2706 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing()); 2707 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing());
2707 2708
2708 TestRenderFrameHost* rfh = contents()->GetMainFrame(); 2709 TestRenderFrameHost* rfh = contents()->GetMainFrame();
2709 AudioStreamMonitor* monitor = contents()->audio_stream_monitor(); 2710 AudioStreamMonitor* monitor = contents()->audio_stream_monitor();
2710 2711
2711 // The audio power save blocker should not be based on having a media player 2712 // The audio power save blocker should not be based on having a media player
2712 // when audio stream monitoring is available. 2713 // when audio stream monitoring is available.
2713 if (AudioStreamMonitor::monitoring_available()) { 2714 if (AudioStreamMonitor::monitoring_available()) {
2714 // Send a fake audio stream monitor notification. The audio power save 2715 // Send a fake audio stream monitor notification. The audio power save
2715 // blocker should be created. 2716 // blocker should be created.
2716 monitor->set_was_recently_audible_for_testing(true); 2717 monitor->set_was_recently_audible_for_testing(true);
2717 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB); 2718 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB);
2718 EXPECT_TRUE(contents()->has_audio_power_save_blocker_for_testing()); 2719 EXPECT_TRUE(contents()->has_audio_power_save_blocker_for_testing());
2719 2720
2720 // Send another fake notification, this time when WasRecentlyAudible() will 2721 // Send another fake notification, this time when WasRecentlyAudible() will
2721 // be false. The power save blocker should be released. 2722 // be false. The power save blocker should be released.
2722 monitor->set_was_recently_audible_for_testing(false); 2723 monitor->set_was_recently_audible_for_testing(false);
2723 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB); 2724 contents()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB);
2724 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing()); 2725 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing());
2725 } 2726 }
2726 2727
2727 // Start a player with both audio and video. A video power save blocker 2728 // Start a player with both audio and video. A video power save blocker
2728 // should be created. If audio stream monitoring is available, an audio power 2729 // should be created. If audio stream monitoring is available, an audio power
2729 // save blocker should be created too. 2730 // save blocker should be created too.
2730 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification( 2731 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification(
2731 0, kPlayerAudioVideoId, true, true)); 2732 0, kPlayerAudioVideoId, true, true, false));
2732 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing()); 2733 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing());
2733 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(), 2734 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(),
2734 !AudioStreamMonitor::monitoring_available()); 2735 !AudioStreamMonitor::monitoring_available());
2735 2736
2736 // Upon hiding the video power save blocker should be released. 2737 // Upon hiding the video power save blocker should be released.
2737 contents()->WasHidden(); 2738 contents()->WasHidden();
2738 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing()); 2739 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing());
2739 2740
2740 // Start another player that only has video. There should be no change in 2741 // Start another player that only has video. There should be no change in
2741 // the power save blockers. The notification should take into account the 2742 // the power save blockers. The notification should take into account the
2742 // visibility state of the WebContents. 2743 // visibility state of the WebContents.
2743 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification( 2744 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification(
2744 0, kPlayerVideoOnlyId, true, false)); 2745 0, kPlayerVideoOnlyId, true, false, false));
2745 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing()); 2746 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing());
2746 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(), 2747 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(),
2747 !AudioStreamMonitor::monitoring_available()); 2748 !AudioStreamMonitor::monitoring_available());
2748 2749
2749 // Showing the WebContents should result in the creation of the blocker. 2750 // Showing the WebContents should result in the creation of the blocker.
2750 contents()->WasShown(); 2751 contents()->WasShown();
2751 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing()); 2752 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing());
2752 2753
2753 // Start another player that only has audio. There should be no change in 2754 // Start another player that only has audio. There should be no change in
2754 // the power save blockers. 2755 // the power save blockers.
2755 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification( 2756 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification(
2756 0, kPlayerAudioOnlyId, false, true)); 2757 0, kPlayerAudioOnlyId, false, true, false));
2757 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing()); 2758 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing());
2758 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(), 2759 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(),
2759 !AudioStreamMonitor::monitoring_available()); 2760 !AudioStreamMonitor::monitoring_available());
2761
2762 // Start a remote player. There should be no change in the power save
2763 // blockers.
2764 rfh->OnMessageReceived(FrameHostMsg_MediaPlayingNotification(
2765 0, kPlayerRemoteId, true, true, true));
2766 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing());
2767 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(),
2768 !AudioStreamMonitor::monitoring_available());
2760 2769
2761 // Destroy the original audio video player. Both power save blockers should 2770 // Destroy the original audio video player. Both power save blockers should
2762 // remain. 2771 // remain.
2763 rfh->OnMessageReceived( 2772 rfh->OnMessageReceived(
2764 FrameHostMsg_MediaPausedNotification(0, kPlayerAudioVideoId)); 2773 FrameHostMsg_MediaPausedNotification(0, kPlayerAudioVideoId));
2765 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing()); 2774 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing());
2766 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(), 2775 EXPECT_EQ(contents()->has_audio_power_save_blocker_for_testing(),
2767 !AudioStreamMonitor::monitoring_available()); 2776 !AudioStreamMonitor::monitoring_available());
2768 2777
2769 // Destroy the audio only player. The video power save blocker should remain. 2778 // Destroy the audio only player. The video power save blocker should remain.
2770 rfh->OnMessageReceived( 2779 rfh->OnMessageReceived(
2771 FrameHostMsg_MediaPausedNotification(0, kPlayerAudioOnlyId)); 2780 FrameHostMsg_MediaPausedNotification(0, kPlayerAudioOnlyId));
2772 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing()); 2781 EXPECT_TRUE(contents()->has_video_power_save_blocker_for_testing());
2773 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing()); 2782 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing());
2774 2783
2775 // Destroy the video only player. No power save blockers should remain. 2784 // Destroy the video only player. No power save blockers should remain.
2776 rfh->OnMessageReceived( 2785 rfh->OnMessageReceived(
2777 FrameHostMsg_MediaPausedNotification(0, kPlayerVideoOnlyId)); 2786 FrameHostMsg_MediaPausedNotification(0, kPlayerVideoOnlyId));
2778 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing()); 2787 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing());
2779 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing()); 2788 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing());
2789
2790 // Destroy the remote player. No power save blockers should remain.
2791 rfh->OnMessageReceived(
2792 FrameHostMsg_MediaPausedNotification(0, kPlayerRemoteId));
2793 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing());
2794 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing());
2780 } 2795 }
2781 #endif 2796 #endif
2782 2797
2783 } // namespace content 2798 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.cc ('k') | content/common/frame_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698