Upstream version 5.34.92.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / ash / session_state_delegate_chromeos_unittest.cc
1 // Copyright 2013 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/ash/session_state_delegate_chromeos.h"
6
7 #include <string>
8 #include <vector>
9
10 #include "chrome/browser/chromeos/login/fake_user_manager.h"
11 #include "chrome/test/base/testing_profile_manager.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14
15 class SessionStateDelegateChromeOSTest : public testing::Test {
16  protected:
17   SessionStateDelegateChromeOSTest() : user_manager_(NULL) {
18   }
19
20   virtual ~SessionStateDelegateChromeOSTest() {
21   }
22
23   virtual void SetUp() OVERRIDE {
24     // Initialize the UserManager singleton to a fresh FakeUserManager instance.
25     user_manager_ = new chromeos::FakeUserManager;
26     user_manager_enabler_.reset(
27         new chromeos::ScopedUserManagerEnabler(user_manager_));
28
29     // Create our SessionStateDelegate to experiment with.
30     session_state_delegate_.reset(new SessionStateDelegateChromeos());
31     testing::Test::SetUp();
32   }
33
34   virtual void TearDown() OVERRIDE {
35     testing::Test::TearDown();
36     session_state_delegate_.reset();
37     user_manager_enabler_.reset();
38     user_manager_ = NULL;
39   }
40
41   // Add and log in a user to the session.
42   void UserAddedToSession(std::string user) {
43     user_manager()->AddUser(user);
44     user_manager()->LoginUser(user);
45   }
46
47   // Get the active user.
48   const std::string& GetActiveUser() {
49     return chromeos::UserManager::Get()->GetActiveUser()->email();
50   }
51
52   chromeos::FakeUserManager* user_manager() { return user_manager_; }
53   SessionStateDelegateChromeos* session_state_delegate() {
54     return session_state_delegate_.get();
55   }
56
57  private:
58   scoped_ptr<chromeos::ScopedUserManagerEnabler> user_manager_enabler_;
59   scoped_ptr<SessionStateDelegateChromeos> session_state_delegate_;
60
61   // Not owned.
62   chromeos::FakeUserManager* user_manager_;
63
64   DISALLOW_COPY_AND_ASSIGN(SessionStateDelegateChromeOSTest);
65 };
66
67 // Make sure that cycling one user does not cause any harm.
68 TEST_F(SessionStateDelegateChromeOSTest, CyclingOneUser) {
69   UserAddedToSession("firstuser@test.com");
70
71   EXPECT_EQ("firstuser@test.com", GetActiveUser());
72   session_state_delegate()->CycleActiveUser(
73       ash::SessionStateDelegate::CYCLE_TO_NEXT_USER);
74   EXPECT_EQ("firstuser@test.com", GetActiveUser());
75   session_state_delegate()->CycleActiveUser(
76       ash::SessionStateDelegate::CYCLE_TO_PREVIOUS_USER);
77   EXPECT_EQ("firstuser@test.com", GetActiveUser());
78 }
79
80 // Cycle three users forwards and backwards to see that it works.
81 TEST_F(SessionStateDelegateChromeOSTest, CyclingThreeUsers) {
82   UserAddedToSession("firstuser@test.com");
83   UserAddedToSession("seconduser@test.com");
84   UserAddedToSession("thirduser@test.com");
85   const ash::SessionStateDelegate::CycleUser forward =
86       ash::SessionStateDelegate::CYCLE_TO_NEXT_USER;
87
88   // Cycle forward.
89   EXPECT_EQ("firstuser@test.com", GetActiveUser());
90   session_state_delegate()->CycleActiveUser(forward);
91   EXPECT_EQ("seconduser@test.com", GetActiveUser());
92   session_state_delegate()->CycleActiveUser(forward);
93   EXPECT_EQ("thirduser@test.com", GetActiveUser());
94   session_state_delegate()->CycleActiveUser(forward);
95   EXPECT_EQ("firstuser@test.com", GetActiveUser());
96
97   // Cycle backwards.
98   const ash::SessionStateDelegate::CycleUser backward =
99       ash::SessionStateDelegate::CYCLE_TO_PREVIOUS_USER;
100   session_state_delegate()->CycleActiveUser(backward);
101   EXPECT_EQ("thirduser@test.com", GetActiveUser());
102   session_state_delegate()->CycleActiveUser(backward);
103   EXPECT_EQ("seconduser@test.com", GetActiveUser());
104   session_state_delegate()->CycleActiveUser(backward);
105   EXPECT_EQ("firstuser@test.com", GetActiveUser());
106 }