12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // 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.
- #include "components/offline_pages/core/offline_page_test_archiver.h"
- #include <string>
- #include <utility>
- #include "base/bind.h"
- #include "base/files/file_util.h"
- #include "base/location.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "url/gurl.h"
- namespace offline_pages {
- OfflinePageTestArchiver::OfflinePageTestArchiver(
- Observer* observer,
- const GURL& url,
- ArchiverResult result,
- const std::u16string& result_title,
- int64_t size_to_report,
- const std::string& digest_to_report,
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
- : observer_(observer),
- url_(url),
- create_archive_params_(std::string()),
- result_(result),
- size_to_report_(size_to_report),
- expect_create_archive_called_(false),
- create_archive_called_(false),
- delayed_(false),
- result_title_(result_title),
- digest_to_report_(digest_to_report),
- task_runner_(task_runner) {}
- OfflinePageTestArchiver::~OfflinePageTestArchiver() {
- if (expect_create_archive_called_)
- EXPECT_TRUE(create_archive_called_);
- }
- void OfflinePageTestArchiver::CreateArchive(
- const base::FilePath& archives_dir,
- const CreateArchiveParams& create_archive_params,
- content::WebContents* web_contents,
- CreateArchiveCallback callback) {
- create_archive_called_ = true;
- callback_ = std::move(callback);
- archives_dir_ = archives_dir;
- create_archive_params_ = create_archive_params;
- if (!delayed_)
- CompleteCreateArchive();
- }
- void OfflinePageTestArchiver::CompleteCreateArchive() {
- DCHECK(!callback_.is_null());
- base::FilePath archive_path;
- if (filename_.empty()) {
- ASSERT_TRUE(base::CreateTemporaryFileInDir(archives_dir_, &archive_path));
- } else if (filename_.IsAbsolute()) {
- archive_path = filename_;
- } else {
- archive_path = archives_dir_.Append(filename_);
- // This step ensures the file is created and closed immediately.
- base::File file(archive_path, base::File::FLAG_OPEN_ALWAYS);
- }
- if (observer_)
- observer_->SetLastPathCreatedByArchiver(archive_path);
- task_runner_->PostTask(
- FROM_HERE,
- base::BindOnce(std::move(callback_), result_, url_, archive_path,
- result_title_, size_to_report_, digest_to_report_));
- }
- } // namespace offline_pages
|