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