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