1// Copyright 2014 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#include "chrome/common/extensions/manifest_handlers/synthesize_browser_action_handler.h" 6 7#include "chrome/common/extensions/api/extension_action/action_info.h" 8#include "extensions/common/feature_switch.h" 9#include "extensions/common/manifest_constants.h" 10 11namespace extensions { 12 13SynthesizeBrowserActionHandler::SynthesizeBrowserActionHandler() { 14} 15 16SynthesizeBrowserActionHandler::~SynthesizeBrowserActionHandler() { 17} 18 19bool SynthesizeBrowserActionHandler::Parse(Extension* extension, 20 base::string16* error) { 21 if (!extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) 22 return true; // Do nothing. 23 24 if (extension->location() == Manifest::COMPONENT || 25 extension->location() == Manifest::EXTERNAL_COMPONENT) 26 return true; // Return no error (we're done). 27 28 if (extension->manifest()->HasKey(manifest_keys::kSynthesizeBrowserAction)) 29 return false; // This key is reserved, no extension should be using it. 30 31 if (!extension->manifest()->HasKey(manifest_keys::kBrowserAction) && 32 !extension->manifest()->HasKey(manifest_keys::kPageAction)) 33 ActionInfo::SetBrowserActionInfo(extension, new ActionInfo()); 34 return true; 35} 36 37bool SynthesizeBrowserActionHandler::AlwaysParseForType( 38 Manifest::Type type) const { 39 return type == Manifest::TYPE_EXTENSION; 40} 41 42const std::vector<std::string> SynthesizeBrowserActionHandler::Keys() const { 43 return SingleKey(manifest_keys::kSynthesizeBrowserAction); 44} 45 46} // namespace extensions 47