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