| Index: components/search_engines/template_url_parser.cc
|
| diff --git a/components/search_engines/template_url_parser.cc b/components/search_engines/template_url_parser.cc
|
| index 5c6eae5ef587141ae01d1cddb2f5123054ec9177..17d3beea948b9eed3531509e1fbc2c9184c2a26b 100644
|
| --- a/components/search_engines/template_url_parser.cc
|
| +++ b/components/search_engines/template_url_parser.cc
|
| @@ -34,6 +34,7 @@ const char kImageElement[] = "Image";
|
| const char kOpenSearchDescriptionElement[] = "OpenSearchDescription";
|
| const char kFirefoxSearchDescriptionElement[] = "SearchPlugin";
|
| const char kInputEncodingElement[] = "InputEncoding";
|
| +const char kAliasElement[] = "Alias";
|
|
|
| // Various XML attributes used.
|
| const char kURLTypeAttribute[] = "type";
|
| @@ -115,6 +116,7 @@ class TemplateURLParsingContext {
|
| SHORT_NAME,
|
| IMAGE,
|
| INPUT_ENCODING,
|
| + ALIAS,
|
| };
|
|
|
| enum Method {
|
| @@ -240,6 +242,9 @@ void TemplateURLParsingContext::EndElementImpl(void* ctx, const xmlChar* name) {
|
| TemplateURLParsingContext* context =
|
| reinterpret_cast<TemplateURLParsingContext*>(ctx);
|
| switch (context->GetKnownType()) {
|
| + case TemplateURLParsingContext::URL:
|
| + context->ProcessURLParams();
|
| + break;
|
| case TemplateURLParsingContext::SHORT_NAME:
|
| context->data_.short_name = context->string_;
|
| break;
|
| @@ -264,9 +269,11 @@ void TemplateURLParsingContext::EndElementImpl(void* ctx, const xmlChar* name) {
|
| context->data_.input_encodings.push_back(input_encoding);
|
| break;
|
| }
|
| - case TemplateURLParsingContext::URL:
|
| - context->ProcessURLParams();
|
| + case TemplateURLParsingContext::ALIAS: {
|
| + context->data_.SetKeyword(context->string_);
|
| + context->data_.has_custom_keyword = true;
|
| break;
|
| + }
|
| default:
|
| break;
|
| }
|
| @@ -298,7 +305,11 @@ TemplateURL* TemplateURLParsingContext::GetTemplateURL(
|
| if (derive_image_from_url_ && data_.favicon_url.is_empty())
|
| data_.favicon_url = TemplateURL::GenerateFaviconURL(search_url);
|
|
|
| - data_.SetKeyword(TemplateURL::GenerateKeyword(search_url));
|
| + // Generate a keyword for this search engine if a custom one was not present
|
| + // in the imported data.
|
| + if (!data_.has_custom_keyword)
|
| + data_.SetKeyword(TemplateURL::GenerateKeyword(search_url));
|
| +
|
| data_.show_in_default_list = show_in_default_list;
|
|
|
| // Bail if the search URL is empty or if either TemplateURLRef is invalid.
|
| @@ -325,6 +336,7 @@ void TemplateURLParsingContext::InitMapping() {
|
| (*kElementNameToElementTypeMap)[kFirefoxSearchDescriptionElement] =
|
| OPEN_SEARCH_DESCRIPTION;
|
| (*kElementNameToElementTypeMap)[kInputEncodingElement] = INPUT_ENCODING;
|
| + (*kElementNameToElementTypeMap)[kAliasElement] = ALIAS;
|
| }
|
|
|
| void TemplateURLParsingContext::ParseURL(const xmlChar** atts) {
|
|
|