• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
GetKeyword(const Extension * extension)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 
OmniboxHandler()31 OmniboxHandler::OmniboxHandler() {
32 }
33 
~OmniboxHandler()34 OmniboxHandler::~OmniboxHandler() {
35 }
36 
Parse(Extension * extension,base::string16 * error)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 = base::ASCIIToUTF16(manifest_errors::kInvalidOmniboxKeyword);
45     return false;
46   }
47   extension->SetManifestData(manifest_keys::kOmnibox, info.release());
48   return true;
49 }
50 
Keys() const51 const std::vector<std::string> OmniboxHandler::Keys() const {
52   return SingleKey(manifest_keys::kOmnibox);
53 }
54 
55 }  // namespace extensions
56