1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_PREFS_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_PREFS_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_temp_dir.h" 13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/common/extensions/extension.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DictionaryValue; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionPrefs; 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass ExtensionPrefValueMap; 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PrefService; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This is a test class intended to make it easier to work with ExtensionPrefs 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// in tests. 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TestExtensionPrefs { 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestExtensionPrefs(); 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~TestExtensionPrefs(); 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ExtensionPrefs* prefs() { return prefs_.get(); } 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const ExtensionPrefs& const_prefs() const { return *prefs_.get(); } 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PrefService* pref_service() { return pref_service_.get(); } 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const FilePath& temp_dir() const { return temp_dir_.path(); } 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This will cause the ExtensionPrefs to be deleted and recreated, based on 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // any existing backing file we had previously created. 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void RecreateExtensionPrefs(); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Creates a new Extension with the given name in our temp dir, adds it to 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // our ExtensionPrefs, and returns it. 38513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<Extension> AddExtension(std::string name); 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Similar to AddExtension, but takes a dictionary with manifest values. 41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<Extension> AddExtensionWithManifest( 42513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const DictionaryValue& manifest, Extension::Location location); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Similar to AddExtension, this adds a new test Extension. This is useful for 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // cases when you don't need the Extension object, but just the id it was 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // assigned. 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string AddExtensionAndReturnId(std::string name); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 4972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PrefService* CreateIncognitoPrefService() const; 5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedTempDir temp_dir_; 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath preferences_file_; 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath extensions_dir_; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<PrefService> pref_service_; 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<ExtensionPrefs> prefs_; 5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<ExtensionPrefValueMap> extension_pref_value_map_; 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(TestExtensionPrefs); 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_PREFS_H_ 64