| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/stringprintf.h" | 5 #include "base/stringprintf.h" |
| 6 #include "chrome/browser/content_settings/host_content_settings_map.h" | 6 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| 7 #include "chrome/browser/history/history_service_factory.h" | 7 #include "chrome/browser/history/history_service_factory.h" |
| 8 #include "chrome/browser/instant/instant_controller.h" | 8 #include "chrome/browser/instant/instant_controller.h" |
| 9 #include "chrome/browser/instant/instant_loader.h" | 9 #include "chrome/browser/instant/instant_loader.h" |
| 10 #include "chrome/browser/instant/instant_model.h" | 10 #include "chrome/browser/instant/instant_model.h" |
| 11 #include "chrome/browser/instant/instant_model_observer.h" | 11 #include "chrome/browser/instant/instant_model_observer.h" |
| 12 #include "chrome/browser/prefs/pref_service.h" | 12 #include "chrome/browser/prefs/pref_service.h" |
| 13 #include "chrome/browser/search_engines/template_url_service.h" | 13 #include "chrome/browser/search_engines/template_url_service.h" |
| 14 #include "chrome/browser/search_engines/template_url_service_factory.h" | 14 #include "chrome/browser/search_engines/template_url_service_factory.h" |
| 15 #include "chrome/browser/task_manager/task_manager.h" | 15 #include "chrome/browser/task_manager/task_manager.h" |
| 16 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" | 16 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" |
| 17 #include "chrome/browser/ui/browser_commands.h" | 17 #include "chrome/browser/ui/browser_commands.h" |
| 18 #include "chrome/browser/ui/browser_instant_controller.h" | 18 #include "chrome/browser/ui/browser_instant_controller.h" |
| 19 #include "chrome/browser/ui/browser_tabstrip.h" | 19 #include "chrome/browser/ui/browser_tabstrip.h" |
| 20 #include "chrome/browser/ui/browser_window.h" | 20 #include "chrome/browser/ui/browser_window.h" |
| 21 #include "chrome/browser/ui/omnibox/location_bar.h" | 21 #include "chrome/browser/ui/omnibox/location_bar.h" |
| 22 #include "chrome/browser/ui/omnibox/omnibox_view.h" | 22 #include "chrome/browser/ui/omnibox/omnibox_view.h" |
| 23 #include "chrome/browser/ui/tab_contents/tab_contents.h" | 23 #include "chrome/browser/ui/tab_contents/tab_contents.h" |
| 24 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 24 #include "chrome/common/chrome_notification_types.h" | 25 #include "chrome/common/chrome_notification_types.h" |
| 25 #include "chrome/common/pref_names.h" | 26 #include "chrome/common/pref_names.h" |
| 26 #include "chrome/test/base/in_process_browser_test.h" | 27 #include "chrome/test/base/in_process_browser_test.h" |
| 27 #include "chrome/test/base/ui_test_utils.h" | 28 #include "chrome/test/base/ui_test_utils.h" |
| 28 #include "content/public/browser/notification_service.h" | 29 #include "content/public/browser/notification_service.h" |
| 29 #include "content/public/browser/web_contents.h" | 30 #include "content/public/browser/web_contents.h" |
| 30 #include "content/public/test/browser_test_utils.h" | 31 #include "content/public/test/browser_test_utils.h" |
| 31 #include "grit/generated_resources.h" | 32 #include "grit/generated_resources.h" |
| 32 #include "ui/base/l10n/l10n_util.h" | 33 #include "ui/base/l10n/l10n_util.h" |
| 33 | 34 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 | 137 |
| 137 bool GetStringFromJS(content::RenderViewHost* rvh, | 138 bool GetStringFromJS(content::RenderViewHost* rvh, |
| 138 const std::string& script, | 139 const std::string& script, |
| 139 std::string* result) WARN_UNUSED_RESULT { | 140 std::string* result) WARN_UNUSED_RESULT { |
| 140 return content::ExecuteJavaScriptAndExtractString( | 141 return content::ExecuteJavaScriptAndExtractString( |
| 141 rvh, std::wstring(), WrapScript(script), result); | 142 rvh, std::wstring(), WrapScript(script), result); |
| 142 } | 143 } |
| 143 | 144 |
| 144 bool UpdateSearchState(TabContents* tab) WARN_UNUSED_RESULT { | 145 bool UpdateSearchState(TabContents* tab) WARN_UNUSED_RESULT { |
| 145 content::RenderViewHost* rvh = tab->web_contents()->GetRenderViewHost(); | 146 content::RenderViewHost* rvh = tab->web_contents()->GetRenderViewHost(); |
| 146 return GetIntFromJS(rvh, "onchangecalls", &onchangecalls_) && | 147 return GetIntFromJS(rvh, "onvisibilitycalls", &onvisibilitycalls_) && |
| 148 GetIntFromJS(rvh, "onchangecalls", &onchangecalls_) && |
| 147 GetIntFromJS(rvh, "onsubmitcalls", &onsubmitcalls_) && | 149 GetIntFromJS(rvh, "onsubmitcalls", &onsubmitcalls_) && |
| 148 GetIntFromJS(rvh, "oncancelcalls", &oncancelcalls_) && | 150 GetIntFromJS(rvh, "oncancelcalls", &oncancelcalls_) && |
| 149 GetIntFromJS(rvh, "onresizecalls", &onresizecalls_) && | 151 GetIntFromJS(rvh, "onresizecalls", &onresizecalls_) && |
| 150 GetIntFromJS(rvh, "onfocuscalls", &onfocuscalls_) && | 152 GetIntFromJS(rvh, "onfocuscalls", &onfocuscalls_) && |
| 151 GetIntFromJS(rvh, "onblurcalls", &onblurcalls_) && | 153 GetIntFromJS(rvh, "onblurcalls", &onblurcalls_) && |
| 152 GetStringFromJS(rvh, "value", &value_) && | 154 GetStringFromJS(rvh, "value", &value_) && |
| 153 GetBoolFromJS(rvh, "verbatim", &verbatim_) && | 155 GetBoolFromJS(rvh, "verbatim", &verbatim_) && |
| 154 GetIntFromJS(rvh, "height", &height_); | 156 GetIntFromJS(rvh, "height", &height_); |
| 155 } | 157 } |
| 156 | 158 |
| 157 bool ExecuteScript(const std::string& script) WARN_UNUSED_RESULT { | 159 bool ExecuteScript(const std::string& script) WARN_UNUSED_RESULT { |
| 158 return content::ExecuteJavaScript( | 160 return content::ExecuteJavaScript( |
| 159 instant()->GetPreviewContents()->web_contents()->GetRenderViewHost(), | 161 instant()->GetPreviewContents()->web_contents()->GetRenderViewHost(), |
| 160 std::wstring(), UTF8ToWide(script)); | 162 std::wstring(), UTF8ToWide(script)); |
| 161 } | 163 } |
| 162 | 164 |
| 163 bool CheckVisibilityIs(TabContents* tab, bool expected) WARN_UNUSED_RESULT { | 165 bool CheckVisibilityIs(TabContents* tab, bool expected) WARN_UNUSED_RESULT { |
| 164 bool actual = !expected; // Purposely start with a mis-match. | 166 bool actual = !expected; // Purposely start with a mis-match. |
| 165 // We can only use ASSERT_*() in a method that returns void, hence this | 167 // We can only use ASSERT_*() in a method that returns void, hence this |
| 166 // convoluted check. | 168 // convoluted check. |
| 167 return GetBoolFromJS(tab->web_contents()->GetRenderViewHost(), | 169 return GetBoolFromJS(tab->web_contents()->GetRenderViewHost(), |
| 168 "!document.webkitHidden", &actual) && | 170 "!document.webkitHidden", &actual) && |
| 169 actual == expected; | 171 actual == expected; |
| 170 } | 172 } |
| 171 | 173 |
| 174 int onvisibilitycalls_; |
| 172 int onchangecalls_; | 175 int onchangecalls_; |
| 173 int onsubmitcalls_; | 176 int onsubmitcalls_; |
| 174 int oncancelcalls_; | 177 int oncancelcalls_; |
| 175 int onresizecalls_; | 178 int onresizecalls_; |
| 176 int onfocuscalls_; | 179 int onfocuscalls_; |
| 177 int onblurcalls_; | 180 int onblurcalls_; |
| 178 | 181 |
| 179 std::string value_; | 182 std::string value_; |
| 180 bool verbatim_; | 183 bool verbatim_; |
| 181 int height_; | 184 int height_; |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 | 263 |
| 261 // Stash a reference to the preview, so we can refer to it after commit. | 264 // Stash a reference to the preview, so we can refer to it after commit. |
| 262 TabContents* preview_tab = instant()->GetPreviewContents(); | 265 TabContents* preview_tab = instant()->GetPreviewContents(); |
| 263 EXPECT_TRUE(preview_tab); | 266 EXPECT_TRUE(preview_tab); |
| 264 | 267 |
| 265 // The state of the searchbox before the commit. | 268 // The state of the searchbox before the commit. |
| 266 EXPECT_TRUE(UpdateSearchState(preview_tab)); | 269 EXPECT_TRUE(UpdateSearchState(preview_tab)); |
| 267 EXPECT_EQ("search", value_); | 270 EXPECT_EQ("search", value_); |
| 268 EXPECT_FALSE(verbatim_); | 271 EXPECT_FALSE(verbatim_); |
| 269 EXPECT_EQ(0, onsubmitcalls_); | 272 EXPECT_EQ(0, onsubmitcalls_); |
| 273 EXPECT_EQ(1, onvisibilitycalls_); |
| 270 | 274 |
| 271 // Before the commit, the active tab is the NTP (i.e., not Instant). | 275 // Before the commit, the active tab is the NTP (i.e., not Instant). |
| 272 TabContents* active_tab = chrome::GetActiveTabContents(browser()); | 276 TabContents* active_tab = chrome::GetActiveTabContents(browser()); |
| 273 EXPECT_NE(preview_tab, active_tab); | 277 EXPECT_NE(preview_tab, active_tab); |
| 274 EXPECT_EQ(1, active_tab->web_contents()->GetController().GetEntryCount()); | 278 EXPECT_EQ(1, active_tab->web_contents()->GetController().GetEntryCount()); |
| 275 EXPECT_EQ(std::string(chrome::kAboutBlankURL), | 279 EXPECT_EQ(std::string(chrome::kAboutBlankURL), |
| 276 omnibox()->model()->PermanentURL().spec()); | 280 omnibox()->model()->PermanentURL().spec()); |
| 277 | 281 |
| 278 // Commit the search by pressing Enter. | 282 // Commit the search by pressing Enter. |
| 279 browser()->window()->GetLocationBar()->AcceptInput(); | 283 browser()->window()->GetLocationBar()->AcceptInput(); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 303 std::string value; | 307 std::string value; |
| 304 EXPECT_TRUE(GetStringFromJS(preview_tab->web_contents()->GetRenderViewHost(), | 308 EXPECT_TRUE(GetStringFromJS(preview_tab->web_contents()->GetRenderViewHost(), |
| 305 "chrome.searchBox.value", &value)); | 309 "chrome.searchBox.value", &value)); |
| 306 EXPECT_EQ("", value); | 310 EXPECT_EQ("", value); |
| 307 | 311 |
| 308 // However, the page should've correctly received the committed query. | 312 // However, the page should've correctly received the committed query. |
| 309 EXPECT_TRUE(UpdateSearchState(preview_tab)); | 313 EXPECT_TRUE(UpdateSearchState(preview_tab)); |
| 310 EXPECT_EQ("search", value_); | 314 EXPECT_EQ("search", value_); |
| 311 EXPECT_TRUE(verbatim_); | 315 EXPECT_TRUE(verbatim_); |
| 312 EXPECT_EQ(1, onsubmitcalls_); | 316 EXPECT_EQ(1, onsubmitcalls_); |
| 317 EXPECT_EQ(1, onvisibilitycalls_); |
| 313 } | 318 } |
| 314 | 319 |
| 315 // Test that the oncancel event is dispatched upon clicking on the preview. | 320 // Test that the oncancel event is dispatched upon clicking on the preview. |
| 316 IN_PROC_BROWSER_TEST_F(InstantTest, OnCancelEvent) { | 321 IN_PROC_BROWSER_TEST_F(InstantTest, OnCancelEvent) { |
| 317 ASSERT_NO_FATAL_FAILURE(SetupInstant("instant.html")); | 322 ASSERT_NO_FATAL_FAILURE(SetupInstant("instant.html")); |
| 318 EXPECT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 323 EXPECT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 324 FocusOmniboxAndWaitForInstantSupport(); |
| 319 SetOmniboxTextAndWaitForInstantToShow("search"); | 325 SetOmniboxTextAndWaitForInstantToShow("search"); |
| 320 | 326 |
| 321 // Stash a reference to the preview, so we can refer to it after commit. | 327 // Stash a reference to the preview, so we can refer to it after commit. |
| 322 TabContents* preview_tab = instant()->GetPreviewContents(); | 328 TabContents* preview_tab = instant()->GetPreviewContents(); |
| 323 EXPECT_TRUE(preview_tab); | 329 EXPECT_TRUE(preview_tab); |
| 324 | 330 |
| 325 // The state of the searchbox before the commit. | 331 // The state of the searchbox before the commit. |
| 326 EXPECT_TRUE(UpdateSearchState(preview_tab)); | 332 EXPECT_TRUE(UpdateSearchState(preview_tab)); |
| 327 EXPECT_EQ("search", value_); | 333 EXPECT_EQ("search", value_); |
| 328 EXPECT_FALSE(verbatim_); | 334 EXPECT_FALSE(verbatim_); |
| 329 EXPECT_EQ(0, oncancelcalls_); | 335 EXPECT_EQ(0, oncancelcalls_); |
| 336 EXPECT_EQ(1, onvisibilitycalls_); |
| 330 | 337 |
| 331 // Before the commit, the active tab is the NTP (i.e., not Instant). | 338 // Before the commit, the active tab is the NTP (i.e., not Instant). |
| 332 TabContents* active_tab = chrome::GetActiveTabContents(browser()); | 339 TabContents* active_tab = chrome::GetActiveTabContents(browser()); |
| 333 EXPECT_NE(preview_tab, active_tab); | 340 EXPECT_NE(preview_tab, active_tab); |
| 334 EXPECT_EQ(1, active_tab->web_contents()->GetController().GetEntryCount()); | 341 EXPECT_EQ(1, active_tab->web_contents()->GetController().GetEntryCount()); |
| 335 EXPECT_EQ(std::string(chrome::kAboutBlankURL), | 342 EXPECT_EQ(std::string(chrome::kAboutBlankURL), |
| 336 omnibox()->model()->PermanentURL().spec()); | 343 omnibox()->model()->PermanentURL().spec()); |
| 337 | 344 |
| 338 // Commit the search by clicking on the preview. | 345 // Commit the search by clicking on the preview. |
| 339 ui_test_utils::ClickOnView(browser(), VIEW_ID_TAB_CONTAINER); | 346 ui_test_utils::ClickOnView(browser(), VIEW_ID_TAB_CONTAINER); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 363 std::string value; | 370 std::string value; |
| 364 EXPECT_TRUE(GetStringFromJS(preview_tab->web_contents()->GetRenderViewHost(), | 371 EXPECT_TRUE(GetStringFromJS(preview_tab->web_contents()->GetRenderViewHost(), |
| 365 "chrome.searchBox.value", &value)); | 372 "chrome.searchBox.value", &value)); |
| 366 EXPECT_EQ("", value); | 373 EXPECT_EQ("", value); |
| 367 | 374 |
| 368 // However, the page should've correctly received the committed query. | 375 // However, the page should've correctly received the committed query. |
| 369 EXPECT_TRUE(UpdateSearchState(preview_tab)); | 376 EXPECT_TRUE(UpdateSearchState(preview_tab)); |
| 370 EXPECT_EQ("search", value_); | 377 EXPECT_EQ("search", value_); |
| 371 EXPECT_TRUE(verbatim_); | 378 EXPECT_TRUE(verbatim_); |
| 372 EXPECT_EQ(1, oncancelcalls_); | 379 EXPECT_EQ(1, oncancelcalls_); |
| 380 EXPECT_EQ(1, onvisibilitycalls_); |
| 373 } | 381 } |
| 374 | 382 |
| 375 // Test that the onreisze event is dispatched upon typing in the omnibox. | 383 // Test that the onreisze event is dispatched upon typing in the omnibox. |
| 376 IN_PROC_BROWSER_TEST_F(InstantTest, OnResizeEvent) { | 384 IN_PROC_BROWSER_TEST_F(InstantTest, OnResizeEvent) { |
| 377 ASSERT_NO_FATAL_FAILURE(SetupInstant("instant.html")); | 385 ASSERT_NO_FATAL_FAILURE(SetupInstant("instant.html")); |
| 378 | 386 |
| 379 // This makes Instant load the preview, along with an initial onresize() (see | 387 // This makes Instant load the preview, along with an initial onresize() (see |
| 380 // SearchBoxExtension::PageSupportsInstant() for why). | 388 // SearchBoxExtension::PageSupportsInstant() for why). |
| 381 FocusOmniboxAndWaitForInstantSupport(); | 389 FocusOmniboxAndWaitForInstantSupport(); |
| 382 | 390 |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 866 base::Bind(&KeywordQueryDone, &run_loop3, &queries)); | 874 base::Bind(&KeywordQueryDone, &run_loop3, &queries)); |
| 867 run_loop3.Run(); | 875 run_loop3.Run(); |
| 868 ASSERT_TRUE(queries.size()); | 876 ASSERT_TRUE(queries.size()); |
| 869 EXPECT_EQ(ASCIIToUTF16("search"), queries[0]); | 877 EXPECT_EQ(ASCIIToUTF16("search"), queries[0]); |
| 870 } | 878 } |
| 871 | 879 |
| 872 // Test that creating a new window hides any currently showing Instant preview. | 880 // Test that creating a new window hides any currently showing Instant preview. |
| 873 IN_PROC_BROWSER_TEST_F(InstantTest, NewWindowDismissesInstant) { | 881 IN_PROC_BROWSER_TEST_F(InstantTest, NewWindowDismissesInstant) { |
| 874 ASSERT_NO_FATAL_FAILURE(SetupInstant("instant.html")); | 882 ASSERT_NO_FATAL_FAILURE(SetupInstant("instant.html")); |
| 875 EXPECT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 883 EXPECT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 884 FocusOmniboxAndWaitForInstantSupport(); |
| 876 SetOmniboxTextAndWaitForInstantToShow("search"); | 885 SetOmniboxTextAndWaitForInstantToShow("search"); |
| 877 | 886 |
| 878 Browser* previous_window = browser(); | 887 Browser* previous_window = browser(); |
| 879 EXPECT_TRUE(instant()->IsCurrent()); | 888 EXPECT_TRUE(instant()->IsCurrent()); |
| 880 EXPECT_TRUE(instant()->model()->is_ready()); | 889 EXPECT_TRUE(instant()->model()->is_ready()); |
| 881 | 890 |
| 882 InstantTestModelObserver observer(instant()->model()); | 891 InstantTestModelObserver observer(instant()->model()); |
| 883 chrome::NewEmptyWindow(browser()->profile()); | 892 chrome::NewEmptyWindow(browser()->profile()); |
| 884 observer.WaitUntilDisplayStateChanged(); | 893 observer.WaitUntilDisplayStateChanged(); |
| 885 | 894 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 965 // Check that a d with a dot above and below it is completed regardless of | 974 // Check that a d with a dot above and below it is completed regardless of |
| 966 // how that is encoded. | 975 // how that is encoded. |
| 967 // U+1E0D = LATIN SMALL LETTER D WITH DOT BELOW | 976 // U+1E0D = LATIN SMALL LETTER D WITH DOT BELOW |
| 968 // U+1E0B = LATIN SMALL LETTER D WITH DOT ABOVE | 977 // U+1E0B = LATIN SMALL LETTER D WITH DOT ABOVE |
| 969 EXPECT_TRUE(ExecuteScript("suggestion = [ { value: '\\u1e0d\\u0307oh' } ]")); | 978 EXPECT_TRUE(ExecuteScript("suggestion = [ { value: '\\u1e0d\\u0307oh' } ]")); |
| 970 | 979 |
| 971 instant()->Hide(); | 980 instant()->Hide(); |
| 972 SetOmniboxTextAndWaitForInstantToShow(WideToUTF8(L"\u1e0b\u0323")); | 981 SetOmniboxTextAndWaitForInstantToShow(WideToUTF8(L"\u1e0b\u0323")); |
| 973 EXPECT_EQ(WideToUTF16(L"\u1e0b\u0323oh"), omnibox()->GetText()); | 982 EXPECT_EQ(WideToUTF16(L"\u1e0b\u0323oh"), omnibox()->GetText()); |
| 974 } | 983 } |
| 984 |
| 985 // Test that the preview can be committed onto a new tab. |
| 986 IN_PROC_BROWSER_TEST_F(InstantTest, CommitInNewTab) { |
| 987 ASSERT_NO_FATAL_FAILURE(SetupInstant("instant.html")); |
| 988 FocusOmniboxAndWaitForInstantSupport(); |
| 989 SetOmniboxTextAndWaitForInstantToShow("search"); |
| 990 |
| 991 // Stash a reference to the preview, so we can refer to it after commit. |
| 992 TabContents* preview_tab = instant()->GetPreviewContents(); |
| 993 EXPECT_TRUE(preview_tab); |
| 994 |
| 995 // The state of the searchbox before the commit. |
| 996 EXPECT_TRUE(UpdateSearchState(preview_tab)); |
| 997 EXPECT_EQ("search", value_); |
| 998 EXPECT_FALSE(verbatim_); |
| 999 EXPECT_EQ(0, onsubmitcalls_); |
| 1000 EXPECT_EQ(1, onvisibilitycalls_); |
| 1001 |
| 1002 // Before the commit, the active tab is the NTP (i.e., not Instant). |
| 1003 TabContents* active_tab = chrome::GetActiveTabContents(browser()); |
| 1004 EXPECT_NE(preview_tab, active_tab); |
| 1005 EXPECT_EQ(1, active_tab->web_contents()->GetController().GetEntryCount()); |
| 1006 EXPECT_EQ(std::string(chrome::kAboutBlankURL), |
| 1007 omnibox()->model()->PermanentURL().spec()); |
| 1008 |
| 1009 // Commit the search by pressing Alt-Enter. |
| 1010 omnibox()->model()->AcceptInput(NEW_FOREGROUND_TAB, false); |
| 1011 |
| 1012 // After the commit, Instant should not be showing. |
| 1013 EXPECT_FALSE(instant()->IsCurrent()); |
| 1014 EXPECT_FALSE(instant()->model()->is_ready()); |
| 1015 |
| 1016 // The old loader is deleted and a new one is created. |
| 1017 EXPECT_TRUE(instant()->GetPreviewContents()); |
| 1018 EXPECT_NE(instant()->GetPreviewContents(), preview_tab); |
| 1019 |
| 1020 // Check that we have two tabs and that the active tab is indeed what was once |
| 1021 // the preview. The preview tab should have just one navigation entry, for the |
| 1022 // Instant search that was committed. |
| 1023 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 1024 EXPECT_EQ(preview_tab, chrome::GetActiveTabContents(browser())); |
| 1025 EXPECT_EQ(1, preview_tab->web_contents()->GetController().GetEntryCount()); |
| 1026 |
| 1027 // Check that the omnibox contains the Instant URL we loaded. |
| 1028 std::string instant_url = TemplateURLServiceFactory::GetForProfile( |
| 1029 browser()->profile())->GetDefaultSearchProvider()->instant_url_ref(). |
| 1030 ReplaceSearchTerms(TemplateURLRef::SearchTermsArgs(string16())); |
| 1031 EXPECT_EQ(instant_url, omnibox()->model()->PermanentURL().spec()); |
| 1032 |
| 1033 // Check that the searchbox API values have been reset. |
| 1034 std::string value; |
| 1035 EXPECT_TRUE(GetStringFromJS(preview_tab->web_contents()->GetRenderViewHost(), |
| 1036 "chrome.searchBox.value", &value)); |
| 1037 EXPECT_EQ("", value); |
| 1038 |
| 1039 // However, the page should've correctly received the committed query. |
| 1040 EXPECT_TRUE(UpdateSearchState(preview_tab)); |
| 1041 EXPECT_EQ("search", value_); |
| 1042 EXPECT_TRUE(verbatim_); |
| 1043 EXPECT_EQ(1, onsubmitcalls_); |
| 1044 EXPECT_EQ(1, onvisibilitycalls_); |
| 1045 } |
| OLD | NEW |