- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / ui / idle_logout_dialog_view_browsertest.cc
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 "chrome/browser/chromeos/ui/idle_logout_dialog_view.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/browser/chromeos/kiosk_mode/mock_kiosk_mode_settings.h"
9 #include "chrome/test/base/in_process_browser_test.h"
10 #include "chrome/test/base/ui_test_utils.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/views/widget/widget.h"
13
14 namespace chromeos {
15
16 class MockIdleLogoutSettingsProvider : public IdleLogoutSettingsProvider {
17 public:
18   explicit MockIdleLogoutSettingsProvider(KioskModeSettings* mock_settings)
19       : mock_settings_(mock_settings) {}
20
21   virtual base::TimeDelta GetCountdownUpdateInterval() OVERRIDE {
22     return base::TimeDelta::FromMilliseconds(0);
23   }
24
25   virtual KioskModeSettings* GetKioskModeSettings() OVERRIDE {
26     return mock_settings_;
27   }
28
29   virtual void LogoutCurrentUser(IdleLogoutDialogView* dialog) OVERRIDE {
30     dialog->GetWidget()->Close();
31   }
32
33 private:
34   KioskModeSettings* mock_settings_;
35
36   DISALLOW_COPY_AND_ASSIGN(MockIdleLogoutSettingsProvider);
37 };
38
39 class IdleLogoutDialogViewTest : public InProcessBrowserTest {
40  public:
41   IdleLogoutDialogViewTest() {}
42
43   virtual ~IdleLogoutDialogViewTest() {}
44
45   virtual void SetUpOnMainThread() OVERRIDE {
46     mock_settings_.reset(new MockKioskModeSettings());
47     mock_provider_.reset(
48         new MockIdleLogoutSettingsProvider(mock_settings_.get()));
49     IdleLogoutDialogView::set_settings_provider(mock_provider_.get());
50   }
51
52   void ExpectOpenDialog() {
53     IdleLogoutDialogView* dialog = IdleLogoutDialogView::current_instance();
54     ASSERT_TRUE(dialog != NULL);
55     EXPECT_TRUE(dialog->visible());
56   }
57
58   void ExpectClosedDialog() {
59     EXPECT_TRUE(IdleLogoutDialogView::current_instance() == NULL);
60   }
61
62  private:
63   scoped_ptr<MockIdleLogoutSettingsProvider> mock_provider_;
64   scoped_ptr<MockKioskModeSettings> mock_settings_;
65
66   DISALLOW_COPY_AND_ASSIGN(IdleLogoutDialogViewTest);
67 };
68
69 IN_PROC_BROWSER_TEST_F(IdleLogoutDialogViewTest, ShowDialogAndClose) {
70   IdleLogoutDialogView::ShowDialog();
71   EXPECT_NO_FATAL_FAILURE(ExpectOpenDialog());
72
73   IdleLogoutDialogView::CloseDialog();
74   ExpectClosedDialog();
75 }
76
77 IN_PROC_BROWSER_TEST_F(IdleLogoutDialogViewTest, ShowDialogAndCloseView) {
78   IdleLogoutDialogView::ShowDialog();
79   EXPECT_NO_FATAL_FAILURE(ExpectOpenDialog());
80
81   IdleLogoutDialogView::CloseDialog();
82   content::RunAllPendingInMessageLoop();
83   ExpectClosedDialog();
84 }
85
86 IN_PROC_BROWSER_TEST_F(IdleLogoutDialogViewTest, ShowDialogAndCloseViewClose) {
87   IdleLogoutDialogView::ShowDialog();
88   EXPECT_NO_FATAL_FAILURE(ExpectOpenDialog());
89
90   IdleLogoutDialogView::CloseDialog();
91   content::RunAllPendingInMessageLoop();
92   IdleLogoutDialogView::CloseDialog();
93
94   ExpectClosedDialog();
95 }
96
97 IN_PROC_BROWSER_TEST_F(IdleLogoutDialogViewTest,
98                        OutOfOrderMultipleShowDialogAndClose) {
99   IdleLogoutDialogView::CloseDialog();
100   ExpectClosedDialog();
101
102   IdleLogoutDialogView::ShowDialog();
103   EXPECT_NO_FATAL_FAILURE(ExpectOpenDialog());
104   IdleLogoutDialogView::ShowDialog();
105   EXPECT_NO_FATAL_FAILURE(ExpectOpenDialog());
106
107   IdleLogoutDialogView::CloseDialog();
108   ExpectClosedDialog();
109   IdleLogoutDialogView::CloseDialog();
110   ExpectClosedDialog();
111 }
112
113 IN_PROC_BROWSER_TEST_F(IdleLogoutDialogViewTest,
114                        ShowDialogAndFinishCountdown) {
115   IdleLogoutDialogView::ShowDialog();
116   EXPECT_NO_FATAL_FAILURE(ExpectOpenDialog());
117
118   content::RunAllPendingInMessageLoop();
119   ExpectClosedDialog();
120 }
121
122 }  // namespace chromeos