OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/stringprintf.h" | 6 #include "base/stringprintf.h" |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chrome/browser/autocomplete/autocomplete_edit.h" | 8 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
9 #include "chrome/browser/content_settings/host_content_settings_map.h" | 9 #include "chrome/browser/content_settings/host_content_settings_map.h" |
10 #include "chrome/browser/instant/instant_controller.h" | 10 #include "chrome/browser/instant/instant_controller.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 #define MAYBE_NonSearchToSearch DISABLED_NonSearchToSearch | 52 #define MAYBE_NonSearchToSearch DISABLED_NonSearchToSearch |
53 #define MAYBE_SearchToNonSearch DISABLED_SearchToNonSearch | 53 #define MAYBE_SearchToNonSearch DISABLED_SearchToNonSearch |
54 #define MAYBE_ValidHeight DISABLED_ValidHeight | 54 #define MAYBE_ValidHeight DISABLED_ValidHeight |
55 #define MAYBE_OnSubmitEvent DISABLED_OnSubmitEvent | 55 #define MAYBE_OnSubmitEvent DISABLED_OnSubmitEvent |
56 #define MAYBE_OnCancelEvent DISABLED_OnCancelEvent | 56 #define MAYBE_OnCancelEvent DISABLED_OnCancelEvent |
57 #define MAYBE_InstantCompleteNever DISABLED_InstantCompleteNever | 57 #define MAYBE_InstantCompleteNever DISABLED_InstantCompleteNever |
58 #define MAYBE_InstantCompleteDelayed DISABLED_InstantCompleteDelayed | 58 #define MAYBE_InstantCompleteDelayed DISABLED_InstantCompleteDelayed |
59 #define MAYBE_DontCrashOnBlockedJS DISABLED_DontCrashOnBlockedJS | 59 #define MAYBE_DontCrashOnBlockedJS DISABLED_DontCrashOnBlockedJS |
60 #define MAYBE_DontPersistSearchbox DISABLED_DontPersistSearchbox | 60 #define MAYBE_DontPersistSearchbox DISABLED_DontPersistSearchbox |
61 #define MAYBE_PreloadsInstant DISABLED_PreloadsInstant | 61 #define MAYBE_PreloadsInstant DISABLED_PreloadsInstant |
| 62 #define MAYBE_PageVisibilityTest DISABLED_PageVisibilityTest |
62 #define MAYBE_ExperimentEnabled DISABLED_ExperimentEnabled | 63 #define MAYBE_ExperimentEnabled DISABLED_ExperimentEnabled |
63 #define MAYBE_IntranetPathLooksLikeSearch DISABLED_IntranetPathLooksLikeSearch | 64 #define MAYBE_IntranetPathLooksLikeSearch DISABLED_IntranetPathLooksLikeSearch |
64 #else | 65 #else |
65 #define MAYBE_OnChangeEvent OnChangeEvent | 66 #define MAYBE_OnChangeEvent OnChangeEvent |
66 #define MAYBE_SetSuggestionsArrayOfStrings SetSuggestionsArrayOfStrings | 67 #define MAYBE_SetSuggestionsArrayOfStrings SetSuggestionsArrayOfStrings |
67 #define MAYBE_SetSuggestionsEmptyArray SetSuggestionsEmptyArray | 68 #define MAYBE_SetSuggestionsEmptyArray SetSuggestionsEmptyArray |
68 #define MAYBE_SetSuggestionsValidJson SetSuggestionsValidJson | 69 #define MAYBE_SetSuggestionsValidJson SetSuggestionsValidJson |
69 #define MAYBE_SetSuggestionsInvalidSuggestions SetSuggestionsInvalidSuggestions | 70 #define MAYBE_SetSuggestionsInvalidSuggestions SetSuggestionsInvalidSuggestions |
70 #define MAYBE_SetSuggestionsEmptyJson SetSuggestionsEmptyJson | 71 #define MAYBE_SetSuggestionsEmptyJson SetSuggestionsEmptyJson |
71 #define MAYBE_SetSuggestionsEmptySuggestions SetSuggestionsEmptySuggestions | 72 #define MAYBE_SetSuggestionsEmptySuggestions SetSuggestionsEmptySuggestions |
72 #define MAYBE_SetSuggestionsEmptySuggestion SetSuggestionsEmptySuggestion | 73 #define MAYBE_SetSuggestionsEmptySuggestion SetSuggestionsEmptySuggestion |
73 #define MAYBE_ShowPreviewNonSearch ShowPreviewNonSearch | 74 #define MAYBE_ShowPreviewNonSearch ShowPreviewNonSearch |
74 #define MAYBE_NonSearchToSearch NonSearchToSearch | 75 #define MAYBE_NonSearchToSearch NonSearchToSearch |
75 #define MAYBE_SearchToNonSearch SearchToNonSearch | 76 #define MAYBE_SearchToNonSearch SearchToNonSearch |
76 #define MAYBE_ValidHeight ValidHeight | 77 #define MAYBE_ValidHeight ValidHeight |
77 #define MAYBE_OnSubmitEvent OnSubmitEvent | 78 #define MAYBE_OnSubmitEvent OnSubmitEvent |
78 #define MAYBE_OnCancelEvent OnCancelEvent | 79 #define MAYBE_OnCancelEvent OnCancelEvent |
79 #define MAYBE_InstantCompleteNever InstantCompleteNever | 80 #define MAYBE_InstantCompleteNever InstantCompleteNever |
80 #define MAYBE_InstantCompleteDelayed InstantCompleteDelayed | 81 #define MAYBE_InstantCompleteDelayed InstantCompleteDelayed |
81 #define MAYBE_DontCrashOnBlockedJS DontCrashOnBlockedJS | 82 #define MAYBE_DontCrashOnBlockedJS DontCrashOnBlockedJS |
82 #define MAYBE_DontPersistSearchbox DontPersistSearchbox | 83 #define MAYBE_DontPersistSearchbox DontPersistSearchbox |
83 #define MAYBE_PreloadsInstant PreloadsInstant | 84 #define MAYBE_PreloadsInstant PreloadsInstant |
| 85 #define MAYBE_PageVisibilityTest PageVisibilityTest |
84 #define MAYBE_ExperimentEnabled ExperimentEnabled | 86 #define MAYBE_ExperimentEnabled ExperimentEnabled |
85 #define MAYBE_IntranetPathLooksLikeSearch IntranetPathLooksLikeSearch | 87 #define MAYBE_IntranetPathLooksLikeSearch IntranetPathLooksLikeSearch |
86 #endif | 88 #endif |
87 | 89 |
88 #if defined(OS_MACOSX) || defined(OS_LINUX) | 90 #if defined(OS_MACOSX) || defined(OS_LINUX) |
89 // Showing as flaky on Mac and Linux. | 91 // Showing as flaky on Mac and Linux. |
90 // http://crbug.com/70860 | 92 // http://crbug.com/70860 |
91 #define MAYBE_SearchServerDoesntSupportInstant \ | 93 #define MAYBE_SearchServerDoesntSupportInstant \ |
92 DISABLED_SearchServerDoesntSupportInstant | 94 DISABLED_SearchServerDoesntSupportInstant |
93 #define MAYBE_NonSearchToSearchDoesntSupportInstant \ | 95 #define MAYBE_NonSearchToSearchDoesntSupportInstant \ |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 "window.domAutomationController.send(%s)", function.c_str()); | 260 "window.domAutomationController.send(%s)", function.c_str()); |
259 return ui_test_utils::ExecuteJavaScriptAndExtractBool( | 261 return ui_test_utils::ExecuteJavaScriptAndExtractBool( |
260 tab_contents->render_view_host(), | 262 tab_contents->render_view_host(), |
261 std::wstring(), UTF8ToWide(script), result); | 263 std::wstring(), UTF8ToWide(script), result); |
262 } | 264 } |
263 | 265 |
264 bool HasPreview() { | 266 bool HasPreview() { |
265 return browser()->instant()->GetPreviewContents() != NULL; | 267 return browser()->instant()->GetPreviewContents() != NULL; |
266 } | 268 } |
267 | 269 |
| 270 bool IsVisible(TabContents* tab_contents) { |
| 271 std::string visibility; |
| 272 if (!GetStringFromJavascript(tab_contents, "document.webkitVisibilityState", |
| 273 &visibility)) |
| 274 return false; |
| 275 return visibility == "visible"; |
| 276 } |
| 277 |
268 // Returns the state of the search box as a string. This consists of the | 278 // Returns the state of the search box as a string. This consists of the |
269 // following: | 279 // following: |
270 // window.chrome.sv | 280 // window.chrome.sv |
271 // window.onsubmitcalls | 281 // window.onsubmitcalls |
272 // window.oncancelcalls | 282 // window.oncancelcalls |
273 // window.onchangecalls | 283 // window.onchangecalls |
274 // 'true' if window.onresizecalls has been sent, otherwise false. | 284 // 'true' if window.onresizecalls has been sent, otherwise false. |
275 // window.beforeLoadSearchBox.value | 285 // window.beforeLoadSearchBox.value |
276 // window.beforeLoadSearchBox.verbatim | 286 // window.beforeLoadSearchBox.verbatim |
277 // window.chrome.searchBox.value | 287 // window.chrome.searchBox.value |
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 FindLocationBar(); | 901 FindLocationBar(); |
892 location_bar_->FocusLocation(false); | 902 location_bar_->FocusLocation(false); |
893 TabContentsWrapper* tab_contents = browser()->instant()->GetPreviewContents(); | 903 TabContentsWrapper* tab_contents = browser()->instant()->GetPreviewContents(); |
894 EXPECT_TRUE(tab_contents); | 904 EXPECT_TRUE(tab_contents); |
895 | 905 |
896 instant_support_observer.Wait(); | 906 instant_support_observer.Wait(); |
897 | 907 |
898 // Instant should have a preview, but not display it. | 908 // Instant should have a preview, but not display it. |
899 EXPECT_TRUE(HasPreview()); | 909 EXPECT_TRUE(HasPreview()); |
900 EXPECT_FALSE(browser()->instant()->is_displayable()); | 910 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 911 EXPECT_FALSE(IsVisible(tab_contents->tab_contents())); |
901 | 912 |
902 // Adding a new tab shouldn't delete (or recreate) the TabContentsWrapper. | 913 // Adding a new tab shouldn't delete (or recreate) the TabContentsWrapper. |
903 AddBlankTabAndShow(browser()); | 914 AddBlankTabAndShow(browser()); |
904 EXPECT_EQ(tab_contents, browser()->instant()->GetPreviewContents()); | 915 EXPECT_EQ(tab_contents, browser()->instant()->GetPreviewContents()); |
905 | 916 |
906 // Doing a search should still use the same loader for the preview. | 917 // Doing a search should still use the same loader for the preview. |
907 SetLocationBarText("def"); | 918 SetLocationBarText("def"); |
908 EXPECT_EQ(tab_contents, browser()->instant()->GetPreviewContents()); | 919 EXPECT_EQ(tab_contents, browser()->instant()->GetPreviewContents()); |
909 | 920 |
910 // Verify that the preview is in fact showing instant search. | 921 // Verify that the preview is in fact showing instant search. |
(...skipping 17 matching lines...) Expand all Loading... |
928 | 939 |
929 // Navigate to a URL that looks like a search (when the scheme is stripped). | 940 // Navigate to a URL that looks like a search (when the scheme is stripped). |
930 // It's okay if the host is bogus or the navigation fails, since we only care | 941 // It's okay if the host is bogus or the navigation fails, since we only care |
931 // that instant doesn't act on it. | 942 // that instant doesn't act on it. |
932 ui_test_utils::NavigateToURL(browser(), GURL("http://baby/beluga")); | 943 ui_test_utils::NavigateToURL(browser(), GURL("http://baby/beluga")); |
933 | 944 |
934 // Instant should not have tried to load a preview for this "search". | 945 // Instant should not have tried to load a preview for this "search". |
935 EXPECT_FALSE(HasPreview()); | 946 EXPECT_FALSE(HasPreview()); |
936 } | 947 } |
937 | 948 |
| 949 // Tests that the instant search page's visibility is set correctly. |
| 950 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_PageVisibilityTest) { |
| 951 ASSERT_TRUE(test_server()->Start()); |
| 952 EnableInstant(); |
| 953 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("search.html")); |
| 954 |
| 955 // Initially navigate to the empty page which should be visible. |
| 956 ui_test_utils::NavigateToURL(browser(), test_server()->GetURL("")); |
| 957 TabContents* initial_contents = browser()->GetSelectedTabContents(); |
| 958 EXPECT_TRUE(IsVisible(initial_contents)); |
| 959 |
| 960 // Type something for instant to trigger and wait for preview to navigate. |
| 961 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); |
| 962 location_bar_->FocusLocation(false); |
| 963 SetupLocationBar(); |
| 964 SetupPreview(); |
| 965 SetLocationBarText("def"); |
| 966 TabContents* preview_contents = |
| 967 browser()->instant()->GetPreviewContents()->tab_contents(); |
| 968 EXPECT_TRUE(IsVisible(preview_contents)); |
| 969 EXPECT_FALSE(IsVisible(initial_contents)); |
| 970 |
| 971 // Delete the user text we should show the previous page. |
| 972 location_bar_->location_entry()->SetUserText(UTF8ToUTF16("")); |
| 973 EXPECT_FALSE(IsVisible(preview_contents)); |
| 974 EXPECT_TRUE(IsVisible(initial_contents)); |
| 975 |
| 976 // Set the user text back and we should see the preview again. |
| 977 location_bar_->location_entry()->SetUserText(UTF8ToUTF16("def")); |
| 978 EXPECT_TRUE(IsVisible(preview_contents)); |
| 979 EXPECT_FALSE(IsVisible(initial_contents)); |
| 980 |
| 981 // Commit the preview. |
| 982 SendKey(ui::VKEY_RETURN); |
| 983 EXPECT_EQ(preview_contents, browser()->GetSelectedTabContents()); |
| 984 EXPECT_TRUE(IsVisible(preview_contents)); |
| 985 } |
| 986 |
| 987 |
938 // Tests the INSTANT experiment of the field trial. | 988 // Tests the INSTANT experiment of the field trial. |
939 class InstantFieldTrialInstantTest : public InstantTest { | 989 class InstantFieldTrialInstantTest : public InstantTest { |
940 public: | 990 public: |
941 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 991 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
942 command_line->AppendSwitchASCII(switches::kInstantFieldTrial, | 992 command_line->AppendSwitchASCII(switches::kInstantFieldTrial, |
943 switches::kInstantFieldTrialInstant); | 993 switches::kInstantFieldTrialInstant); |
944 } | 994 } |
945 }; | 995 }; |
946 | 996 |
947 // Tests that instant is active, even without calling EnableInstant(). | 997 // Tests that instant is active, even without calling EnableInstant(). |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 | 1138 |
1089 // Wait for the preview to navigate. | 1139 // Wait for the preview to navigate. |
1090 WaitForPreviewToNavigate(); | 1140 WaitForPreviewToNavigate(); |
1091 instant_support_observer.Wait(); | 1141 instant_support_observer.Wait(); |
1092 | 1142 |
1093 // Instant should be active, but not displayable or committable. | 1143 // Instant should be active, but not displayable or committable. |
1094 EXPECT_TRUE(HasPreview()); | 1144 EXPECT_TRUE(HasPreview()); |
1095 EXPECT_FALSE(browser()->instant()->is_displayable()); | 1145 EXPECT_FALSE(browser()->instant()->is_displayable()); |
1096 EXPECT_FALSE(browser()->instant()->PrepareForCommit()); | 1146 EXPECT_FALSE(browser()->instant()->PrepareForCommit()); |
1097 } | 1147 } |
OLD | NEW |