summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/external_extension_uitest.cc
diff options
context:
space:
mode:
authorlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-21 00:38:18 +0000
committerlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-21 00:38:18 +0000
commitd223979d4ccce849a7ffeb0dc93baf60d3b00019 (patch)
tree299dc94743a79cdec1774f85515b01a78a69e137 /chrome/renderer/external_extension_uitest.cc
parentc01d8ee2c30bee1e5dbfae5162893ed6f3a656a4 (diff)
downloadchromium_src-d223979d4ccce849a7ffeb0dc93baf60d3b00019.zip
chromium_src-d223979d4ccce849a7ffeb0dc93baf60d3b00019.tar.gz
chromium_src-d223979d4ccce849a7ffeb0dc93baf60d3b00019.tar.bz2
Speed up the test for IsSearchProviderInstalled by making it run multiple test pages in parallel.
BUG=38475 TEST=This is the test. Review URL: http://codereview.chromium.org/3159030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56948 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/external_extension_uitest.cc')
-rw-r--r--chrome/renderer/external_extension_uitest.cc116
1 files changed, 94 insertions, 22 deletions
diff --git a/chrome/renderer/external_extension_uitest.cc b/chrome/renderer/external_extension_uitest.cc
index 00784a8..bb6b778 100644
--- a/chrome/renderer/external_extension_uitest.cc
+++ b/chrome/renderer/external_extension_uitest.cc
@@ -4,22 +4,31 @@
#include "chrome/app/chrome_dll_resource.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/url_constants.h"
#include "chrome/test/automation/tab_proxy.h"
#include "chrome/test/ui/ui_layout_test.h"
#include "chrome/test/ui_test_utils.h"
#include "net/base/escape.h"
#include "net/test/test_server.h"
+struct IsSearchProviderTestData;
+
class SearchProviderTest : public UITest {
protected:
SearchProviderTest();
- void TestIsSearchProviderInstalledForHost(
- TabProxy* tab,
+ IsSearchProviderTestData StartIsSearchProviderInstalledTest(
+ BrowserProxy* browser_proxy,
const char* host,
const char* expected_result);
+ void FinishIsSearchProviderInstalledTest(
+ const IsSearchProviderTestData& data);
+
net::TestServer test_server_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SearchProviderTest);
};
SearchProviderTest::SearchProviderTest()
@@ -33,49 +42,112 @@ SearchProviderTest::SearchProviderTest()
launch_arguments_.AppendSwitchASCII(switches::kHostRules, host_rule);
}
-void SearchProviderTest::TestIsSearchProviderInstalledForHost(
- TabProxy* tab,
+struct IsSearchProviderTestData {
+ IsSearchProviderTestData() {
+ }
+
+ IsSearchProviderTestData(TabProxy* t,
+ std::string h,
+ GURL url)
+ : tab(t),
+ host(h),
+ test_url(url) {
+ }
+
+ scoped_refptr<TabProxy> tab;
+ std::string host;
+ GURL test_url;
+};
+
+IsSearchProviderTestData SearchProviderTest::StartIsSearchProviderInstalledTest(
+ BrowserProxy* browser_proxy,
const char* host,
const char* expected_result) {
+ // Set-up a new tab for the navigation.
+ int num_tabs = 0;
+ if (!browser_proxy->GetTabCount(&num_tabs)) {
+ ADD_FAILURE() << "BrowserProxy::GetTabCount failed.";
+ return IsSearchProviderTestData();
+ }
+
+ GURL blank(chrome::kAboutBlankURL);
+ if (!browser_proxy->AppendTab(blank)) {
+ ADD_FAILURE() << "BrowserProxy::AppendTab failed.";
+ return IsSearchProviderTestData();
+ }
+
+ scoped_refptr<TabProxy> tab(browser_proxy->GetTab(num_tabs));
+ if (!tab.get()) {
+ ADD_FAILURE() << "BrowserProxy::GetTab for the new tab failed.";
+ return IsSearchProviderTestData();
+ }
+
+ // Go to the test page.
GURL local_url =
test_server_.GetURL("files/is_search_provider_installed.html");
GURL test_url(std::string("http://") + host + local_url.path() +
"#" + expected_result);
- EXPECT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(test_url));
- std::string cookie_name = std::string(host) + "testResult";
+ EXPECT_TRUE(tab->NavigateToURLAsync(test_url));
+
+ // Bundle up information needed to verify the result.
+ return IsSearchProviderTestData(tab, host, test_url);
+}
+
+void SearchProviderTest::FinishIsSearchProviderInstalledTest(
+ const IsSearchProviderTestData& data) {
+ ASSERT_TRUE(data.tab.get());
+
+ std::string cookie_name = data.host + "testResult";
std::string escaped_value =
- WaitUntilCookieNonEmpty(tab, test_url,
+ WaitUntilCookieNonEmpty(data.tab, data.test_url,
cookie_name.c_str(), action_max_timeout_ms());
// Unescapes and normalizes the actual result.
- std::string value = UnescapeURLComponent(escaped_value,
+ std::string value = UnescapeURLComponent(
+ escaped_value,
UnescapeRule::NORMAL | UnescapeRule::SPACES |
- UnescapeRule::URL_SPECIAL_CHARS | UnescapeRule::CONTROL_CHARS);
+ UnescapeRule::URL_SPECIAL_CHARS | UnescapeRule::CONTROL_CHARS);
value += "\n";
ReplaceSubstringsAfterOffset(&value, 0, "\r", "");
EXPECT_STREQ("1\n", value.c_str());
}
-// Verify the default search provider, other installed search provider, and
-// one not installed as well.
TEST_F(SearchProviderTest, DISABLED_TestIsSearchProviderInstalled) {
ASSERT_TRUE(test_server_.Start());
- scoped_refptr<TabProxy> tab(GetActiveTab());
- ASSERT_TRUE(tab.get());
- TestIsSearchProviderInstalledForHost(tab, "www.google.com", "2");
- TestIsSearchProviderInstalledForHost(tab, "www.bing.com", "1");
- TestIsSearchProviderInstalledForHost(tab, "localhost", "0");
+ // Use the default search provider, other installed search provider, and
+ // one not installed as well. (Note that yahoo isn't tested because the
+ // its host name varies a lot for different locales unlike Google and Bing,
+ // which would make the test fail depending on the machine's locale.)
+ const char* test_hosts[] = { "www.google.com",
+ "www.bing.com",
+ "localhost" };
+ const char* expected_results[] = { "2",
+ "1",
+ "0" };
+ COMPILE_ASSERT(arraysize(test_hosts) == arraysize(expected_results),
+ there_should_be_a_result_for_each_host);
+ IsSearchProviderTestData test_data[2 * arraysize(test_hosts)];
- // Verify that there are no search providers reported in incognito mode.
+ // Start results for the normal mode.
scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
ASSERT_TRUE(browser.get());
+ for (size_t i = 0; i < arraysize(test_hosts); ++i) {
+ test_data[i] = StartIsSearchProviderInstalledTest(
+ browser, test_hosts[i], expected_results[i]);
+ }
+
+ // Start tests for incognito mode (and verify the result is 0).
ASSERT_TRUE(browser->RunCommand(IDC_NEW_INCOGNITO_WINDOW));
scoped_refptr<BrowserProxy> incognito(automation()->GetBrowserWindow(1));
ASSERT_TRUE(incognito.get());
- scoped_refptr<TabProxy> incognito_tab(incognito->GetTab(0));
- ASSERT_TRUE(incognito_tab.get());
- TestIsSearchProviderInstalledForHost(incognito_tab, "www.google.com", "0");
- TestIsSearchProviderInstalledForHost(incognito_tab, "www.bing.com", "0");
- TestIsSearchProviderInstalledForHost(incognito_tab, "localhost", "0");
+ for (size_t i = 0; i < arraysize(test_hosts); ++i) {
+ test_data[i + arraysize(test_hosts)] = StartIsSearchProviderInstalledTest(
+ incognito, test_hosts[i], "0");
+ }
+
+ // Do the verification.
+ for (size_t i = 0; i < arraysize(test_hosts); ++i) {
+ FinishIsSearchProviderInstalledTest(test_data[i]);
+ }
}