Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1568)

Unified Diff: chrome/browser/chromeos/file_system_provider/operations/operation.h

Issue 257493004: [fsp] Refactor handling operations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed tests. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..84208d4a443688476622a57c0483e57d533fbab6
--- /dev/null
+++ b/chrome/browser/chromeos/file_system_provider/operations/operation.h
@@ -0,0 +1,69 @@
+// 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;
+} // 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 SetDispatchEventImplForTesting(
+ const DispatchEventImplCallback& callback);
+
+ 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);
+
+ 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_

Powered by Google App Engine
This is Rietveld 408576698