| Index: components/offline_pages/offline_page_model.cc
|
| diff --git a/components/offline_pages/offline_page_model.cc b/components/offline_pages/offline_page_model.cc
|
| index 66d8c9ecb2d6bfecdc790dbfe7bc213b1ab983ba..7e46efd172ad74b5d017fed648ae1dcf4ce555e2 100644
|
| --- a/components/offline_pages/offline_page_model.cc
|
| +++ b/components/offline_pages/offline_page_model.cc
|
| @@ -17,12 +17,14 @@
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/thread_task_runner_handle.h"
|
| #include "base/time/time.h"
|
| +#include "components/offline_pages/client_policy_controller.h"
|
| #include "components/offline_pages/offline_page_item.h"
|
| #include "components/offline_pages/proto/offline_pages.pb.h"
|
| #include "url/gurl.h"
|
|
|
| using ArchiverResult = offline_pages::OfflinePageArchiver::ArchiverResult;
|
| using SavePageResult = offline_pages::OfflinePageModel::SavePageResult;
|
| +using ArchiveDirs = offline_pages::OfflinePageModel::ArchiveDirs;
|
|
|
| namespace offline_pages {
|
|
|
| @@ -95,8 +97,10 @@ void FindPagesMissingArchiveFile(
|
| }
|
| }
|
|
|
| -void EnsureArchivesDirCreated(const base::FilePath& archives_dir) {
|
| - CHECK(base::CreateDirectory(archives_dir));
|
| +void EnsureArchivesDirCreated(const ArchiveDirs& archive_dirs) {
|
| + for (const auto& iter : archive_dirs) {
|
| + CHECK(base::CreateDirectory(iter.second));
|
| + }
|
| }
|
|
|
| } // namespace
|
| @@ -108,15 +112,15 @@ bool OfflinePageModel::CanSavePage(const GURL& url) {
|
|
|
| OfflinePageModel::OfflinePageModel(
|
| std::unique_ptr<OfflinePageMetadataStore> store,
|
| - const base::FilePath& archives_dir,
|
| + const ArchiveDirs& archive_dirs,
|
| const scoped_refptr<base::SequencedTaskRunner>& task_runner)
|
| : store_(std::move(store)),
|
| - archives_dir_(archives_dir),
|
| + archive_dirs_(archive_dirs),
|
| is_loaded_(false),
|
| task_runner_(task_runner),
|
| weak_ptr_factory_(this) {
|
| task_runner_->PostTaskAndReply(
|
| - FROM_HERE, base::Bind(EnsureArchivesDirCreated, archives_dir_),
|
| + FROM_HERE, base::Bind(EnsureArchivesDirCreated, archive_dirs_),
|
| base::Bind(&OfflinePageModel::OnEnsureArchivesDirCreatedDone,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
| @@ -150,7 +154,7 @@ void OfflinePageModel::SavePage(const GURL& url,
|
| int64_t offline_id = GenerateOfflineId();
|
|
|
| archiver->CreateArchive(
|
| - archives_dir_,
|
| + GetArchivePath(client_id),
|
| offline_id,
|
| base::Bind(&OfflinePageModel::OnCreateArchiveDone,
|
| weak_ptr_factory_.GetWeakPtr(), url, offline_id,
|
| @@ -715,6 +719,13 @@ int64_t OfflinePageModel::GenerateOfflineId() {
|
| return base::RandGenerator(std::numeric_limits<int64_t>::max()) + 1;
|
| }
|
|
|
| +const base::FilePath& OfflinePageModel::GetArchivePath(
|
| + const ClientId& client_id) {
|
| + OfflinePageClientPolicy policy =
|
| + ClientPolicyController::GetInstance().GetPolicy(client_id.name_space);
|
| + return archive_dirs_.at(policy.lifetime_policy.type);
|
| +}
|
| +
|
| void OfflinePageModel::RunWhenLoaded(const base::Closure& task) {
|
| if (!is_loaded_) {
|
| delayed_tasks_.push_back(task);
|
|
|