Home | History | Annotate | Download | only in omnibox
      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 = base::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