Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1222)

Side by Side Diff: chrome/browser/search_engines/template_url_unittest.cc

Issue 10444117: Escape search terms correctly in the path portion of a custom search engine. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 "base/base_paths.h" 5 #include "base/base_paths.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/rlz/rlz.h" 9 #include "chrome/browser/rlz/rlz.h"
10 #include "chrome/browser/search_engines/search_terms_data.h" 10 #include "chrome/browser/search_engines/search_terms_data.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 data.SetURL("{searchTerms}"); 69 data.SetURL("{searchTerms}");
70 TemplateURL url(NULL, data); 70 TemplateURL url(NULL, data);
71 EXPECT_TRUE(url.url_ref().IsValid()); 71 EXPECT_TRUE(url.url_ref().IsValid());
72 } 72 }
73 73
74 TEST_F(TemplateURLTest, URLRefTestSearchTerms) { 74 TEST_F(TemplateURLTest, URLRefTestSearchTerms) {
75 struct SearchTermsCase { 75 struct SearchTermsCase {
76 const char* url; 76 const char* url;
77 const string16 terms; 77 const string16 terms;
78 const std::string output; 78 const std::string output;
79 bool valid_url;
80 } search_term_cases[] = { 79 } search_term_cases[] = {
81 { "http://foo{searchTerms}", ASCIIToUTF16("sea rch/bar"), 80 { "http://foo{searchTerms}", ASCIIToUTF16("sea rch/bar"),
82 "http://foosea%20rch%2Fbar", false }, 81 "http://foosea%20rch/bar" },
83 { "http://foo{searchTerms}?boo=abc", ASCIIToUTF16("sea rch/bar"), 82 { "http://foo{searchTerms}?boo=abc", ASCIIToUTF16("sea rch/bar"),
84 "http://foosea%20rch%2Fbar?boo=abc", false }, 83 "http://foosea%20rch/bar?boo=abc" },
85 { "http://foo/?boo={searchTerms}", ASCIIToUTF16("sea rch/bar"), 84 { "http://foo/?boo={searchTerms}", ASCIIToUTF16("sea rch/bar"),
86 "http://foo/?boo=sea+rch%2Fbar", true }, 85 "http://foo/?boo=sea+rch%2Fbar" },
87 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"), 86 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"),
88 "http://en.wikipedia.org/wiki%2F%3F", true } 87 "http://en.wikipedia.org/wiki/%3F" }
89 }; 88 };
90 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { 89 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) {
91 const SearchTermsCase& value = search_term_cases[i]; 90 const SearchTermsCase& value = search_term_cases[i];
92 TemplateURLData data; 91 TemplateURLData data;
93 data.SetURL(value.url); 92 data.SetURL(value.url);
94 TemplateURL url(NULL, data); 93 TemplateURL url(NULL, data);
95 EXPECT_TRUE(url.url_ref().IsValid()); 94 EXPECT_TRUE(url.url_ref().IsValid());
96 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 95 ASSERT_TRUE(url.url_ref().SupportsReplacement());
97 std::string result = url.url_ref().ReplaceSearchTerms(value.terms, 96 GURL result(url.url_ref().ReplaceSearchTerms(value.terms,
98 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()); 97 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
99 EXPECT_EQ(value.output, result); 98 ASSERT_TRUE(result.is_valid());
100 GURL result_url(result); 99 EXPECT_EQ(value.output, result.spec());
101 EXPECT_EQ(value.valid_url, result_url.is_valid());
102 } 100 }
103 } 101 }
104 102
105 TEST_F(TemplateURLTest, URLRefTestCount) { 103 TEST_F(TemplateURLTest, URLRefTestCount) {
106 TemplateURLData data; 104 TemplateURLData data;
107 data.SetURL("http://foo{searchTerms}{count?}"); 105 data.SetURL("http://foo{searchTerms}{count?}");
108 TemplateURL url(NULL, data); 106 TemplateURL url(NULL, data);
109 EXPECT_TRUE(url.url_ref().IsValid()); 107 EXPECT_TRUE(url.url_ref().IsValid());
110 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 108 ASSERT_TRUE(url.url_ref().SupportsReplacement());
111 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 109 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 TemplateURL url(NULL, data); 576 TemplateURL url(NULL, data);
579 TemplateURLRef::Replacements replacements; 577 TemplateURLRef::Replacements replacements;
580 bool valid = false; 578 bool valid = false;
581 EXPECT_EQ("{", 579 EXPECT_EQ("{",
582 url.url_ref().ParseURL("{{searchTerms}", &replacements, &valid)); 580 url.url_ref().ParseURL("{{searchTerms}", &replacements, &valid));
583 ASSERT_EQ(1U, replacements.size()); 581 ASSERT_EQ(1U, replacements.size());
584 EXPECT_EQ(1U, replacements[0].index); 582 EXPECT_EQ(1U, replacements[0].index);
585 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); 583 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type);
586 EXPECT_TRUE(valid); 584 EXPECT_TRUE(valid);
587 } 585 }
OLDNEW
« no previous file with comments | « chrome/browser/search_engines/template_url.cc ('k') | content/browser/accessibility/browser_accessibility_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698