OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <sstream> | 5 #include <sstream> |
6 | 6 |
7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 } // namespace | 65 } // namespace |
66 | 66 |
67 class InstantExtendedTest : public InProcessBrowserTest, | 67 class InstantExtendedTest : public InProcessBrowserTest, |
68 public InstantTestBase { | 68 public InstantTestBase { |
69 public: | 69 public: |
70 InstantExtendedTest() | 70 InstantExtendedTest() |
71 : on_most_visited_change_calls_(0), | 71 : on_most_visited_change_calls_(0), |
72 most_visited_items_count_(0), | 72 most_visited_items_count_(0), |
73 first_most_visited_item_id_(0), | 73 first_most_visited_item_id_(0), |
74 on_native_suggestions_calls_(0), | 74 on_native_suggestions_calls_(0), |
75 on_change_calls_(0) { | 75 on_change_calls_(0), |
| 76 submit_count_(0) { |
76 } | 77 } |
77 protected: | 78 protected: |
78 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 79 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { |
79 chrome::EnableInstantExtendedAPIForTesting(); | 80 chrome::EnableInstantExtendedAPIForTesting(); |
80 ASSERT_TRUE(https_test_server().Start()); | 81 ASSERT_TRUE(https_test_server().Start()); |
81 GURL instant_url = https_test_server().GetURL( | 82 GURL instant_url = https_test_server().GetURL( |
82 "files/instant_extended.html?strk=1&"); | 83 "files/instant_extended.html?strk=1&"); |
83 InstantTestBase::Init(instant_url); | 84 InstantTestBase::Init(instant_url); |
84 } | 85 } |
85 | 86 |
(...skipping 22 matching lines...) Expand all Loading... |
108 bool UpdateSearchState(content::WebContents* contents) WARN_UNUSED_RESULT { | 109 bool UpdateSearchState(content::WebContents* contents) WARN_UNUSED_RESULT { |
109 return GetIntFromJS(contents, "onMostVisitedChangedCalls", | 110 return GetIntFromJS(contents, "onMostVisitedChangedCalls", |
110 &on_most_visited_change_calls_) && | 111 &on_most_visited_change_calls_) && |
111 GetIntFromJS(contents, "mostVisitedItemsCount", | 112 GetIntFromJS(contents, "mostVisitedItemsCount", |
112 &most_visited_items_count_) && | 113 &most_visited_items_count_) && |
113 GetIntFromJS(contents, "firstMostVisitedItemId", | 114 GetIntFromJS(contents, "firstMostVisitedItemId", |
114 &first_most_visited_item_id_) && | 115 &first_most_visited_item_id_) && |
115 GetIntFromJS(contents, "onNativeSuggestionsCalls", | 116 GetIntFromJS(contents, "onNativeSuggestionsCalls", |
116 &on_native_suggestions_calls_) && | 117 &on_native_suggestions_calls_) && |
117 GetIntFromJS(contents, "onChangeCalls", | 118 GetIntFromJS(contents, "onChangeCalls", |
118 &on_change_calls_); | 119 &on_change_calls_) && |
| 120 GetIntFromJS(contents, "submitCount", |
| 121 &submit_count_) && |
| 122 GetStringFromJS(contents, "apiHandle.value", |
| 123 &query_value_); |
119 } | 124 } |
120 | 125 |
121 int on_most_visited_change_calls_; | 126 int on_most_visited_change_calls_; |
122 int most_visited_items_count_; | 127 int most_visited_items_count_; |
123 int first_most_visited_item_id_; | 128 int first_most_visited_item_id_; |
124 int on_native_suggestions_calls_; | 129 int on_native_suggestions_calls_; |
125 int on_change_calls_; | 130 int on_change_calls_; |
| 131 int submit_count_; |
| 132 std::string query_value_; |
126 }; | 133 }; |
127 | 134 |
128 // Test class used to verify chrome-search: scheme and access policy from the | 135 // Test class used to verify chrome-search: scheme and access policy from the |
129 // Instant overlay. This is a subclass of |ExtensionBrowserTest| because it | 136 // Instant overlay. This is a subclass of |ExtensionBrowserTest| because it |
130 // loads a theme that provides a background image. | 137 // loads a theme that provides a background image. |
131 class InstantPolicyTest : public ExtensionBrowserTest, public InstantTestBase { | 138 class InstantPolicyTest : public ExtensionBrowserTest, public InstantTestBase { |
132 public: | 139 public: |
133 InstantPolicyTest() {} | 140 InstantPolicyTest() {} |
134 | 141 |
135 protected: | 142 protected: |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 std::string result; | 448 std::string result; |
442 EXPECT_TRUE(GetStringFromJS(instant()->GetOverlayContents(), | 449 EXPECT_TRUE(GetStringFromJS(instant()->GetOverlayContents(), |
443 "window.chrome.searchBox.value", | 450 "window.chrome.searchBox.value", |
444 &result)); | 451 &result)); |
445 EXPECT_EQ("hello", result); | 452 EXPECT_EQ("hello", result); |
446 | 453 |
447 EXPECT_TRUE(HasUserInputInProgress()); | 454 EXPECT_TRUE(HasUserInputInProgress()); |
448 // TODO(beaudoin): Figure out why this fails. | 455 // TODO(beaudoin): Figure out why this fails. |
449 // EXPECT_FALSE(HasTemporaryText()); | 456 // EXPECT_FALSE(HasTemporaryText()); |
450 | 457 |
451 | |
452 // Commit the search by pressing Enter. | 458 // Commit the search by pressing Enter. |
453 browser()->window()->GetLocationBar()->AcceptInput(); | 459 browser()->window()->GetLocationBar()->AcceptInput(); |
454 EXPECT_EQ("hello", GetOmniboxText()); | 460 EXPECT_EQ("hello", GetOmniboxText()); |
455 } | 461 } |
456 | 462 |
457 // This test simulates a search provider using the InstantExtended API to | 463 // This test simulates a search provider using the InstantExtended API to |
| 464 // navigate through the suggested results and back to the original user query. |
| 465 // If this test starts to flake, it may be that the second call to AcceptInput |
| 466 // below causes instant()->instant_tab() to no longer be valid due to e.g. a |
| 467 // navigation. In that case, see https://codereview.chromium.org/12895007/#msg28 |
| 468 // and onwards for possible alternatives. |
| 469 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, |
| 470 NavigateToURLSuggestionHitEnterAndLookForSubmit) { |
| 471 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 472 FocusOmniboxAndWaitForInstantExtendedSupport(); |
| 473 |
| 474 // Create an observer to wait for the instant tab to support Instant. |
| 475 content::WindowedNotificationObserver observer( |
| 476 chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, |
| 477 content::NotificationService::AllSources()); |
| 478 |
| 479 // Do a search and commit it. |
| 480 SetOmniboxTextAndWaitForOverlayToShow("hello k"); |
| 481 EXPECT_EQ(ASCIIToUTF16("hello k"), omnibox()->GetText()); |
| 482 browser()->window()->GetLocationBar()->AcceptInput(); |
| 483 observer.Wait(); |
| 484 |
| 485 SetOmniboxText("http"); |
| 486 EXPECT_EQ("http", GetOmniboxText()); |
| 487 |
| 488 SendDownArrow(); |
| 489 EXPECT_EQ("result 1", GetOmniboxText()); |
| 490 SendDownArrow(); |
| 491 EXPECT_EQ("result 2", GetOmniboxText()); |
| 492 SendDownArrow(); |
| 493 EXPECT_EQ("http://www.google.com", GetOmniboxText()); |
| 494 |
| 495 EXPECT_TRUE(HasUserInputInProgress()); |
| 496 |
| 497 EXPECT_TRUE(UpdateSearchState(instant()->instant_tab()->contents())); |
| 498 // Note the commit count is initially 1 due to the AcceptInput() call above. |
| 499 EXPECT_EQ(1, submit_count_); |
| 500 |
| 501 std::string old_query_value(query_value_); |
| 502 |
| 503 // Commit the search by pressing Enter. |
| 504 browser()->window()->GetLocationBar()->AcceptInput(); |
| 505 |
| 506 // Make sure a submit message got sent. |
| 507 EXPECT_TRUE(UpdateSearchState(instant()->instant_tab()->contents())); |
| 508 EXPECT_EQ(2, submit_count_); |
| 509 EXPECT_EQ(old_query_value, query_value_); |
| 510 } |
| 511 |
| 512 // This test simulates a search provider using the InstantExtended API to |
458 // navigate through the suggested results and hitting escape to get back to the | 513 // navigate through the suggested results and hitting escape to get back to the |
459 // original user query. | 514 // original user query. |
460 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, NavigateSuggestionsAndHitEscape) { | 515 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, NavigateSuggestionsAndHitEscape) { |
461 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 516 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
462 FocusOmniboxAndWaitForInstantExtendedSupport(); | 517 FocusOmniboxAndWaitForInstantExtendedSupport(); |
463 | 518 |
464 SetOmniboxTextAndWaitForOverlayToShow("hello"); | 519 SetOmniboxTextAndWaitForOverlayToShow("hello"); |
465 EXPECT_EQ("hello", GetOmniboxText()); | 520 EXPECT_EQ("hello", GetOmniboxText()); |
466 | 521 |
467 SendDownArrow(); | 522 SendDownArrow(); |
(...skipping 961 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1429 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 1484 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
1430 | 1485 |
1431 EXPECT_EQ(instant_url(), instant()->ntp_->contents()->GetURL()); | 1486 EXPECT_EQ(instant_url(), instant()->ntp_->contents()->GetURL()); |
1432 | 1487 |
1433 // The second argument says to use only the local overlay. | 1488 // The second argument says to use only the local overlay. |
1434 instant()->SetInstantEnabled(false, true); | 1489 instant()->SetInstantEnabled(false, true); |
1435 | 1490 |
1436 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), | 1491 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), |
1437 instant()->ntp_->contents()->GetURL()); | 1492 instant()->ntp_->contents()->GetURL()); |
1438 } | 1493 } |
OLD | NEW |