1// Copyright (c) 2012 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_DRIVE_FAKE_FREE_DISK_SPACE_GETTER_H_
6#define CHROME_BROWSER_CHROMEOS_DRIVE_FAKE_FREE_DISK_SPACE_GETTER_H_
7
8#include <list>
9
10#include "base/basictypes.h"
11#include "chrome/browser/chromeos/drive/file_cache.h"
12
13namespace drive {
14
15// This class is used to report fake free disk space. In particular, this
16// class can be used to simulate a case where disk is full, or nearly full.
17class FakeFreeDiskSpaceGetter : public internal::FreeDiskSpaceGetterInterface {
18 public:
19  FakeFreeDiskSpaceGetter();
20  virtual ~FakeFreeDiskSpaceGetter();
21
22  void set_default_value(int64 value) { default_value_ = value; }
23
24  // Pushes the given value to the back of the fake value list.
25  //
26  // If the fake value list is empty, AmountOfFreeDiskSpace() will return
27  // |default_value_| repeatedly.
28  // Otherwise, AmountOfFreeDiskSpace() will return the value at the front of
29  // the list and removes it from the list.
30  void PushFakeValue(int64 value);
31
32  // FreeDiskSpaceGetterInterface overrides.
33  virtual int64 AmountOfFreeDiskSpace() OVERRIDE;
34
35 private:
36  std::list<int64> fake_values_;
37  int64 default_value_;
38
39  DISALLOW_COPY_AND_ASSIGN(FakeFreeDiskSpaceGetter);
40};
41
42}  // namespace drive
43
44#endif  // CHROME_BROWSER_CHROMEOS_DRIVE_FAKE_FREE_DISK_SPACE_GETTER_H_
45