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 "components/toolbar/toolbar_model.h" | 5 #include "components/toolbar/toolbar_model.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/field_trial.h" | 8 #include "base/metrics/field_trial.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "chrome/browser/autocomplete/autocomplete_classifier_factory.h" | 10 #include "chrome/browser/autocomplete/autocomplete_classifier_factory.h" |
11 #include "chrome/browser/search/search.h" | 11 #include "chrome/browser/search/search.h" |
12 #include "chrome/browser/search_engines/template_url_service_factory.h" | 12 #include "chrome/browser/search_engines/template_url_service_factory.h" |
13 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h" | 13 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h" |
14 #include "chrome/browser/ui/browser.h" | 14 #include "chrome/browser/ui/browser.h" |
15 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
16 #include "chrome/common/chrome_switches.h" | 16 #include "chrome/common/chrome_switches.h" |
17 #include "chrome/test/base/browser_with_test_window_test.h" | 17 #include "chrome/test/base/browser_with_test_window_test.h" |
18 #include "components/google/core/browser/google_switches.h" | 18 #include "components/google/core/browser/google_switches.h" |
| 19 #include "components/search/search.h" |
19 #include "components/toolbar/toolbar_model.h" | 20 #include "components/toolbar/toolbar_model.h" |
20 #include "components/variations/entropy_provider.h" | 21 #include "components/variations/entropy_provider.h" |
21 #include "content/public/browser/navigation_entry.h" | 22 #include "content/public/browser/navigation_entry.h" |
22 #include "content/public/common/ssl_status.h" | 23 #include "content/public/common/ssl_status.h" |
23 #include "content/public/common/url_constants.h" | 24 #include "content/public/common/url_constants.h" |
24 | 25 |
25 | 26 |
26 // Test data ------------------------------------------------------------------ | 27 // Test data ------------------------------------------------------------------ |
27 | 28 |
28 namespace { | 29 namespace { |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 } | 242 } |
242 | 243 |
243 // Actual tests --------------------------------------------------------------- | 244 // Actual tests --------------------------------------------------------------- |
244 | 245 |
245 // Test that we only replace URLs when query extraction and URL replacement | 246 // Test that we only replace URLs when query extraction and URL replacement |
246 // are enabled. | 247 // are enabled. |
247 TEST_F(ToolbarModelTest, ShouldDisplayURL_QueryExtraction) { | 248 TEST_F(ToolbarModelTest, ShouldDisplayURL_QueryExtraction) { |
248 AddTab(browser(), GURL(url::kAboutBlankURL)); | 249 AddTab(browser(), GURL(url::kAboutBlankURL)); |
249 | 250 |
250 // Before we enable instant extended, query extraction is disabled. | 251 // Before we enable instant extended, query extraction is disabled. |
251 EXPECT_FALSE(chrome::IsQueryExtractionEnabled()) | 252 EXPECT_FALSE(search::IsQueryExtractionEnabled()) |
252 << "This test expects query extraction to be disabled."; | 253 << "This test expects query extraction to be disabled."; |
253 for (size_t i = 0; i < arraysize(test_items); ++i) { | 254 for (size_t i = 0; i < arraysize(test_items); ++i) { |
254 const TestItem& test_item = test_items[i]; | 255 const TestItem& test_item = test_items[i]; |
255 NavigateAndCheckText(test_item.url, | 256 NavigateAndCheckText(test_item.url, |
256 test_item.expected_text_url_replacement_inactive, | 257 test_item.expected_text_url_replacement_inactive, |
257 false, test_item.should_display_url); | 258 false, test_item.should_display_url); |
258 } | 259 } |
259 | 260 |
260 chrome::EnableQueryExtractionForTesting(); | 261 search::EnableQueryExtractionForTesting(); |
261 EXPECT_TRUE(chrome::IsQueryExtractionEnabled()); | 262 EXPECT_TRUE(search::IsQueryExtractionEnabled()); |
262 EXPECT_TRUE(browser()->toolbar_model()->url_replacement_enabled()); | 263 EXPECT_TRUE(browser()->toolbar_model()->url_replacement_enabled()); |
263 for (size_t i = 0; i < arraysize(test_items); ++i) { | 264 for (size_t i = 0; i < arraysize(test_items); ++i) { |
264 const TestItem& test_item = test_items[i]; | 265 const TestItem& test_item = test_items[i]; |
265 NavigateAndCheckText(test_item.url, | 266 NavigateAndCheckText(test_item.url, |
266 test_item.expected_text_query_extraction, | 267 test_item.expected_text_query_extraction, |
267 test_item.would_perform_search_term_replacement, | 268 test_item.would_perform_search_term_replacement, |
268 test_item.should_display_url); | 269 test_item.should_display_url); |
269 } | 270 } |
270 | 271 |
271 // Disabling URL replacement should reset to only showing URLs. | 272 // Disabling URL replacement should reset to only showing URLs. |
272 browser()->toolbar_model()->set_url_replacement_enabled(false); | 273 browser()->toolbar_model()->set_url_replacement_enabled(false); |
273 for (size_t i = 0; i < arraysize(test_items); ++i) { | 274 for (size_t i = 0; i < arraysize(test_items); ++i) { |
274 const TestItem& test_item = test_items[i]; | 275 const TestItem& test_item = test_items[i]; |
275 NavigateAndCheckText(test_item.url, | 276 NavigateAndCheckText(test_item.url, |
276 test_item.expected_text_url_replacement_inactive, | 277 test_item.expected_text_url_replacement_inactive, |
277 false, test_item.should_display_url); | 278 false, test_item.should_display_url); |
278 } | 279 } |
279 } | 280 } |
280 | 281 |
281 // Verify that search terms are extracted while the page is loading. | 282 // Verify that search terms are extracted while the page is loading. |
282 TEST_F(ToolbarModelTest, SearchTermsWhileLoading) { | 283 TEST_F(ToolbarModelTest, SearchTermsWhileLoading) { |
283 chrome::EnableQueryExtractionForTesting(); | 284 search::EnableQueryExtractionForTesting(); |
284 AddTab(browser(), GURL(url::kAboutBlankURL)); | 285 AddTab(browser(), GURL(url::kAboutBlankURL)); |
285 | 286 |
286 // While loading, we should be willing to extract search terms. | 287 // While loading, we should be willing to extract search terms. |
287 content::NavigationController* controller = | 288 content::NavigationController* controller = |
288 &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController(); | 289 &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController(); |
289 controller->LoadURL(GURL("https://google.com/search?q=tractor+supply&espv=1"), | 290 controller->LoadURL(GURL("https://google.com/search?q=tractor+supply&espv=1"), |
290 content::Referrer(), ui::PAGE_TRANSITION_LINK, | 291 content::Referrer(), ui::PAGE_TRANSITION_LINK, |
291 std::string()); | 292 std::string()); |
292 ToolbarModel* toolbar_model = browser()->toolbar_model(); | 293 ToolbarModel* toolbar_model = browser()->toolbar_model(); |
293 controller->GetVisibleEntry()->GetSSL().security_style = | 294 controller->GetVisibleEntry()->GetSSL().security_style = |
294 content::SECURITY_STYLE_UNKNOWN; | 295 content::SECURITY_STYLE_UNKNOWN; |
295 EXPECT_TRUE(toolbar_model->WouldPerformSearchTermReplacement(false)); | 296 EXPECT_TRUE(toolbar_model->WouldPerformSearchTermReplacement(false)); |
296 | 297 |
297 // When done loading, we shouldn't extract search terms if we didn't get an | 298 // When done loading, we shouldn't extract search terms if we didn't get an |
298 // authenticated connection. | 299 // authenticated connection. |
299 CommitPendingLoad(controller); | 300 CommitPendingLoad(controller); |
300 controller->GetVisibleEntry()->GetSSL().security_style = | 301 controller->GetVisibleEntry()->GetSSL().security_style = |
301 content::SECURITY_STYLE_UNKNOWN; | 302 content::SECURITY_STYLE_UNKNOWN; |
302 EXPECT_FALSE(toolbar_model->WouldPerformSearchTermReplacement(false)); | 303 EXPECT_FALSE(toolbar_model->WouldPerformSearchTermReplacement(false)); |
303 } | 304 } |
304 | 305 |
305 // When the Google base URL is overridden on the command line, we should extract | 306 // When the Google base URL is overridden on the command line, we should extract |
306 // search terms from URLs that start with that base URL even when they're not | 307 // search terms from URLs that start with that base URL even when they're not |
307 // secure. | 308 // secure. |
308 TEST_F(ToolbarModelTest, GoogleBaseURL) { | 309 TEST_F(ToolbarModelTest, GoogleBaseURL) { |
309 chrome::EnableQueryExtractionForTesting(); | 310 search::EnableQueryExtractionForTesting(); |
310 AddTab(browser(), GURL(url::kAboutBlankURL)); | 311 AddTab(browser(), GURL(url::kAboutBlankURL)); |
311 | 312 |
312 // If the Google base URL wasn't specified on the command line, then if it's | 313 // If the Google base URL wasn't specified on the command line, then if it's |
313 // HTTP, we should not extract search terms. | 314 // HTTP, we should not extract search terms. |
314 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.foo.com/"); | 315 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.foo.com/"); |
315 NavigateAndCheckText( | 316 NavigateAndCheckText( |
316 GURL("http://www.foo.com/search?q=tractor+supply&espv=1"), | 317 GURL("http://www.foo.com/search?q=tractor+supply&espv=1"), |
317 base::ASCIIToUTF16("www.foo.com/search?q=tractor+supply&espv=1"), false, | 318 base::ASCIIToUTF16("www.foo.com/search?q=tractor+supply&espv=1"), false, |
318 true); | 319 true); |
319 | 320 |
320 // The same URL, when specified on the command line, should allow search term | 321 // The same URL, when specified on the command line, should allow search term |
321 // extraction. | 322 // extraction. |
322 UIThreadSearchTermsData::SetGoogleBaseURL(std::string()); | 323 UIThreadSearchTermsData::SetGoogleBaseURL(std::string()); |
323 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 324 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
324 switches::kGoogleBaseURL, "http://www.foo.com/"); | 325 switches::kGoogleBaseURL, "http://www.foo.com/"); |
325 NavigateAndCheckText( | 326 NavigateAndCheckText( |
326 GURL("http://www.foo.com/search?q=tractor+supply&espv=1"), | 327 GURL("http://www.foo.com/search?q=tractor+supply&espv=1"), |
327 base::ASCIIToUTF16("tractor supply"), true, true); | 328 base::ASCIIToUTF16("tractor supply"), true, true); |
328 } | 329 } |
329 | 330 |
330 // Test that URL display in a popup respects the query extraction flag. | 331 // Test that URL display in a popup respects the query extraction flag. |
331 TEST_F(PopupToolbarModelTest, ShouldDisplayURL) { | 332 TEST_F(PopupToolbarModelTest, ShouldDisplayURL) { |
332 AddTab(browser(), GURL(url::kAboutBlankURL)); | 333 AddTab(browser(), GURL(url::kAboutBlankURL)); |
333 | 334 |
334 // Check with query extraction disabled. | 335 // Check with query extraction disabled. |
335 EXPECT_FALSE(chrome::IsQueryExtractionEnabled()); | 336 EXPECT_FALSE(search::IsQueryExtractionEnabled()); |
336 for (size_t i = 0; i < arraysize(test_items); ++i) { | 337 for (size_t i = 0; i < arraysize(test_items); ++i) { |
337 const TestItem& test_item = test_items[i]; | 338 const TestItem& test_item = test_items[i]; |
338 NavigateAndCheckText(test_item.url, | 339 NavigateAndCheckText(test_item.url, |
339 test_item.expected_text_url_replacement_inactive, | 340 test_item.expected_text_url_replacement_inactive, |
340 false, test_item.should_display_url); | 341 false, test_item.should_display_url); |
341 } | 342 } |
342 | 343 |
343 // With query extraction enabled, search term replacement should be performed. | 344 // With query extraction enabled, search term replacement should be performed. |
344 chrome::EnableQueryExtractionForTesting(); | 345 search::EnableQueryExtractionForTesting(); |
345 EXPECT_TRUE(chrome::IsQueryExtractionEnabled()); | 346 EXPECT_TRUE(search::IsQueryExtractionEnabled()); |
346 EXPECT_TRUE(browser()->toolbar_model()->url_replacement_enabled()); | 347 EXPECT_TRUE(browser()->toolbar_model()->url_replacement_enabled()); |
347 for (size_t i = 0; i < arraysize(test_items); ++i) { | 348 for (size_t i = 0; i < arraysize(test_items); ++i) { |
348 const TestItem& test_item = test_items[i]; | 349 const TestItem& test_item = test_items[i]; |
349 NavigateAndCheckText(test_item.url, | 350 NavigateAndCheckText(test_item.url, |
350 test_item.expected_text_query_extraction, | 351 test_item.expected_text_query_extraction, |
351 test_item.would_perform_search_term_replacement, | 352 test_item.would_perform_search_term_replacement, |
352 test_item.should_display_url); | 353 test_item.should_display_url); |
353 } | 354 } |
354 | 355 |
355 // Disabling URL replacement should reset to only showing URLs. | 356 // Disabling URL replacement should reset to only showing URLs. |
356 browser()->toolbar_model()->set_url_replacement_enabled(false); | 357 browser()->toolbar_model()->set_url_replacement_enabled(false); |
357 for (size_t i = 0; i < arraysize(test_items); ++i) { | 358 for (size_t i = 0; i < arraysize(test_items); ++i) { |
358 const TestItem& test_item = test_items[i]; | 359 const TestItem& test_item = test_items[i]; |
359 NavigateAndCheckText(test_item.url, | 360 NavigateAndCheckText(test_item.url, |
360 test_item.expected_text_url_replacement_inactive, | 361 test_item.expected_text_url_replacement_inactive, |
361 false, test_item.should_display_url); | 362 false, test_item.should_display_url); |
362 } | 363 } |
363 } | 364 } |
OLD | NEW |