user_manager_ui_browsertest.cc revision 3551c9c881056c480085172ff9840cab31610854
13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file.
43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/command_line.h"
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h"
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h"
83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/common/chrome_switches.h"
93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/common/url_constants.h"
103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h"
113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/test/base/testing_browser_process.h"
123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h"
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/browser/web_contents.h"
143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/test/browser_test_utils.h"
153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "grit/generated_resources.h"
163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace {
193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)const GURL& url = GURL(chrome::kChromeUIUserManagerURL);
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}  // namespace
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class UserManagerUIBrowserTest : public InProcessBrowserTest,
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                 public testing::WithParamInterface<bool> {
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public:
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  UserManagerUIBrowserTest() {}
263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) protected:
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)   virtual void SetUp() OVERRIDE {
293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    InProcessBrowserTest::SetUp();
303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    DCHECK(CommandLine::ForCurrentProcess()->HasSwitch(
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)        switches::kNewProfileManagement));
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  }
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    command_line->AppendSwitch(switches::kNewProfileManagement);
363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  }
373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)};
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(UserManagerUIBrowserTest, PageLoads) {
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), url, 1);
413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content::WebContents* web_contents =
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      browser()->tab_strip_model()->GetActiveWebContents();
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  string16 title = web_contents->GetTitle();
453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_USER_MANAGER_SCREEN_TITLE), title);
463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // If the page has loaded correctly, then there should be an account picker.
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  int num_account_pickers = -1;
493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      web_contents,
513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      "domAutomationController.send("
523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      "document.getElementsByClassName('account-picker').length)",
533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      &num_account_pickers));
543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  EXPECT_EQ(1, num_account_pickers);
553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  int num_pods = -1;
573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      web_contents,
593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      "domAutomationController.send("
603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      "parseInt(document.getElementById('pod-row').getAttribute('ncolumns')))",
613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      &num_pods));
623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // There should be one user pod for each profile.
643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ProfileManager* profile_manager = g_browser_process->profile_manager();
653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  EXPECT_EQ(num_pods, static_cast<int>(profile_manager->GetNumberOfProfiles()));
663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}
67