Home | History | Annotate | Download | only in extensions
      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 
     15 class DictionaryValue;
     16 class ExtensionPrefs;
     17 class ExtensionPrefValueMap;
     18 class PrefService;
     19 
     20 // This is a test class intended to make it easier to work with ExtensionPrefs
     21 // in tests.
     22 class 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