Home | History | Annotate | Download | only in login
      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 
     20 namespace chromeos {
     21 
     22 namespace {
     23 
     24 const char kTestUser[] = "test-user (at) gmail.com";
     25 
     26 }  // anonymous namespace
     27 
     28 class 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 
     39 IN_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 
     47 IN_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