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#include "base/command_line.h" 5#include "chrome/browser/profiles/profile_manager.h" 6#include "chrome/browser/ui/browser.h" 7#include "chrome/browser/ui/tabs/tab_strip_model.h" 8#include "chrome/common/chrome_switches.h" 9#include "chrome/common/url_constants.h" 10#include "chrome/test/base/in_process_browser_test.h" 11#include "chrome/test/base/testing_browser_process.h" 12#include "chrome/test/base/ui_test_utils.h" 13#include "content/public/browser/web_contents.h" 14#include "content/public/test/browser_test_utils.h" 15#include "grit/generated_resources.h" 16#include "ui/base/l10n/l10n_util.h" 17 18namespace { 19const GURL& url = GURL(chrome::kChromeUIUserManagerURL); 20} // namespace 21 22class UserManagerUIBrowserTest : public InProcessBrowserTest, 23 public testing::WithParamInterface<bool> { 24 public: 25 UserManagerUIBrowserTest() {} 26 27 protected: 28 virtual void SetUp() OVERRIDE { 29 InProcessBrowserTest::SetUp(); 30 DCHECK(CommandLine::ForCurrentProcess()->HasSwitch( 31 switches::kNewProfileManagement)); 32 } 33 34 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 35 command_line->AppendSwitch(switches::kNewProfileManagement); 36 } 37}; 38 39IN_PROC_BROWSER_TEST_F(UserManagerUIBrowserTest, PageLoads) { 40 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), url, 1); 41 content::WebContents* web_contents = 42 browser()->tab_strip_model()->GetActiveWebContents(); 43 44 base::string16 title = web_contents->GetTitle(); 45 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_USER_MANAGER_SCREEN_TITLE), title); 46 47 // If the page has loaded correctly, then there should be an account picker. 48 int num_account_pickers = -1; 49 ASSERT_TRUE(content::ExecuteScriptAndExtractInt( 50 web_contents, 51 "domAutomationController.send(" 52 "document.getElementsByClassName('account-picker').length)", 53 &num_account_pickers)); 54 EXPECT_EQ(1, num_account_pickers); 55 56 int num_pods = -1; 57 ASSERT_TRUE(content::ExecuteScriptAndExtractInt( 58 web_contents, 59 "domAutomationController.send(" 60 "parseInt(document.getElementById('pod-row').getAttribute('ncolumns')))", 61 &num_pods)); 62 63 // There should be one user pod for each profile. 64 ProfileManager* profile_manager = g_browser_process->profile_manager(); 65 EXPECT_EQ(num_pods, static_cast<int>(profile_manager->GetNumberOfProfiles())); 66} 67