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.
5 #include "chrome/common/extensions/api/omnibox/omnibox_handler.h"
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"
15 namespace extensions
{
20 const char kKeyword
[] = "keyword";
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();
31 OmniboxHandler::OmniboxHandler() {
34 OmniboxHandler::~OmniboxHandler() {
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
,
42 !dict
->GetString(kKeyword
, &info
->keyword
) ||
43 info
->keyword
.empty()) {
44 *error
= base::ASCIIToUTF16(manifest_errors::kInvalidOmniboxKeyword
);
47 extension
->SetManifestData(manifest_keys::kOmnibox
, info
.release());
51 const std::vector
<std::string
> OmniboxHandler::Keys() const {
52 return SingleKey(manifest_keys::kOmnibox
);
55 } // namespace extensions