blob: d66193350808e2f1baa03d228115013afa20eb3b [file] [log] [blame]
// Copyright 2016 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.
#include "components/offline_pages/client_policy_controller.h"
#include <utility>
#include "base/time/time.h"
#include "components/offline_pages/client_namespace_constants.h"
using LifetimeType = offline_pages::LifetimePolicy::LifetimeType;
namespace offline_pages {
ClientPolicyController::ClientPolicyController() {
policies_.clear();
// Manually defining client policies for bookmark and last_n.
policies_.insert(std::make_pair(
kBookmarkNamespace,
MakePolicy(kBookmarkNamespace, LifetimeType::TEMPORARY,
base::TimeDelta::FromDays(7), kUnlimitedPages, 1)));
policies_.insert(std::make_pair(
kLastNNamespace, MakePolicy(kLastNNamespace, LifetimeType::TEMPORARY,
base::TimeDelta::FromDays(2), kUnlimitedPages,
kUnlimitedPages)));
policies_.insert(std::make_pair(
kAsyncNamespace,
OfflinePageClientPolicyBuilder(kAsyncNamespace, LifetimeType::PERSISTENT,
kUnlimitedPages, kUnlimitedPages)
.SetIsSupportedByDownload(true)
.SetIsRemovedOnCacheReset(false)
.Build()));
policies_.insert(std::make_pair(
kCCTNamespace,
MakePolicy(kCCTNamespace, LifetimeType::TEMPORARY,
base::TimeDelta::FromDays(2), kUnlimitedPages, 1)));
policies_.insert(std::make_pair(
kDownloadNamespace, OfflinePageClientPolicyBuilder(
kDownloadNamespace, LifetimeType::PERSISTENT,
kUnlimitedPages, kUnlimitedPages)
.SetIsRemovedOnCacheReset(false)
.SetIsSupportedByDownload(true)
.Build()));
policies_.insert(std::make_pair(
kNTPSuggestionsNamespace,
OfflinePageClientPolicyBuilder(kNTPSuggestionsNamespace,
LifetimeType::PERSISTENT, kUnlimitedPages,
kUnlimitedPages)
.Build()));
// Fallback policy.
policies_.insert(std::make_pair(
kDefaultNamespace, MakePolicy(kDefaultNamespace, LifetimeType::TEMPORARY,
base::TimeDelta::FromDays(1), 10, 1)));
}
ClientPolicyController::~ClientPolicyController() {}
// static
const OfflinePageClientPolicy ClientPolicyController::MakePolicy(
const std::string& name_space,
LifetimeType lifetime_type,
const base::TimeDelta& expire_period,
size_t page_limit,
size_t pages_allowed_per_url) {
return OfflinePageClientPolicyBuilder(name_space, lifetime_type, page_limit,
pages_allowed_per_url)
.SetExpirePeriod(expire_period)
.Build();
}
const OfflinePageClientPolicy& ClientPolicyController::GetPolicy(
const std::string& name_space) const {
const auto& iter = policies_.find(name_space);
if (iter != policies_.end())
return iter->second;
// Fallback when the namespace isn't defined.
return policies_.at(kDefaultNamespace);
}
bool ClientPolicyController::IsRemovedOnCacheReset(
const std::string& name_space) const {
return GetPolicy(name_space).feature_policy.is_removed_on_cache_reset;
}
bool ClientPolicyController::IsSupportedByDownload(
const std::string& name_space) const {
return GetPolicy(name_space).feature_policy.is_supported_by_download;
}
} // namespace offline_pages