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.
5 #include "chrome/browser/ui/webui/signin/login_ui_service.h"
7 #include "base/compiler_specific.h"
8 #include "base/logging.h"
9 #include "testing/gtest/include/gtest/gtest.h"
11 class TestLoginUI
: public LoginUIService::LoginUI
{
14 ~TestLoginUI() override
{}
15 void FocusUI() override
{}
16 void CloseUI() override
{}
19 DISALLOW_COPY_AND_ASSIGN(TestLoginUI
);
22 class TestObserver
: public LoginUIService::Observer
{
24 TestObserver() : ui_shown_count_(0),
28 int ui_shown_count() const { return ui_shown_count_
; }
29 int ui_closed_count() const { return ui_closed_count_
; }
32 void OnLoginUIShown(LoginUIService::LoginUI
* ui
) override
{
36 void OnLoginUIClosed(LoginUIService::LoginUI
* ui
) override
{
43 DISALLOW_COPY_AND_ASSIGN(TestObserver
);
46 class LoginUIServiceTest
: public testing::Test
{
48 LoginUIServiceTest() : service_(NULL
) { }
49 ~LoginUIServiceTest() override
{}
52 LoginUIService service_
;
53 TestObserver observer_
;
55 DISALLOW_COPY_AND_ASSIGN(LoginUIServiceTest
);
58 // Test that the observer is called back when login UI is shown
60 TEST_F(LoginUIServiceTest
, LoginUIServiceObserver
) {
61 service_
.AddObserver(&observer_
);
62 EXPECT_EQ(NULL
, service_
.current_login_ui());
64 service_
.SetLoginUI(&ui
);
65 EXPECT_EQ(1, observer_
.ui_shown_count());
67 // If a different UI is closed than the one that was shown, no
68 // notification should be fired.
70 service_
.LoginUIClosed(&other_ui
);
71 EXPECT_EQ(1, observer_
.ui_shown_count());
73 // If the right UI is closed, notification should be fired.
74 service_
.LoginUIClosed(&ui
);
75 EXPECT_EQ(1, observer_
.ui_closed_count());
76 service_
.RemoveObserver(&observer_
);