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" |
| 11 #include "base/metrics/field_trial.h" |
11 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
12 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
13 #include "base/values.h" | 14 #include "base/values.h" |
14 #include "components/metrics/proto/omnibox_event.pb.h" | 15 #include "components/metrics/proto/omnibox_event.pb.h" |
15 #include "components/omnibox/browser/mock_autocomplete_provider_client.h" | 16 #include "components/omnibox/browser/mock_autocomplete_provider_client.h" |
| 17 #include "components/omnibox/browser/omnibox_field_trial.h" |
16 #include "components/omnibox/browser/test_scheme_classifier.h" | 18 #include "components/omnibox/browser/test_scheme_classifier.h" |
17 #include "components/physical_web/data_source/fake_physical_web_data_source.h" | 19 #include "components/physical_web/data_source/fake_physical_web_data_source.h" |
18 #include "components/physical_web/data_source/physical_web_data_source.h" | 20 #include "components/physical_web/data_source/physical_web_data_source.h" |
19 #include "components/physical_web/data_source/physical_web_listener.h" | 21 #include "components/physical_web/data_source/physical_web_listener.h" |
| 22 #include "components/variations/entropy_provider.h" |
| 23 #include "components/variations/variations_associated_data.h" |
20 #include "grit/components_strings.h" | 24 #include "grit/components_strings.h" |
21 #include "testing/gmock/include/gmock/gmock.h" | 25 #include "testing/gmock/include/gmock/gmock.h" |
22 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
23 #include "ui/base/l10n/l10n_util.h" | 27 #include "ui/base/l10n/l10n_util.h" |
24 #include "ui/gfx/text_elider.h" | 28 #include "ui/gfx/text_elider.h" |
25 #include "url/gurl.h" | 29 #include "url/gurl.h" |
26 | 30 |
27 using physical_web::FakePhysicalWebDataSource; | 31 using physical_web::FakePhysicalWebDataSource; |
28 using physical_web::PhysicalWebDataSource; | 32 using physical_web::PhysicalWebDataSource; |
29 using physical_web::PhysicalWebListener; | 33 using physical_web::PhysicalWebListener; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 private: | 69 private: |
66 std::unique_ptr<FakePhysicalWebDataSource> physical_web_data_source_; | 70 std::unique_ptr<FakePhysicalWebDataSource> physical_web_data_source_; |
67 TestSchemeClassifier scheme_classifier_; | 71 TestSchemeClassifier scheme_classifier_; |
68 bool is_off_the_record_; | 72 bool is_off_the_record_; |
69 }; | 73 }; |
70 | 74 |
71 } // namespace | 75 } // namespace |
72 | 76 |
73 class PhysicalWebProviderTest : public testing::Test { | 77 class PhysicalWebProviderTest : public testing::Test { |
74 protected: | 78 protected: |
75 PhysicalWebProviderTest() : provider_(NULL) {} | 79 PhysicalWebProviderTest() : provider_(NULL) { |
| 80 ResetFieldTrialList(); |
| 81 } |
| 82 |
76 ~PhysicalWebProviderTest() override {} | 83 ~PhysicalWebProviderTest() override {} |
77 | 84 |
78 void SetUp() override { | 85 void SetUp() override { |
| 86 base::FieldTrial* trial = CreatePhysicalWebFieldTrial(); |
| 87 trial->group(); |
79 client_.reset(new FakeAutocompleteProviderClient()); | 88 client_.reset(new FakeAutocompleteProviderClient()); |
80 provider_ = PhysicalWebProvider::Create(client_.get(), nullptr); | 89 provider_ = PhysicalWebProvider::Create(client_.get(), nullptr); |
81 } | 90 } |
82 | 91 |
83 void TearDown() override { | 92 void TearDown() override { |
84 provider_ = NULL; | 93 provider_ = NULL; |
85 } | 94 } |
86 | 95 |
| 96 void ResetFieldTrialList() { |
| 97 // Destroy the existing FieldTrialList before creating a new one to avoid a |
| 98 // DCHECK. |
| 99 field_trial_list_.reset(); |
| 100 field_trial_list_.reset(new base::FieldTrialList( |
| 101 base::MakeUnique<metrics::SHA1EntropyProvider>("foo"))); |
| 102 variations::testing::ClearAllVariationParams(); |
| 103 } |
| 104 |
| 105 static base::FieldTrial* CreatePhysicalWebFieldTrial() { |
| 106 std::map<std::string, std::string> params; |
| 107 params[OmniboxFieldTrial::kPhysicalWebZeroSuggestRule] = "true"; |
| 108 params[OmniboxFieldTrial::kPhysicalWebAfterTypingRule] = "true"; |
| 109 variations::AssociateVariationParams( |
| 110 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params); |
| 111 return base::FieldTrialList::CreateFieldTrial( |
| 112 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 113 } |
| 114 |
87 // Create a dummy metadata list with |metadata_count| items. Each item is | 115 // Create a dummy metadata list with |metadata_count| items. Each item is |
88 // populated with a unique scanned URL and page metadata. | 116 // populated with a unique scanned URL and page metadata. |
89 static std::unique_ptr<base::ListValue> CreateMetadata( | 117 static std::unique_ptr<base::ListValue> CreateMetadata( |
90 size_t metadata_count) { | 118 size_t metadata_count) { |
91 auto metadata_list = base::MakeUnique<base::ListValue>(); | 119 auto metadata_list = base::MakeUnique<base::ListValue>(); |
92 for (size_t i = 0; i < metadata_count; ++i) { | 120 for (size_t i = 0; i < metadata_count; ++i) { |
93 std::string item_id = base::SizeTToString(i); | 121 std::string item_id = base::SizeTToString(i); |
94 std::string url = "https://example.com/" + item_id; | 122 std::string url = "https://example.com/" + item_id; |
95 auto metadata_item = base::MakeUnique<base::DictionaryValue>(); | 123 auto metadata_item = base::MakeUnique<base::DictionaryValue>(); |
96 metadata_item->SetString(physical_web::kScannedUrlKey, url); | 124 metadata_item->SetString(physical_web::kScannedUrlKey, url); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 } else if (match.allowed_to_be_default_match) { | 242 } else if (match.allowed_to_be_default_match) { |
215 ++default_match_count; | 243 ++default_match_count; |
216 } | 244 } |
217 } | 245 } |
218 EXPECT_EQ(should_expect_overflow_item ? 1U : 0U, overflow_match_count); | 246 EXPECT_EQ(should_expect_overflow_item ? 1U : 0U, overflow_match_count); |
219 EXPECT_EQ(should_expect_default_match ? 1U : 0U, default_match_count); | 247 EXPECT_EQ(should_expect_default_match ? 1U : 0U, default_match_count); |
220 } | 248 } |
221 | 249 |
222 std::unique_ptr<FakeAutocompleteProviderClient> client_; | 250 std::unique_ptr<FakeAutocompleteProviderClient> client_; |
223 scoped_refptr<PhysicalWebProvider> provider_; | 251 scoped_refptr<PhysicalWebProvider> provider_; |
| 252 std::unique_ptr<base::FieldTrialList> field_trial_list_; |
224 | 253 |
225 private: | 254 private: |
226 DISALLOW_COPY_AND_ASSIGN(PhysicalWebProviderTest); | 255 DISALLOW_COPY_AND_ASSIGN(PhysicalWebProviderTest); |
227 }; | 256 }; |
228 | 257 |
229 TEST_F(PhysicalWebProviderTest, TestEmptyMetadataListCreatesNoMatches) { | 258 TEST_F(PhysicalWebProviderTest, TestEmptyMetadataListCreatesNoMatches) { |
230 FakePhysicalWebDataSource* data_source = | 259 FakePhysicalWebDataSource* data_source = |
231 client_->GetFakePhysicalWebDataSource(); | 260 client_->GetFakePhysicalWebDataSource(); |
232 EXPECT_TRUE(data_source); | 261 EXPECT_TRUE(data_source); |
233 | 262 |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 | 400 |
372 FakePhysicalWebDataSource* data_source = | 401 FakePhysicalWebDataSource* data_source = |
373 client_->GetFakePhysicalWebDataSource(); | 402 client_->GetFakePhysicalWebDataSource(); |
374 EXPECT_TRUE(data_source); | 403 EXPECT_TRUE(data_source); |
375 | 404 |
376 data_source->SetMetadata(CreateMetadata(1)); | 405 data_source->SetMetadata(CreateMetadata(1)); |
377 provider_->Start(CreateInputForNTP(), false); | 406 provider_->Start(CreateInputForNTP(), false); |
378 | 407 |
379 EXPECT_TRUE(provider_->matches().empty()); | 408 EXPECT_TRUE(provider_->matches().empty()); |
380 } | 409 } |
OLD | NEW |