Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(436)

Side by Side Diff: chrome/browser/ui/search/instant_search_prerenderer_unittest.cc

Issue 2086223002: Convert instant search messages to Mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "chrome/browser/ui/search/instant_search_prerenderer.h" 5 #include "chrome/browser/ui/search/instant_search_prerenderer.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <tuple> 10 #include <tuple>
(...skipping 10 matching lines...) Expand all
21 #include "chrome/browser/prerender/prerender_manager.h" 21 #include "chrome/browser/prerender/prerender_manager.h"
22 #include "chrome/browser/prerender/prerender_manager_factory.h" 22 #include "chrome/browser/prerender/prerender_manager_factory.h"
23 #include "chrome/browser/prerender/prerender_origin.h" 23 #include "chrome/browser/prerender/prerender_origin.h"
24 #include "chrome/browser/prerender/prerender_tab_helper.h" 24 #include "chrome/browser/prerender/prerender_tab_helper.h"
25 #include "chrome/browser/profiles/profile.h" 25 #include "chrome/browser/profiles/profile.h"
26 #include "chrome/browser/search/instant_service.h" 26 #include "chrome/browser/search/instant_service.h"
27 #include "chrome/browser/search/instant_unittest_base.h" 27 #include "chrome/browser/search/instant_unittest_base.h"
28 #include "chrome/browser/search/search.h" 28 #include "chrome/browser/search/search.h"
29 #include "chrome/browser/search_engines/template_url_service_factory.h" 29 #include "chrome/browser/search_engines/template_url_service_factory.h"
30 #include "chrome/browser/ui/browser_instant_controller.h" 30 #include "chrome/browser/ui/browser_instant_controller.h"
31 #include "chrome/browser/ui/search/search_ipc_router.h"
31 #include "chrome/browser/ui/search/search_tab_helper.h" 32 #include "chrome/browser/ui/search/search_tab_helper.h"
32 #include "chrome/browser/ui/tabs/tab_strip_model.h" 33 #include "chrome/browser/ui/tabs/tab_strip_model.h"
33 #include "chrome/common/render_messages.h" 34 #include "chrome/common/render_messages.h"
34 #include "chrome/common/search/instant_types.h" 35 #include "chrome/common/search/instant_types.h"
36 #include "chrome/common/search/mock_searchbox.h"
35 #include "components/omnibox/browser/autocomplete_match.h" 37 #include "components/omnibox/browser/autocomplete_match.h"
36 #include "content/public/browser/navigation_controller.h" 38 #include "content/public/browser/navigation_controller.h"
37 #include "content/public/browser/web_contents.h" 39 #include "content/public/browser/web_contents.h"
38 #include "content/public/common/url_constants.h" 40 #include "content/public/common/url_constants.h"
39 #include "content/public/test/mock_render_process_host.h" 41 #include "content/public/test/mock_render_process_host.h"
40 #include "ipc/ipc_message.h" 42 #include "ipc/ipc_message.h"
41 #include "ipc/ipc_test_sink.h" 43 #include "ipc/ipc_test_sink.h"
42 #include "testing/gmock/include/gmock/gmock.h" 44 #include "testing/gmock/include/gmock/gmock.h"
43 #include "ui/gfx/geometry/size.h" 45 #include "ui/gfx/geometry/size.h"
44 46
45 using base::ASCIIToUTF16; 47 using base::ASCIIToUTF16;
48 using testing::_;
49 using testing::AllOf;
50 using testing::Eq;
51 using testing::Field;
52 using testing::Return;
46 53
47 namespace { 54 namespace {
48 55
56 class MockSearchBoxClientFactory
57 : public SearchIPCRouter::SearchBoxClientFactory {
58 public:
59 MOCK_METHOD0(GetSearchBox, chrome::mojom::SearchBox*(void));
60 };
61
49 using content::Referrer; 62 using content::Referrer;
50 using prerender::Origin; 63 using prerender::Origin;
51 using prerender::PrerenderContents; 64 using prerender::PrerenderContents;
52 using prerender::PrerenderHandle; 65 using prerender::PrerenderHandle;
53 using prerender::PrerenderManager; 66 using prerender::PrerenderManager;
54 using prerender::PrerenderManagerFactory; 67 using prerender::PrerenderManagerFactory;
55 using prerender::PrerenderTabHelper; 68 using prerender::PrerenderTabHelper;
56 69
57 class DummyPrerenderContents : public PrerenderContents { 70 class DummyPrerenderContents : public PrerenderContents {
58 public: 71 public:
59 DummyPrerenderContents( 72 DummyPrerenderContents(PrerenderManager* prerender_manager,
60 PrerenderManager* prerender_manager, 73 Profile* profile,
61 Profile* profile, 74 const GURL& url,
62 const GURL& url, 75 const Referrer& referrer,
63 const Referrer& referrer, 76 Origin origin,
64 Origin origin, 77 bool call_did_finish_load,
65 bool call_did_finish_load); 78 chrome::mojom::SearchBox* search_box);
66 79
67 void StartPrerendering( 80 void StartPrerendering(
68 const gfx::Rect& bounds, 81 const gfx::Rect& bounds,
69 content::SessionStorageNamespace* session_storage_namespace) override; 82 content::SessionStorageNamespace* session_storage_namespace) override;
70 bool GetChildId(int* child_id) const override; 83 bool GetChildId(int* child_id) const override;
71 bool GetRouteId(int* route_id) const override; 84 bool GetRouteId(int* route_id) const override;
72 85
73 private: 86 private:
74 Profile* profile_; 87 Profile* profile_;
75 const GURL url_; 88 const GURL url_;
76 bool call_did_finish_load_; 89 bool call_did_finish_load_;
90 chrome::mojom::SearchBox* search_box_;
77 91
78 DISALLOW_COPY_AND_ASSIGN(DummyPrerenderContents); 92 DISALLOW_COPY_AND_ASSIGN(DummyPrerenderContents);
79 }; 93 };
80 94
81 class DummyPrerenderContentsFactory : public PrerenderContents::Factory { 95 class DummyPrerenderContentsFactory : public PrerenderContents::Factory {
82 public: 96 public:
83 explicit DummyPrerenderContentsFactory(bool call_did_finish_load) 97 DummyPrerenderContentsFactory(bool call_did_finish_load,
84 : call_did_finish_load_(call_did_finish_load) { 98 chrome::mojom::SearchBox* search_box)
85 } 99 : call_did_finish_load_(call_did_finish_load), search_box_(search_box) {}
86 100
87 PrerenderContents* CreatePrerenderContents( 101 PrerenderContents* CreatePrerenderContents(
88 PrerenderManager* prerender_manager, 102 PrerenderManager* prerender_manager,
89 Profile* profile, 103 Profile* profile,
90 const GURL& url, 104 const GURL& url,
91 const Referrer& referrer, 105 const Referrer& referrer,
92 Origin origin) override; 106 Origin origin) override;
93 107
94 private: 108 private:
95 bool call_did_finish_load_; 109 bool call_did_finish_load_;
110 chrome::mojom::SearchBox* search_box_;
96 111
97 DISALLOW_COPY_AND_ASSIGN(DummyPrerenderContentsFactory); 112 DISALLOW_COPY_AND_ASSIGN(DummyPrerenderContentsFactory);
98 }; 113 };
99 114
100 DummyPrerenderContents::DummyPrerenderContents( 115 DummyPrerenderContents::DummyPrerenderContents(
101 PrerenderManager* prerender_manager, 116 PrerenderManager* prerender_manager,
102 Profile* profile, 117 Profile* profile,
103 const GURL& url, 118 const GURL& url,
104 const Referrer& referrer, 119 const Referrer& referrer,
105 Origin origin, 120 Origin origin,
106 bool call_did_finish_load) 121 bool call_did_finish_load,
122 chrome::mojom::SearchBox* search_box)
107 : PrerenderContents(prerender_manager, profile, url, referrer, origin), 123 : PrerenderContents(prerender_manager, profile, url, referrer, origin),
108 profile_(profile), 124 profile_(profile),
109 url_(url), 125 url_(url),
110 call_did_finish_load_(call_did_finish_load) { 126 call_did_finish_load_(call_did_finish_load),
111 } 127 search_box_(search_box) {}
112 128
113 void DummyPrerenderContents::StartPrerendering( 129 void DummyPrerenderContents::StartPrerendering(
114 const gfx::Rect& bounds, 130 const gfx::Rect& bounds,
115 content::SessionStorageNamespace* session_storage_namespace) { 131 content::SessionStorageNamespace* session_storage_namespace) {
116 content::SessionStorageNamespaceMap session_storage_namespace_map; 132 content::SessionStorageNamespaceMap session_storage_namespace_map;
117 session_storage_namespace_map[std::string()] = session_storage_namespace; 133 session_storage_namespace_map[std::string()] = session_storage_namespace;
118 prerender_contents_.reset(content::WebContents::CreateWithSessionStorage( 134 prerender_contents_.reset(content::WebContents::CreateWithSessionStorage(
119 content::WebContents::CreateParams(profile_), 135 content::WebContents::CreateParams(profile_),
120 session_storage_namespace_map)); 136 session_storage_namespace_map));
121 PrerenderTabHelper::CreateForWebContents(prerender_contents_.get()); 137 PrerenderTabHelper::CreateForWebContents(prerender_contents_.get());
122 content::NavigationController::LoadURLParams params(url_); 138 content::NavigationController::LoadURLParams params(url_);
123 prerender_contents_->GetController().LoadURLWithParams(params); 139 prerender_contents_->GetController().LoadURLWithParams(params);
124 SearchTabHelper::CreateForWebContents(prerender_contents_.get()); 140 SearchTabHelper::CreateForWebContents(prerender_contents_.get());
141 auto* search_tab =
142 SearchTabHelper::FromWebContents(prerender_contents_.get());
143 auto factory = base::MakeUnique<MockSearchBoxClientFactory>();
144 ON_CALL(*factory, GetSearchBox()).WillByDefault(Return(search_box_));
145 search_tab->ipc_router().set_search_box_client_factory_for_testing(
146 std::move(factory));
125 147
126 prerendering_has_started_ = true; 148 prerendering_has_started_ = true;
127 DCHECK(session_storage_namespace); 149 DCHECK(session_storage_namespace);
128 session_storage_namespace_id_ = session_storage_namespace->id(); 150 session_storage_namespace_id_ = session_storage_namespace->id();
129 NotifyPrerenderStart(); 151 NotifyPrerenderStart();
130 152
131 if (call_did_finish_load_) 153 if (call_did_finish_load_)
132 DidFinishLoad(prerender_contents_->GetMainFrame(), url_); 154 DidFinishLoad(prerender_contents_->GetMainFrame(), url_);
133 } 155 }
134 156
135 bool DummyPrerenderContents::GetChildId(int* child_id) const { 157 bool DummyPrerenderContents::GetChildId(int* child_id) const {
136 *child_id = 1; 158 *child_id = 1;
137 return true; 159 return true;
138 } 160 }
139 161
140 bool DummyPrerenderContents::GetRouteId(int* route_id) const { 162 bool DummyPrerenderContents::GetRouteId(int* route_id) const {
141 *route_id = 1; 163 *route_id = 1;
142 return true; 164 return true;
143 } 165 }
144 166
145 PrerenderContents* DummyPrerenderContentsFactory::CreatePrerenderContents( 167 PrerenderContents* DummyPrerenderContentsFactory::CreatePrerenderContents(
146 PrerenderManager* prerender_manager, 168 PrerenderManager* prerender_manager,
147 Profile* profile, 169 Profile* profile,
148 const GURL& url, 170 const GURL& url,
149 const Referrer& referrer, 171 const Referrer& referrer,
150 Origin origin) { 172 Origin origin) {
151 return new DummyPrerenderContents(prerender_manager, profile, url, referrer, 173 return new DummyPrerenderContents(prerender_manager, profile, url, referrer,
152 origin, call_did_finish_load_); 174 origin, call_did_finish_load_, search_box_);
153 } 175 }
154 176
155 } // namespace 177 } // namespace
156 178
157 class InstantSearchPrerendererTest : public InstantUnitTestBase { 179 class InstantSearchPrerendererTest : public InstantUnitTestBase {
158 public: 180 public:
159 InstantSearchPrerendererTest() {} 181 InstantSearchPrerendererTest() {}
160 182
161 protected: 183 protected:
162 void SetUp() override { 184 void SetUp() override {
163 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 185 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
164 "Group1 strk:20")); 186 "Group1 strk:20"));
165 InstantUnitTestBase::SetUp(); 187 InstantUnitTestBase::SetUp();
166 } 188 }
167 189
168 void Init(bool prerender_search_results_base_page, 190 void Init(bool prerender_search_results_base_page,
169 bool call_did_finish_load) { 191 bool call_did_finish_load) {
170 AddTab(browser(), GURL(url::kAboutBlankURL)); 192 AddTab(browser(), GURL(url::kAboutBlankURL));
171 193
172 PrerenderManagerFactory::GetForBrowserContext(browser()->profile()) 194 PrerenderManagerFactory::GetForBrowserContext(browser()->profile())
173 ->SetPrerenderContentsFactoryForTest( 195 ->SetPrerenderContentsFactoryForTest(new DummyPrerenderContentsFactory(
174 new DummyPrerenderContentsFactory(call_did_finish_load)); 196 call_did_finish_load, &mock_search_box_));
175 if (prerender_search_results_base_page) { 197 if (prerender_search_results_base_page) {
176 content::SessionStorageNamespace* session_storage_namespace = 198 content::SessionStorageNamespace* session_storage_namespace =
177 GetActiveWebContents()->GetController(). 199 GetActiveWebContents()->GetController().
178 GetDefaultSessionStorageNamespace(); 200 GetDefaultSessionStorageNamespace();
179 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 201 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
180 prerenderer->Init(session_storage_namespace, gfx::Size(640, 480)); 202 prerenderer->Init(session_storage_namespace, gfx::Size(640, 480));
181 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle()); 203 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle());
182 } 204 }
183 } 205 }
184 206
185 InstantSearchPrerenderer* GetInstantSearchPrerenderer() { 207 InstantSearchPrerenderer* GetInstantSearchPrerenderer() {
186 return instant_service_->instant_search_prerenderer(); 208 return instant_service_->instant_search_prerenderer();
187 } 209 }
188 210
189 const GURL& GetPrerenderURL() { 211 const GURL& GetPrerenderURL() {
190 return GetInstantSearchPrerenderer()->prerender_url_; 212 return GetInstantSearchPrerenderer()->prerender_url_;
191 } 213 }
192 214
193 void SetLastQuery(const base::string16& query) { 215 void SetLastQuery(const base::string16& query) {
194 GetInstantSearchPrerenderer()->last_instant_suggestion_ = 216 GetInstantSearchPrerenderer()->last_instant_suggestion_ =
195 InstantSuggestion(query, std::string()); 217 InstantSuggestion(query, std::string());
196 } 218 }
197 219
198 content::WebContents* prerender_contents() { 220 content::WebContents* prerender_contents() {
199 return GetInstantSearchPrerenderer()->prerender_contents(); 221 return GetInstantSearchPrerenderer()->prerender_contents();
200 } 222 }
201 223
202 bool MessageWasSent(uint32_t id) {
203 content::MockRenderProcessHost* process =
204 static_cast<content::MockRenderProcessHost*>(
205 prerender_contents()->GetRenderViewHost()->GetProcess());
206 return process->sink().GetFirstMessageMatching(id) != NULL;
207 }
208
209 content::WebContents* GetActiveWebContents() const { 224 content::WebContents* GetActiveWebContents() const {
210 return browser()->tab_strip_model()->GetWebContentsAt(0); 225 return browser()->tab_strip_model()->GetWebContentsAt(0);
211 } 226 }
212 227
213 PrerenderHandle* prerender_handle() { 228 PrerenderHandle* prerender_handle() {
214 return GetInstantSearchPrerenderer()->prerender_handle_.get(); 229 return GetInstantSearchPrerenderer()->prerender_handle_.get();
215 } 230 }
216 231
217 void PrerenderSearchQuery(const base::string16& query) { 232 void PrerenderSearchQuery(const base::string16& query) {
218 Init(true, true); 233 Init(true, true);
219 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 234 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
220 prerenderer->Prerender(InstantSuggestion(query, std::string())); 235 prerenderer->Prerender(InstantSuggestion(query, std::string()));
221 CommitPendingLoad(&prerender_contents()->GetController()); 236 CommitPendingLoad(&prerender_contents()->GetController());
222 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); 237 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query));
223 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle()); 238 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle());
224 } 239 }
240
241 MockSearchBox* mock_search_box() { return &mock_search_box_; }
242
243 private:
244 MockSearchBox mock_search_box_;
225 }; 245 };
226 246
227 TEST_F(InstantSearchPrerendererTest, GetSearchTermsFromPrerenderedPage) { 247 TEST_F(InstantSearchPrerendererTest, GetSearchTermsFromPrerenderedPage) {
228 Init(false, false); 248 Init(false, false);
229 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 249 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
230 GURL url(GetPrerenderURL()); 250 GURL url(GetPrerenderURL());
231 EXPECT_EQ(GURL("https://www.google.com/instant?ion=1&foo=foo#foo=foo&strk"), 251 EXPECT_EQ(GURL("https://www.google.com/instant?ion=1&foo=foo#foo=foo&strk"),
232 url); 252 url);
233 EXPECT_EQ( 253 EXPECT_EQ(
234 base::UTF16ToASCII(prerenderer->get_last_query()), 254 base::UTF16ToASCII(prerenderer->get_last_query()),
235 base::UTF16ToASCII(search::ExtractSearchTermsFromURL(profile(), url))); 255 base::UTF16ToASCII(search::ExtractSearchTermsFromURL(profile(), url)));
236 256
237 // Assume the prerendered page prefetched search results for the query 257 // Assume the prerendered page prefetched search results for the query
238 // "flowers". 258 // "flowers".
239 SetLastQuery(ASCIIToUTF16("flowers")); 259 SetLastQuery(ASCIIToUTF16("flowers"));
240 EXPECT_EQ("flowers", base::UTF16ToASCII(prerenderer->get_last_query())); 260 EXPECT_EQ("flowers", base::UTF16ToASCII(prerenderer->get_last_query()));
241 EXPECT_EQ( 261 EXPECT_EQ(
242 base::UTF16ToASCII(prerenderer->get_last_query()), 262 base::UTF16ToASCII(prerenderer->get_last_query()),
243 base::UTF16ToASCII(search::ExtractSearchTermsFromURL(profile(), url))); 263 base::UTF16ToASCII(search::ExtractSearchTermsFromURL(profile(), url)));
244 } 264 }
245 265
246 TEST_F(InstantSearchPrerendererTest, PrefetchSearchResults) { 266 TEST_F(InstantSearchPrerendererTest, PrefetchSearchResults) {
247 Init(true, true); 267 Init(true, true);
248 EXPECT_TRUE(prerender_handle()->IsFinishedLoading()); 268 EXPECT_TRUE(prerender_handle()->IsFinishedLoading());
249 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 269 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
270 EXPECT_CALL(*mock_search_box(), SetSuggestionToPrefetch(_));
250 prerenderer->Prerender( 271 prerenderer->Prerender(
251 InstantSuggestion(ASCIIToUTF16("flowers"), std::string())); 272 InstantSuggestion(ASCIIToUTF16("flowers"), std::string()));
252 EXPECT_EQ("flowers", base::UTF16ToASCII(prerenderer->get_last_query())); 273 EXPECT_EQ("flowers", base::UTF16ToASCII(prerenderer->get_last_query()));
253 EXPECT_TRUE(MessageWasSent(
254 ChromeViewMsg_SearchBoxSetSuggestionToPrefetch::ID));
255 } 274 }
256 275
257 TEST_F(InstantSearchPrerendererTest, DoNotPrefetchSearchResults) { 276 TEST_F(InstantSearchPrerendererTest, DoNotPrefetchSearchResults) {
258 Init(true, false); 277 Init(true, false);
259 // Page hasn't finished loading yet. 278 // Page hasn't finished loading yet.
260 EXPECT_FALSE(prerender_handle()->IsFinishedLoading()); 279 EXPECT_FALSE(prerender_handle()->IsFinishedLoading());
261 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 280 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
281 EXPECT_CALL(*mock_search_box(), SetSuggestionToPrefetch(_)).Times(0);
262 prerenderer->Prerender( 282 prerenderer->Prerender(
263 InstantSuggestion(ASCIIToUTF16("flowers"), std::string())); 283 InstantSuggestion(ASCIIToUTF16("flowers"), std::string()));
264 EXPECT_EQ("", base::UTF16ToASCII(prerenderer->get_last_query())); 284 EXPECT_EQ("", base::UTF16ToASCII(prerenderer->get_last_query()));
265 EXPECT_FALSE(MessageWasSent(
266 ChromeViewMsg_SearchBoxSetSuggestionToPrefetch::ID));
267 } 285 }
268 286
269 TEST_F(InstantSearchPrerendererTest, CanCommitQuery) { 287 TEST_F(InstantSearchPrerendererTest, CanCommitQuery) {
270 Init(true, true); 288 Init(true, true);
271 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 289 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
272 base::string16 query = ASCIIToUTF16("flowers"); 290 base::string16 query = ASCIIToUTF16("flowers");
273 prerenderer->Prerender(InstantSuggestion(query, std::string())); 291 prerenderer->Prerender(InstantSuggestion(query, std::string()));
274 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); 292 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query));
275 293
276 // Make sure InstantSearchPrerenderer::CanCommitQuery() returns false for 294 // Make sure InstantSearchPrerenderer::CanCommitQuery() returns false for
277 // invalid search queries. 295 // invalid search queries.
278 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), 296 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(),
279 ASCIIToUTF16("joy"))); 297 ASCIIToUTF16("joy")));
280 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), 298 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(),
281 base::string16())); 299 base::string16()));
282 } 300 }
283 301
284 TEST_F(InstantSearchPrerendererTest, CommitQuery) { 302 TEST_F(InstantSearchPrerendererTest, CommitQuery) {
285 base::string16 query = ASCIIToUTF16("flowers"); 303 base::string16 query = ASCIIToUTF16("flowers");
286 PrerenderSearchQuery(query); 304 PrerenderSearchQuery(query);
287 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 305 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
306 EXPECT_CALL(*mock_search_box(), Submit(_, _));
288 prerenderer->Commit(query, EmbeddedSearchRequestParams()); 307 prerenderer->Commit(query, EmbeddedSearchRequestParams());
289 EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxSubmit::ID));
290 } 308 }
291 309
292 TEST_F(InstantSearchPrerendererTest, CancelPrerenderRequestOnTabChangeEvent) { 310 TEST_F(InstantSearchPrerendererTest, CancelPrerenderRequestOnTabChangeEvent) {
293 Init(true, true); 311 Init(true, true);
294 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle()); 312 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle());
295 313
296 // Add a new tab to deactivate the current tab. 314 // Add a new tab to deactivate the current tab.
297 AddTab(browser(), GURL(url::kAboutBlankURL)); 315 AddTab(browser(), GURL(url::kAboutBlankURL));
298 EXPECT_EQ(2, browser()->tab_strip_model()->count()); 316 EXPECT_EQ(2, browser()->tab_strip_model()->count());
299 317
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 } 446 }
429 447
430 class ReuseInstantSearchBasePageTest : public InstantSearchPrerendererTest { 448 class ReuseInstantSearchBasePageTest : public InstantSearchPrerendererTest {
431 public: 449 public:
432 ReuseInstantSearchBasePageTest() {} 450 ReuseInstantSearchBasePageTest() {}
433 451
434 protected: 452 protected:
435 void SetUp() override { 453 void SetUp() override {
436 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 454 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
437 "Group1 strk:20")); 455 "Group1 strk:20"));
438 InstantUnitTestBase::SetUp(); 456 InstantSearchPrerendererTest::SetUp();
439 } 457 }
440 }; 458 };
441 459
442 TEST_F(ReuseInstantSearchBasePageTest, CanCommitQuery) { 460 TEST_F(ReuseInstantSearchBasePageTest, CanCommitQuery) {
443 Init(true, true); 461 Init(true, true);
444 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 462 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
445 base::string16 query = ASCIIToUTF16("flowers"); 463 base::string16 query = ASCIIToUTF16("flowers");
446 prerenderer->Prerender(InstantSuggestion(query, std::string())); 464 prerenderer->Prerender(InstantSuggestion(query, std::string()));
447 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); 465 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query));
448 466
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 browser()->OpenURL(content::OpenURLParams( 515 browser()->OpenURL(content::OpenURLParams(
498 url, Referrer(), WindowOpenDisposition::CURRENT_TAB, 516 url, Referrer(), WindowOpenDisposition::CURRENT_TAB,
499 ui::PAGE_TRANSITION_LINK, true /* is_renderer_initiated */)); 517 ui::PAGE_TRANSITION_LINK, true /* is_renderer_initiated */));
500 EXPECT_NE(GetPrerenderURL(), GetActiveWebContents()->GetURL()); 518 EXPECT_NE(GetPrerenderURL(), GetActiveWebContents()->GetURL());
501 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); 519 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle());
502 } 520 }
503 521
504 TEST_F(TestUsePrerenderPage, SetEmbeddedSearchRequestParams) { 522 TEST_F(TestUsePrerenderPage, SetEmbeddedSearchRequestParams) {
505 PrerenderSearchQuery(ASCIIToUTF16("foo")); 523 PrerenderSearchQuery(ASCIIToUTF16("foo"));
506 EXPECT_TRUE(browser()->instant_controller()); 524 EXPECT_TRUE(browser()->instant_controller());
525 EXPECT_CALL(
526 *mock_search_box(),
527 Submit(Eq(ASCIIToUTF16("foo")),
528 AllOf(Field(&EmbeddedSearchRequestParams::original_query,
529 Eq(base::ASCIIToUTF16("f"))),
530 Field(&EmbeddedSearchRequestParams::input_encoding,
531 Eq(base::ASCIIToUTF16("utf-8"))),
532 Field(&EmbeddedSearchRequestParams::rlz_parameter_value,
533 Eq(base::ASCIIToUTF16(""))),
534 Field(&EmbeddedSearchRequestParams::assisted_query_stats,
535 Eq(base::ASCIIToUTF16("chrome...0"))))));
507 536
508 // Open a search results page. Query extraction flag is disabled in field 537 // Open a search results page. Query extraction flag is disabled in field
509 // trials. Search results page URL does not contain search terms replacement 538 // trials. Search results page URL does not contain search terms replacement
510 // key. 539 // key.
511 GURL url("https://www.google.com/url?bar=foo&aqs=chrome...0&ie=utf-8&oq=f"); 540 GURL url("https://www.google.com/url?bar=foo&aqs=chrome...0&ie=utf-8&oq=f");
512 browser()->instant_controller()->OpenInstant( 541 browser()->instant_controller()->OpenInstant(
513 WindowOpenDisposition::CURRENT_TAB, url); 542 WindowOpenDisposition::CURRENT_TAB, url);
514 content::MockRenderProcessHost* process =
515 static_cast<content::MockRenderProcessHost*>(
516 prerender_contents()->GetRenderViewHost()->GetProcess());
517 const IPC::Message* message = process->sink().GetFirstMessageMatching(
518 ChromeViewMsg_SearchBoxSubmit::ID);
519 ASSERT_TRUE(message);
520
521 // Verify the IPC message params.
522 std::tuple<base::string16, EmbeddedSearchRequestParams> params;
523 ChromeViewMsg_SearchBoxSubmit::Read(message, &params);
524 EXPECT_EQ("foo", base::UTF16ToASCII(std::get<0>(params)));
525 EXPECT_EQ("f", base::UTF16ToASCII(std::get<1>(params).original_query));
526 EXPECT_EQ("utf-8", base::UTF16ToASCII(std::get<1>(params).input_encoding));
527 EXPECT_EQ("", base::UTF16ToASCII(std::get<1>(params).rlz_parameter_value));
528 EXPECT_EQ("chrome...0",
529 base::UTF16ToASCII(std::get<1>(params).assisted_query_stats));
530 } 543 }
531 #endif 544 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698