1 // Copyright (c) 2012 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/api/omnibox/omnibox_handler.h" 6 7 #include "base/memory/scoped_ptr.h" 8 #include "base/strings/string_util.h" 9 #include "base/strings/utf_string_conversions.h" 10 #include "base/values.h" 11 #include "extensions/common/extension.h" 12 #include "extensions/common/manifest.h" 13 #include "extensions/common/manifest_constants.h" 14 15 namespace extensions { 16 17 namespace { 18 19 // Manifest keys. 20 const char kKeyword[] = "keyword"; 21 22 } // namespace 23 24 // static 25 const std::string& OmniboxInfo::GetKeyword(const Extension* extension) { 26 OmniboxInfo* info = static_cast<OmniboxInfo*>( 27 extension->GetManifestData(manifest_keys::kOmnibox)); 28 return info ? info->keyword : base::EmptyString(); 29 } 30 31 OmniboxHandler::OmniboxHandler() { 32 } 33 34 OmniboxHandler::~OmniboxHandler() { 35 } 36 37 bool OmniboxHandler::Parse(Extension* extension, base::string16* error) { 38 scoped_ptr<OmniboxInfo> info(new OmniboxInfo); 39 const base::DictionaryValue* dict = NULL; 40 if (!extension->manifest()->GetDictionary(manifest_keys::kOmnibox, 41 &dict) || 42 !dict->GetString(kKeyword, &info->keyword) || 43 info->keyword.empty()) { 44 *error = ASCIIToUTF16(manifest_errors::kInvalidOmniboxKeyword); 45 return false; 46 } 47 extension->SetManifestData(manifest_keys::kOmnibox, info.release()); 48 return true; 49 } 50 51 const std::vector<std::string> OmniboxHandler::Keys() const { 52 return SingleKey(manifest_keys::kOmnibox); 53 } 54 55 } // namespace extensions 56