Chromium Code Reviews| Index: components/doodle/doodle_service.h |
| diff --git a/components/doodle/doodle_service.h b/components/doodle/doodle_service.h |
| index 3b519f8d06ede7eadd328a4e6fcdd6b6427ab955..ecb2ce9df14c5e277908264bb525bd8bd35b7c03 100644 |
| --- a/components/doodle/doodle_service.h |
| +++ b/components/doodle/doodle_service.h |
| @@ -11,6 +11,7 @@ |
| #include "base/observer_list.h" |
| #include "base/optional.h" |
| #include "base/time/clock.h" |
| +#include "base/time/tick_clock.h" |
| #include "base/timer/timer.h" |
| #include "components/doodle/doodle_fetcher.h" |
| #include "components/doodle/doodle_types.h" |
| @@ -38,7 +39,8 @@ class DoodleService : public KeyedService { |
| DoodleService(PrefService* pref_service, |
| std::unique_ptr<DoodleFetcher> fetcher, |
| std::unique_ptr<base::OneShotTimer> expiry_timer, |
| - std::unique_ptr<base::Clock> clock); |
| + std::unique_ptr<base::Clock> clock, |
| + std::unique_ptr<base::TickClock> tick_clock); |
| ~DoodleService() override; |
| // KeyedService implementation. |
| @@ -61,13 +63,43 @@ class DoodleService : public KeyedService { |
| void Refresh(); |
| private: |
| + // Note: Keep in sync with the corresponding enum in histograms.xml. Never |
| + // remove values, and only insert new values at the end. |
| + enum DownloadOutcome { |
| + OUTCOME_NEW_DOODLE = 0, |
| + OUTCOME_REVALIDATED_DOODLE = 1, |
| + OUTCOME_CHANGED_DOODLE = 2, |
| + OUTCOME_NO_DOODLE = 3, |
| + OUTCOME_EXPIRED = 4, |
| + OUTCOME_DOWNLOAD_ERROR = 5, |
| + OUTCOME_PARSING_ERROR = 6, |
| + // Insert new values here! |
| + OUTCOME_COUNT = 7 |
| + }; |
| + |
| + static bool DownloadOutcomeIsSuccess(DownloadOutcome outcome); |
| + static void RecordDownloadMetrics(DownloadOutcome outcome, |
| + base::TimeDelta download_time); |
| + |
| + static DownloadOutcome DetermineDownloadOutcome( |
| + const base::Optional<DoodleConfig>& old_config, |
| + const base::Optional<DoodleConfig>& new_config, |
| + DoodleState state, |
| + bool expired); |
| + |
| // Callback for the fetcher. |
| - void DoodleFetched(DoodleState state, |
| + void DoodleFetched(base::TimeTicks start_time, |
|
fhorschig
2017/03/22 09:47:10
nit: const base::TimeTicks& ?
(I guess like for Ti
Marc Treib
2017/03/22 10:47:22
Yup, all the Time types are just an int64, so they
|
| + DoodleState state, |
| base::TimeDelta time_to_live, |
| const base::Optional<DoodleConfig>& doodle_config); |
| + DownloadOutcome HandleNewConfig( |
| + DoodleState state, |
| + base::TimeDelta time_to_live, |
| + const base::Optional<DoodleConfig>& doodle_config); |
| + |
| void UpdateCachedConfig(base::TimeDelta time_to_live, |
| - const base::Optional<DoodleConfig>& doodle_config); |
| + const base::Optional<DoodleConfig>& new_config); |
| // Callback for the expiry timer. |
| void DoodleExpired(); |
| @@ -79,6 +111,7 @@ class DoodleService : public KeyedService { |
| std::unique_ptr<base::OneShotTimer> expiry_timer_; |
| std::unique_ptr<base::Clock> clock_; |
| + std::unique_ptr<base::TickClock> tick_clock_; |
| // The result of the last network fetch. |
| base::Optional<DoodleConfig> cached_config_; |