1// Copyright (c) 2011 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_EXTENSIONS_TEST_EXTENSION_PREFS_H_
6#define CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_PREFS_H_
7#pragma once
8
9#include <string>
10
11#include "base/memory/scoped_ptr.h"
12#include "base/memory/scoped_temp_dir.h"
13#include "chrome/common/extensions/extension.h"
14
15class DictionaryValue;
16class ExtensionPrefs;
17class ExtensionPrefValueMap;
18class PrefService;
19
20// This is a test class intended to make it easier to work with ExtensionPrefs
21// in tests.
22class TestExtensionPrefs {
23 public:
24  TestExtensionPrefs();
25  virtual ~TestExtensionPrefs();
26
27  ExtensionPrefs* prefs() { return prefs_.get(); }
28  const ExtensionPrefs& const_prefs() const { return *prefs_.get(); }
29  PrefService* pref_service() { return pref_service_.get(); }
30  const FilePath& temp_dir() const { return temp_dir_.path(); }
31
32  // This will cause the ExtensionPrefs to be deleted and recreated, based on
33  // any existing backing file we had previously created.
34  void RecreateExtensionPrefs();
35
36  // Creates a new Extension with the given name in our temp dir, adds it to
37  // our ExtensionPrefs, and returns it.
38  scoped_refptr<Extension> AddExtension(std::string name);
39
40  // Similar to AddExtension, but takes a dictionary with manifest values.
41  scoped_refptr<Extension> AddExtensionWithManifest(
42      const DictionaryValue& manifest, Extension::Location location);
43
44  // Similar to AddExtension, this adds a new test Extension. This is useful for
45  // cases when you don't need the Extension object, but just the id it was
46  // assigned.
47  std::string AddExtensionAndReturnId(std::string name);
48
49  PrefService* CreateIncognitoPrefService() const;
50
51 protected:
52  ScopedTempDir temp_dir_;
53  FilePath preferences_file_;
54  FilePath extensions_dir_;
55  scoped_ptr<PrefService> pref_service_;
56  scoped_ptr<ExtensionPrefs> prefs_;
57  scoped_ptr<ExtensionPrefValueMap> extension_pref_value_map_;
58
59 private:
60  DISALLOW_COPY_AND_ASSIGN(TestExtensionPrefs);
61};
62
63#endif  // CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_PREFS_H_
64