e63fe8667c11ead7363024e4e6d8ed6a3aa3b918
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / manifest_handlers / settings_overrides_handler.h
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 RemovesBookmarkButton() 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_