1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/chromeos/file_system_provider/operations/operation.h" 6 7#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h" 8#include "extensions/browser/event_router.h" 9 10namespace chromeos { 11namespace file_system_provider { 12namespace operations { 13namespace { 14 15// Default implementation for dispatching an event. Can be replaced for unit 16// tests by Operation::SetDispatchEventImplForTest(). 17bool DispatchEventImpl(extensions::EventRouter* event_router, 18 const std::string& extension_id, 19 scoped_ptr<extensions::Event> event) { 20 if (!event_router->ExtensionHasEventListener(extension_id, event->event_name)) 21 return false; 22 23 event_router->DispatchEventToExtension(extension_id, event.Pass()); 24 return true; 25} 26 27} // namespace 28 29Operation::Operation(extensions::EventRouter* event_router, 30 const ProvidedFileSystemInfo& file_system_info) 31 : file_system_info_(file_system_info), 32 dispatch_event_impl_(base::Bind(&DispatchEventImpl, 33 event_router, 34 file_system_info_.extension_id())) { 35} 36 37Operation::~Operation() { 38} 39 40void Operation::SetDispatchEventImplForTesting( 41 const DispatchEventImplCallback& callback) { 42 dispatch_event_impl_ = callback; 43} 44 45bool Operation::SendEvent(int request_id, 46 const std::string& event_name, 47 scoped_ptr<base::ListValue> event_args) { 48 return dispatch_event_impl_.Run( 49 make_scoped_ptr(new extensions::Event(event_name, event_args.Pass()))); 50} 51 52} // namespace operations 53} // namespace file_system_provider 54} // namespace chromeos 55