Home | History | Annotate | Download | only in spellcheck
      1 // Copyright (c) 2013 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/spellcheck/spellcheck_handler.h"
      6 
      7 #include "base/strings/utf_string_conversions.h"
      8 #include "extensions/common/manifest_constants.h"
      9 
     10 namespace extensions {
     11 
     12 namespace keys = manifest_keys;
     13 namespace errors = manifest_errors;
     14 
     15 SpellcheckDictionaryInfo::SpellcheckDictionaryInfo() {
     16 }
     17 
     18 SpellcheckDictionaryInfo::~SpellcheckDictionaryInfo() {
     19 }
     20 
     21 SpellcheckHandler::SpellcheckHandler() {
     22 }
     23 
     24 SpellcheckHandler::~SpellcheckHandler() {
     25 }
     26 
     27 bool SpellcheckHandler::Parse(Extension* extension, base::string16* error) {
     28   const base::DictionaryValue* spellcheck_value = NULL;
     29   if (!extension->manifest()->GetDictionary(keys::kSpellcheck,
     30                                             &spellcheck_value)) {
     31     *error = base::ASCIIToUTF16(errors::kInvalidSpellcheck);
     32     return false;
     33   }
     34   scoped_ptr<SpellcheckDictionaryInfo> spellcheck_info(
     35       new SpellcheckDictionaryInfo);
     36   if (!spellcheck_value->HasKey(keys::kSpellcheckDictionaryLanguage) ||
     37       !spellcheck_value->GetString(keys::kSpellcheckDictionaryLanguage,
     38                                   &spellcheck_info->language)) {
     39     *error = base::ASCIIToUTF16(errors::kInvalidSpellcheckDictionaryLanguage);
     40     return false;
     41   }
     42   if (!spellcheck_value->HasKey(keys::kSpellcheckDictionaryLocale) ||
     43       !spellcheck_value->GetString(keys::kSpellcheckDictionaryLocale,
     44                                   &spellcheck_info->locale)) {
     45     *error = base::ASCIIToUTF16(errors::kInvalidSpellcheckDictionaryLocale);
     46     return false;
     47   }
     48   if (!spellcheck_value->HasKey(keys::kSpellcheckDictionaryFormat) ||
     49       !spellcheck_value->GetString(keys::kSpellcheckDictionaryFormat,
     50                                   &spellcheck_info->format)) {
     51     *error = base::ASCIIToUTF16(errors::kInvalidSpellcheckDictionaryFormat);
     52     return false;
     53   }
     54   if (!spellcheck_value->HasKey(keys::kSpellcheckDictionaryPath) ||
     55       !spellcheck_value->GetString(keys::kSpellcheckDictionaryPath,
     56                                   &spellcheck_info->path)) {
     57     *error = base::ASCIIToUTF16(errors::kInvalidSpellcheckDictionaryPath);
     58     return false;
     59   }
     60   extension->SetManifestData(keys::kSpellcheck, spellcheck_info.release());
     61   return true;
     62 }
     63 
     64 const std::vector<std::string> SpellcheckHandler::Keys() const {
     65   return SingleKey(keys::kSpellcheck);
     66 }
     67 
     68 }  // namespace extensions
     69