| Index: chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h
|
| diff --git a/chrome/browser/chromeos/arc/fileapi/arc_deferred_file_system_operation_runner.h b/chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h
|
| similarity index 53%
|
| rename from chrome/browser/chromeos/arc/fileapi/arc_deferred_file_system_operation_runner.h
|
| rename to chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h
|
| index d9685c91fa1e16c1aff4590852dff49bccfa785b..3d38acebd3d77732644d81855019d3c7dc9d67dc 100644
|
| --- a/chrome/browser/chromeos/arc/fileapi/arc_deferred_file_system_operation_runner.h
|
| +++ b/chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h
|
| @@ -2,9 +2,10 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_DEFERRED_FILE_SYSTEM_OPERATION_RUNNER_H_
|
| -#define CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_DEFERRED_FILE_SYSTEM_OPERATION_RUNNER_H_
|
| +#ifndef CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_H_
|
| +#define CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_H_
|
|
|
| +#include <memory>
|
| #include <string>
|
| #include <vector>
|
|
|
| @@ -14,12 +15,15 @@
|
| #include "chrome/browser/chromeos/arc/arc_session_manager.h"
|
| #include "components/arc/arc_service.h"
|
| #include "components/arc/common/file_system.mojom.h"
|
| -#include "components/arc/file_system/arc_file_system_operation_runner.h"
|
| #include "components/arc/instance_holder.h"
|
|
|
| namespace arc {
|
|
|
| -// Implements deferred ARC file system operations.
|
| +// Runs ARC file system operations.
|
| +//
|
| +// This is an abstraction layer on top of mojom::FileSystemInstance. All ARC
|
| +// file system operations should go through this class, rather than invoking
|
| +// mojom::FileSystemInstance directly.
|
| //
|
| // When ARC is disabled or ARC has already booted, file system operations are
|
| // performed immediately. While ARC boot is under progress, file operations are
|
| @@ -38,26 +42,42 @@ namespace arc {
|
| // failing immediately.
|
| //
|
| // All member functions must be called on the UI thread.
|
| -class ArcDeferredFileSystemOperationRunner
|
| - : public ArcFileSystemOperationRunner,
|
| +class ArcFileSystemOperationRunner
|
| + : public ArcService,
|
| public ArcSessionManager::Observer,
|
| public InstanceHolder<mojom::FileSystemInstance>::Observer {
|
| public:
|
| - explicit ArcDeferredFileSystemOperationRunner(
|
| + using GetFileSizeCallback = mojom::FileSystemInstance::GetFileSizeCallback;
|
| + using OpenFileToReadCallback =
|
| + mojom::FileSystemInstance::OpenFileToReadCallback;
|
| + using GetDocumentCallback = mojom::FileSystemInstance::GetDocumentCallback;
|
| + using GetChildDocumentsCallback =
|
| + mojom::FileSystemInstance::GetChildDocumentsCallback;
|
| +
|
| + // For supporting ArcServiceManager::GetService<T>().
|
| + static const char kArcServiceName[];
|
| +
|
| + // Creates an instance suitable for unit tests.
|
| + // This instance will run all operations immediately without deferring by
|
| + // default. Also, deferring can be enabled/disabled by calling
|
| + // SetShouldDefer() from friend classes.
|
| + static std::unique_ptr<ArcFileSystemOperationRunner> CreateForTesting(
|
| ArcBridgeService* bridge_service);
|
| - ~ArcDeferredFileSystemOperationRunner() override;
|
|
|
| - // ArcFileSystemOperationRunner overrides:
|
| - void GetFileSize(const GURL& url,
|
| - const GetFileSizeCallback& callback) override;
|
| - void OpenFileToRead(const GURL& url,
|
| - const OpenFileToReadCallback& callback) override;
|
| + // The standard constructor. A production instance should be created by
|
| + // this constructor.
|
| + explicit ArcFileSystemOperationRunner(ArcBridgeService* bridge_service);
|
| + ~ArcFileSystemOperationRunner() override;
|
| +
|
| + // Runs file system operations. See file_system.mojom for documentation.
|
| + void GetFileSize(const GURL& url, const GetFileSizeCallback& callback);
|
| + void OpenFileToRead(const GURL& url, const OpenFileToReadCallback& callback);
|
| void GetDocument(const std::string& authority,
|
| const std::string& document_id,
|
| - const GetDocumentCallback& callback) override;
|
| + const GetDocumentCallback& callback);
|
| void GetChildDocuments(const std::string& authority,
|
| const std::string& parent_document_id,
|
| - const GetChildDocumentsCallback& callback) override;
|
| + const GetChildDocumentsCallback& callback);
|
|
|
| // ArcSessionManager::Observer overrides:
|
| void OnArcOptInChanged(bool enabled) override;
|
| @@ -67,16 +87,17 @@ class ArcDeferredFileSystemOperationRunner
|
| void OnInstanceClosed() override;
|
|
|
| private:
|
| - friend class ArcDeferredFileSystemOperationRunnerTest;
|
| + friend class ArcFileSystemOperationRunnerTest;
|
|
|
| - // Constructor called from unit tests.
|
| - ArcDeferredFileSystemOperationRunner(ArcBridgeService* bridge_service,
|
| - bool observe_events);
|
| + ArcFileSystemOperationRunner(ArcBridgeService* bridge_service,
|
| + bool observe_events);
|
|
|
| // Called whenever ARC states related to |should_defer_| are changed.
|
| void OnStateChanged();
|
|
|
| // Enables/disables deferring.
|
| + // Friend unit tests can call this function to simulate enabling/disabling
|
| + // deferring.
|
| void SetShouldDefer(bool should_defer);
|
|
|
| // Indicates if this instance should register observers to receive events.
|
| @@ -84,16 +105,18 @@ class ArcDeferredFileSystemOperationRunner
|
| bool observe_events_;
|
|
|
| // Set to true if operations should be deferred at this moment.
|
| - bool should_defer_ = true;
|
| + // The default is set to false so that operations are not deferred in
|
| + // unit tests.
|
| + bool should_defer_ = false;
|
|
|
| // List of deferred operations.
|
| std::vector<base::Closure> deferred_operations_;
|
|
|
| - base::WeakPtrFactory<ArcDeferredFileSystemOperationRunner> weak_ptr_factory_;
|
| + base::WeakPtrFactory<ArcFileSystemOperationRunner> weak_ptr_factory_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(ArcDeferredFileSystemOperationRunner);
|
| + DISALLOW_COPY_AND_ASSIGN(ArcFileSystemOperationRunner);
|
| };
|
|
|
| } // namespace arc
|
|
|
| -#endif // CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_DEFERRED_FILE_SYSTEM_OPERATION_RUNNER_H_
|
| +#endif // CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_H_
|
|
|