Chromium Code Reviews| Index: chrome/browser/chromeos/file_system_provider/operations/operation.h |
| diff --git a/chrome/browser/chromeos/file_system_provider/operations/operation.h b/chrome/browser/chromeos/file_system_provider/operations/operation.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..533708cac1198d76e433405e4834f482d2c9473c |
| --- /dev/null |
| +++ b/chrome/browser/chromeos/file_system_provider/operations/operation.h |
| @@ -0,0 +1,70 @@ |
| +// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_OPERATION_H_ |
| +#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_OPERATION_H_ |
| + |
| +#include <string> |
| + |
| +#include "base/files/file.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h" |
| +#include "chrome/browser/chromeos/file_system_provider/request_manager.h" |
| +#include "webkit/browser/fileapi/async_file_util.h" |
| + |
| +namespace base { |
| +class ListValue; |
| +class Value; |
|
kinaba
2014/04/25 06:35:06
nit: not used.
mtomasz
2014/04/28 00:42:47
Done.
|
| +} // namespace base |
| + |
| +namespace extensions { |
| +struct Event; |
| +class EventRouter; |
| +} // namespace extensions |
| + |
| +namespace chromeos { |
| +namespace file_system_provider { |
| +namespace operations { |
| + |
| +// Base class for operation bridges between fileapi and providing extensions. |
| +class Operation : public RequestManager::HandlerInterface { |
| + public: |
| + typedef base::Callback<bool(scoped_ptr<extensions::Event> event)> |
| + DispatchEventImplCallback; |
| + |
| + Operation(extensions::EventRouter* event_router, |
| + const ProvidedFileSystemInfo& file_system_info); |
| + virtual ~Operation(); |
| + |
| + // RequestManager::HandlerInterface overrides. |
| + virtual bool Execute(int request_id) OVERRIDE = 0; |
| + virtual void OnSuccess(int request_id, |
| + scoped_ptr<RequestValue> result, |
| + bool has_next) OVERRIDE = 0; |
| + virtual void OnError(int request_id, base::File::Error error) OVERRIDE = 0; |
| + |
| + // Sets custom dispatchign event implementation for tests. |
| + void SetDispatchEventImplForTests(const DispatchEventImplCallback& callback); |
|
kinaba
2014/04/25 06:35:06
ForTest, or ForTesting. (src/PRESUBMIT.py has a ch
mtomasz
2014/04/28 00:42:47
Good point. Done.
|
| + |
| + protected: |
| + // Sends an event to the providing extension. Automatically adds the file |
| + // system id and the request id fields. Returns false, if the providing |
| + // extension does not handle the |event_name| event. |
| + bool SendEvent(int request_id, |
| + const std::string& event_name, |
| + scoped_ptr<base::ListValue> event_args); |
| + |
| + extensions::EventRouter* event_router_; |
|
kinaba
2014/04/25 06:35:06
Does this field need to be protected? Can it go to
mtomasz
2014/04/28 00:42:47
Removed. Done.
|
| + ProvidedFileSystemInfo file_system_info_; |
| + |
| + private: |
| + DispatchEventImplCallback dispatch_event_impl_; |
| + DISALLOW_COPY_AND_ASSIGN(Operation); |
| +}; |
| + |
| +} // namespace operations |
| +} // namespace file_system_provider |
| +} // namespace chromeos |
| + |
| +#endif // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_OPERATION_H_ |