user_manager_ui_browsertest.cc revision 0529e5d033099cbfc42635f6f6183833b09dff6e
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)class UserManagerUIBrowserTest : public InProcessBrowserTest,
193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                 public testing::WithParamInterface<bool> {
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public:
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  UserManagerUIBrowserTest() {}
223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) protected:
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)   virtual void SetUp() OVERRIDE {
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    InProcessBrowserTest::SetUp();
263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    DCHECK(CommandLine::ForCurrentProcess()->HasSwitch(
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)        switches::kNewProfileManagement));
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  }
293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    command_line->AppendSwitch(switches::kNewProfileManagement);
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  }
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)};
343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(UserManagerUIBrowserTest, PageLoads) {
360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      browser(), GURL(chrome::kChromeUIUserManagerURL), 1);
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  content::WebContents* web_contents =
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      browser()->tab_strip_model()->GetActiveWebContents();
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 title = web_contents->GetTitle();
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_USER_MANAGER_SCREEN_TITLE), title);
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // If the page has loaded correctly, then there should be an account picker.
453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  int num_account_pickers = -1;
463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      web_contents,
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      "domAutomationController.send("
493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      "document.getElementsByClassName('account-picker').length)",
503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      &num_account_pickers));
513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  EXPECT_EQ(1, num_account_pickers);
523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  int num_pods = -1;
543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      web_contents,
563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      "domAutomationController.send("
573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      "parseInt(document.getElementById('pod-row').getAttribute('ncolumns')))",
583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      &num_pods));
593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // There should be one user pod for each profile.
613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ProfileManager* profile_manager = g_browser_process->profile_manager();
623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  EXPECT_EQ(num_pods, static_cast<int>(profile_manager->GetNumberOfProfiles()));
633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}
64