| // 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. |
| |
| #ifndef COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_TEST_ARCHIVER_H_ |
| #define COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_TEST_ARCHIVER_H_ |
| |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/single_thread_task_runner.h" |
| #include "components/offline_pages/offline_page_archiver.h" |
| |
| class GURL; |
| |
| namespace base { |
| class FilePath; |
| } // namespace |
| |
| namespace offline_pages { |
| |
| // A test archiver class, which allows for testing offline pages without a need |
| // for an actual web contents. |
| class OfflinePageTestArchiver : public OfflinePageArchiver { |
| public: |
| class Observer { |
| public: |
| virtual ~Observer() {} |
| virtual void SetLastPathCreatedByArchiver( |
| const base::FilePath& file_path) = 0; |
| }; |
| |
| OfflinePageTestArchiver( |
| Observer* observer, |
| const GURL& url, |
| ArchiverResult result, |
| int64 size_to_report, |
| const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); |
| ~OfflinePageTestArchiver() override; |
| |
| // OfflinePageArchiver implementation: |
| void CreateArchive(const base::FilePath& archives_dir, |
| const CreateArchiveCallback& callback) override; |
| |
| // Completes the creation of archive. Should be used with |set_delayed| set to |
| // ture. |
| void CompleteCreateArchive(); |
| |
| // When set to true, |CompleteCreateArchive| should be called explicitly for |
| // the process to finish. |
| void set_delayed(bool delayed) { delayed_ = delayed; } |
| |
| bool create_archive_called() const { return create_archive_called_; } |
| |
| private: |
| // Not owned. Outlives OfflinePageTestArchiver. |
| Observer* observer_; |
| GURL url_; |
| base::FilePath archives_dir_; |
| ArchiverResult result_; |
| int64 size_to_report_; |
| bool create_archive_called_; |
| bool delayed_; |
| CreateArchiveCallback callback_; |
| scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| |
| DISALLOW_COPY_AND_ASSIGN(OfflinePageTestArchiver); |
| }; |
| |
| } // namespace offline_pages |
| |
| #endif // COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_TEST_ARCHIVER_H_ |