172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/command_line.h" 63345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/string16.h" 772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/test/test_timeouts.h" 83345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/utf_string_conversions.h" 9513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "chrome/app/chrome_command_ids.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/chrome_switches.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/url_constants.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/automation/browser_proxy.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/automation/tab_proxy.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/automation/window_proxy.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/ui/ui_test.h" 163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "grit/chromium_strings.h" 173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "grit/generated_resources.h" 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h" 193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass OptionsUITest : public UITest { 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OptionsUITest() { 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dom_automation_enabled_ = true; 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void AssertIsOptionsPage(TabProxy* tab) { 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::wstring title; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(tab->GetTabTitle(&title)); 313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick string16 expected_title = l10n_util::GetStringUTF16(IDS_SETTINGS_TITLE); 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // The only guarantee we can make about the title of a settings tab is that 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // it should contain IDS_SETTINGS_TITLE somewhere. 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(WideToUTF16Hack(title).find(expected_title) == string16::npos); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Flaky: http://crbug.com/77375 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(OptionsUITest, FLAKY_LoadOptionsByURL) { 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser.get()); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> tab = browser->GetActiveTab(); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(tab.get()); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Go to the options tab via URL. 473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NavigateToURL(GURL(chrome::kChromeUISettingsURL)); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AssertIsOptionsPage(tab); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Flaky, and takes very long to fail. http://crbug.com/64619. 5272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(OptionsUITest, DISABLED_CommandOpensOptionsTab) { 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser.get()); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int tab_count = -1; 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->GetTabCount(&tab_count)); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1, tab_count); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Bring up the options tab via command. 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->RunCommand(IDC_OPTIONS)); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->GetTabCount(&tab_count)); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(2, tab_count); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> tab = browser->GetActiveTab(); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(tab.get()); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AssertIsOptionsPage(tab); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Flaky, and takes very long to fail. http://crbug.com/48521 7172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(OptionsUITest, DISABLED_CommandAgainGoesBackToOptionsTab) { 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser.get()); 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int tab_count = -1; 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->GetTabCount(&tab_count)); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1, tab_count); 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Bring up the options tab via command. 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->RunCommand(IDC_OPTIONS)); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->GetTabCount(&tab_count)); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(2, tab_count); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> tab = browser->GetActiveTab(); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(tab.get()); 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AssertIsOptionsPage(tab); 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Switch to first tab and run command again. 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->ActivateTab(0)); 9072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(browser->WaitForTabToBecomeActive( 9172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 0, TestTimeouts::action_max_timeout_ms())); 923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(browser->RunCommand(IDC_OPTIONS)); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Ensure the options ui tab is active. 9572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(browser->WaitForTabToBecomeActive( 9672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1, TestTimeouts::action_max_timeout_ms())); 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->GetTabCount(&tab_count)); 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(2, tab_count); 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 10172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Flaky, and takes very long to fail. http://crbug.com/48521 10272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(OptionsUITest, DISABLED_TwoCommandsOneTab) { 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser.get()); 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int tab_count = -1; 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->GetTabCount(&tab_count)); 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1, tab_count); 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->RunCommand(IDC_OPTIONS)); 1113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(browser->RunCommand(IDC_OPTIONS)); 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(browser->GetTabCount(&tab_count)); 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(2, tab_count); 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 117