// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_BROWSING_DATA_AUTOFILL_COUNTER_H_ #define CHROME_BROWSER_BROWSING_DATA_AUTOFILL_COUNTER_H_ #include "base/macros.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" #include "chrome/browser/browsing_data/browsing_data_counter.h" #include "components/webdata/common/web_data_service_consumer.h" namespace autofill { class AutofillWebDataService; } class AutofillCounter: public BrowsingDataCounter, public WebDataServiceConsumer { public: class AutofillResult : public FinishedResult { public: AutofillResult(const AutofillCounter* source, ResultInt num_suggestions, ResultInt num_credit_cards, ResultInt num_addresses); ~AutofillResult() override; ResultInt num_credit_cards() const { return num_credit_cards_; } ResultInt num_addresses() const { return num_addresses_; } private: ResultInt num_credit_cards_; ResultInt num_addresses_; DISALLOW_COPY_AND_ASSIGN(AutofillResult); }; AutofillCounter(); ~AutofillCounter() override; // BrowsingDataCounter implementation. void OnInitialized() override; const std::string& GetPrefName() const override; // Whether the counting is in progress. bool HasPendingQuery() { return suggestions_query_ || credit_cards_query_ || addresses_query_; } // Set the beginning of the time period for testing. AutofillTable does not // allow us to set time explicitly, and BrowsingDataCounter recognizes // only predefined time periods, out of which the lowest one is one hour. // Obviously, the test cannot run that long. // TODO(msramek): Consider changing BrowsingDataCounter to use arbitrary // time periods instead of BrowsingDataRemover::TimePeriod. void SetPeriodStartForTesting(const base::Time& period_start_for_testing); private: const std::string pref_name_; base::ThreadChecker thread_checker_; scoped_refptr web_data_service_; WebDataServiceBase::Handle suggestions_query_; WebDataServiceBase::Handle credit_cards_query_; WebDataServiceBase::Handle addresses_query_; ResultInt num_suggestions_; ResultInt num_credit_cards_; ResultInt num_addresses_; base::Time period_start_for_testing_; void Count() override; // WebDataServiceConsumer implementation. void OnWebDataServiceRequestDone(WebDataServiceBase::Handle handle, const WDTypedResult* result) override; // Cancel all pending requests to AutofillWebdataService. void CancelAllRequests(); DISALLOW_COPY_AND_ASSIGN(AutofillCounter); }; #endif // CHROME_BROWSER_BROWSING_DATA_AUTOFILL_COUNTER_H_