Chromium Code Reviews| Index: chrome/browser/previews/previews_service.cc |
| diff --git a/chrome/browser/previews/previews_service.cc b/chrome/browser/previews/previews_service.cc |
| index bfc31eaa413f45c50099d837c54aab0ec5c4a08c..35777738e33fa0813e5f45de23bade99a093225a 100644 |
| --- a/chrome/browser/previews/previews_service.cc |
| +++ b/chrome/browser/previews/previews_service.cc |
| @@ -4,17 +4,66 @@ |
| #include "chrome/browser/previews/previews_service.h" |
| +#include "base/bind.h" |
| #include "base/files/file_path.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/sequenced_task_runner.h" |
| #include "base/threading/sequenced_worker_pool.h" |
| #include "chrome/common/chrome_constants.h" |
| +#include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h" |
|
tbansal1
2017/03/10 23:06:23
rm this include?
RyanSturm
2017/03/13 21:12:46
Done.
|
| +#include "components/previews/core/previews_experiments.h" |
| #include "components/previews/core/previews_io_data.h" |
| #include "components/previews/core/previews_opt_out_store.h" |
| #include "components/previews/core/previews_opt_out_store_sql.h" |
| #include "components/previews/core/previews_ui_service.h" |
| #include "content/public/browser/browser_thread.h" |
| +namespace { |
| + |
| +// Returns true if previews can be shown for |type|. |
| +bool IsPreviewsTypeEnabled(previews::PreviewsType type) { |
| + switch (type) { |
| + case previews::PreviewsType::OFFLINE: |
| + return previews::params::IsOfflinePreviewsEnabled(); |
| + case previews::PreviewsType::NONE: |
| + case previews::PreviewsType::LAST: |
| + break; |
| + } |
| + NOTREACHED(); |
| + return false; |
| +} |
| + |
| +// Returns the version of preview treatment |type|. Defaults to 0 if not |
| +// specified in field trial config. |
| +int GetPreviewsTypeVersion(previews::PreviewsType type) { |
| + switch (type) { |
| + case previews::PreviewsType::OFFLINE: |
| + return previews::params::OfflinePreviewsVersion(); |
| + case previews::PreviewsType::NONE: |
| + case previews::PreviewsType::LAST: |
| + break; |
| + } |
| + NOTREACHED(); |
| + return -1; |
| +} |
| + |
| +// Returns the enabled PreviewsTypes with their version. |
| +std::unique_ptr<previews::PreviewsTypeList> GetEnabledPreviews() { |
| + std::unique_ptr<previews::PreviewsTypeList> enabled_previews( |
| + new previews::PreviewsTypeList()); |
| + |
| + // Loop across all previews types (relies on sequential enum values). |
| + for (int i = static_cast<int>(previews::PreviewsType::NONE) + 1; |
| + i < static_cast<int>(previews::PreviewsType::LAST); ++i) { |
| + previews::PreviewsType type = static_cast<previews::PreviewsType>(i); |
| + if (IsPreviewsTypeEnabled(type)) |
| + enabled_previews->push_back({type, GetPreviewsTypeVersion(type)}); |
| + } |
| + return enabled_previews; |
| +} |
| + |
| +} // namespace |
| + |
| PreviewsService::PreviewsService() { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| } |
| @@ -39,5 +88,7 @@ void PreviewsService::Initialize( |
| previews_io_data, io_task_runner, |
| base::MakeUnique<previews::PreviewsOptOutStoreSQL>( |
| io_task_runner, background_task_runner, |
| - profile_path.Append(chrome::kPreviewsOptOutDBFilename))); |
| + profile_path.Append(chrome::kPreviewsOptOutDBFilename), |
| + GetEnabledPreviews()), |
| + base::Bind(&IsPreviewsTypeEnabled)); |
| } |