Home | History | Annotate | Download | only in manifest_handlers
      1 // Copyright 2013 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_COMMON_EXTENSIONS_MANIFEST_HANDLERS_SETTINGS_OVERRIDES_HANDLER_H_
      6 #define CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_SETTINGS_OVERRIDES_HANDLER_H_
      7 
      8 #include "chrome/common/extensions/api/manifest_types.h"
      9 #include "extensions/common/extension.h"
     10 #include "extensions/common/manifest_handler.h"
     11 
     12 namespace extensions {
     13 
     14 class ManifestPermission;
     15 
     16 // SettingsOverride is associated with "chrome_settings_overrides" manifest key.
     17 // An extension can add a search engine as default or non-default, overwrite the
     18 // homepage and append a startup page to the list.
     19 struct SettingsOverrides : public Extension::ManifestData {
     20   SettingsOverrides();
     21   virtual ~SettingsOverrides();
     22 
     23   static const SettingsOverrides* Get(const Extension* extension);
     24 
     25   bool RequiresHideBookmarkButtonPermission() const;
     26 
     27   scoped_ptr<api::manifest_types::ChromeSettingsOverrides::Bookmarks_ui>
     28       bookmarks_ui;
     29   scoped_ptr<api::manifest_types::ChromeSettingsOverrides::Search_provider>
     30       search_engine;
     31   scoped_ptr<GURL> homepage;
     32   std::vector<GURL> startup_pages;
     33 
     34   scoped_ptr<ManifestPermission> manifest_permission;
     35 
     36  private:
     37   DISALLOW_COPY_AND_ASSIGN(SettingsOverrides);
     38 };
     39 
     40 class SettingsOverridesHandler : public ManifestHandler {
     41  public:
     42   SettingsOverridesHandler();
     43   virtual ~SettingsOverridesHandler();
     44 
     45   virtual bool Parse(Extension* extension, base::string16* error) OVERRIDE;
     46   virtual bool Validate(const Extension* extension,
     47                         std::string* error,
     48                         std::vector<InstallWarning>* warnings) const OVERRIDE;
     49 
     50   virtual ManifestPermission* CreatePermission() OVERRIDE;
     51   virtual ManifestPermission* CreateInitialRequiredPermission(
     52       const Extension* extension) OVERRIDE;
     53 
     54  private:
     55   class ManifestPermissionImpl;
     56 
     57   virtual const std::vector<std::string> Keys() const OVERRIDE;
     58 
     59   DISALLOW_COPY_AND_ASSIGN(SettingsOverridesHandler);
     60 };
     61 
     62 }  // namespace extensions
     63 #endif  // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_SETTINGS_OVERRIDES_HANDLER_H_
     64