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 WEBKIT_BROWSER_FILEAPI_MOCK_FILE_UPDATE_OBSERVER_H_
6#define WEBKIT_BROWSER_FILEAPI_MOCK_FILE_UPDATE_OBSERVER_H_
7
8#include <map>
9
10#include "base/basictypes.h"
11#include "base/compiler_specific.h"
12#include "storage/browser/fileapi/file_observers.h"
13#include "storage/browser/fileapi/file_system_url.h"
14#include "storage/browser/fileapi/task_runner_bound_observer_list.h"
15
16namespace storage {
17
18// Mock file change observer.
19class MockFileUpdateObserver : public FileUpdateObserver {
20 public:
21  MockFileUpdateObserver();
22  virtual ~MockFileUpdateObserver();
23
24  // Creates a ChangeObserverList which only contains given |observer|.
25  static UpdateObserverList CreateList(MockFileUpdateObserver* observer);
26
27  // FileUpdateObserver overrides.
28  virtual void OnStartUpdate(const FileSystemURL& url) OVERRIDE;
29  virtual void OnUpdate(const FileSystemURL& url, int64 delta) OVERRIDE;
30  virtual void OnEndUpdate(const FileSystemURL& url) OVERRIDE;
31
32  void Enable() { is_ready_ = true; }
33
34  void Disable() {
35    start_update_count_.clear();
36    end_update_count_.clear();
37    is_ready_ = false;
38  }
39
40 private:
41  std::map<FileSystemURL, int, FileSystemURL::Comparator> start_update_count_;
42  std::map<FileSystemURL, int, FileSystemURL::Comparator> end_update_count_;
43  bool is_ready_;
44
45  DISALLOW_COPY_AND_ASSIGN(MockFileUpdateObserver);
46};
47
48}  // namespace storage
49
50#endif  // WEBKIT_BROWSER_FILEAPI_MOCK_FILE_UPDATE_OBSERVER_H_
51