diff options
Diffstat (limited to 'remoting/host/resizing_host_observer_unittest.cc')
-rw-r--r-- | remoting/host/resizing_host_observer_unittest.cc | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/remoting/host/resizing_host_observer_unittest.cc b/remoting/host/resizing_host_observer_unittest.cc index a8a0eef..93d3f48 100644 --- a/remoting/host/resizing_host_observer_unittest.cc +++ b/remoting/host/resizing_host_observer_unittest.cc @@ -39,11 +39,13 @@ class FakeDesktopResizer : public DesktopResizer { FakeDesktopResizer(const ScreenResolution& initial_resolution, bool exact_size_supported, const ScreenResolution* supported_resolutions, - int num_supported_resolutions) + int num_supported_resolutions, + int* restore_resolution_call_count) : initial_resolution_(initial_resolution), current_resolution_(initial_resolution), exact_size_supported_(exact_size_supported), - set_resolution_call_count_(0) { + set_resolution_call_count_(0), + restore_resolution_call_count_(restore_resolution_call_count) { for (int i = 0; i < num_supported_resolutions; ++i) { supported_resolutions_.push_back(supported_resolutions[i]); } @@ -73,6 +75,8 @@ class FakeDesktopResizer : public DesktopResizer { } virtual void RestoreResolution(const ScreenResolution& resolution) OVERRIDE { current_resolution_ = resolution; + if (restore_resolution_call_count_) + ++(*restore_resolution_call_count_); } private: @@ -82,6 +86,7 @@ class FakeDesktopResizer : public DesktopResizer { std::list<ScreenResolution> supported_resolutions_; int set_resolution_call_count_; + int* restore_resolution_call_count_; }; class ResizingHostObserverTest : public testing::Test { @@ -135,24 +140,44 @@ class ResizingHostObserverTest : public testing::Test { base::Time now_; }; +// Check that the resolution isn't restored if it wasn't changed by this class. +TEST_F(ResizingHostObserverTest, NoRestoreResolution) { + int restore_resolution_call_count = 0; + ScreenResolution initial = MakeResolution(640, 480); + scoped_ptr<FakeDesktopResizer> desktop_resizer( + new FakeDesktopResizer(initial, false, NULL, 0, + &restore_resolution_call_count)); + SetDesktopResizer(desktop_resizer.Pass()); + VerifySizes(NULL, NULL, 0); + resizing_host_observer_.reset(); + EXPECT_EQ(0, restore_resolution_call_count); +} + // Check that the host is not resized if GetSupportedSizes returns an empty // list (even if GetCurrentSize is supported). TEST_F(ResizingHostObserverTest, EmptyGetSupportedSizes) { + int restore_resolution_call_count = 0; ScreenResolution initial = MakeResolution(640, 480); scoped_ptr<FakeDesktopResizer> desktop_resizer( - new FakeDesktopResizer(initial, false, NULL, 0)); + new FakeDesktopResizer(initial, false, NULL, 0, + &restore_resolution_call_count)); SetDesktopResizer(desktop_resizer.Pass()); ScreenResolution client_sizes[] = { MakeResolution(200, 100), MakeResolution(100, 200) }; ScreenResolution expected_sizes[] = { initial, initial }; VerifySizes(client_sizes, expected_sizes, arraysize(client_sizes)); + + resizing_host_observer_.reset(); + EXPECT_EQ(0, restore_resolution_call_count); } // Check that if the implementation supports exact size matching, it is used. TEST_F(ResizingHostObserverTest, SelectExactSize) { + int restore_resolution_call_count = 0; scoped_ptr<FakeDesktopResizer> desktop_resizer( - new FakeDesktopResizer(MakeResolution(640, 480), true, NULL, 0)); + new FakeDesktopResizer(MakeResolution(640, 480), true, NULL, 0, + &restore_resolution_call_count)); SetDesktopResizer(desktop_resizer.Pass()); ScreenResolution client_sizes[] = { MakeResolution(200, 100), @@ -161,6 +186,8 @@ TEST_F(ResizingHostObserverTest, SelectExactSize) { MakeResolution(480, 640), MakeResolution(1280, 1024) }; VerifySizes(client_sizes, client_sizes, arraysize(client_sizes)); + resizing_host_observer_.reset(); + EXPECT_EQ(1, restore_resolution_call_count); } // Check that if the implementation supports a size that is no larger than @@ -170,7 +197,8 @@ TEST_F(ResizingHostObserverTest, SelectBestSmallerSize) { MakeResolution(640, 480) }; scoped_ptr<FakeDesktopResizer> desktop_resizer( new FakeDesktopResizer(MakeResolution(640, 480), false, - supported_sizes, arraysize(supported_sizes))); + supported_sizes, arraysize(supported_sizes), + NULL)); SetDesktopResizer(desktop_resizer.Pass()); ScreenResolution client_sizes[] = { MakeResolution(639, 479), @@ -189,7 +217,8 @@ TEST_F(ResizingHostObserverTest, SelectBestScaleFactor) { MakeResolution(200, 100) }; scoped_ptr<FakeDesktopResizer> desktop_resizer( new FakeDesktopResizer(MakeResolution(200, 100), false, - supported_sizes, arraysize(supported_sizes))); + supported_sizes, arraysize(supported_sizes), + NULL)); SetDesktopResizer(desktop_resizer.Pass()); ScreenResolution client_sizes[] = { MakeResolution(1, 1), @@ -207,7 +236,8 @@ TEST_F(ResizingHostObserverTest, SelectWidest) { MakeResolution(480, 640) }; scoped_ptr<FakeDesktopResizer> desktop_resizer( new FakeDesktopResizer(MakeResolution(480, 640), false, - supported_sizes, arraysize(supported_sizes))); + supported_sizes, arraysize(supported_sizes), + NULL)); SetDesktopResizer(desktop_resizer.Pass()); ScreenResolution client_sizes[] = { MakeResolution(100, 100), @@ -227,8 +257,8 @@ TEST_F(ResizingHostObserverTest, NoSetSizeForSameSize) { ScreenResolution supported_sizes[] = { MakeResolution(640, 480), MakeResolution(480, 640) }; FakeDesktopResizer* desktop_resizer = - new FakeDesktopResizer(MakeResolution(640, 480), false, - supported_sizes, arraysize(supported_sizes)); + new FakeDesktopResizer(MakeResolution(480, 640), false, + supported_sizes, arraysize(supported_sizes), NULL); SetDesktopResizer(scoped_ptr<FakeDesktopResizer>(desktop_resizer)); ScreenResolution client_sizes[] = { MakeResolution(640, 640), @@ -238,14 +268,14 @@ TEST_F(ResizingHostObserverTest, NoSetSizeForSameSize) { MakeResolution(640, 480), MakeResolution(640, 480) }; VerifySizes(client_sizes, expected_sizes, arraysize(client_sizes)); - EXPECT_EQ(desktop_resizer->set_resolution_call_count(), 0); + EXPECT_EQ(desktop_resizer->set_resolution_call_count(), 1); } // Check that desktop resizes are rate-limited, and that if multiple resize // requests are received in the time-out period, the most recent is respected. TEST_F(ResizingHostObserverTest, RateLimited) { FakeDesktopResizer* desktop_resizer = - new FakeDesktopResizer(MakeResolution(640, 480), true, NULL, 0); + new FakeDesktopResizer(MakeResolution(640, 480), true, NULL, 0, NULL); SetDesktopResizer(scoped_ptr<FakeDesktopResizer>(desktop_resizer)); resizing_host_observer_->SetNowFunctionForTesting( base::Bind(&ResizingHostObserverTest::GetTime, base::Unretained(this))); |