| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/omnibox/browser/physical_web_provider.h" | 5 #include "components/omnibox/browser/physical_web_provider.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 | 115 |
| 116 // Create a dummy metadata list with |metadata_count| items. Each item is | 116 // Create a dummy metadata list with |metadata_count| items. Each item is |
| 117 // populated with a unique scanned URL and page metadata. | 117 // populated with a unique scanned URL and page metadata. |
| 118 static std::unique_ptr<base::ListValue> CreateMetadata( | 118 static std::unique_ptr<base::ListValue> CreateMetadata( |
| 119 size_t metadata_count) { | 119 size_t metadata_count) { |
| 120 auto metadata_list = base::MakeUnique<base::ListValue>(); | 120 auto metadata_list = base::MakeUnique<base::ListValue>(); |
| 121 for (size_t i = 0; i < metadata_count; ++i) { | 121 for (size_t i = 0; i < metadata_count; ++i) { |
| 122 std::string item_id = base::SizeTToString(i); | 122 std::string item_id = base::SizeTToString(i); |
| 123 std::string url = "https://example.com/" + item_id; | 123 std::string url = "https://example.com/" + item_id; |
| 124 auto metadata_item = base::MakeUnique<base::DictionaryValue>(); | 124 auto metadata_item = base::MakeUnique<base::DictionaryValue>(); |
| 125 metadata_item->SetString("scannedUrl", url); | 125 metadata_item->SetString(kPhysicalWebScannedUrlKey, url); |
| 126 metadata_item->SetString("resolvedUrl", url); | 126 metadata_item->SetString(kPhysicalWebResolvedUrlKey, url); |
| 127 metadata_item->SetString("icon", url); | 127 metadata_item->SetString(kPhysicalWebIconUrlKey, url); |
| 128 metadata_item->SetString("title", "Example title " + item_id); | 128 metadata_item->SetString(kPhysicalWebTitleKey, |
| 129 metadata_item->SetString("description", "Example description " + item_id); | 129 "Example title " + item_id); |
| 130 metadata_item->SetString(kPhysicalWebDescriptionKey, |
| 131 "Example description " + item_id); |
| 130 metadata_list->Append(std::move(metadata_item)); | 132 metadata_list->Append(std::move(metadata_item)); |
| 131 } | 133 } |
| 132 return metadata_list; | 134 return metadata_list; |
| 133 } | 135 } |
| 134 | 136 |
| 135 // Construct an AutocompleteInput to represent tapping the omnibox from the | 137 // Construct an AutocompleteInput to represent tapping the omnibox from the |
| 136 // new tab page. | 138 // new tab page. |
| 137 static AutocompleteInput CreateInputForNTP() { | 139 static AutocompleteInput CreateInputForNTP() { |
| 138 return AutocompleteInput( | 140 return AutocompleteInput( |
| 139 base::string16(), base::string16::npos, std::string(), GURL(), | 141 base::string16(), base::string16::npos, std::string(), GURL(), |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 MockPhysicalWebDataSource* data_source = | 275 MockPhysicalWebDataSource* data_source = |
| 274 client_->GetMockPhysicalWebDataSource(); | 276 client_->GetMockPhysicalWebDataSource(); |
| 275 EXPECT_TRUE(data_source); | 277 EXPECT_TRUE(data_source); |
| 276 | 278 |
| 277 // Extract the URL and title before inserting the metadata into the data | 279 // Extract the URL and title before inserting the metadata into the data |
| 278 // source. | 280 // source. |
| 279 std::unique_ptr<base::ListValue> metadata_list = CreateMetadata(1); | 281 std::unique_ptr<base::ListValue> metadata_list = CreateMetadata(1); |
| 280 base::DictionaryValue* metadata_item; | 282 base::DictionaryValue* metadata_item; |
| 281 EXPECT_TRUE(metadata_list->GetDictionary(0, &metadata_item)); | 283 EXPECT_TRUE(metadata_list->GetDictionary(0, &metadata_item)); |
| 282 std::string resolved_url; | 284 std::string resolved_url; |
| 283 EXPECT_TRUE(metadata_item->GetString("resolvedUrl", &resolved_url)); | 285 EXPECT_TRUE(metadata_item->GetString(kPhysicalWebResolvedUrlKey, |
| 286 &resolved_url)); |
| 284 std::string title; | 287 std::string title; |
| 285 EXPECT_TRUE(metadata_item->GetString("title", &title)); | 288 EXPECT_TRUE(metadata_item->GetString(kPhysicalWebTitleKey, &title)); |
| 286 | 289 |
| 287 data_source->SetMetadata(std::move(metadata_list)); | 290 data_source->SetMetadata(std::move(metadata_list)); |
| 288 | 291 |
| 289 // Run the test with no text in the omnibox input to simulate NTP. | 292 // Run the test with no text in the omnibox input to simulate NTP. |
| 290 provider_->Start(CreateInputForNTP(), false); | 293 provider_->Start(CreateInputForNTP(), false); |
| 291 | 294 |
| 292 // Check that there is only one match item and its fields are correct. | 295 // Check that there is only one match item and its fields are correct. |
| 293 EXPECT_EQ(1U, provider_->matches().size()); | 296 EXPECT_EQ(1U, provider_->matches().size()); |
| 294 const AutocompleteMatch& metadata_match = provider_->matches().front(); | 297 const AutocompleteMatch& metadata_match = provider_->matches().front(); |
| 295 EXPECT_EQ(AutocompleteMatchType::PHYSICAL_WEB, metadata_match.type); | 298 EXPECT_EQ(AutocompleteMatchType::PHYSICAL_WEB, metadata_match.type); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 PhysicalWebProvider::kPhysicalWebMaxMatches + 1, true, | 353 PhysicalWebProvider::kPhysicalWebMaxMatches + 1, true, |
| 351 true); | 354 true); |
| 352 } | 355 } |
| 353 | 356 |
| 354 TEST_F(PhysicalWebProviderTest, TestLongPageTitleIsTruncatedInOverflowItem) { | 357 TEST_F(PhysicalWebProviderTest, TestLongPageTitleIsTruncatedInOverflowItem) { |
| 355 // Set a long title for the first item. The page title for this item will | 358 // Set a long title for the first item. The page title for this item will |
| 356 // appear in the overflow item's content string. | 359 // appear in the overflow item's content string. |
| 357 auto metadata_list = CreateMetadata(AutocompleteProvider::kMaxMatches + 1); | 360 auto metadata_list = CreateMetadata(AutocompleteProvider::kMaxMatches + 1); |
| 358 base::DictionaryValue* metadata_item; | 361 base::DictionaryValue* metadata_item; |
| 359 EXPECT_TRUE(metadata_list->GetDictionary(0, &metadata_item)); | 362 EXPECT_TRUE(metadata_list->GetDictionary(0, &metadata_item)); |
| 360 metadata_item->SetString("title", "Extra long example title 0"); | 363 metadata_item->SetString(kPhysicalWebTitleKey, "Extra long example title 0"); |
| 361 | 364 |
| 362 OverflowItemTestCase(CreateInputForNTP(), std::move(metadata_list), | 365 OverflowItemTestCase(CreateInputForNTP(), std::move(metadata_list), |
| 363 "Extra long exa" + std::string(gfx::kEllipsis), | 366 "Extra long exa" + std::string(gfx::kEllipsis), |
| 364 PhysicalWebProvider::kPhysicalWebMaxMatches, false, | 367 PhysicalWebProvider::kPhysicalWebMaxMatches, false, |
| 365 true); | 368 true); |
| 366 } | 369 } |
| 367 | 370 |
| 368 TEST_F(PhysicalWebProviderTest, TestEmptyPageTitleInOverflowItem) { | 371 TEST_F(PhysicalWebProviderTest, TestEmptyPageTitleInOverflowItem) { |
| 369 // Set an empty title for the first item. Because the title is empty, we will | 372 // Set an empty title for the first item. Because the title is empty, we will |
| 370 // display an alternate string in the overflow item's contents. | 373 // display an alternate string in the overflow item's contents. |
| 371 auto metadata_list = CreateMetadata(AutocompleteProvider::kMaxMatches + 1); | 374 auto metadata_list = CreateMetadata(AutocompleteProvider::kMaxMatches + 1); |
| 372 base::DictionaryValue* metadata_item; | 375 base::DictionaryValue* metadata_item; |
| 373 EXPECT_TRUE(metadata_list->GetDictionary(0, &metadata_item)); | 376 EXPECT_TRUE(metadata_list->GetDictionary(0, &metadata_item)); |
| 374 metadata_item->SetString("title", ""); | 377 metadata_item->SetString(kPhysicalWebTitleKey, ""); |
| 375 | 378 |
| 376 OverflowItemTestCase(CreateInputForNTP(), std::move(metadata_list), "", | 379 OverflowItemTestCase(CreateInputForNTP(), std::move(metadata_list), "", |
| 377 PhysicalWebProvider::kPhysicalWebMaxMatches, false, | 380 PhysicalWebProvider::kPhysicalWebMaxMatches, false, |
| 378 true); | 381 true); |
| 379 } | 382 } |
| 380 | 383 |
| 381 TEST_F(PhysicalWebProviderTest, TestRTLPageTitleInOverflowItem) { | 384 TEST_F(PhysicalWebProviderTest, TestRTLPageTitleInOverflowItem) { |
| 382 // Set a Hebrew title for the first item. | 385 // Set a Hebrew title for the first item. |
| 383 auto metadata_list = CreateMetadata(AutocompleteProvider::kMaxMatches + 1); | 386 auto metadata_list = CreateMetadata(AutocompleteProvider::kMaxMatches + 1); |
| 384 base::DictionaryValue* metadata_item; | 387 base::DictionaryValue* metadata_item; |
| 385 EXPECT_TRUE(metadata_list->GetDictionary(0, &metadata_item)); | 388 EXPECT_TRUE(metadata_list->GetDictionary(0, &metadata_item)); |
| 386 metadata_item->SetString("title", "ויקיפדיה"); | 389 metadata_item->SetString(kPhysicalWebTitleKey, "ויקיפדיה"); |
| 387 | 390 |
| 388 OverflowItemTestCase(CreateInputForNTP(), std::move(metadata_list), | 391 OverflowItemTestCase(CreateInputForNTP(), std::move(metadata_list), |
| 389 "ויקיפדיה", PhysicalWebProvider::kPhysicalWebMaxMatches, | 392 "ויקיפדיה", PhysicalWebProvider::kPhysicalWebMaxMatches, |
| 390 false, true); | 393 false, true); |
| 391 } | 394 } |
| 392 | 395 |
| 393 TEST_F(PhysicalWebProviderTest, TestNoMatchesInIncognito) { | 396 TEST_F(PhysicalWebProviderTest, TestNoMatchesInIncognito) { |
| 394 // Enable incognito mode | 397 // Enable incognito mode |
| 395 client_->SetOffTheRecord(true); | 398 client_->SetOffTheRecord(true); |
| 396 | 399 |
| 397 MockPhysicalWebDataSource* data_source = | 400 MockPhysicalWebDataSource* data_source = |
| 398 client_->GetMockPhysicalWebDataSource(); | 401 client_->GetMockPhysicalWebDataSource(); |
| 399 EXPECT_TRUE(data_source); | 402 EXPECT_TRUE(data_source); |
| 400 | 403 |
| 401 data_source->SetMetadata(CreateMetadata(1)); | 404 data_source->SetMetadata(CreateMetadata(1)); |
| 402 provider_->Start(CreateInputForNTP(), false); | 405 provider_->Start(CreateInputForNTP(), false); |
| 403 | 406 |
| 404 EXPECT_TRUE(provider_->matches().empty()); | 407 EXPECT_TRUE(provider_->matches().empty()); |
| 405 } | 408 } |
| OLD | NEW |