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) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <sstream> 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/command_line.h" 8a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "base/metrics/histogram_base.h" 9a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "base/metrics/histogram_samples.h" 10a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "base/metrics/statistics_recorder.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/prefs/pref_service.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/run_loop.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_util.h" 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h" 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/autocomplete/autocomplete_controller.h" 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/bookmarks/bookmark_model_factory.h" 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/extension_browsertest.h" 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/favicon/favicon_tab_helper.h" 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/history_db_task.h" 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/history_service.h" 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/history_service_factory.h" 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/top_sites.h" 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/search/instant_service.h" 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/search/instant_service_factory.h" 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/search/search.h" 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_factory.h" 33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/task_manager/task_manager.h" 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/task_manager/task_manager_browsertest_util.h" 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/themes/theme_service.h" 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/themes/theme_service_factory.h" 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/browser_list.h" 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/browser_tabstrip.h" 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/omnibox/omnibox_view.h" 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/search/instant_tab.h" 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/search/instant_test_utils.h" 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/search/search_tab_helper.h" 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/webui/theme_source.h" 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/common/chrome_switches.h" 46b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "chrome/common/instant_types.h" 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/common/pref_names.h" 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/common/url_constants.h" 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/interactive_test_utils.h" 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/browser/bookmark_utils.h" 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/test/bookmark_test_helpers.h" 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/google/core/browser/google_url_tracker.h" 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/history/core/browser/history_types.h" 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/history/core/common/thumbnail_score.h" 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/omnibox/autocomplete_match.h" 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/omnibox/autocomplete_provider.h" 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/omnibox/autocomplete_result.h" 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/omnibox/search_provider.h" 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url_service.h" 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "components/sessions/serialized_navigation_entry.h" 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/navigation_controller.h" 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/navigation_entry.h" 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/notification_service.h" 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/render_process_host.h" 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/render_view_host.h" 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/site_instance.h" 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/url_data_source.h" 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/web_contents.h" 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/common/bindings_policy.h" 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/test/browser_test_utils.h" 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/test/test_utils.h" 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "net/base/network_change_notifier.h" 750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "net/http/http_status_code.h" 76424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "net/url_request/test_url_fetcher_factory.h" 77424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "net/url_request/url_fetcher_impl.h" 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "net/url_request/url_request_status.h" 79868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h" 81868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::ASCIIToUTF16; 83868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)using testing::HasSubstr; 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Task used to make sure history has finished processing a request. Intended 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// for use with BlockUntilHistoryProcessesPendingRequests. 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class QuittingHistoryDBTask : public history::HistoryDBTask { 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) QuittingHistoryDBTask() {} 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool RunOnDBThread(history::HistoryBackend* backend, 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) history::HistoryDatabase* db) OVERRIDE { 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void DoneRunOnMainThread() OVERRIDE { 99b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->Quit(); 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~QuittingHistoryDBTask() {} 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(QuittingHistoryDBTask); 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass FakeNetworkChangeNotifier : public net::NetworkChangeNotifier { 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FakeNetworkChangeNotifier() : connection_type_(CONNECTION_NONE) {} 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ConnectionType GetCurrentConnectionType() const OVERRIDE { 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return connection_type_; 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetConnectionType(ConnectionType type) { 117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch connection_type_ = type; 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NotifyObserversOfNetworkChange(type); 119eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::RunLoop().RunUntilIdle(); 120eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~FakeNetworkChangeNotifier() {} 123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 124eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ConnectionType connection_type_; 126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(FakeNetworkChangeNotifier); 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class InstantExtendedTest : public InProcessBrowserTest, 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public InstantTestBase { 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InstantExtendedTest() 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : on_most_visited_change_calls_(0), 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) most_visited_items_count_(0), 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) first_most_visited_item_id_(0), 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) on_native_suggestions_calls_(0), 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) on_change_calls_(0), 139b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) submit_count_(0), 140868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) on_esc_key_press_event_calls_(0), 141868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) on_focus_changed_calls_(0), 142868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) is_focused_(false), 143868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) on_toggle_voice_search_calls_(0) { 144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 147f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::EnableQueryExtractionForTesting(); 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(https_test_server().Start()); 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL instant_url = https_test_server().GetURL( 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "files/instant_extended.html?strk=1&"); 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL ntp_url = https_test_server().GetURL( 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "files/instant_extended_ntp.html?strk=1&"); 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InstantTestBase::Init(instant_url, ntp_url, false); 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 156a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) int64 GetHistogramCount(const char* name) { 157a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) base::HistogramBase* histogram = 158a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) base::StatisticsRecorder::FindHistogram(name); 159a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) if (!histogram) { 160a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // If no histogram is found, it's possible that no values have been 161a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // recorded yet. Assume that the value is zero. 162a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return 0; 163a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 164a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return histogram->SnapshotSamples()->TotalCount(); 165a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 166a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool UpdateSearchState(content::WebContents* contents) WARN_UNUSED_RESULT { 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetIntFromJS(contents, "onMostVisitedChangedCalls", 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &on_most_visited_change_calls_) && 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "mostVisitedItemsCount", 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &most_visited_items_count_) && 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "firstMostVisitedItemId", 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &first_most_visited_item_id_) && 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "onNativeSuggestionsCalls", 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &on_native_suggestions_calls_) && 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "onChangeCalls", 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &on_change_calls_) && 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "submitCount", 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &submit_count_) && 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetStringFromJS(contents, "apiHandle.value", 181b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) &query_value_) && 182b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) GetIntFromJS(contents, "onEscKeyPressedCalls", 183868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &on_esc_key_press_event_calls_) && 184868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetIntFromJS(contents, "onFocusChangedCalls", 185868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &on_focus_changed_calls_) && 186868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetBoolFromJS(contents, "isFocused", 187868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &is_focused_) && 188868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetIntFromJS(contents, "onToggleVoiceSearchCalls", 189424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) &on_toggle_voice_search_calls_) && 190424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GetStringFromJS(contents, "prefetchQuery", &prefetch_query_value_); 191424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TemplateURL* GetDefaultSearchProviderTemplateURL() { 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TemplateURLService* template_url_service = 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TemplateURLServiceFactory::GetForProfile(browser()->profile()); 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (template_url_service) 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return template_url_service->GetDefaultSearchProvider(); 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return NULL; 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool AddSearchToHistory(base::string16 term, int visit_count) { 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(); 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!template_url) 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return false; 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) HistoryService* history = HistoryServiceFactory::GetForProfile( 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser()->profile(), Profile::EXPLICIT_ACCESS); 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL search(template_url->url_ref().ReplaceSearchTerms( 210f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) TemplateURLRef::SearchTermsArgs(term), 211f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) TemplateURLServiceFactory::GetForProfile( 212f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) browser()->profile())->search_terms_data())); 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) history->AddPageWithDetails( 214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) search, base::string16(), visit_count, visit_count, 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::Time::Now(), false, history::SOURCE_BROWSED); 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) history->SetKeywordSearchTermsForURL( 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) search, template_url->id(), term); 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void BlockUntilHistoryProcessesPendingRequests() { 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) HistoryService* history = HistoryServiceFactory::GetForProfile( 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser()->profile(), Profile::EXPLICIT_ACCESS); 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK(history); 225b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) DCHECK(base::MessageLoop::current()); 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::CancelableTaskTracker tracker; 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) history->ScheduleDBTask( 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<history::HistoryDBTask>( 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new QuittingHistoryDBTask()), 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &tracker); 232b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->Run(); 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int CountSearchProviderSuggestions() { 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return omnibox()->model()->autocomplete_controller()->search_provider()-> 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) matches().size(); 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int on_most_visited_change_calls_; 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int most_visited_items_count_; 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int first_most_visited_item_id_; 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int on_native_suggestions_calls_; 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int on_change_calls_; 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int submit_count_; 246b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int on_esc_key_press_event_calls_; 247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string query_value_; 248868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int on_focus_changed_calls_; 249868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool is_focused_; 250868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int on_toggle_voice_search_calls_; 251424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string prefetch_query_value_; 252424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}; 253424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 254424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class InstantExtendedPrefetchTest : public InstantExtendedTest { 255424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) public: 256424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) InstantExtendedPrefetchTest() 257424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : factory_(new net::URLFetcherImplFactory()), 258424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) fake_factory_(new net::FakeURLFetcherFactory(factory_.get())) { 259424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 260424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 261424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 262f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::EnableQueryExtractionForTesting(); 263424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(https_test_server().Start()); 264424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL instant_url = https_test_server().GetURL( 265424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "files/instant_extended.html?strk=1&"); 2665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL ntp_url = https_test_server().GetURL( 2675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "files/instant_extended_ntp.html?strk=1&"); 2685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InstantTestBase::Init(instant_url, ntp_url, true); 269424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 270424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 271a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 272a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) command_line->AppendSwitchASCII( 273a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) switches::kForceFieldTrials, 2745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "EmbeddedSearch/Group11 prefetch_results_srp:1/"); 275a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 276a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 277424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) net::FakeURLFetcherFactory* fake_factory() { return fake_factory_.get(); } 278424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 279424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) private: 280424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Used to instantiate FakeURLFetcherFactory. 281424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) scoped_ptr<net::URLFetcherImplFactory> factory_; 282424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 283424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Used to mock default search provider suggest response. 284424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) scoped_ptr<net::FakeURLFetcherFactory> fake_factory_; 285424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 286424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(InstantExtendedPrefetchTest); 287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 289eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass InstantExtendedNetworkTest : public InstantExtendedTest { 290eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 291eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUpOnMainThread() OVERRIDE { 292eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch disable_for_test_.reset(new net::NetworkChangeNotifier::DisableForTest); 293eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch fake_network_change_notifier_.reset(new FakeNetworkChangeNotifier); 294eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstantExtendedTest::SetUpOnMainThread(); 295eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 296eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 2975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void TearDownOnMainThread() OVERRIDE { 2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) InstantExtendedTest::TearDownOnMainThread(); 299eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch fake_network_change_notifier_.reset(); 300eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch disable_for_test_.reset(); 301eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 302eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 303eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetConnectionType(net::NetworkChangeNotifier::ConnectionType type) { 304eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch fake_network_change_notifier_->SetConnectionType(type); 305eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 306eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 307eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 308eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<net::NetworkChangeNotifier::DisableForTest> disable_for_test_; 309eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<FakeNetworkChangeNotifier> fake_network_change_notifier_; 310eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 311eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Test class used to verify chrome-search: scheme and access policy from the 313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Instant overlay. This is a subclass of |ExtensionBrowserTest| because it 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// loads a theme that provides a background image. 315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class InstantPolicyTest : public ExtensionBrowserTest, public InstantTestBase { 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InstantPolicyTest() {} 318c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(https_test_server().Start()); 322c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL instant_url = https_test_server().GetURL( 323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "files/instant_extended.html?strk=1&"); 3245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL ntp_url = https_test_server().GetURL( 3255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "files/instant_extended_ntp.html?strk=1&"); 3265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InstantTestBase::Init(instant_url, ntp_url, false); 327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void InstallThemeSource() { 330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ThemeSource* theme = new ThemeSource(profile()); 331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::URLDataSource::Add(profile(), theme); 332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void InstallThemeAndVerify(const std::string& theme_dir, 335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& theme_name) { 3363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const extensions::Extension* theme = 3373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ThemeServiceFactory::GetThemeForProfile( 3383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ExtensionBrowserTest::browser()->profile()); 3393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // If there is already a theme installed, the current theme should be 3403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // disabled and the new one installed + enabled. 3413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int expected_change = theme ? 0 : 1; 3423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 343c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::FilePath theme_path = test_data_dir_.AppendASCII(theme_dir); 344c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(InstallExtensionWithUIAutoConfirm( 3453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) theme_path, expected_change, ExtensionBrowserTest::browser())); 3463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const extensions::Extension* new_theme = 347c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ThemeServiceFactory::GetThemeForProfile( 348c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExtensionBrowserTest::browser()->profile()); 3493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ASSERT_NE(static_cast<extensions::Extension*>(NULL), new_theme); 3503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ASSERT_EQ(new_theme->name(), theme_name); 351c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 352c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 353c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 354c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(InstantPolicyTest); 355c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 357868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, SearchReusesInstantTab) { 358868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 3595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 360eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 361868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) content::WindowedNotificationObserver observer( 362868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 363868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) content::NotificationService::AllSources()); 364868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("flowers"); 36546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PressEnterAndWaitForFrameLoad(); 366868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) observer.Wait(); 367868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 368868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Just did a regular search. 369eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 370eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 371eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_THAT(active_tab->GetURL().spec(), HasSubstr("q=flowers")); 372eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(UpdateSearchState(active_tab)); 373868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(0, submit_count_); 374868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 375868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("puppies"); 376eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 377868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 378868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Should have reused the tab and sent an onsubmit message. 379eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 380eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_THAT(active_tab->GetURL().spec(), HasSubstr("q=puppies")); 381eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(UpdateSearchState(active_tab)); 382868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(1, submit_count_); 383868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 384868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 385868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, 386868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SearchDoesntReuseInstantTabWithoutSupport) { 387868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 3885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 389868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 390868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Don't wait for the navigation to complete. 391868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("flowers"); 392868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) browser()->window()->GetLocationBar()->AcceptInput(); 393868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 394868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("puppies"); 395868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) browser()->window()->GetLocationBar()->AcceptInput(); 396868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 397868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Should not have reused the tab. 398868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_THAT( 399868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents()->GetURL().spec(), 400868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) HasSubstr("q=puppies")); 401868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 402868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 403868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, 404868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TypedSearchURLDoesntReuseInstantTab) { 405868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 4065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 407eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 408868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Create an observer to wait for the instant tab to support Instant. 409eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer_1( 410868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 411868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) content::NotificationService::AllSources()); 412868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("flowers"); 41346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PressEnterAndWaitForFrameLoad(); 414eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer_1.Wait(); 415868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 416868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Just did a regular search. 417eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 418eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 419eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_THAT(active_tab->GetURL().spec(), HasSubstr("q=flowers")); 420eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(UpdateSearchState(active_tab)); 421868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(0, submit_count_); 422868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 423868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Typed in a search URL "by hand". 424eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer_2( 425eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 426eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 4274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SetOmniboxText(instant_url().Resolve("#q=puppies").spec()); 428eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 429eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer_2.Wait(); 430868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 431868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Should not have reused the tab. 432eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 433eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_THAT(active_tab->GetURL().spec(), HasSubstr("q=puppies")); 434868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 4355e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 4365e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, OmniboxMarginSetForSearchURLs) { 4375e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 4385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 439eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 4405e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) // Create an observer to wait for the instant tab to support Instant. 4415e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) content::WindowedNotificationObserver observer( 4425e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 4435e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) content::NotificationService::AllSources()); 4445e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 4455e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) SetOmniboxText("flowers"); 4465e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) browser()->window()->GetLocationBar()->AcceptInput(); 4475e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) observer.Wait(); 4485e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 4495e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) const std::string& url = 4505e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents()->GetURL().spec(); 4515e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) // Make sure we actually used search_url, not instant_url. 4525e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) ASSERT_THAT(url, HasSubstr("&is_search")); 4535e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) EXPECT_THAT(url, HasSubstr("&es_sm=")); 4545e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)} 4555e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 4567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Test to verify that switching tabs should not dispatch onmostvisitedchanged 4577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// events. 4587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, NoMostVisitedChangedOnTabSwitch) { 4597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Initialize Instant. 4607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 4617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Open new tab. 4637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ui_test_utils::NavigateToURLWithDisposition( 4647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser(), 4657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) GURL(chrome::kChromeUINewTabURL), 4667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) NEW_FOREGROUND_TAB, 4675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 4685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 4697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ(2, browser()->tab_strip_model()->count()); 4707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Make sure new tab received the onmostvisitedchanged event once. 4727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) content::WebContents* active_tab = 4737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 4747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_TRUE(UpdateSearchState(active_tab)); 475eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_most_visited_change_calls_); 4767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Activate the previous tab. 4787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(0, false); 4797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Switch back to new tab. 4817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(1, false); 4827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Confirm that new tab got no onmostvisitedchanged event. 4847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 4857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_TRUE(UpdateSearchState(active_tab)); 486eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_most_visited_change_calls_); 487eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 488eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 489eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantPolicyTest, ThemeBackgroundAccess) { 490eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstallThemeSource(); 491eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(InstallThemeAndVerify("theme", "camo theme")); 492eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 493eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 494eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // The "Instant" New Tab should have access to chrome-search: scheme but not 495eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // chrome: scheme. 496eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 497eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 498eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 499eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 5005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 5015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 502eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 503eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::RenderViewHost* rvh = 504eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(); 505eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 506eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string chrome_url("chrome://theme/IDR_THEME_NTP_BACKGROUND"); 507eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string search_url( 508eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "chrome-search://theme/IDR_THEME_NTP_BACKGROUND"); 509eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool loaded = false; 510eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(LoadImage(rvh, chrome_url, &loaded)); 511eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(loaded) << chrome_url; 512eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(LoadImage(rvh, search_url, &loaded)); 513eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(loaded) << search_url; 514eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 515eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Flaky on all bots. http://crbug.com/335297. 517eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantPolicyTest, 5185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISABLED_NoThemeBackgroundChangeEventOnTabSwitch) { 519eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstallThemeSource(); 520eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 521eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 522eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Install a theme. 523eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(InstallThemeAndVerify("theme", "camo theme")); 524eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, browser()->tab_strip_model()->count()); 525eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Open new tab. 527eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 528eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 529eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 530eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 5315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 5325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 533eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(2, browser()->tab_strip_model()->count()); 534eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 535eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 536eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 537eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); 538eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int on_theme_changed_calls = 0; 539eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetIntFromJS(active_tab, "onThemeChangedCalls", 540eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &on_theme_changed_calls)); 541eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_theme_changed_calls); 542eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 543eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Activate the previous tab. 544eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->ActivateTabAt(0, false); 545eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); 546eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 547eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Switch back to new tab. 548eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->ActivateTabAt(1, false); 549eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); 550eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 551eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Confirm that new tab got no onthemechanged event while switching tabs. 552eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 553eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch on_theme_changed_calls = 0; 554eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetIntFromJS(active_tab, "onThemeChangedCalls", 555eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &on_theme_changed_calls)); 556eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_theme_changed_calls); 557eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 558eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Flaky on all bots. http://crbug.com/335297, http://crbug.com/265971. 560eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantPolicyTest, 5615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISABLED_SendThemeBackgroundChangedEvent) { 562eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstallThemeSource(); 563eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 564eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 565eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Install a theme. 566eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(InstallThemeAndVerify("theme", "camo theme")); 567eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Open new tab. 569eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 570eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 571eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 572eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 5735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 5745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 575eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(2, browser()->tab_strip_model()->count()); 576eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 577eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Make sure new tab received an onthemechanged event. 578eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 579eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 580eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); 581eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int on_theme_changed_calls = 0; 582eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetIntFromJS(active_tab, "onThemeChangedCalls", 583eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &on_theme_changed_calls)); 584eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_theme_changed_calls); 585eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 586eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Install a new theme. 587eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(InstallThemeAndVerify("theme2", "snowflake theme")); 588eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 589eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Confirm that new tab is notified about the theme changed event. 590eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch on_theme_changed_calls = 0; 591eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetIntFromJS(active_tab, "onThemeChangedCalls", 592eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &on_theme_changed_calls)); 593eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(2, on_theme_changed_calls); 594eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 595eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 59603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Flaky on all bots. http://crbug.com/253092 597eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Test to verify that the omnibox search query is updated on browser 598eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// back button press event. 599eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantExtendedTest, 60003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) DISABLED_UpdateSearchQueryOnBackNavigation) { 601eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 602eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 603eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Focus omnibox and confirm overlay isn't shown. 6045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 605eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 606eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Create an observer to wait for the instant tab to support Instant. 607eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer( 608eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 609eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 610eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 611eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("flowers"); 612eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 613eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 614eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer.Wait(); 615eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 616eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 617eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 618eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Typing in the new search query in omnibox. 619eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("cattles"); 620eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 621eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 622eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // 'Enter' commits the query as it was typed. This creates a navigation entry 623eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // in the history. 624eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 625eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 626eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 627eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 628eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 629eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer( 630eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 631eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 632eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 633eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 634eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer.Wait(); 635eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 636eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 637eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 638eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FocusOmnibox(); 639eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 640eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 641eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 642eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 6433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Flaky: crbug.com/253092. 644eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Test to verify that the omnibox search query is updated on browser 645eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// forward button press events. 646eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantExtendedTest, 6473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DISABLED_UpdateSearchQueryOnForwardNavigation) { 648eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 649eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 650eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Focus omnibox and confirm overlay isn't shown. 6515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 652eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 653eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Create an observer to wait for the instant tab to support Instant. 654eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer( 655eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 656eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 657eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 658eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("flowers"); 659eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 660eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 661eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer.Wait(); 662eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 663eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 664eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 665eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Typing in the new search query in omnibox. 666eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("cattles"); 667eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 668eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 669eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // 'Enter' commits the query as it was typed. This creates a navigation entry 670eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // in the history. 671eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 672eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 673eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 674eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 675eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 676eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer( 677eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 678eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 679eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 680eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 681eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer.Wait(); 682eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 683eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 684eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 685eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 686eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoForward()); 687eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer_2( 688eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 689eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 690eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 691eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoForward(); 692eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer_2.Wait(); 693eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 694eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 695eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FocusOmnibox(); 696eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 697eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 698eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 699eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 700eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 701eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Flaky on all bots since re-enabled in r208032, crbug.com/253092 702eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantExtendedTest, DISABLED_NavigateBackToNTP) { 703eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 7045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 705eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 706eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Open a new tab page. 707eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 708eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 709eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 710eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 7115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 7125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 713eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(2, browser()->tab_strip_model()->count()); 714eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 715eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer( 716eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 717eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 718eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("flowers"); 719eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 720eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer.Wait(); 721eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 722eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 723eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 724eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Typing in the new search query in omnibox. 725eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 726eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("cattles"); 727eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 728eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 729eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // 'Enter' commits the query as it was typed. This creates a navigation entry 730eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // in the history. 731eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 732eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 733eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Navigate back to "flowers" search result page. 734eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 735eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 736eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 737eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer( 738eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 739eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 740eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 741eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 742eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer.Wait(); 743eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 744eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 745eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 746eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Navigate back to NTP. 747eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 748eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 749eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer_2( 750eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 751eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 752eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 753eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 754eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer_2.Wait(); 755eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 756eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 757eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(chrome::IsInstantNTP(active_tab)); 758eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 759eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 760a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Flaky: crbug.com/267119 761eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantExtendedTest, 762a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DISABLED_DispatchMVChangeEventWhileNavigatingBackToNTP) { 763eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Setup Instant. 764eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 7655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 766eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Open new tab. 768eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 769eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 770eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 771eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 7725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 7735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 774eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 775eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 776eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 777eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(UpdateSearchState(active_tab)); 778eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_most_visited_change_calls_); 779eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 780eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer( 781eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 782eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 783eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Set the text and press enter to navigate from NTP. 784eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("Pen"); 785eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 786eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("Pen"), omnibox()->GetText()); 787eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer.Wait(); 788eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 789eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Navigate back to NTP. 790eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver back_observer( 791eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 792eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 793eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 794eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 795eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 796eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch back_observer.Wait(); 797eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 798eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that onmostvisitedchange event is dispatched when we navigate from 799eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // SRP to NTP. 800eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 801eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(UpdateSearchState(active_tab)); 802eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_most_visited_change_calls_); 8037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 8049ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 805424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedPrefetchTest, SetPrefetchQuery) { 806424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 8075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 808424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 809424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WindowedNotificationObserver new_tab_observer( 810424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::NOTIFICATION_NAV_ENTRY_COMMITTED, 811424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::NotificationService::AllSources()); 812424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ui_test_utils::NavigateToURLWithDisposition( 813424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) browser(), 814424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL(chrome::kChromeUINewTabURL), 815424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) CURRENT_TAB, 816424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ui_test_utils::BROWSER_TEST_NONE); 817424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) new_tab_observer.Wait(); 818424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 819424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->autocomplete_controller()->search_provider()-> 820424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) kMinimumTimeBetweenSuggestQueriesMs = 0; 821424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 822a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Set the fake response for search query. 823a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) fake_factory()->SetFakeResponse(instant_url().Resolve("#q=flowers"), 824a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "", 825a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::HTTP_OK, 826a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::URLRequestStatus::SUCCESS); 827a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 828a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Navigate to a search results page. 829a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::WindowedNotificationObserver observer( 830a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 831a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::NotificationService::AllSources()); 832a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SetOmniboxText("flowers"); 833a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PressEnterAndWaitForNavigation(); 834a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) observer.Wait(); 835a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 836424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Set the fake response for suggest request. Response has prefetch details. 8371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Ensure that the page received the suggest response, then add another 8381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // keystroke to allow the asynchronously-received inline autocomplete 8391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // suggestion to actually be inlined (which in turn triggers it to prefetch). 840424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) fake_factory()->SetFakeResponse( 8411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci instant_url().Resolve("#q=pup"), 8421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "[\"pup\",[\"puppy\", \"puppies\"],[],[]," 843424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "{\"google:clientdata\":{\"phi\": 0}," 844424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "\"google:suggesttype\":[\"QUERY\", \"QUERY\"]," 845424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "\"google:suggestrelevance\":[1400, 9]}]", 846f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::HTTP_OK, 847f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::URLRequestStatus::SUCCESS); 848424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 8491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetOmniboxText("pup"); 850424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) while (!omnibox()->model()->autocomplete_controller()->done()) { 851424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WindowedNotificationObserver ready_observer( 852424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) chrome::NOTIFICATION_AUTOCOMPLETE_CONTROLLER_RESULT_READY, 853424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::Source<AutocompleteController>( 854424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->autocomplete_controller())); 855424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ready_observer.Wait(); 856424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 8571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetOmniboxText("pupp"); 858424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 859424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ(3, CountSearchProviderSuggestions()); 860424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WebContents* active_tab = 861424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 862424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(UpdateSearchState(active_tab)); 863424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(SearchProvider::ShouldPrefetch(*( 864424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->result().default_match()))); 865424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ("puppy", prefetch_query_value_); 866424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 867424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 868424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedPrefetchTest, ClearPrefetchedResults) { 869424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 8705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 871424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 872424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WindowedNotificationObserver new_tab_observer( 873424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::NOTIFICATION_NAV_ENTRY_COMMITTED, 874424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::NotificationService::AllSources()); 875424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ui_test_utils::NavigateToURLWithDisposition( 876424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) browser(), 877424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL(chrome::kChromeUINewTabURL), 878424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) CURRENT_TAB, 879424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ui_test_utils::BROWSER_TEST_NONE); 880424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) new_tab_observer.Wait(); 881424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 882424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->autocomplete_controller()->search_provider()-> 883424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) kMinimumTimeBetweenSuggestQueriesMs = 0; 884424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 885a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Set the fake response for search query. 886a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) fake_factory()->SetFakeResponse(instant_url().Resolve("#q=flowers"), 887a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "", 888a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::HTTP_OK, 889a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::URLRequestStatus::SUCCESS); 890a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 891a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Navigate to a search results page. 892a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::WindowedNotificationObserver observer( 893a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 894a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::NotificationService::AllSources()); 895a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SetOmniboxText("flowers"); 896a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PressEnterAndWaitForNavigation(); 897a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) observer.Wait(); 898a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 899424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Set the fake response for suggest request. Response has no prefetch 900424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // details. Ensure that the page received a blank query to clear the 901424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // prefetched results. 902424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) fake_factory()->SetFakeResponse( 9034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) instant_url().Resolve("#q=dogs"), 904424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "[\"dogs\",[\"https://dogs.com\"],[],[]," 905424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "{\"google:suggesttype\":[\"NAVIGATION\"]," 906424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "\"google:suggestrelevance\":[2]}]", 907f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::HTTP_OK, 908f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::URLRequestStatus::SUCCESS); 909424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 910424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) SetOmniboxText("dogs"); 911424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) while (!omnibox()->model()->autocomplete_controller()->done()) { 912424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WindowedNotificationObserver ready_observer( 913424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) chrome::NOTIFICATION_AUTOCOMPLETE_CONTROLLER_RESULT_READY, 914424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::Source<AutocompleteController>( 915424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->autocomplete_controller())); 916424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ready_observer.Wait(); 917424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 918424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 919424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ(2, CountSearchProviderSuggestions()); 920424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_FALSE(SearchProvider::ShouldPrefetch(*( 921424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->result().default_match()))); 922424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WebContents* active_tab = 923424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 924424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(UpdateSearchState(active_tab)); 925424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ("", prefetch_query_value_); 926424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 927d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 928d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, ShowURL) { 929d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 930d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) FocusOmnibox(); 931d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 932d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Create an observer to wait for the instant tab to support Instant. 933d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) content::WindowedNotificationObserver observer( 934d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 935d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) content::NotificationService::AllSources()); 936d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 937d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Do a search and commit it. The omnibox should show the search terms. 938d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) SetOmniboxText("foo"); 939d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("foo"), omnibox()->GetText()); 940d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) browser()->window()->GetLocationBar()->AcceptInput(); 941d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) observer.Wait(); 942d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_FALSE(omnibox()->model()->user_input_in_progress()); 943d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(browser()->toolbar_model()->WouldPerformSearchTermReplacement( 944d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) false)); 945d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("foo"), omnibox()->GetText()); 946d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 947d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Calling ShowURL() should disable search term replacement and show the URL. 948d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) omnibox()->ShowURL(); 949d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_FALSE(browser()->toolbar_model()->WouldPerformSearchTermReplacement( 950d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) false)); 951d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Don't bother looking for a specific URL; ensuring we're no longer showing 952d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // the search terms is sufficient. 953d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_NE(ASCIIToUTF16("foo"), omnibox()->GetText()); 954d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 95568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 95668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Check that clicking on a result sends the correct referrer. 95768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, Referrer) { 95868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 95968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) GURL result_url = 96068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) test_server()->GetURL("files/referrer_policy/referrer-policy-log.html"); 96168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 9625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 96368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 96468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Type a query and press enter to get results. 96568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) SetOmniboxText("query"); 96646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PressEnterAndWaitForFrameLoad(); 96768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 96868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Simulate going to a result. 96968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) content::WebContents* contents = 97068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 97168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::ostringstream stream; 97268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) stream << "var link = document.createElement('a');"; 97368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) stream << "link.href = \"" << result_url.spec() << "\";"; 97468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) stream << "document.body.appendChild(link);"; 97568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) stream << "link.click();"; 97668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) EXPECT_TRUE(content::ExecuteScript(contents, stream.str())); 97768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 97868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) content::WaitForLoadStop(contents); 97968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::string expected_title = 98068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) "Referrer is " + instant_url().GetWithEmptyPath().spec(); 98168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16(expected_title), contents->GetTitle()); 98268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 983