| 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 "chrome/browser/ui/toolbar/toolbar_model.h" | 5 #include "chrome/browser/ui/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" |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 ToolbarModelTest(); | 141 ToolbarModelTest(); |
| 142 ToolbarModelTest(Browser::Type browser_type, | 142 ToolbarModelTest(Browser::Type browser_type, |
| 143 chrome::HostDesktopType host_desktop_type, | 143 chrome::HostDesktopType host_desktop_type, |
| 144 bool hosted_app); | 144 bool hosted_app); |
| 145 ~ToolbarModelTest() override; | 145 ~ToolbarModelTest() override; |
| 146 | 146 |
| 147 // BrowserWithTestWindowTest: | 147 // BrowserWithTestWindowTest: |
| 148 void SetUp() override; | 148 void SetUp() override; |
| 149 | 149 |
| 150 protected: | 150 protected: |
| 151 void EnableOriginChipFieldTrial(); | |
| 152 void NavigateAndCheckText(const GURL& url, | 151 void NavigateAndCheckText(const GURL& url, |
| 153 const base::string16& expected_text, | 152 const base::string16& expected_text, |
| 154 bool would_perform_search_term_replacement, | 153 bool would_perform_search_term_replacement, |
| 155 bool should_display_url); | 154 bool should_display_url); |
| 156 | 155 |
| 157 private: | 156 private: |
| 158 scoped_ptr<base::FieldTrialList> field_trial_list_; | 157 scoped_ptr<base::FieldTrialList> field_trial_list_; |
| 159 | 158 |
| 160 DISALLOW_COPY_AND_ASSIGN(ToolbarModelTest); | 159 DISALLOW_COPY_AND_ASSIGN(ToolbarModelTest); |
| 161 }; | 160 }; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 177 | 176 |
| 178 void ToolbarModelTest::SetUp() { | 177 void ToolbarModelTest::SetUp() { |
| 179 BrowserWithTestWindowTest::SetUp(); | 178 BrowserWithTestWindowTest::SetUp(); |
| 180 TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 179 TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| 181 profile(), &TemplateURLServiceFactory::BuildInstanceFor); | 180 profile(), &TemplateURLServiceFactory::BuildInstanceFor); |
| 182 AutocompleteClassifierFactory::GetInstance()->SetTestingFactoryAndUse( | 181 AutocompleteClassifierFactory::GetInstance()->SetTestingFactoryAndUse( |
| 183 profile(), &AutocompleteClassifierFactory::BuildInstanceFor); | 182 profile(), &AutocompleteClassifierFactory::BuildInstanceFor); |
| 184 UIThreadSearchTermsData::SetGoogleBaseURL("http://google.com/"); | 183 UIThreadSearchTermsData::SetGoogleBaseURL("http://google.com/"); |
| 185 } | 184 } |
| 186 | 185 |
| 187 void ToolbarModelTest::EnableOriginChipFieldTrial() { | |
| 188 field_trial_list_.reset(new base::FieldTrialList( | |
| 189 new metrics::SHA1EntropyProvider("platypus"))); | |
| 190 base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", | |
| 191 "Group1 espv:2 origin_chip:1"); | |
| 192 } | |
| 193 | |
| 194 void ToolbarModelTest::NavigateAndCheckText( | 186 void ToolbarModelTest::NavigateAndCheckText( |
| 195 const GURL& url, | 187 const GURL& url, |
| 196 const base::string16& expected_text, | 188 const base::string16& expected_text, |
| 197 bool would_perform_search_term_replacement, | 189 bool would_perform_search_term_replacement, |
| 198 bool should_display_url) { | 190 bool should_display_url) { |
| 199 // Check while loading. | 191 // Check while loading. |
| 200 content::NavigationController* controller = | 192 content::NavigationController* controller = |
| 201 &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController(); | 193 &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController(); |
| 202 controller->LoadURL(url, content::Referrer(), ui::PAGE_TRANSITION_LINK, | 194 controller->LoadURL(url, content::Referrer(), ui::PAGE_TRANSITION_LINK, |
| 203 std::string()); | 195 std::string()); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 // Disabling URL replacement should reset to only showing URLs. | 271 // Disabling URL replacement should reset to only showing URLs. |
| 280 browser()->toolbar_model()->set_url_replacement_enabled(false); | 272 browser()->toolbar_model()->set_url_replacement_enabled(false); |
| 281 for (size_t i = 0; i < arraysize(test_items); ++i) { | 273 for (size_t i = 0; i < arraysize(test_items); ++i) { |
| 282 const TestItem& test_item = test_items[i]; | 274 const TestItem& test_item = test_items[i]; |
| 283 NavigateAndCheckText(test_item.url, | 275 NavigateAndCheckText(test_item.url, |
| 284 test_item.expected_text_url_replacement_inactive, | 276 test_item.expected_text_url_replacement_inactive, |
| 285 false, test_item.should_display_url); | 277 false, test_item.should_display_url); |
| 286 } | 278 } |
| 287 } | 279 } |
| 288 | 280 |
| 289 // Test that we remove or replace URLs appropriately when the origin chip is | |
| 290 // enabled. | |
| 291 TEST_F(ToolbarModelTest, ShouldDisplayURL_OriginChip) { | |
| 292 EnableOriginChipFieldTrial(); | |
| 293 AddTab(browser(), GURL(url::kAboutBlankURL)); | |
| 294 | |
| 295 // Check each case with the origin chip enabled but query extraction disabled. | |
| 296 EXPECT_TRUE(chrome::ShouldDisplayOriginChip()); | |
| 297 EXPECT_FALSE(chrome::IsQueryExtractionEnabled()); | |
| 298 for (size_t i = 0; i < arraysize(test_items); ++i) { | |
| 299 const TestItem& test_item = test_items[i]; | |
| 300 NavigateAndCheckText(test_item.url, base::string16(), false, | |
| 301 test_item.should_display_url); | |
| 302 } | |
| 303 | |
| 304 // Check with both enabled. | |
| 305 chrome::EnableQueryExtractionForTesting(); | |
| 306 EXPECT_TRUE(chrome::IsQueryExtractionEnabled()); | |
| 307 EXPECT_TRUE(browser()->toolbar_model()->url_replacement_enabled()); | |
| 308 for (size_t i = 0; i < arraysize(test_items); ++i) { | |
| 309 const TestItem& test_item = test_items[i]; | |
| 310 NavigateAndCheckText(test_item.url, test_item.expected_text_both, | |
| 311 test_item.would_perform_search_term_replacement, | |
| 312 test_item.should_display_url); | |
| 313 } | |
| 314 | |
| 315 // Disabling URL replacement should reset to only showing URLs. | |
| 316 browser()->toolbar_model()->set_url_replacement_enabled(false); | |
| 317 for (size_t i = 0; i < arraysize(test_items); ++i) { | |
| 318 const TestItem& test_item = test_items[i]; | |
| 319 NavigateAndCheckText(test_item.url, | |
| 320 test_item.expected_text_url_replacement_inactive, | |
| 321 false, test_item.should_display_url); | |
| 322 } | |
| 323 } | |
| 324 | |
| 325 // Verify that search terms are extracted while the page is loading. | 281 // Verify that search terms are extracted while the page is loading. |
| 326 TEST_F(ToolbarModelTest, SearchTermsWhileLoading) { | 282 TEST_F(ToolbarModelTest, SearchTermsWhileLoading) { |
| 327 chrome::EnableQueryExtractionForTesting(); | 283 chrome::EnableQueryExtractionForTesting(); |
| 328 AddTab(browser(), GURL(url::kAboutBlankURL)); | 284 AddTab(browser(), GURL(url::kAboutBlankURL)); |
| 329 | 285 |
| 330 // While loading, we should be willing to extract search terms. | 286 // While loading, we should be willing to extract search terms. |
| 331 content::NavigationController* controller = | 287 content::NavigationController* controller = |
| 332 &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController(); | 288 &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController(); |
| 333 controller->LoadURL(GURL("https://google.com/search?q=tractor+supply&espv=1"), | 289 controller->LoadURL(GURL("https://google.com/search?q=tractor+supply&espv=1"), |
| 334 content::Referrer(), ui::PAGE_TRANSITION_LINK, | 290 content::Referrer(), ui::PAGE_TRANSITION_LINK, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 364 // The same URL, when specified on the command line, should allow search term | 320 // The same URL, when specified on the command line, should allow search term |
| 365 // extraction. | 321 // extraction. |
| 366 UIThreadSearchTermsData::SetGoogleBaseURL(std::string()); | 322 UIThreadSearchTermsData::SetGoogleBaseURL(std::string()); |
| 367 CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL, | 323 CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL, |
| 368 "http://www.foo.com/"); | 324 "http://www.foo.com/"); |
| 369 NavigateAndCheckText( | 325 NavigateAndCheckText( |
| 370 GURL("http://www.foo.com/search?q=tractor+supply&espv=1"), | 326 GURL("http://www.foo.com/search?q=tractor+supply&espv=1"), |
| 371 base::ASCIIToUTF16("tractor supply"), true, true); | 327 base::ASCIIToUTF16("tractor supply"), true, true); |
| 372 } | 328 } |
| 373 | 329 |
| 374 // Popup windows don't have an origin chip, so test that URL display in a popup | 330 // Test that URL display in a popup respects the query extraction flag. |
| 375 // ignores whether the origin chip is enabled and only respects the query | |
| 376 // extraction flag. | |
| 377 TEST_F(PopupToolbarModelTest, ShouldDisplayURL) { | 331 TEST_F(PopupToolbarModelTest, ShouldDisplayURL) { |
| 378 AddTab(browser(), GURL(url::kAboutBlankURL)); | 332 AddTab(browser(), GURL(url::kAboutBlankURL)); |
| 379 | 333 |
| 380 // Check with neither query extraction nor the origin chip enabled. | 334 // Check with query extraction disabled. |
| 381 EXPECT_FALSE(chrome::ShouldDisplayOriginChip()); | |
| 382 EXPECT_FALSE(chrome::IsQueryExtractionEnabled()); | 335 EXPECT_FALSE(chrome::IsQueryExtractionEnabled()); |
| 383 for (size_t i = 0; i < arraysize(test_items); ++i) { | 336 for (size_t i = 0; i < arraysize(test_items); ++i) { |
| 384 const TestItem& test_item = test_items[i]; | 337 const TestItem& test_item = test_items[i]; |
| 385 NavigateAndCheckText(test_item.url, | |
| 386 test_item.expected_text_url_replacement_inactive, | |
| 387 false, test_item.should_display_url); | |
| 388 } | |
| 389 | |
| 390 // Check with the origin chip enabled. | |
| 391 EnableOriginChipFieldTrial(); | |
| 392 EXPECT_TRUE(chrome::ShouldDisplayOriginChip()); | |
| 393 EXPECT_FALSE(chrome::IsQueryExtractionEnabled()); | |
| 394 for (size_t i = 0; i < arraysize(test_items); ++i) { | |
| 395 const TestItem& test_item = test_items[i]; | |
| 396 NavigateAndCheckText(test_item.url, | 338 NavigateAndCheckText(test_item.url, |
| 397 test_item.expected_text_url_replacement_inactive, | 339 test_item.expected_text_url_replacement_inactive, |
| 398 false, test_item.should_display_url); | 340 false, test_item.should_display_url); |
| 399 } | 341 } |
| 400 | 342 |
| 401 // With both origin chip and query extraction enabled, only search term | 343 // With query extraction enabled, search term replacement should be performed. |
| 402 // replacement should be performed. | |
| 403 chrome::EnableQueryExtractionForTesting(); | 344 chrome::EnableQueryExtractionForTesting(); |
| 404 EXPECT_TRUE(chrome::IsQueryExtractionEnabled()); | 345 EXPECT_TRUE(chrome::IsQueryExtractionEnabled()); |
| 405 EXPECT_TRUE(browser()->toolbar_model()->url_replacement_enabled()); | 346 EXPECT_TRUE(browser()->toolbar_model()->url_replacement_enabled()); |
| 406 for (size_t i = 0; i < arraysize(test_items); ++i) { | 347 for (size_t i = 0; i < arraysize(test_items); ++i) { |
| 407 const TestItem& test_item = test_items[i]; | 348 const TestItem& test_item = test_items[i]; |
| 408 NavigateAndCheckText(test_item.url, | 349 NavigateAndCheckText(test_item.url, |
| 409 test_item.expected_text_query_extraction, | 350 test_item.expected_text_query_extraction, |
| 410 test_item.would_perform_search_term_replacement, | 351 test_item.would_perform_search_term_replacement, |
| 411 test_item.should_display_url); | 352 test_item.should_display_url); |
| 412 } | 353 } |
| 413 | 354 |
| 414 // Disabling URL replacement should reset to only showing URLs. | 355 // Disabling URL replacement should reset to only showing URLs. |
| 415 browser()->toolbar_model()->set_url_replacement_enabled(false); | 356 browser()->toolbar_model()->set_url_replacement_enabled(false); |
| 416 for (size_t i = 0; i < arraysize(test_items); ++i) { | 357 for (size_t i = 0; i < arraysize(test_items); ++i) { |
| 417 const TestItem& test_item = test_items[i]; | 358 const TestItem& test_item = test_items[i]; |
| 418 NavigateAndCheckText(test_item.url, | 359 NavigateAndCheckText(test_item.url, |
| 419 test_item.expected_text_url_replacement_inactive, | 360 test_item.expected_text_url_replacement_inactive, |
| 420 false, test_item.should_display_url); | 361 false, test_item.should_display_url); |
| 421 } | 362 } |
| 422 } | 363 } |
| OLD | NEW |