• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 EXTENSIONS_BROWSER_VALUE_STORE_TESTING_VALUE_STORE_H_
6 #define EXTENSIONS_BROWSER_VALUE_STORE_TESTING_VALUE_STORE_H_
7 
8 #include "base/compiler_specific.h"
9 #include "extensions/browser/value_store/value_store.h"
10 
11 // ValueStore for testing, with an in-memory storage but the ability to
12 // optionally fail all operations.
13 class TestingValueStore : public ValueStore {
14  public:
15   TestingValueStore();
16   virtual ~TestingValueStore();
17 
18   // Sets the error code for requests. If OK, errors won't be thrown.
19   // Defaults to OK.
set_error_code(ErrorCode error_code)20   void set_error_code(ErrorCode error_code) { error_code_ = error_code; }
21 
22   // Accessors for the number of reads/writes done by this value store. Each
23   // Get* operation (except for the BytesInUse ones) counts as one read, and
24   // each Set*/Remove/Clear operation counts as one write. This is useful in
25   // tests seeking to assert that some number of reads/writes to their
26   // underlying value store have (or have not) happened.
read_count()27   int read_count() { return read_count_; }
write_count()28   int write_count() { return write_count_; }
29 
30   // ValueStore implementation.
31   virtual size_t GetBytesInUse(const std::string& key) OVERRIDE;
32   virtual size_t GetBytesInUse(const std::vector<std::string>& keys) OVERRIDE;
33   virtual size_t GetBytesInUse() OVERRIDE;
34   virtual ReadResult Get(const std::string& key) OVERRIDE;
35   virtual ReadResult Get(const std::vector<std::string>& keys) OVERRIDE;
36   virtual ReadResult Get() OVERRIDE;
37   virtual WriteResult Set(
38       WriteOptions options,
39       const std::string& key,
40       const base::Value& value) OVERRIDE;
41   virtual WriteResult Set(
42       WriteOptions options, const base::DictionaryValue& values) OVERRIDE;
43   virtual WriteResult Remove(const std::string& key) OVERRIDE;
44   virtual WriteResult Remove(const std::vector<std::string>& keys) OVERRIDE;
45   virtual WriteResult Clear() OVERRIDE;
46   // TestingValueStores can't get corrupted (they're all in-memory), so these
47   // just return true.
48   virtual bool Restore() OVERRIDE;
49   virtual bool RestoreKey(const std::string& key) OVERRIDE;
50 
51  private:
52   scoped_ptr<ValueStore::Error> TestingError();
53 
54   base::DictionaryValue storage_;
55   int read_count_;
56   int write_count_;
57   ErrorCode error_code_;
58 
59   DISALLOW_COPY_AND_ASSIGN(TestingValueStore);
60 };
61 
62 #endif  // EXTENSIONS_BROWSER_VALUE_STORE_TESTING_VALUE_STORE_H_
63