instant_extended_interactive_uitest.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
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/autocomplete/search_provider.h" 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/bookmarks/bookmark_model_factory.h" 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/extension_browsertest.h" 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/favicon/favicon_tab_helper.h" 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/history_db_task.h" 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/history_service.h" 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/history_service_factory.h" 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/history_types.h" 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/history/top_sites.h" 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/search/instant_service.h" 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/search/instant_service_factory.h" 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/search/search.h" 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_factory.h" 35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/task_manager/task_manager.h" 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/task_manager/task_manager_browsertest_util.h" 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/themes/theme_service.h" 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/themes/theme_service_factory.h" 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/browser_list.h" 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/browser_tabstrip.h" 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/omnibox/omnibox_view.h" 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/search/instant_tab.h" 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/search/instant_test_utils.h" 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/search/search_tab_helper.h" 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/webui/theme_source.h" 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/common/chrome_switches.h" 48b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "chrome/common/instant_types.h" 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/common/pref_names.h" 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/common/url_constants.h" 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/interactive_test_utils.h" 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/browser/bookmark_utils.h" 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/test/bookmark_test_helpers.h" 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/google/core/browser/google_url_tracker.h" 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/history/core/common/thumbnail_score.h" 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/omnibox/autocomplete_match.h" 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/omnibox/autocomplete_provider.h" 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/omnibox/autocomplete_result.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" 74868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "grit/generated_resources.h" 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "net/base/network_change_notifier.h" 760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "net/http/http_status_code.h" 77424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "net/url_request/test_url_fetcher_factory.h" 78424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "net/url_request/url_fetcher_impl.h" 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "net/url_request/url_request_status.h" 80868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h" 82868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::ASCIIToUTF16; 84868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)using testing::HasSubstr; 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Task used to make sure history has finished processing a request. Intended 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// for use with BlockUntilHistoryProcessesPendingRequests. 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class QuittingHistoryDBTask : public history::HistoryDBTask { 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) QuittingHistoryDBTask() {} 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool RunOnDBThread(history::HistoryBackend* backend, 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) history::HistoryDatabase* db) OVERRIDE { 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void DoneRunOnMainThread() OVERRIDE { 100b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->Quit(); 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~QuittingHistoryDBTask() {} 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(QuittingHistoryDBTask); 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass FakeNetworkChangeNotifier : public net::NetworkChangeNotifier { 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FakeNetworkChangeNotifier() : connection_type_(CONNECTION_NONE) {} 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ConnectionType GetCurrentConnectionType() const OVERRIDE { 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return connection_type_; 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetConnectionType(ConnectionType type) { 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch connection_type_ = type; 119eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NotifyObserversOfNetworkChange(type); 120eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::RunLoop().RunUntilIdle(); 121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~FakeNetworkChangeNotifier() {} 124eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ConnectionType connection_type_; 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(FakeNetworkChangeNotifier); 128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class InstantExtendedTest : public InProcessBrowserTest, 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public InstantTestBase { 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InstantExtendedTest() 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : on_most_visited_change_calls_(0), 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) most_visited_items_count_(0), 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) first_most_visited_item_id_(0), 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) on_native_suggestions_calls_(0), 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) on_change_calls_(0), 140b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) submit_count_(0), 141868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) on_esc_key_press_event_calls_(0), 142868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) on_focus_changed_calls_(0), 143868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) is_focused_(false), 144868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) on_toggle_voice_search_calls_(0) { 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::EnableQueryExtractionForTesting(); 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(https_test_server().Start()); 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL instant_url = https_test_server().GetURL( 151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "files/instant_extended.html?strk=1&"); 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL ntp_url = https_test_server().GetURL( 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "files/instant_extended_ntp.html?strk=1&"); 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InstantTestBase::Init(instant_url, ntp_url, false); 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 157a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) int64 GetHistogramCount(const char* name) { 158a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) base::HistogramBase* histogram = 159a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) base::StatisticsRecorder::FindHistogram(name); 160a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) if (!histogram) { 161a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // If no histogram is found, it's possible that no values have been 162a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // recorded yet. Assume that the value is zero. 163a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return 0; 164a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 165a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return histogram->SnapshotSamples()->TotalCount(); 166a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 167a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool UpdateSearchState(content::WebContents* contents) WARN_UNUSED_RESULT { 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetIntFromJS(contents, "onMostVisitedChangedCalls", 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &on_most_visited_change_calls_) && 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "mostVisitedItemsCount", 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &most_visited_items_count_) && 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "firstMostVisitedItemId", 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &first_most_visited_item_id_) && 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "onNativeSuggestionsCalls", 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &on_native_suggestions_calls_) && 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "onChangeCalls", 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &on_change_calls_) && 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetIntFromJS(contents, "submitCount", 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &submit_count_) && 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetStringFromJS(contents, "apiHandle.value", 182b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) &query_value_) && 183b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) GetIntFromJS(contents, "onEscKeyPressedCalls", 184868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &on_esc_key_press_event_calls_) && 185868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetIntFromJS(contents, "onFocusChangedCalls", 186868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &on_focus_changed_calls_) && 187868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetBoolFromJS(contents, "isFocused", 188868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &is_focused_) && 189868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GetIntFromJS(contents, "onToggleVoiceSearchCalls", 190424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) &on_toggle_voice_search_calls_) && 191424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GetStringFromJS(contents, "prefetchQuery", &prefetch_query_value_); 192424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TemplateURL* GetDefaultSearchProviderTemplateURL() { 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TemplateURLService* template_url_service = 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TemplateURLServiceFactory::GetForProfile(browser()->profile()); 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (template_url_service) 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return template_url_service->GetDefaultSearchProvider(); 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return NULL; 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool AddSearchToHistory(base::string16 term, int visit_count) { 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(); 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!template_url) 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return false; 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) HistoryService* history = HistoryServiceFactory::GetForProfile( 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser()->profile(), Profile::EXPLICIT_ACCESS); 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL search(template_url->url_ref().ReplaceSearchTerms( 211f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) TemplateURLRef::SearchTermsArgs(term), 212f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) TemplateURLServiceFactory::GetForProfile( 213f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) browser()->profile())->search_terms_data())); 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) history->AddPageWithDetails( 215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) search, base::string16(), visit_count, visit_count, 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::Time::Now(), false, history::SOURCE_BROWSED); 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) history->SetKeywordSearchTermsForURL( 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) search, template_url->id(), term); 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void BlockUntilHistoryProcessesPendingRequests() { 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) HistoryService* history = HistoryServiceFactory::GetForProfile( 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser()->profile(), Profile::EXPLICIT_ACCESS); 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK(history); 226b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) DCHECK(base::MessageLoop::current()); 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::CancelableTaskTracker tracker; 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) history->ScheduleDBTask( 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<history::HistoryDBTask>( 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new QuittingHistoryDBTask()), 2325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &tracker); 233b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->Run(); 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int CountSearchProviderSuggestions() { 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return omnibox()->model()->autocomplete_controller()->search_provider()-> 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) matches().size(); 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int on_most_visited_change_calls_; 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int most_visited_items_count_; 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int first_most_visited_item_id_; 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int on_native_suggestions_calls_; 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int on_change_calls_; 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int submit_count_; 247b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int on_esc_key_press_event_calls_; 248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string query_value_; 249868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int on_focus_changed_calls_; 250868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool is_focused_; 251868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int on_toggle_voice_search_calls_; 252424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string prefetch_query_value_; 253424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}; 254424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 255424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class InstantExtendedPrefetchTest : public InstantExtendedTest { 256424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) public: 257424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) InstantExtendedPrefetchTest() 258424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : factory_(new net::URLFetcherImplFactory()), 259424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) fake_factory_(new net::FakeURLFetcherFactory(factory_.get())) { 260424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 261424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 262424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 263f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::EnableQueryExtractionForTesting(); 264424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(https_test_server().Start()); 265424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL instant_url = https_test_server().GetURL( 266424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "files/instant_extended.html?strk=1&"); 2675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL ntp_url = https_test_server().GetURL( 2685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "files/instant_extended_ntp.html?strk=1&"); 2695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InstantTestBase::Init(instant_url, ntp_url, true); 270424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 271424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 272a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 273a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) command_line->AppendSwitchASCII( 274a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) switches::kForceFieldTrials, 2755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "EmbeddedSearch/Group11 prefetch_results_srp:1/"); 276a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 277a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 278424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) net::FakeURLFetcherFactory* fake_factory() { return fake_factory_.get(); } 279424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 280424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) private: 281424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Used to instantiate FakeURLFetcherFactory. 282424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) scoped_ptr<net::URLFetcherImplFactory> factory_; 283424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 284424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Used to mock default search provider suggest response. 285424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) scoped_ptr<net::FakeURLFetcherFactory> fake_factory_; 286424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 287424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(InstantExtendedPrefetchTest); 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 289c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 290eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass InstantExtendedNetworkTest : public InstantExtendedTest { 291eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 292eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUpOnMainThread() OVERRIDE { 293eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch disable_for_test_.reset(new net::NetworkChangeNotifier::DisableForTest); 294eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch fake_network_change_notifier_.reset(new FakeNetworkChangeNotifier); 295eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstantExtendedTest::SetUpOnMainThread(); 296eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 297eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void TearDownOnMainThread() OVERRIDE { 2995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) InstantExtendedTest::TearDownOnMainThread(); 300eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch fake_network_change_notifier_.reset(); 301eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch disable_for_test_.reset(); 302eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 303eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 304eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetConnectionType(net::NetworkChangeNotifier::ConnectionType type) { 305eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch fake_network_change_notifier_->SetConnectionType(type); 306eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 307eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 308eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 309eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<net::NetworkChangeNotifier::DisableForTest> disable_for_test_; 310eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<FakeNetworkChangeNotifier> fake_network_change_notifier_; 311eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 312eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Test class used to verify chrome-search: scheme and access policy from the 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Instant overlay. This is a subclass of |ExtensionBrowserTest| because it 315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// loads a theme that provides a background image. 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class InstantPolicyTest : public ExtensionBrowserTest, public InstantTestBase { 317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 318c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InstantPolicyTest() {} 319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 322c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(https_test_server().Start()); 323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL instant_url = https_test_server().GetURL( 324c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "files/instant_extended.html?strk=1&"); 3255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL ntp_url = https_test_server().GetURL( 3265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "files/instant_extended_ntp.html?strk=1&"); 3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InstantTestBase::Init(instant_url, ntp_url, false); 328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void InstallThemeSource() { 331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ThemeSource* theme = new ThemeSource(profile()); 332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::URLDataSource::Add(profile(), theme); 333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void InstallThemeAndVerify(const std::string& theme_dir, 336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& theme_name) { 3373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const extensions::Extension* theme = 3383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ThemeServiceFactory::GetThemeForProfile( 3393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ExtensionBrowserTest::browser()->profile()); 3403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // If there is already a theme installed, the current theme should be 3413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // disabled and the new one installed + enabled. 3423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int expected_change = theme ? 0 : 1; 3433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 344c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::FilePath theme_path = test_data_dir_.AppendASCII(theme_dir); 345c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(InstallExtensionWithUIAutoConfirm( 3463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) theme_path, expected_change, ExtensionBrowserTest::browser())); 3473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const extensions::Extension* new_theme = 348c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ThemeServiceFactory::GetThemeForProfile( 349c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExtensionBrowserTest::browser()->profile()); 3503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ASSERT_NE(static_cast<extensions::Extension*>(NULL), new_theme); 3513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ASSERT_EQ(new_theme->name(), theme_name); 352c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 353c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 354c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 355c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(InstantPolicyTest); 356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 357c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 358868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, SearchReusesInstantTab) { 359868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 3605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 361eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 362868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) content::WindowedNotificationObserver observer( 363868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 364868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) content::NotificationService::AllSources()); 365868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("flowers"); 36646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PressEnterAndWaitForFrameLoad(); 367868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) observer.Wait(); 368868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 369868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Just did a regular search. 370eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 371eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 372eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_THAT(active_tab->GetURL().spec(), HasSubstr("q=flowers")); 373eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(UpdateSearchState(active_tab)); 374868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(0, submit_count_); 375868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 376868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("puppies"); 377eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 378868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 379868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Should have reused the tab and sent an onsubmit message. 380eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 381eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_THAT(active_tab->GetURL().spec(), HasSubstr("q=puppies")); 382eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(UpdateSearchState(active_tab)); 383868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(1, submit_count_); 384868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 385868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 386868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, 387868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SearchDoesntReuseInstantTabWithoutSupport) { 388868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 3895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 390868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 391868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Don't wait for the navigation to complete. 392868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("flowers"); 393868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) browser()->window()->GetLocationBar()->AcceptInput(); 394868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 395868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("puppies"); 396868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) browser()->window()->GetLocationBar()->AcceptInput(); 397868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 398868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Should not have reused the tab. 399868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_THAT( 400868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents()->GetURL().spec(), 401868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) HasSubstr("q=puppies")); 402868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 403868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 404868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, 405868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TypedSearchURLDoesntReuseInstantTab) { 406868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 4075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 408eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 409868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Create an observer to wait for the instant tab to support Instant. 410eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer_1( 411868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 412868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) content::NotificationService::AllSources()); 413868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetOmniboxText("flowers"); 41446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PressEnterAndWaitForFrameLoad(); 415eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer_1.Wait(); 416868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 417868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Just did a regular search. 418eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 419eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 420eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_THAT(active_tab->GetURL().spec(), HasSubstr("q=flowers")); 421eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(UpdateSearchState(active_tab)); 422868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_EQ(0, submit_count_); 423868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 424868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Typed in a search URL "by hand". 425eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer_2( 426eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 427eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 4284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SetOmniboxText(instant_url().Resolve("#q=puppies").spec()); 429eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 430eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer_2.Wait(); 431868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 432868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Should not have reused the tab. 433eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 434eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_THAT(active_tab->GetURL().spec(), HasSubstr("q=puppies")); 435868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 4365e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 4375e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, OmniboxMarginSetForSearchURLs) { 4385e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 4395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 440eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 4415e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) // Create an observer to wait for the instant tab to support Instant. 4425e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) content::WindowedNotificationObserver observer( 4435e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 4445e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) content::NotificationService::AllSources()); 4455e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 4465e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) SetOmniboxText("flowers"); 4475e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) browser()->window()->GetLocationBar()->AcceptInput(); 4485e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) observer.Wait(); 4495e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 4505e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) const std::string& url = 4515e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents()->GetURL().spec(); 4525e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) // Make sure we actually used search_url, not instant_url. 4535e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) ASSERT_THAT(url, HasSubstr("&is_search")); 4545e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) EXPECT_THAT(url, HasSubstr("&es_sm=")); 4555e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)} 4565e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 4577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Test to verify that switching tabs should not dispatch onmostvisitedchanged 4587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// events. 4597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, NoMostVisitedChangedOnTabSwitch) { 4607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Initialize Instant. 4617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 4627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Open new tab. 4647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ui_test_utils::NavigateToURLWithDisposition( 4657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser(), 4667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) GURL(chrome::kChromeUINewTabURL), 4677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) NEW_FOREGROUND_TAB, 4685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 4695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 4707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ(2, browser()->tab_strip_model()->count()); 4717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Make sure new tab received the onmostvisitedchanged event once. 4737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) content::WebContents* active_tab = 4747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 4757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_TRUE(UpdateSearchState(active_tab)); 476eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_most_visited_change_calls_); 4777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Activate the previous tab. 4797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(0, false); 4807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Switch back to new tab. 4827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(1, false); 4837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Confirm that new tab got no onmostvisitedchanged event. 4857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 4867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_TRUE(UpdateSearchState(active_tab)); 487eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_most_visited_change_calls_); 488eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 489eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 490eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantPolicyTest, ThemeBackgroundAccess) { 491eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstallThemeSource(); 492eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(InstallThemeAndVerify("theme", "camo theme")); 493eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 494eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 495eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // The "Instant" New Tab should have access to chrome-search: scheme but not 496eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // chrome: scheme. 497eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 498eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 499eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 500eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 5015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 5025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 503eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 504eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::RenderViewHost* rvh = 505eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(); 506eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 507eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string chrome_url("chrome://theme/IDR_THEME_NTP_BACKGROUND"); 508eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string search_url( 509eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "chrome-search://theme/IDR_THEME_NTP_BACKGROUND"); 510eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool loaded = false; 511eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(LoadImage(rvh, chrome_url, &loaded)); 512eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(loaded) << chrome_url; 513eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(LoadImage(rvh, search_url, &loaded)); 514eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(loaded) << search_url; 515eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 516eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Flaky on all bots. http://crbug.com/335297. 518eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantPolicyTest, 5195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISABLED_NoThemeBackgroundChangeEventOnTabSwitch) { 520eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstallThemeSource(); 521eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 522eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 523eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Install a theme. 524eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(InstallThemeAndVerify("theme", "camo theme")); 525eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, browser()->tab_strip_model()->count()); 526eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Open new tab. 528eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 529eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 530eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 531eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 5325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 5335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 534eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(2, browser()->tab_strip_model()->count()); 535eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 536eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 537eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 538eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); 539eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int on_theme_changed_calls = 0; 540eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetIntFromJS(active_tab, "onThemeChangedCalls", 541eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &on_theme_changed_calls)); 542eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_theme_changed_calls); 543eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 544eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Activate the previous tab. 545eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->ActivateTabAt(0, false); 546eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); 547eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 548eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Switch back to new tab. 549eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->ActivateTabAt(1, false); 550eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); 551eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 552eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Confirm that new tab got no onthemechanged event while switching tabs. 553eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 554eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch on_theme_changed_calls = 0; 555eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetIntFromJS(active_tab, "onThemeChangedCalls", 556eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &on_theme_changed_calls)); 557eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_theme_changed_calls); 558eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 559eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Flaky on all bots. http://crbug.com/335297, http://crbug.com/265971. 561eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantPolicyTest, 5625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISABLED_SendThemeBackgroundChangedEvent) { 563eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstallThemeSource(); 564eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 565eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 566eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Install a theme. 567eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(InstallThemeAndVerify("theme", "camo theme")); 568eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Open new tab. 570eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 571eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 572eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 573eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 5745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 5755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 576eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(2, browser()->tab_strip_model()->count()); 577eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 578eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Make sure new tab received an onthemechanged event. 579eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 580eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 581eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); 582eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int on_theme_changed_calls = 0; 583eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetIntFromJS(active_tab, "onThemeChangedCalls", 584eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &on_theme_changed_calls)); 585eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_theme_changed_calls); 586eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 587eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Install a new theme. 588eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(InstallThemeAndVerify("theme2", "snowflake theme")); 589eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 590eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Confirm that new tab is notified about the theme changed event. 591eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch on_theme_changed_calls = 0; 592eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetIntFromJS(active_tab, "onThemeChangedCalls", 593eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &on_theme_changed_calls)); 594eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(2, on_theme_changed_calls); 595eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 596eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 597eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Flaky on Mac and Linux Tests bots. 598eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_MACOSX) || defined(OS_LINUX) 599eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define MAYBE_UpdateSearchQueryOnBackNavigation DISABLED_UpdateSearchQueryOnBackNavigation 600eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#else 601eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define MAYBE_UpdateSearchQueryOnBackNavigation UpdateSearchQueryOnBackNavigation 602eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif 603eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Test to verify that the omnibox search query is updated on browser 604eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// back button press event. 605eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantExtendedTest, 606eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MAYBE_UpdateSearchQueryOnBackNavigation) { 607eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 608eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 609eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Focus omnibox and confirm overlay isn't shown. 6105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 611eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 612eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Create an observer to wait for the instant tab to support Instant. 613eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer( 614eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 615eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 616eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 617eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("flowers"); 618eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 619eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 620eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer.Wait(); 621eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 622eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 623eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 624eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Typing in the new search query in omnibox. 625eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("cattles"); 626eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 627eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 628eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // 'Enter' commits the query as it was typed. This creates a navigation entry 629eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // in the history. 630eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 631eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 632eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 633eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 634eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 635eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer( 636eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 637eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 638eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 639eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 640eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer.Wait(); 641eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 642eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 643eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 644eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FocusOmnibox(); 645eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 646eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 647eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 648eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 6493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Flaky: crbug.com/253092. 650eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Test to verify that the omnibox search query is updated on browser 651eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// forward button press events. 652eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantExtendedTest, 6533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DISABLED_UpdateSearchQueryOnForwardNavigation) { 654eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 655eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 656eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Focus omnibox and confirm overlay isn't shown. 6575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 658eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 659eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Create an observer to wait for the instant tab to support Instant. 660eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer( 661eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 662eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 663eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 664eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("flowers"); 665eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 666eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 667eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer.Wait(); 668eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 669eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 670eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 671eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Typing in the new search query in omnibox. 672eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("cattles"); 673eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 674eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 675eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // 'Enter' commits the query as it was typed. This creates a navigation entry 676eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // in the history. 677eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 678eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 679eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 680eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 681eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 682eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer( 683eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 684eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 685eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 686eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 687eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer.Wait(); 688eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 689eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 690eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 691eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 692eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoForward()); 693eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer_2( 694eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 695eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 696eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 697eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoForward(); 698eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer_2.Wait(); 699eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 700eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 701eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FocusOmnibox(); 702eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 703eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 704eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 705eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 706eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 707eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Flaky on all bots since re-enabled in r208032, crbug.com/253092 708eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantExtendedTest, DISABLED_NavigateBackToNTP) { 709eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 7105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 711eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 712eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Open a new tab page. 713eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 714eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 715eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 716eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 7175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 7185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 719eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(2, browser()->tab_strip_model()->count()); 720eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 721eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer( 722eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 723eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 724eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("flowers"); 725eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 726eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer.Wait(); 727eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 728eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 729eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 730eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Typing in the new search query in omnibox. 731eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Commit the search by pressing 'Enter'. 732eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("cattles"); 733eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 734eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 735eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // 'Enter' commits the query as it was typed. This creates a navigation entry 736eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // in the history. 737eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("cattles"), omnibox()->GetText()); 738eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 739eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Navigate back to "flowers" search result page. 740eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 741eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 742eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 743eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer( 744eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 745eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 746eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 747eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 748eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer.Wait(); 749eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 750eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("flowers"), omnibox()->GetText()); 751eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 752eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Navigate back to NTP. 753eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 754eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 755eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver load_stop_observer_2( 756eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 757eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::Source<content::NavigationController>( 758eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch &active_tab->GetController())); 759eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 760eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch load_stop_observer_2.Wait(); 761eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 762eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 763eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(chrome::IsInstantNTP(active_tab)); 764eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 765eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 766a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Flaky: crbug.com/267119 767eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(InstantExtendedTest, 768a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DISABLED_DispatchMVChangeEventWhileNavigatingBackToNTP) { 769eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Setup Instant. 770eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 7715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 772eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Open new tab. 774eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ui_test_utils::NavigateToURLWithDisposition( 775eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser(), 776eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL(chrome::kChromeUINewTabURL), 777eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch NEW_FOREGROUND_TAB, 7785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB | 7795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 780eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 781eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WebContents* active_tab = 782eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser()->tab_strip_model()->GetActiveWebContents(); 783eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(UpdateSearchState(active_tab)); 784eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_most_visited_change_calls_); 785eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 786eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver observer( 787eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 788eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 789eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Set the text and press enter to navigate from NTP. 790eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetOmniboxText("Pen"); 791eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PressEnterAndWaitForNavigation(); 792eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ASCIIToUTF16("Pen"), omnibox()->GetText()); 793eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch observer.Wait(); 794eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 795eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Navigate back to NTP. 796eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::WindowedNotificationObserver back_observer( 797eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NOTIFICATION_LOAD_STOP, 798eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::NotificationService::AllSources()); 799eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 800eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(active_tab->GetController().CanGoBack()); 801eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab->GetController().GoBack(); 802eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch back_observer.Wait(); 803eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 804eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that onmostvisitedchange event is dispatched when we navigate from 805eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // SRP to NTP. 806eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_tab = browser()->tab_strip_model()->GetActiveWebContents(); 807eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(UpdateSearchState(active_tab)); 808eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(1, on_most_visited_change_calls_); 8097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 8109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 811424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedPrefetchTest, SetPrefetchQuery) { 812424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 8135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 814424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 815424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WindowedNotificationObserver new_tab_observer( 816424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::NOTIFICATION_NAV_ENTRY_COMMITTED, 817424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::NotificationService::AllSources()); 818424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ui_test_utils::NavigateToURLWithDisposition( 819424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) browser(), 820424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL(chrome::kChromeUINewTabURL), 821424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) CURRENT_TAB, 822424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ui_test_utils::BROWSER_TEST_NONE); 823424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) new_tab_observer.Wait(); 824424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 825424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->autocomplete_controller()->search_provider()-> 826424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) kMinimumTimeBetweenSuggestQueriesMs = 0; 827424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 828a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Set the fake response for search query. 829a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) fake_factory()->SetFakeResponse(instant_url().Resolve("#q=flowers"), 830a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "", 831a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::HTTP_OK, 832a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::URLRequestStatus::SUCCESS); 833a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 834a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Navigate to a search results page. 835a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::WindowedNotificationObserver observer( 836a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 837a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::NotificationService::AllSources()); 838a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SetOmniboxText("flowers"); 839a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PressEnterAndWaitForNavigation(); 840a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) observer.Wait(); 841a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 842424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Set the fake response for suggest request. Response has prefetch details. 843424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Ensure that the page received the prefetch query. 844424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) fake_factory()->SetFakeResponse( 8454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) instant_url().Resolve("#q=pupp"), 846424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "[\"pupp\",[\"puppy\", \"puppies\"],[],[]," 847424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "{\"google:clientdata\":{\"phi\": 0}," 848424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "\"google:suggesttype\":[\"QUERY\", \"QUERY\"]," 849424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "\"google:suggestrelevance\":[1400, 9]}]", 850f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::HTTP_OK, 851f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::URLRequestStatus::SUCCESS); 852424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 853424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) SetOmniboxText("pupp"); 854424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) while (!omnibox()->model()->autocomplete_controller()->done()) { 855424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WindowedNotificationObserver ready_observer( 856424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) chrome::NOTIFICATION_AUTOCOMPLETE_CONTROLLER_RESULT_READY, 857424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::Source<AutocompleteController>( 858424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->autocomplete_controller())); 859424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ready_observer.Wait(); 860424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 861424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 862424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ(3, CountSearchProviderSuggestions()); 863424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WebContents* active_tab = 864424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 865424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(UpdateSearchState(active_tab)); 866424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(SearchProvider::ShouldPrefetch(*( 867424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->result().default_match()))); 868424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ("puppy", prefetch_query_value_); 869424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 870424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 871424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedPrefetchTest, ClearPrefetchedResults) { 872424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 8735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 874424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 875424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WindowedNotificationObserver new_tab_observer( 876424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::NOTIFICATION_NAV_ENTRY_COMMITTED, 877424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::NotificationService::AllSources()); 878424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ui_test_utils::NavigateToURLWithDisposition( 879424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) browser(), 880424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL(chrome::kChromeUINewTabURL), 881424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) CURRENT_TAB, 882424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ui_test_utils::BROWSER_TEST_NONE); 883424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) new_tab_observer.Wait(); 884424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 885424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->autocomplete_controller()->search_provider()-> 886424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) kMinimumTimeBetweenSuggestQueriesMs = 0; 887424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 888a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Set the fake response for search query. 889a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) fake_factory()->SetFakeResponse(instant_url().Resolve("#q=flowers"), 890a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "", 891a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::HTTP_OK, 892a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::URLRequestStatus::SUCCESS); 893a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 894a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Navigate to a search results page. 895a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::WindowedNotificationObserver observer( 896a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 897a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::NotificationService::AllSources()); 898a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SetOmniboxText("flowers"); 899a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PressEnterAndWaitForNavigation(); 900a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) observer.Wait(); 901a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 902424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Set the fake response for suggest request. Response has no prefetch 903424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // details. Ensure that the page received a blank query to clear the 904424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // prefetched results. 905424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) fake_factory()->SetFakeResponse( 9064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) instant_url().Resolve("#q=dogs"), 907424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "[\"dogs\",[\"https://dogs.com\"],[],[]," 908424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "{\"google:suggesttype\":[\"NAVIGATION\"]," 909424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "\"google:suggestrelevance\":[2]}]", 910f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::HTTP_OK, 911f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) net::URLRequestStatus::SUCCESS); 912424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 913424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) SetOmniboxText("dogs"); 914424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) while (!omnibox()->model()->autocomplete_controller()->done()) { 915424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WindowedNotificationObserver ready_observer( 916424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) chrome::NOTIFICATION_AUTOCOMPLETE_CONTROLLER_RESULT_READY, 917424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::Source<AutocompleteController>( 918424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->autocomplete_controller())); 919424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ready_observer.Wait(); 920424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 921424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 922424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ(2, CountSearchProviderSuggestions()); 923424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_FALSE(SearchProvider::ShouldPrefetch(*( 924424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) omnibox()->model()->result().default_match()))); 925424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) content::WebContents* active_tab = 926424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 927424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(UpdateSearchState(active_tab)); 928424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ("", prefetch_query_value_); 929424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 930d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 931d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, ShowURL) { 932d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 933d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) FocusOmnibox(); 934d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 935d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Create an observer to wait for the instant tab to support Instant. 936d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) content::WindowedNotificationObserver observer( 937d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, 938d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) content::NotificationService::AllSources()); 939d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 940d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Do a search and commit it. The omnibox should show the search terms. 941d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) SetOmniboxText("foo"); 942d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("foo"), omnibox()->GetText()); 943d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) browser()->window()->GetLocationBar()->AcceptInput(); 944d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) observer.Wait(); 945d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_FALSE(omnibox()->model()->user_input_in_progress()); 946d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(browser()->toolbar_model()->WouldPerformSearchTermReplacement( 947d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) false)); 948d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("foo"), omnibox()->GetText()); 949d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 950d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Calling ShowURL() should disable search term replacement and show the URL. 951d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) omnibox()->ShowURL(); 952d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_FALSE(browser()->toolbar_model()->WouldPerformSearchTermReplacement( 953d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) false)); 954d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Don't bother looking for a specific URL; ensuring we're no longer showing 955d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // the search terms is sufficient. 956d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_NE(ASCIIToUTF16("foo"), omnibox()->GetText()); 957d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 95868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 95968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Check that clicking on a result sends the correct referrer. 96068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(InstantExtendedTest, Referrer) { 96168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 96268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) GURL result_url = 96368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) test_server()->GetURL("files/referrer_policy/referrer-policy-log.html"); 96468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 9655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FocusOmnibox(); 96668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 96768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Type a query and press enter to get results. 96868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) SetOmniboxText("query"); 96946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PressEnterAndWaitForFrameLoad(); 97068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 97168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Simulate going to a result. 97268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) content::WebContents* contents = 97368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 97468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::ostringstream stream; 97568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) stream << "var link = document.createElement('a');"; 97668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) stream << "link.href = \"" << result_url.spec() << "\";"; 97768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) stream << "document.body.appendChild(link);"; 97868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) stream << "link.click();"; 97968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) EXPECT_TRUE(content::ExecuteScript(contents, stream.str())); 98068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 98168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) content::WaitForLoadStop(contents); 98268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::string expected_title = 98368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) "Referrer is " + instant_url().GetWithEmptyPath().spec(); 98468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16(expected_title), contents->GetTitle()); 98568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 986