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 enum SettingsApiOverrideType {
     15   BUBBLE_TYPE_HOME_PAGE = 0,
     16   BUBBLE_TYPE_SEARCH_ENGINE,
     17   BUBBLE_TYPE_STARTUP_PAGES,
     18 };
     19 
     20 class ManifestPermission;
     21 
     22 // SettingsOverride is associated with "chrome_settings_overrides" manifest key.
     23 // An extension can add a search engine as default or non-default, overwrite the
     24 // homepage and append a startup page to the list.
     25 struct SettingsOverrides : public Extension::ManifestData {
     26   SettingsOverrides();
     27   virtual ~SettingsOverrides();
     28 
     29   static const SettingsOverrides* Get(const Extension* extension);
     30 
     31   scoped_ptr<api::manifest_types::ChromeSettingsOverrides::Search_provider>
     32       search_engine;
     33   scoped_ptr<GURL> homepage;
     34   std::vector<GURL> startup_pages;
     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 
     47  private:
     48   virtual const std::vector<std::string> Keys() const OVERRIDE;
     49 
     50   DISALLOW_COPY_AND_ASSIGN(SettingsOverridesHandler);
     51 };
     52 
     53 }  // namespace extensions
     54 #endif  // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_SETTINGS_OVERRIDES_HANDLER_H_
     55