OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/search_engines/template_url_parser.h" | 5 #include "chrome/browser/search_engines/template_url_parser.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 context->ResetString(); | 512 context->ResetString(); |
513 context->PopElement(); | 513 context->PopElement(); |
514 } | 514 } |
515 | 515 |
516 void CharactersImpl(void *ctx, const xmlChar *ch, int len) { | 516 void CharactersImpl(void *ctx, const xmlChar *ch, int len) { |
517 ParsingContext* context = reinterpret_cast<ParsingContext*>(ctx); | 517 ParsingContext* context = reinterpret_cast<ParsingContext*>(ctx); |
518 context->AppendString(XMLCharToUTF16(ch, len)); | 518 context->AppendString(XMLCharToUTF16(ch, len)); |
519 } | 519 } |
520 | 520 |
521 // Returns true if the ref is null, or the url wrapped by ref is | 521 // Returns true if the ref is null, or the url wrapped by ref is |
522 // valid with a spec of http/https. | 522 // valid with a spec of http/https/httpsv. |
523 bool IsHTTPRef(const TemplateURLRef* ref) { | 523 bool IsHTTPRef(const TemplateURLRef* ref) { |
524 if (ref == NULL) | 524 if (ref == NULL) |
525 return true; | 525 return true; |
526 GURL url(ref->url()); | 526 GURL url(ref->url()); |
527 return (url.is_valid() && (url.SchemeIs(chrome::kHttpScheme) || | 527 return (url.is_valid() && (url.SchemeIs(chrome::kHttpScheme) || |
528 url.SchemeIs(chrome::kHttpsScheme))); | 528 url.SchemeIs(chrome::kHttpsScheme) || |
| 529 url.SchemeIs(chrome::kHttpsvScheme))); |
529 } | 530 } |
530 | 531 |
531 // Returns true if the TemplateURL is legal. A legal TemplateURL is one | 532 // Returns true if the TemplateURL is legal. A legal TemplateURL is one |
532 // where all URLs have a spec of http/https. | 533 // where all URLs have a spec of http/https. |
533 bool IsLegal(TemplateURL* url) { | 534 bool IsLegal(TemplateURL* url) { |
534 if (!IsHTTPRef(url->url()) || !IsHTTPRef(url->suggestions_url())) | 535 if (!IsHTTPRef(url->url()) || !IsHTTPRef(url->suggestions_url())) |
535 return false; | 536 return false; |
536 // Make sure all the image refs are legal. | 537 // Make sure all the image refs are legal. |
537 const std::vector<TemplateURL::ImageRef>& image_refs = url->image_refs(); | 538 const std::vector<TemplateURL::ImageRef>& image_refs = url->image_refs(); |
538 for (size_t i = 0; i < image_refs.size(); i++) { | 539 for (size_t i = 0; i < image_refs.size(); i++) { |
539 GURL image_url(image_refs[i].url); | 540 GURL image_url(image_refs[i].url); |
540 if (!image_url.is_valid() || | 541 if (!image_url.is_valid() || |
541 !(image_url.SchemeIs(chrome::kHttpScheme) || | 542 !(image_url.SchemeIs(chrome::kHttpScheme) || |
542 image_url.SchemeIs(chrome::kHttpsScheme))) { | 543 image_url.SchemeIs(chrome::kHttpsScheme) || |
| 544 image_url.SchemeIs(chrome::kHttpsvScheme))) { |
543 return false; | 545 return false; |
544 } | 546 } |
545 } | 547 } |
546 return true; | 548 return true; |
547 } | 549 } |
548 | 550 |
549 } // namespace | 551 } // namespace |
550 | 552 |
551 // static | 553 // static |
552 bool TemplateURLParser::Parse(const unsigned char* data, size_t length, | 554 bool TemplateURLParser::Parse(const unsigned char* data, size_t length, |
(...skipping 25 matching lines...) Expand all Loading... |
578 return false; | 580 return false; |
579 if (context.suggestion_method() == ParsingContext::POST) | 581 if (context.suggestion_method() == ParsingContext::POST) |
580 url->SetSuggestionsURL("", 0, 0); | 582 url->SetSuggestionsURL("", 0, 0); |
581 | 583 |
582 if (!url->short_name().empty() && !url->description().empty()) { | 584 if (!url->short_name().empty() && !url->description().empty()) { |
583 // So far so good, make sure the urls are http. | 585 // So far so good, make sure the urls are http. |
584 return IsLegal(url); | 586 return IsLegal(url); |
585 } | 587 } |
586 return false; | 588 return false; |
587 } | 589 } |
OLD | NEW |