1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Copyright 2020 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_APP_RESTORE_FULL_RESTORE_FILE_HANDLER_H_
- #define COMPONENTS_APP_RESTORE_FULL_RESTORE_FILE_HANDLER_H_
- #include <memory>
- #include "base/component_export.h"
- #include "base/files/file_path.h"
- #include "base/memory/ref_counted_delete_on_sequence.h"
- #include "base/task/sequenced_task_runner_helpers.h"
- class SequencedTaskRunner;
- namespace app_restore {
- class RestoreData;
- }
- namespace full_restore {
- // FullRestoreFileHandler is the backend used by FullRestoreSaveHandler and
- // RestoreHandler. It reads and writes RestoreData from and to disk.
- // FullRestoreFileHandler is created on the main thread, and does no IO by
- // the constructor. The real work is done by WriteToFile and ReadFromFile, which
- // must be invoked on a background task runner |owning_task_runner|.
- class COMPONENT_EXPORT(APP_RESTORE) FullRestoreFileHandler
- : public base::RefCountedDeleteOnSequence<FullRestoreFileHandler> {
- public:
- // Creates a FullRestoreFileHandler. This method is invoked on the main
- // thread, and does no IO. |path| is the path of the full restore file.
- FullRestoreFileHandler(const base::FilePath& path);
- FullRestoreFileHandler(const FullRestoreFileHandler&) = delete;
- FullRestoreFileHandler& operator=(const FullRestoreFileHandler&) = delete;
- base::SequencedTaskRunner* owning_task_runner() {
- return base::RefCountedDeleteOnSequence<
- FullRestoreFileHandler>::owning_task_runner();
- }
- // Writes |restore_data| to the full restore file. This method must be invoked
- // on a background task runner |owning_task_runner|.
- void WriteToFile(std::unique_ptr<app_restore::RestoreData> restore_data);
- // Reads |restore_data| to the full restore file. This method must be invoked
- // on a background task runner |owning_task_runner|.
- std::unique_ptr<app_restore::RestoreData> ReadFromFile();
- private:
- friend class base::RefCountedDeleteOnSequence<FullRestoreFileHandler>;
- friend class base::DeleteHelper<FullRestoreFileHandler>;
- virtual ~FullRestoreFileHandler();
- // Performs blocking I/O. Called on a background task runner
- // |owning_task_runner|.
- void WriteDataBlocking(const std::string& full_restore_data);
- // Performs blocking I/O. Called on a background task runner.
- // |owning_task_runner|. Returns true on success and false on error. The
- // reading result is written to |full_restore_data|.
- bool ReadDataBlocking(std::string& full_restore_data);
- base::FilePath file_path_;
- };
- } // namespace full_restore
- #endif // COMPONENTS_APP_RESTORE_FULL_RESTORE_FILE_HANDLER_H_
|