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#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_TEST_UTIL_H_ 6#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_TEST_UTIL_H_ 7 8#include <vector> 9 10#include "base/files/file.h" 11#include "base/memory/scoped_ptr.h" 12#include "base/memory/scoped_vector.h" 13 14namespace extensions { 15struct Event; 16} // namespace extensions 17 18namespace chromeos { 19namespace file_system_provider { 20namespace operations { 21namespace util { 22 23// Fake event dispatcher implementation with extra logging capability. Acts as 24// a providing extension end-point. 25class LoggingDispatchEventImpl { 26 public: 27 explicit LoggingDispatchEventImpl(bool dispatch_reply); 28 virtual ~LoggingDispatchEventImpl(); 29 30 // Handles sending an event to a providing extension. 31 bool OnDispatchEventImpl(scoped_ptr<extensions::Event> event); 32 33 // Returns events sent to providing extensions. 34 ScopedVector<extensions::Event>& events() { return events_; } 35 36 private: 37 ScopedVector<extensions::Event> events_; 38 bool dispatch_reply_; 39 40 DISALLOW_COPY_AND_ASSIGN(LoggingDispatchEventImpl); 41}; 42 43// Container for remembering operations' callback invocations. 44typedef std::vector<base::File::Error> StatusCallbackLog; 45 46// Pushes a result of the StatusCallback invocation to a log vector. 47void LogStatusCallback(StatusCallbackLog* log, base::File::Error result); 48 49} // namespace util 50} // namespace operations 51} // namespace file_system_provider 52} // namespace chromeos 53 54#endif // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_TEST_UTIL_H_ 55