Upstream version 5.34.104.0
[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   static bool RemovesBookmarkButton(
26       const SettingsOverrides& settings_overrides);
27   static bool RemovesBookmarkShortcut(
28       const SettingsOverrides& settings_overrides);
29
30   scoped_ptr<api::manifest_types::ChromeSettingsOverrides::Bookmarks_ui>
31       bookmarks_ui;
32   scoped_ptr<api::manifest_types::ChromeSettingsOverrides::Search_provider>
33       search_engine;
34   scoped_ptr<GURL> homepage;
35   std::vector<GURL> startup_pages;
36
37   scoped_ptr<ManifestPermission> manifest_permission;
38
39  private:
40   DISALLOW_COPY_AND_ASSIGN(SettingsOverrides);
41 };
42
43 class SettingsOverridesHandler : public ManifestHandler {
44  public:
45   SettingsOverridesHandler();
46   virtual ~SettingsOverridesHandler();
47
48   virtual bool Parse(Extension* extension, base::string16* error) OVERRIDE;
49   virtual bool Validate(const Extension* extension,
50                         std::string* error,
51                         std::vector<InstallWarning>* warnings) const OVERRIDE;
52
53   virtual ManifestPermission* CreatePermission() OVERRIDE;
54   virtual ManifestPermission* CreateInitialRequiredPermission(
55       const Extension* extension) OVERRIDE;
56
57  private:
58   class ManifestPermissionImpl;
59
60   virtual const std::vector<std::string> Keys() const OVERRIDE;
61
62   DISALLOW_COPY_AND_ASSIGN(SettingsOverridesHandler);
63 };
64
65 }  // namespace extensions
66 #endif  // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_SETTINGS_OVERRIDES_HANDLER_H_