Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / signin / login_ui_service_unittest.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/ui/webui/signin/login_ui_service.h"
6
7 #include "base/compiler_specific.h"
8 #include "base/logging.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 class TestLoginUI : public LoginUIService::LoginUI {
12  public:
13   TestLoginUI() { }
14   ~TestLoginUI() override {}
15   void FocusUI() override {}
16   void CloseUI() override {}
17
18  private:
19   DISALLOW_COPY_AND_ASSIGN(TestLoginUI);
20 };
21
22 class TestObserver : public LoginUIService::Observer {
23  public:
24   TestObserver() : ui_shown_count_(0),
25                    ui_closed_count_(0) {
26   }
27
28   int ui_shown_count() const { return ui_shown_count_; }
29   int ui_closed_count() const { return ui_closed_count_; }
30
31  private:
32   void OnLoginUIShown(LoginUIService::LoginUI* ui) override {
33     ++ui_shown_count_;
34   }
35
36   void OnLoginUIClosed(LoginUIService::LoginUI* ui) override {
37     ++ui_closed_count_;
38   }
39
40   int ui_shown_count_;
41   int ui_closed_count_;
42
43   DISALLOW_COPY_AND_ASSIGN(TestObserver);
44 };
45
46 class LoginUIServiceTest : public testing::Test {
47  public:
48   LoginUIServiceTest() : service_(NULL) { }
49   ~LoginUIServiceTest() override {}
50
51  protected:
52   LoginUIService service_;
53   TestObserver observer_;
54
55   DISALLOW_COPY_AND_ASSIGN(LoginUIServiceTest);
56 };
57
58 // Test that the observer is called back when login UI is shown
59 // or closed.
60 TEST_F(LoginUIServiceTest, LoginUIServiceObserver) {
61   service_.AddObserver(&observer_);
62   EXPECT_EQ(NULL, service_.current_login_ui());
63   TestLoginUI ui;
64   service_.SetLoginUI(&ui);
65   EXPECT_EQ(1, observer_.ui_shown_count());
66
67   // If a different UI is closed than the one that was shown, no
68   // notification should be fired.
69   TestLoginUI other_ui;
70   service_.LoginUIClosed(&other_ui);
71   EXPECT_EQ(1, observer_.ui_shown_count());
72
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_);
77 }