screensaver_view_unittest.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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 3// found in the LICENSE file. 4 5#include "ash/screensaver/screensaver_view.h" 6 7#include "ash/test/ash_test_base.h" 8#include "base/bind.h" 9#include "content/public/browser/browser_context.h" 10#include "ui/views/controls/webview/webview.h" 11#include "ui/views/test/webview_test_helper.h" 12 13namespace ash { 14namespace test { 15 16class ScreensaverViewTest : public ash::test::AshTestBase { 17 public: 18 ScreensaverViewTest() { 19 url_ = GURL("http://www.google.com"); 20 views_delegate_.reset(new AshTestViewsDelegate); 21 webview_test_helper_.reset(new views::WebViewTestHelper(message_loop())); 22 } 23 24 virtual ~ScreensaverViewTest() {} 25 26 virtual void SetUp() OVERRIDE { 27 AshTestBase::SetUp(); 28 RunAllPendingInMessageLoop(); 29 } 30 31 void ExpectOpenScreensaver() { 32 internal::ScreensaverView* screensaver = 33 internal::ScreensaverView::GetInstance(); 34 EXPECT_TRUE(screensaver != NULL); 35 if (!screensaver) return; 36 37 EXPECT_TRUE(screensaver->screensaver_webview_ != NULL); 38 if (!screensaver->screensaver_webview_) return; 39 40 EXPECT_TRUE(screensaver->screensaver_webview_->web_contents() != NULL); 41 if (!screensaver->screensaver_webview_->web_contents()) return; 42 43 EXPECT_EQ(screensaver->screensaver_webview_->web_contents()->GetURL(), 44 url_); 45 } 46 47 void ExpectClosedScreensaver() { 48 EXPECT_TRUE(internal::ScreensaverView::GetInstance() == NULL); 49 } 50 51 protected: 52 GURL url_; 53 54 private: 55 scoped_ptr<AshTestViewsDelegate> views_delegate_; 56 scoped_ptr<views::WebViewTestHelper> webview_test_helper_; 57 58 DISALLOW_COPY_AND_ASSIGN(ScreensaverViewTest); 59}; 60 61TEST_F(ScreensaverViewTest, ShowScreensaverAndClose) { 62 ash::ShowScreensaver(url_); 63 RunAllPendingInMessageLoop(); 64 ExpectOpenScreensaver(); 65 66 ash::CloseScreensaver(); 67 ExpectClosedScreensaver(); 68} 69 70TEST_F(ScreensaverViewTest, OutOfOrderMultipleShowAndClose) { 71 ash::CloseScreensaver(); 72 ExpectClosedScreensaver(); 73 74 ash::ShowScreensaver(url_); 75 ExpectOpenScreensaver(); 76 RunAllPendingInMessageLoop(); 77 ash::ShowScreensaver(url_); 78 ExpectOpenScreensaver(); 79 RunAllPendingInMessageLoop(); 80 81 ash::CloseScreensaver(); 82 ExpectClosedScreensaver(); 83 ash::CloseScreensaver(); 84 ExpectClosedScreensaver(); 85} 86 87} // namespace test 88} // namespace ash 89