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

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

Issue 1093383002: [WIP] Provided file system from NACL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Various cleanups Created 5 years, 7 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.cc
diff --git a/chrome/browser/chromeos/file_system_provider/operations/operation.cc b/chrome/browser/chromeos/file_system_provider/operations/operation.cc
index dd35b465d29cff600de17db37dae4e54304b41ed..266173b4ea3392fb2164e1c381583253d8003fe4 100644
--- a/chrome/browser/chromeos/file_system_provider/operations/operation.cc
+++ b/chrome/browser/chromeos/file_system_provider/operations/operation.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/chromeos/file_system_provider/operations/operation.h"
+#include "chrome/browser/chromeos/file_system_provider/file_system_plugin/plugineventrouter.h"
#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h"
#include "extensions/browser/event_router.h"
@@ -11,12 +12,13 @@ namespace chromeos {
namespace file_system_provider {
namespace operations {
namespace {
-
// Default implementation for dispatching an event. Can be replaced for unit
// tests by Operation::SetDispatchEventImplForTest().
-bool DispatchEventImpl(extensions::EventRouter* event_router,
- const std::string& extension_id,
- scoped_ptr<extensions::Event> event) {
+template <int source = Source_Type::extension>
+bool DispatchEventImpl(
+ typename Source_Traits<source>::EventRouterType* event_router,
+ const std::string& extension_id,
+ scoped_ptr<extensions::Event> event) {
if (!event_router->ExtensionHasEventListener(extension_id, event->event_name))
return false;
@@ -24,31 +26,50 @@ bool DispatchEventImpl(extensions::EventRouter* event_router,
return true;
}
+template <>
+bool DispatchEventImpl<Source_Type::plugin>(
+ typename Source_Traits<Source_Type::plugin>::EventRouterType* event_router,
+ const std::string& source_id,
+ scoped_ptr<extensions::Event> event) {
+ if (!event_router->PluginHasEventListener(event->event_name, source_id))
+ return false;
+
+ event_router->DispatchEventToPlugin(source_id, event.Pass());
+ return true;
+}
+
} // namespace
-Operation::Operation(extensions::EventRouter* event_router,
- const ProvidedFileSystemInfo& file_system_info)
+template <int source>
+Operation<source>::Operation(
+ typename Operation<source>::EventRouterType* event_router,
+ const ProvidedFileSystemInfo& file_system_info)
: file_system_info_(file_system_info),
- dispatch_event_impl_(base::Bind(&DispatchEventImpl,
+ dispatch_event_impl_(base::Bind(&DispatchEventImpl<source>,
event_router,
- file_system_info_.extension_id())) {
+ file_system_info_.source_id())) {
}
-
-Operation::~Operation() {
+template <int source>
+Operation<source>::~Operation() {
}
-void Operation::SetDispatchEventImplForTesting(
+template <int source>
+void Operation<source>::SetDispatchEventImplForTesting(
const DispatchEventImplCallback& callback) {
dispatch_event_impl_ = callback;
}
-bool Operation::SendEvent(int request_id,
- const std::string& event_name,
- scoped_ptr<base::ListValue> event_args) {
+template <int source>
+bool Operation<source>::SendEvent(int request_id,
+ const std::string& event_name,
+ scoped_ptr<base::ListValue> event_args) {
return dispatch_event_impl_.Run(
make_scoped_ptr(new extensions::Event(event_name, event_args.Pass())));
}
+template class Operation<Source_Type::extension>;
+template class Operation<Source_Type::plugin>;
+
} // namespace operations
} // namespace file_system_provider
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698