Home | History | Annotate | Download | only in storage
      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_API_STORAGE_SETTINGS_TEST_UTIL_H_
      6 #define EXTENSIONS_BROWSER_API_STORAGE_SETTINGS_TEST_UTIL_H_
      7 
      8 #include <set>
      9 #include <string>
     10 
     11 #include "base/compiler_specific.h"
     12 #include "base/memory/linked_ptr.h"
     13 #include "base/memory/ref_counted.h"
     14 #include "base/memory/scoped_ptr.h"
     15 #include "chrome/test/base/testing_profile.h"
     16 #include "extensions/browser/api/storage/settings_namespace.h"
     17 #include "extensions/browser/api/storage/settings_storage_factory.h"
     18 #include "extensions/browser/event_router.h"
     19 #include "extensions/browser/mock_extension_system.h"
     20 #include "extensions/common/extension.h"
     21 
     22 class ValueStore;
     23 
     24 namespace extensions {
     25 
     26 class StorageFrontend;
     27 // Utilities for extension settings API tests.
     28 namespace settings_test_util {
     29 
     30 // Creates a kilobyte of data.
     31 scoped_ptr<base::Value> CreateKilobyte();
     32 
     33 // Creates a megabyte of data.
     34 scoped_ptr<base::Value> CreateMegabyte();
     35 
     36 // Synchronously gets the storage area for an extension from |frontend|.
     37 ValueStore* GetStorage(scoped_refptr<const Extension> extension,
     38                        settings_namespace::Namespace setting_namespace,
     39                        StorageFrontend* frontend);
     40 
     41 // Synchronously gets the SYNC storage for an extension from |frontend|.
     42 ValueStore* GetStorage(scoped_refptr<const Extension> extension,
     43                        StorageFrontend* frontend);
     44 
     45 // Creates an extension with |id| and adds it to the registry for |context|.
     46 scoped_refptr<const Extension> AddExtensionWithId(
     47     content::BrowserContext* context,
     48     const std::string& id,
     49     Manifest::Type type);
     50 
     51 // Creates an extension with |id| with a set of |permissions| and adds it to
     52 // the registry for |context|.
     53 scoped_refptr<const Extension> AddExtensionWithIdAndPermissions(
     54     content::BrowserContext* context,
     55     const std::string& id,
     56     Manifest::Type type,
     57     const std::set<std::string>& permissions);
     58 
     59 // A MockExtensionSystem to serve an EventRouter.
     60 class MockExtensionSystemWithEventRouter : public MockExtensionSystem {
     61  public:
     62   explicit MockExtensionSystemWithEventRouter(content::BrowserContext* context);
     63   virtual ~MockExtensionSystemWithEventRouter();
     64 
     65   // Factory method for SetTestingFactoryAndUse.
     66   static KeyedService* Build(content::BrowserContext* context);
     67 
     68   // MockExtensionSystem overrides:
     69   virtual EventRouter* event_router() OVERRIDE;
     70 
     71  private:
     72   scoped_ptr<EventRouter> event_router_;
     73 
     74   DISALLOW_COPY_AND_ASSIGN(MockExtensionSystemWithEventRouter);
     75 };
     76 
     77 // SettingsStorageFactory which acts as a wrapper for other factories.
     78 class ScopedSettingsStorageFactory : public SettingsStorageFactory {
     79  public:
     80   ScopedSettingsStorageFactory();
     81 
     82   explicit ScopedSettingsStorageFactory(
     83       const scoped_refptr<SettingsStorageFactory>& delegate);
     84 
     85   // Sets the delegate factory (equivalent to scoped_ptr::reset).
     86   void Reset(const scoped_refptr<SettingsStorageFactory>& delegate);
     87 
     88   // SettingsStorageFactory implementation.
     89   virtual ValueStore* Create(const base::FilePath& base_path,
     90                              const std::string& extension_id) OVERRIDE;
     91   virtual void DeleteDatabaseIfExists(
     92       const base::FilePath& base_path,
     93       const std::string& extension_id) OVERRIDE;
     94 
     95  private:
     96   // SettingsStorageFactory is refcounted.
     97   virtual ~ScopedSettingsStorageFactory();
     98 
     99   scoped_refptr<SettingsStorageFactory> delegate_;
    100 };
    101 
    102 }  // namespace settings_test_util
    103 
    104 }  // namespace extensions
    105 
    106 #endif  // EXTENSIONS_BROWSER_API_STORAGE_SETTINGS_TEST_UTIL_H_
    107