Index: content/browser/media/audio_stream_monitor_unittest.cc |
diff --git a/chrome/browser/media/audio_stream_monitor_unittest.cc b/content/browser/media/audio_stream_monitor_unittest.cc |
similarity index 74% |
rename from chrome/browser/media/audio_stream_monitor_unittest.cc |
rename to content/browser/media/audio_stream_monitor_unittest.cc |
index 58c4adbbcef579bc7c6b09736bcc1abc0d189697..14c0b2319534e6afc4a51f26196df44f5a022ca2 100644 |
--- a/chrome/browser/media/audio_stream_monitor_unittest.cc |
+++ b/content/browser/media/audio_stream_monitor_unittest.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/media/audio_stream_monitor.h" |
+#include "content/browser/media/audio_stream_monitor.h" |
#include <map> |
#include <utility> |
@@ -11,52 +11,51 @@ |
#include "base/bind_helpers.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/test/simple_test_tick_clock.h" |
-#include "chrome/test/base/testing_profile.h" |
#include "content/public/browser/invalidate_type.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_contents_delegate.h" |
-#include "content/public/test/test_browser_thread_bundle.h" |
+#include "content/public/test/test_renderer_host.h" |
#include "media/audio/audio_power_monitor.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
using ::testing::InvokeWithoutArgs; |
+namespace content { |
+ |
namespace { |
const int kStreamId = 3; |
const int kAnotherStreamId = 6; |
// Used to confirm audio indicator state changes occur at the correct times. |
-class MockWebContentsDelegate : public content::WebContentsDelegate { |
+class MockWebContentsDelegate : public WebContentsDelegate { |
public: |
MOCK_METHOD2(NavigationStateChanged, |
- void(const content::WebContents* source, |
- content::InvalidateTypes changed_flags)); |
+ void(const WebContents* source, InvalidateTypes changed_flags)); |
}; |
} // namespace |
-class AudioStreamMonitorTest : public testing::Test { |
+class AudioStreamMonitorTest : public RenderViewHostTestHarness { |
public: |
AudioStreamMonitorTest() { |
// Start |clock_| at non-zero. |
clock_.Advance(base::TimeDelta::FromSeconds(1000000)); |
+ } |
+ |
+ virtual void SetUp() OVERRIDE { |
+ RenderViewHostTestHarness::SetUp(); |
- // Create a WebContents instance and set it to use our mock delegate. |
- web_contents_.reset(content::WebContents::Create( |
- content::WebContents::CreateParams(&profile_, NULL))); |
- web_contents_->SetDelegate(&mock_web_contents_delegate_); |
+ WebContents* web_contents = RenderViewHostTestHarness::web_contents(); |
+ web_contents->SetDelegate(&mock_web_contents_delegate_); |
// Create an AudioStreamMonitor instance whose lifecycle is tied to that of |
// |web_contents_|, and override its clock with the test clock. |
- AudioStreamMonitor::CreateForWebContents(web_contents_.get()); |
- CHECK(audio_stream_monitor()); |
- const_cast<base::TickClock*&>(audio_stream_monitor()->clock_) = &clock_; |
- } |
- |
- AudioStreamMonitor* audio_stream_monitor() { |
- return AudioStreamMonitor::FromWebContents(web_contents_.get()); |
+ AudioStreamMonitor::CreateForWebContents(web_contents); |
+ monitor_ = AudioStreamMonitor::FromWebContents(web_contents); |
+ CHECK(monitor_); |
+ const_cast<base::TickClock*&>(monitor_->clock_) = &clock_; |
} |
base::TimeTicks GetTestClockTime() { return clock_.NowTicks(); } |
@@ -73,31 +72,33 @@ class AudioStreamMonitorTest : public testing::Test { |
current_power_[stream_id] = power; |
} |
- void SimulatePollTimerFired() { audio_stream_monitor()->Poll(); } |
+ void SimulatePollTimerFired() { monitor_->Poll(); } |
- void SimulateOffTimerFired() { audio_stream_monitor()->MaybeToggle(); } |
+ void SimulateOffTimerFired() { monitor_->MaybeToggle(); } |
void ExpectIsPolling(int stream_id, bool is_polling) { |
- AudioStreamMonitor* const monitor = audio_stream_monitor(); |
EXPECT_EQ(is_polling, |
- monitor->poll_callbacks_.find(stream_id) != |
- monitor->poll_callbacks_.end()); |
- EXPECT_EQ(!monitor->poll_callbacks_.empty(), |
- monitor->poll_timer_.IsRunning()); |
+ monitor_->poll_callbacks_.find(stream_id) != |
+ monitor_->poll_callbacks_.end()); |
+ EXPECT_EQ(!monitor_->poll_callbacks_.empty(), |
+ monitor_->poll_timer_.IsRunning()); |
} |
void ExpectTabWasRecentlyAudible(bool was_audible, |
const base::TimeTicks& last_blurt_time) { |
- AudioStreamMonitor* const monitor = audio_stream_monitor(); |
- EXPECT_EQ(was_audible, monitor->was_recently_audible_); |
- EXPECT_EQ(last_blurt_time, monitor->last_blurt_time_); |
- EXPECT_EQ(monitor->was_recently_audible_, monitor->off_timer_.IsRunning()); |
+ EXPECT_EQ(was_audible, monitor_->was_recently_audible_); |
+ EXPECT_EQ(last_blurt_time, monitor_->last_blurt_time_); |
+ EXPECT_EQ(monitor_->was_recently_audible_, |
+ monitor_->off_timer_.IsRunning()); |
+ const bool have_blocker = monitor_->blocker_; |
+ EXPECT_EQ(have_blocker, monitor_->off_timer_.IsRunning()); |
} |
void ExpectWebContentsWillBeNotifiedOnce(bool should_be_audible) { |
- EXPECT_CALL(mock_web_contents_delegate_, |
- NavigationStateChanged(web_contents_.get(), |
- content::INVALIDATE_TYPE_TAB)) |
+ EXPECT_CALL( |
+ mock_web_contents_delegate_, |
+ NavigationStateChanged(RenderViewHostTestHarness::web_contents(), |
+ INVALIDATE_TYPE_TAB)) |
.WillOnce(InvokeWithoutArgs( |
this, |
should_be_audible |
@@ -116,25 +117,35 @@ class AudioStreamMonitorTest : public testing::Test { |
AudioStreamMonitor::kHoldOnMilliseconds); |
} |
+ void StartMonitoring( |
+ int stream_id, |
+ const AudioStreamMonitor::ReadPowerAndClipCallback& callback) { |
+ monitor_->StartMonitoringStreamOnUIThread(stream_id, callback); |
+ } |
+ |
+ void StopMonitoring(int stream_id) { |
+ monitor_->StopMonitoringStreamOnUIThread(stream_id); |
+ } |
+ |
+ protected: |
+ AudioStreamMonitor* monitor_; |
+ |
private: |
std::pair<float, bool> ReadPower(int stream_id) { |
return std::make_pair(current_power_[stream_id], false); |
} |
void ExpectIsNotifyingForToggleOn() { |
- EXPECT_TRUE(audio_stream_monitor()->WasRecentlyAudible()); |
+ EXPECT_TRUE(monitor_->WasRecentlyAudible()); |
} |
void ExpectIsNotifyingForToggleOff() { |
- EXPECT_FALSE(audio_stream_monitor()->WasRecentlyAudible()); |
+ EXPECT_FALSE(monitor_->WasRecentlyAudible()); |
} |
- content::TestBrowserThreadBundle browser_thread_bundle_; |
- TestingProfile profile_; |
MockWebContentsDelegate mock_web_contents_delegate_; |
base::SimpleTestTickClock clock_; |
std::map<int, float> current_power_; |
- scoped_ptr<content::WebContents> web_contents_; |
DISALLOW_COPY_AND_ASSIGN(AudioStreamMonitorTest); |
}; |
@@ -142,16 +153,15 @@ class AudioStreamMonitorTest : public testing::Test { |
// Tests that AudioStreamMonitor is polling while it has a |
// ReadPowerAndClipCallback, and is not polling at other times. |
TEST_F(AudioStreamMonitorTest, PollsWhenProvidedACallback) { |
- EXPECT_FALSE(audio_stream_monitor()->WasRecentlyAudible()); |
+ EXPECT_FALSE(monitor_->WasRecentlyAudible()); |
ExpectIsPolling(kStreamId, false); |
- audio_stream_monitor()->StartMonitoringStream(kStreamId, |
- CreatePollCallback(kStreamId)); |
- EXPECT_FALSE(audio_stream_monitor()->WasRecentlyAudible()); |
+ StartMonitoring(kStreamId, CreatePollCallback(kStreamId)); |
+ EXPECT_FALSE(monitor_->WasRecentlyAudible()); |
ExpectIsPolling(kStreamId, true); |
- audio_stream_monitor()->StopMonitoringStream(kStreamId); |
- EXPECT_FALSE(audio_stream_monitor()->WasRecentlyAudible()); |
+ StopMonitoring(kStreamId); |
+ EXPECT_FALSE(monitor_->WasRecentlyAudible()); |
ExpectIsPolling(kStreamId, false); |
} |
@@ -160,8 +170,7 @@ TEST_F(AudioStreamMonitorTest, PollsWhenProvidedACallback) { |
// threshold. See comments in audio_stream_monitor.h for expected behavior. |
TEST_F(AudioStreamMonitorTest, |
ImpulsesKeepIndicatorOnUntilHoldingPeriodHasPassed) { |
- audio_stream_monitor()->StartMonitoringStream(kStreamId, |
- CreatePollCallback(kStreamId)); |
+ StartMonitoring(kStreamId, CreatePollCallback(kStreamId)); |
// Expect WebContents will get one call form AudioStreamMonitor to toggle the |
// indicator on upon the very first poll. |
@@ -208,11 +217,8 @@ TEST_F(AudioStreamMonitorTest, |
// Tests that the AudioStreamMonitor correctly processes the blurts from two |
// different streams in the same tab. |
TEST_F(AudioStreamMonitorTest, HandlesMultipleStreamsBlurting) { |
- audio_stream_monitor()->StartMonitoringStream(kStreamId, |
- CreatePollCallback(kStreamId)); |
- audio_stream_monitor()->StartMonitoringStream( |
- kAnotherStreamId, |
- CreatePollCallback(kAnotherStreamId)); |
+ StartMonitoring(kStreamId, CreatePollCallback(kStreamId)); |
+ StartMonitoring(kAnotherStreamId, CreatePollCallback(kAnotherStreamId)); |
base::TimeTicks last_blurt_time; |
ExpectTabWasRecentlyAudible(false, last_blurt_time); |
@@ -276,3 +282,5 @@ TEST_F(AudioStreamMonitorTest, HandlesMultipleStreamsBlurting) { |
ExpectTabWasRecentlyAudible(false, last_blurt_time); |
} |
} |
+ |
+} // namespace content |