OLD | NEW |
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 "components/autofill/core/browser/autofill_metrics.h" | 5 #include "components/autofill/core/browser/autofill_metrics.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/prefs/pref_service.h" | 11 #include "base/prefs/pref_service.h" |
12 #include "base/run_loop.h" | 12 #include "base/run_loop.h" |
13 #include "base/strings/string16.h" | 13 #include "base/strings/string16.h" |
14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
15 #include "base/time/time.h" | 15 #include "base/time/time.h" |
16 #include "components/autofill/core/browser/autofill_external_delegate.h" | 16 #include "components/autofill/core/browser/autofill_external_delegate.h" |
17 #include "components/autofill/core/browser/autofill_manager.h" | 17 #include "components/autofill/core/browser/autofill_manager.h" |
18 #include "components/autofill/core/browser/autofill_test_utils.h" | 18 #include "components/autofill/core/browser/autofill_test_utils.h" |
19 #include "components/autofill/core/browser/personal_data_manager.h" | 19 #include "components/autofill/core/browser/personal_data_manager.h" |
| 20 #include "components/autofill/core/browser/test_autofill_client.h" |
20 #include "components/autofill/core/browser/test_autofill_driver.h" | 21 #include "components/autofill/core/browser/test_autofill_driver.h" |
21 #include "components/autofill/core/browser/test_autofill_manager_delegate.h" | |
22 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" | 22 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" |
23 #include "components/autofill/core/common/form_data.h" | 23 #include "components/autofill/core/common/form_data.h" |
24 #include "components/autofill/core/common/form_field_data.h" | 24 #include "components/autofill/core/common/form_field_data.h" |
25 #include "components/webdata/common/web_data_results.h" | 25 #include "components/webdata/common/web_data_results.h" |
26 #include "testing/gmock/include/gmock/gmock.h" | 26 #include "testing/gmock/include/gmock/gmock.h" |
27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
28 #include "ui/gfx/rect.h" | 28 #include "ui/gfx/rect.h" |
29 #include "url/gurl.h" | 29 #include "url/gurl.h" |
30 | 30 |
31 using base::ASCIIToUTF16; | 31 using base::ASCIIToUTF16; |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 UpdateAutofillCount(); | 158 UpdateAutofillCount(); |
159 } | 159 } |
160 | 160 |
161 private: | 161 private: |
162 DISALLOW_COPY_AND_ASSIGN(TestFormStructure); | 162 DISALLOW_COPY_AND_ASSIGN(TestFormStructure); |
163 }; | 163 }; |
164 | 164 |
165 class TestAutofillManager : public AutofillManager { | 165 class TestAutofillManager : public AutofillManager { |
166 public: | 166 public: |
167 TestAutofillManager(AutofillDriver* driver, | 167 TestAutofillManager(AutofillDriver* driver, |
168 AutofillManagerDelegate* manager_delegate, | 168 AutofillClient* autofill_client, |
169 TestPersonalDataManager* personal_manager) | 169 TestPersonalDataManager* personal_manager) |
170 : AutofillManager(driver, manager_delegate, personal_manager), | 170 : AutofillManager(driver, autofill_client, personal_manager), |
171 autofill_enabled_(true) { | 171 autofill_enabled_(true) { |
172 set_metric_logger(new testing::NiceMock<MockAutofillMetrics>); | 172 set_metric_logger(new testing::NiceMock<MockAutofillMetrics>); |
173 } | 173 } |
174 virtual ~TestAutofillManager() {} | 174 virtual ~TestAutofillManager() {} |
175 | 175 |
176 virtual bool IsAutofillEnabled() const OVERRIDE { return autofill_enabled_; } | 176 virtual bool IsAutofillEnabled() const OVERRIDE { return autofill_enabled_; } |
177 | 177 |
178 void set_autofill_enabled(bool autofill_enabled) { | 178 void set_autofill_enabled(bool autofill_enabled) { |
179 autofill_enabled_ = autofill_enabled; | 179 autofill_enabled_ = autofill_enabled; |
180 } | 180 } |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 | 231 |
232 class AutofillMetricsTest : public testing::Test { | 232 class AutofillMetricsTest : public testing::Test { |
233 public: | 233 public: |
234 virtual ~AutofillMetricsTest(); | 234 virtual ~AutofillMetricsTest(); |
235 | 235 |
236 virtual void SetUp() OVERRIDE; | 236 virtual void SetUp() OVERRIDE; |
237 virtual void TearDown() OVERRIDE; | 237 virtual void TearDown() OVERRIDE; |
238 | 238 |
239 protected: | 239 protected: |
240 base::MessageLoop message_loop_; | 240 base::MessageLoop message_loop_; |
241 TestAutofillManagerDelegate manager_delegate_; | 241 TestAutofillClient autofill_client_; |
242 scoped_ptr<TestAutofillDriver> autofill_driver_; | 242 scoped_ptr<TestAutofillDriver> autofill_driver_; |
243 scoped_ptr<TestAutofillManager> autofill_manager_; | 243 scoped_ptr<TestAutofillManager> autofill_manager_; |
244 scoped_ptr<TestPersonalDataManager> personal_data_; | 244 scoped_ptr<TestPersonalDataManager> personal_data_; |
245 scoped_ptr<AutofillExternalDelegate> external_delegate_; | 245 scoped_ptr<AutofillExternalDelegate> external_delegate_; |
246 }; | 246 }; |
247 | 247 |
248 AutofillMetricsTest::~AutofillMetricsTest() { | 248 AutofillMetricsTest::~AutofillMetricsTest() { |
249 // Order of destruction is important as AutofillManager relies on | 249 // Order of destruction is important as AutofillManager relies on |
250 // PersonalDataManager to be around when it gets destroyed. | 250 // PersonalDataManager to be around when it gets destroyed. |
251 autofill_manager_.reset(); | 251 autofill_manager_.reset(); |
252 } | 252 } |
253 | 253 |
254 void AutofillMetricsTest::SetUp() { | 254 void AutofillMetricsTest::SetUp() { |
255 manager_delegate_.SetPrefs(test::PrefServiceForTesting()); | 255 autofill_client_.SetPrefs(test::PrefServiceForTesting()); |
256 | 256 |
257 // Ensure Mac OS X does not pop up a modal dialog for the Address Book. | 257 // Ensure Mac OS X does not pop up a modal dialog for the Address Book. |
258 test::DisableSystemServices(manager_delegate_.GetPrefs()); | 258 test::DisableSystemServices(autofill_client_.GetPrefs()); |
259 | 259 |
260 personal_data_.reset(new TestPersonalDataManager()); | 260 personal_data_.reset(new TestPersonalDataManager()); |
261 personal_data_->set_database(manager_delegate_.GetDatabase()); | 261 personal_data_->set_database(autofill_client_.GetDatabase()); |
262 personal_data_->SetPrefService(manager_delegate_.GetPrefs()); | 262 personal_data_->SetPrefService(autofill_client_.GetPrefs()); |
263 autofill_driver_.reset(new TestAutofillDriver()); | 263 autofill_driver_.reset(new TestAutofillDriver()); |
264 autofill_manager_.reset(new TestAutofillManager( | 264 autofill_manager_.reset(new TestAutofillManager( |
265 autofill_driver_.get(), &manager_delegate_, personal_data_.get())); | 265 autofill_driver_.get(), &autofill_client_, personal_data_.get())); |
266 | 266 |
267 external_delegate_.reset(new AutofillExternalDelegate( | 267 external_delegate_.reset(new AutofillExternalDelegate( |
268 autofill_manager_.get(), | 268 autofill_manager_.get(), |
269 autofill_driver_.get())); | 269 autofill_driver_.get())); |
270 autofill_manager_->SetExternalDelegate(external_delegate_.get()); | 270 autofill_manager_->SetExternalDelegate(external_delegate_.get()); |
271 } | 271 } |
272 | 272 |
273 void AutofillMetricsTest::TearDown() { | 273 void AutofillMetricsTest::TearDown() { |
274 // Order of destruction is important as AutofillManager relies on | 274 // Order of destruction is important as AutofillManager relies on |
275 // PersonalDataManager to be around when it gets destroyed. | 275 // PersonalDataManager to be around when it gets destroyed. |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 LogStoredProfileCount(::testing::_)).Times(0); | 578 LogStoredProfileCount(::testing::_)).Times(0); |
579 personal_data_->LoadProfiles(); | 579 personal_data_->LoadProfiles(); |
580 } | 580 } |
581 | 581 |
582 // Test that we correctly log when Autofill is enabled. | 582 // Test that we correctly log when Autofill is enabled. |
583 TEST_F(AutofillMetricsTest, AutofillIsEnabledAtStartup) { | 583 TEST_F(AutofillMetricsTest, AutofillIsEnabledAtStartup) { |
584 personal_data_->set_autofill_enabled(true); | 584 personal_data_->set_autofill_enabled(true); |
585 EXPECT_CALL(*personal_data_->metric_logger(), | 585 EXPECT_CALL(*personal_data_->metric_logger(), |
586 LogIsAutofillEnabledAtStartup(true)).Times(1); | 586 LogIsAutofillEnabledAtStartup(true)).Times(1); |
587 personal_data_->Init( | 587 personal_data_->Init( |
588 manager_delegate_.GetDatabase(), manager_delegate_.GetPrefs(), false); | 588 autofill_client_.GetDatabase(), autofill_client_.GetPrefs(), false); |
589 } | 589 } |
590 | 590 |
591 // Test that we correctly log when Autofill is disabled. | 591 // Test that we correctly log when Autofill is disabled. |
592 TEST_F(AutofillMetricsTest, AutofillIsDisabledAtStartup) { | 592 TEST_F(AutofillMetricsTest, AutofillIsDisabledAtStartup) { |
593 personal_data_->set_autofill_enabled(false); | 593 personal_data_->set_autofill_enabled(false); |
594 EXPECT_CALL(*personal_data_->metric_logger(), | 594 EXPECT_CALL(*personal_data_->metric_logger(), |
595 LogIsAutofillEnabledAtStartup(false)).Times(1); | 595 LogIsAutofillEnabledAtStartup(false)).Times(1); |
596 personal_data_->Init( | 596 personal_data_->Init( |
597 manager_delegate_.GetDatabase(), manager_delegate_.GetPrefs(), false); | 597 autofill_client_.GetDatabase(), autofill_client_.GetPrefs(), false); |
598 } | 598 } |
599 | 599 |
600 // Test that we log the number of Autofill suggestions when filling a form. | 600 // Test that we log the number of Autofill suggestions when filling a form. |
601 TEST_F(AutofillMetricsTest, AddressSuggestionsCount) { | 601 TEST_F(AutofillMetricsTest, AddressSuggestionsCount) { |
602 // Set up our form data. | 602 // Set up our form data. |
603 FormData form; | 603 FormData form; |
604 form.name = ASCIIToUTF16("TestForm"); | 604 form.name = ASCIIToUTF16("TestForm"); |
605 form.method = ASCIIToUTF16("POST"); | 605 form.method = ASCIIToUTF16("POST"); |
606 form.origin = GURL("http://example.com/form.html"); | 606 form.origin = GURL("http://example.com/form.html"); |
607 form.action = GURL("http://example.com/submit.html"); | 607 form.action = GURL("http://example.com/submit.html"); |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1089 autofill_manager_->OnFormsSeen(second_forms, | 1089 autofill_manager_->OnFormsSeen(second_forms, |
1090 TimeTicks::FromInternalValue(5)); | 1090 TimeTicks::FromInternalValue(5)); |
1091 autofill_manager_->FormSubmitted(second_form, | 1091 autofill_manager_->FormSubmitted(second_form, |
1092 TimeTicks::FromInternalValue(17)); | 1092 TimeTicks::FromInternalValue(17)); |
1093 autofill_manager_->Reset(); | 1093 autofill_manager_->Reset(); |
1094 Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger()); | 1094 Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger()); |
1095 } | 1095 } |
1096 } | 1096 } |
1097 | 1097 |
1098 } // namespace autofill | 1098 } // namespace autofill |
OLD | NEW |