• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "ash/session/session_state_delegate.h"
6 #include "ash/shell.h"
7 #include "chrome/browser/chromeos/login/login_manager_test.h"
8 #include "chrome/browser/chromeos/login/startup_utils.h"
9 #include "chrome/browser/profiles/profile_manager.h"
10 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/browser_finder.h"
12 #include "chrome/browser/ui/browser_window.h"
13 #include "chrome/browser/ui/view_ids.h"
14 #include "chrome/common/chrome_switches.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "ui/views/focus/focus_manager.h"
17 #include "ui/views/view.h"
18 
19 namespace chromeos {
20 
21 namespace {
22 
23 const char kTestUser[] = "test-user@gmail.com";
24 
25 }  // anonymous namespace
26 
27 class BrowserLoginTest : public chromeos::LoginManagerTest {
28  public:
BrowserLoginTest()29   BrowserLoginTest() : LoginManagerTest(true) {}
~BrowserLoginTest()30   virtual ~BrowserLoginTest() {}
31 
SetUpCommandLine(CommandLine * command_line)32   virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
33     LoginManagerTest::SetUpCommandLine(command_line);
34     command_line->AppendSwitch(::switches::kCreateBrowserOnStartupForTests);
35   }
36 };
37 
IN_PROC_BROWSER_TEST_F(BrowserLoginTest,PRE_BrowserActive)38 IN_PROC_BROWSER_TEST_F(BrowserLoginTest, PRE_BrowserActive) {
39   RegisterUser(kTestUser);
40   EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_PRIMARY,
41             ash::Shell::GetInstance()->session_state_delegate()->
42                 GetSessionState());
43   chromeos::StartupUtils::MarkOobeCompleted();
44 }
45 
IN_PROC_BROWSER_TEST_F(BrowserLoginTest,BrowserActive)46 IN_PROC_BROWSER_TEST_F(BrowserLoginTest, BrowserActive) {
47   EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_PRIMARY,
48             ash::Shell::GetInstance()->session_state_delegate()->
49                 GetSessionState());
50   LoginUser(kTestUser);
51   EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE,
52             ash::Shell::GetInstance()->session_state_delegate()->
53                 GetSessionState());
54 
55   Browser* browser = FindAnyBrowser(ProfileManager::GetActiveUserProfile(),
56                                     false,
57                                     chrome::HOST_DESKTOP_TYPE_ASH);
58   EXPECT_TRUE(browser != NULL);
59   EXPECT_TRUE(browser->window()->IsActive());
60 
61   views::FocusManager* focus_manager = browser->window()->
62       GetBrowserWindowTesting()->GetTabContentsContainerView()->
63           GetFocusManager();
64   EXPECT_TRUE(focus_manager != NULL);
65 
66   const views::View* focused_view = focus_manager->GetFocusedView();
67   EXPECT_TRUE(focused_view != NULL);
68   EXPECT_EQ(VIEW_ID_OMNIBOX, focused_view->id());
69 }
70 
71 }  // namespace chromeos
72