translate_browsertest.cc revision 0529e5d033099cbfc42635f6f6183833b09dff6e
1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/command_line.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/files/file_path.h" 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_util.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/infobars/infobar_service.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/translate/translate_infobar_delegate.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/translate/translate_service.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/browser.h" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/test/base/test_switches.h" 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "components/infobars/core/infobar.h" 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "components/translate/core/browser/translate_manager.h" 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/translate/core/browser/translate_script.h" 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/translate/core/common/translate_switches.h" 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/notification_service.h" 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/test/browser_test_utils.h" 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/http/http_status_code.h" 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "net/test/embedded_test_server/embedded_test_server.h" 26b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "net/test/spawned_test_server/spawned_test_server.h" 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/url_request/test_url_fetcher_factory.h" 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/url_request/url_fetcher_delegate.h" 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const base::FilePath::CharType kTranslateRoot[] = 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FILE_PATH_LITERAL("chrome/test/data/translate"); 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst char kNonSecurePrefix[] = "/translate/"; 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kSecurePrefix[] = "files/"; 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kFrenchTestPath[] = "fr_test.html"; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kRefreshMetaTagTestPath[] = "refresh_meta_tag.html"; 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kRefreshMetaTagCaseInsensitiveTestPath[] = 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "refresh_meta_tag_casei.html"; 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kRefreshMetaTagAtOnloadTestPath[] = 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "refresh_meta_tag_at_onload.html"; 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kUpdateLocationTestPath[] = "update_location.html"; 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kUpdateLocationAtOnloadTestPath[] = "update_location_at_onload.html"; 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kMainScriptPath[] = "pseudo_main.js"; 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kElementMainScriptPath[] = "pseudo_element_main.js"; 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; // namespace 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class TranslateBrowserTest : public InProcessBrowserTest { 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TranslateBrowserTest() 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : https_server_(net::SpawnedTestServer::TYPE_HTTPS, 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SSLOptions(SSLOptions::CERT_OK), 543240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch base::FilePath(kTranslateRoot)), 553240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch infobar_service_(NULL) {} 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void SetUpOnMainThread() OVERRIDE { 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TranslateService::SetUseInfobar(true); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 613240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(https_server_.Start()); 633240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Setup alternate security origin for testing in order to allow XHR against 643240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // local test server. Note that this flag shows a confirm infobar in tests. 653240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch GURL base_url = GetSecureURL(""); 664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) command_line->AppendSwitchASCII( 674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) translate::switches::kTranslateSecurityOrigin, 684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base_url.GetOrigin().spec()); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL GetNonSecureURL(const std::string& path) const { 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string prefix(kNonSecurePrefix); 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return embedded_test_server()->GetURL(prefix + path); 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL GetSecureURL(const std::string& path) const { 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string prefix(kSecurePrefix); 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return https_server_.GetURL(prefix + path); 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 823240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch TranslateInfoBarDelegate* GetExistingTranslateInfoBarDelegate() { 833240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch if (!infobar_service_) { 843240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch content::WebContents* web_contents = 853240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 863240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch if (web_contents) 873240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch infobar_service_ = InfoBarService::FromWebContents(web_contents); 883240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch } 893240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch if (!infobar_service_) { 90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ADD_FAILURE() << "infobar service is not available"; 913240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch return NULL; 923240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch } 933240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 943240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch TranslateInfoBarDelegate* delegate = NULL; 95a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch for (size_t i = 0; i < infobar_service_->infobar_count(); ++i) { 963240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if the shown infobar is a confirm infobar coming from the 973240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // |kTranslateSecurityOrigin| flag specified in SetUpCommandLine(). 983240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // This infobar appears in all tests of TranslateBrowserTest and can be 993240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // ignored here. 100a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch if (infobar_service_->infobar_at(i)->delegate()-> 101a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch AsConfirmInfoBarDelegate()) { 1023240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch continue; 103a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 1043240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 105a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch TranslateInfoBarDelegate* translate = 106a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch infobar_service_->infobar_at(i)->delegate()-> 107a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch AsTranslateInfoBarDelegate(); 1083240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch if (translate) { 1093240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(delegate) << "multiple infobars are shown unexpectedly"; 1103240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch delegate = translate; 1113240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch continue; 1123240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch } 1133240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 1143240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Other infobar should not be shown. 1153240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_TRUE(delegate); 1163240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch } 1173240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch return delegate; 1183240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch } 1193240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::SpawnedTestServer https_server_; 1223240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch InfoBarService* infobar_service_; 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) typedef net::SpawnedTestServer::SSLOptions SSLOptions; 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TranslateBrowserTest); 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1293240926e260ce088908e02ac07a6cf7b0c0cbf44Ben MurdochIN_PROC_BROWSER_TEST_F(TranslateBrowserTest, TranslateInIsolatedWorld) { 130558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 131558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 132a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 133558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 134558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 135558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1363240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch net::TestURLFetcherFactory factory; 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1393240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 1403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch TranslateInfoBarDelegate* translate = GetExistingTranslateInfoBarDelegate(); 1413240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup infobar observer. 144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::WindowedNotificationObserver infobar( 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED, 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::NotificationService::AllSources()); 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup page title observer. 1493240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch content::WebContents* web_contents = 1503240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 1513240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ASSERT_TRUE(web_contents); 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::TitleWatcher watcher(web_contents, base::ASCIIToUTF16("PASS")); 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) watcher.AlsoWaitForTitle(base::ASCIIToUTF16("FAIL")); 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Visit non-secure page which is going to be translated. 15690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ui_test_utils::NavigateToURL(browser(), GetNonSecureURL(kFrenchTestPath)); 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Wait for Chrome Translate infobar. 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) infobar.Wait(); 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Perform Chrome Translate. 1623240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch translate = GetExistingTranslateInfoBarDelegate(); 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(translate); 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) translate->Translate(); 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Hook URLFetcher for element.js. 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL script1_url = GetSecureURL(kMainScriptPath); 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL script2_url = GetSecureURL(kElementMainScriptPath); 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string element_js = "main_script_url = '" + script1_url.spec() + "';\n"; 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) element_js += "element_main_script_url = '" + script2_url.spec() + "';\n"; 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) element_js += 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "google = { 'translate' : { 'TranslateService' : function() { return {\n" 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " isAvailable: function() {\n" 1743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) " cr.googleTranslate.onLoadJavascript(main_script_url);\n" 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " return true;\n" 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " },\n" 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " translatePage: function(sl, tl, cb) {\n" 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " cb(1, true);\n" 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " }\n" 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "} } } };\n" 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "cr.googleTranslate.onTranslateElementLoad();\n"; 182a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) net::TestURLFetcher* fetcher = 183a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) factory.GetFetcherByID(TranslateScript::kFetcherId); 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(fetcher); 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::URLRequestStatus status; 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) status.set_status(net::URLRequestStatus::SUCCESS); 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->set_status(status); 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->set_url(fetcher->GetOriginalURL()); 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->set_response_code(net::HTTP_OK); 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->SetResponseString(element_js); 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->delegate()->OnURLFetchComplete(fetcher); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Wait for the page title is changed after the test finished. 194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16 result = watcher.WaitAndGetTitle(); 195a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("PASS", base::UTF16ToASCII(result)); 19690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 19790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 19890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, IgnoreRefreshMetaTag) { 199558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 200558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 201a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 202558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 203558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 204558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 205eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 20690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2073240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 2083240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch TranslateInfoBarDelegate* translate = GetExistingTranslateInfoBarDelegate(); 2093240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 2103240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 2113240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Setup page title observer. 21290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::WebContents* web_contents = 21390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 21490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(web_contents); 2155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::TitleWatcher watcher(web_contents, base::ASCIIToUTF16("PASS")); 2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) watcher.AlsoWaitForTitle(base::ASCIIToUTF16("FAIL")); 21790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 21890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Visit a test page. 21990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ui_test_utils::NavigateToURL( 22090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser(), 22190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GetNonSecureURL(kRefreshMetaTagTestPath)); 22290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 22390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Wait for the page title is changed after the test finished. 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16 result = watcher.WaitAndGetTitle(); 225a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("PASS", base::UTF16ToASCII(result)); 22690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2273240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 2283240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch translate = GetExistingTranslateInfoBarDelegate(); 2293240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 23090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 23190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 23290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, 23390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IgnoreRefreshMetaTagInCaseInsensitive) { 234558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 235558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 236a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 237558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 238558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 239558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 240eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 24190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2423240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 2433240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch TranslateInfoBarDelegate* translate = GetExistingTranslateInfoBarDelegate(); 2443240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 2453240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 2463240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Setup page title observer. 24790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::WebContents* web_contents = 24890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 24990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(web_contents); 2505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::TitleWatcher watcher(web_contents, base::ASCIIToUTF16("PASS")); 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) watcher.AlsoWaitForTitle(base::ASCIIToUTF16("FAIL")); 25290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 25390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Visit a test page. 25490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ui_test_utils::NavigateToURL( 25590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser(), 25690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GetNonSecureURL(kRefreshMetaTagCaseInsensitiveTestPath)); 25790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 25890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Wait for the page title is changed after the test finished. 259a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16 result = watcher.WaitAndGetTitle(); 260a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("PASS", base::UTF16ToASCII(result)); 26190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2623240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 2633240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch translate = GetExistingTranslateInfoBarDelegate(); 2643240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 26590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 26690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 26790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, IgnoreRefreshMetaTagAtOnload) { 268558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 269558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 270a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 271558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 272558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 273558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 274eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 27590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2763240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 2773240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch TranslateInfoBarDelegate* translate = GetExistingTranslateInfoBarDelegate(); 2783240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 2793240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 2803240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Setup page title observer. 28190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::WebContents* web_contents = 28290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 28390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(web_contents); 2845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::TitleWatcher watcher(web_contents, base::ASCIIToUTF16("PASS")); 2855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) watcher.AlsoWaitForTitle(base::ASCIIToUTF16("FAIL")); 28690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 28790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Visit a test page. 28890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ui_test_utils::NavigateToURL( 28990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser(), 29090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GetNonSecureURL(kRefreshMetaTagAtOnloadTestPath)); 29190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 29290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Wait for the page title is changed after the test finished. 293a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16 result = watcher.WaitAndGetTitle(); 294a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("PASS", base::UTF16ToASCII(result)); 29590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2963240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 2973240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch translate = GetExistingTranslateInfoBarDelegate(); 2983240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 29990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 30090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 30190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, UpdateLocation) { 302558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 303558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 304a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 305558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 306558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 307558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 308eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 30990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3103240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 3113240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch TranslateInfoBarDelegate* translate = GetExistingTranslateInfoBarDelegate(); 3123240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 3133240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 3143240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Setup page title observer. 31590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::WebContents* web_contents = 31690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 31790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(web_contents); 3185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::TitleWatcher watcher(web_contents, base::ASCIIToUTF16("PASS")); 3195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) watcher.AlsoWaitForTitle(base::ASCIIToUTF16("FAIL")); 32090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 32190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Visit a test page. 32290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ui_test_utils::NavigateToURL( 32390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser(), 32490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GetNonSecureURL(kUpdateLocationTestPath)); 32590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 32690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Wait for the page title is changed after the test finished. 327a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16 result = watcher.WaitAndGetTitle(); 328a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("PASS", base::UTF16ToASCII(result)); 32990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3303240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 3313240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch translate = GetExistingTranslateInfoBarDelegate(); 3323240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 33390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 33490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 33590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TranslateBrowserTest, UpdateLocationAtOnload) { 336558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 337558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 338a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 339558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 340558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 341558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 342eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 34390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3443240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 3453240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch TranslateInfoBarDelegate* translate = GetExistingTranslateInfoBarDelegate(); 3463240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 3473240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 3483240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Setup page title observer. 34990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::WebContents* web_contents = 35090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 35190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(web_contents); 3525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::TitleWatcher watcher(web_contents, base::ASCIIToUTF16("PASS")); 3535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) watcher.AlsoWaitForTitle(base::ASCIIToUTF16("FAIL")); 35490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 35590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Visit a test page. 35690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ui_test_utils::NavigateToURL( 35790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser(), 35890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GetNonSecureURL(kUpdateLocationAtOnloadTestPath)); 35990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 36090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Wait for the page title is changed after the test finished. 361a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16 result = watcher.WaitAndGetTitle(); 362a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ("PASS", base::UTF16ToASCII(result)); 36390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3643240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Check if there is no Translate infobar. 3653240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch translate = GetExistingTranslateInfoBarDelegate(); 3663240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch EXPECT_FALSE(translate); 367c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 368