1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_TEST_UTIL_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_TEST_UTIL_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <vector>
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/files/file.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_vector.h"
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace extensions {
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct Event;
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace extensions
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace chromeos {
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace file_system_provider {
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace operations {
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace util {
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Fake event dispatcher implementation with extra logging capability. Acts as
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// a providing extension end-point.
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass LoggingDispatchEventImpl {
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  explicit LoggingDispatchEventImpl(bool dispatch_reply);
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~LoggingDispatchEventImpl();
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Handles sending an event to a providing extension.
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool OnDispatchEventImpl(scoped_ptr<extensions::Event> event);
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Returns events sent to providing extensions.
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ScopedVector<extensions::Event>& events() { return events_; }
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ScopedVector<extensions::Event> events_;
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool dispatch_reply_;
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(LoggingDispatchEventImpl);
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Container for remembering operations' callback invocations.
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtypedef std::vector<base::File::Error> StatusCallbackLog;
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Pushes a result of the StatusCallback invocation to a log vector.
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid LogStatusCallback(StatusCallbackLog* log, base::File::Error result);
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace util
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace operations
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace file_system_provider
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace chromeos
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_TEST_UTIL_H_
55