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 10namespace extensions { 11 12namespace keys = manifest_keys; 13namespace errors = manifest_errors; 14 15SpellcheckDictionaryInfo::SpellcheckDictionaryInfo() { 16} 17 18SpellcheckDictionaryInfo::~SpellcheckDictionaryInfo() { 19} 20 21SpellcheckHandler::SpellcheckHandler() { 22} 23 24SpellcheckHandler::~SpellcheckHandler() { 25} 26 27bool 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 = 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 = 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 = 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 = 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 = ASCIIToUTF16(errors::kInvalidSpellcheckDictionaryPath); 58 return false; 59 } 60 extension->SetManifestData(keys::kSpellcheck, spellcheck_info.release()); 61 return true; 62} 63 64const std::vector<std::string> SpellcheckHandler::Keys() const { 65 return SingleKey(keys::kSpellcheck); 66} 67 68} // namespace extensions 69