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