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

Side by Side Diff: components/search_engines/template_url_unittest.cc

Issue 1093833002: Fixed TemplateURL::ReplaceSearchTermsInURL for non-alphanumeric terms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
« no previous file with comments | « components/search_engines/template_url.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/command_line.h" 6 #include "base/command_line.h"
7 #include "base/strings/string_number_conversions.h" 7 #include "base/strings/string_number_conversions.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "components/metrics/proto/omnibox_event.pb.h" 10 #include "components/metrics/proto/omnibox_event.pb.h"
(...skipping 1295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1306 data.alternate_urls.push_back("http://google.com/alt/#q={searchTerms}"); 1306 data.alternate_urls.push_back("http://google.com/alt/#q={searchTerms}");
1307 data.alternate_urls.push_back( 1307 data.alternate_urls.push_back(
1308 "http://google.com/alt/?ext=foo&q={searchTerms}#ref=bar"); 1308 "http://google.com/alt/?ext=foo&q={searchTerms}#ref=bar");
1309 TemplateURL url(data); 1309 TemplateURL url(data);
1310 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("Bob Morane")); 1310 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("Bob Morane"));
1311 GURL result; 1311 GURL result;
1312 1312
1313 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1313 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1314 GURL("http://google.com/?q=something"), search_terms, 1314 GURL("http://google.com/?q=something"), search_terms,
1315 search_terms_data_, &result)); 1315 search_terms_data_, &result));
1316 EXPECT_EQ(GURL("http://google.com/?q=Bob%20Morane"), result); 1316 EXPECT_EQ(GURL("http://google.com/?q=Bob+Morane"), result);
1317 1317
1318 result = GURL("http://should.not.change.com"); 1318 result = GURL("http://should.not.change.com");
1319 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1319 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
1320 GURL("http://google.ca/?q=something"), search_terms, 1320 GURL("http://google.ca/?q=something"), search_terms,
1321 search_terms_data_, &result)); 1321 search_terms_data_, &result));
1322 EXPECT_EQ(GURL("http://should.not.change.com"), result); 1322 EXPECT_EQ(GURL("http://should.not.change.com"), result);
1323 1323
1324 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1324 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
1325 GURL("http://google.com/foo/?q=foo"), search_terms, 1325 GURL("http://google.com/foo/?q=foo"), search_terms,
1326 search_terms_data_, &result)); 1326 search_terms_data_, &result));
1327 1327
1328 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1328 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1329 GURL("https://google.com/?q=foo"), search_terms, 1329 GURL("https://google.com/?q=foo"), search_terms,
1330 search_terms_data_, &result)); 1330 search_terms_data_, &result));
1331 EXPECT_EQ(GURL("https://google.com/?q=Bob%20Morane"), result); 1331 EXPECT_EQ(GURL("https://google.com/?q=Bob+Morane"), result);
1332 1332
1333 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1333 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
1334 GURL("http://google.com:8080/?q=foo"), search_terms, 1334 GURL("http://google.com:8080/?q=foo"), search_terms,
1335 search_terms_data_, &result)); 1335 search_terms_data_, &result));
1336 1336
1337 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1337 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1338 GURL("http://google.com/?q=1+2+3&b=456"), search_terms, 1338 GURL("http://google.com/?q=1+2+3&b=456"), search_terms,
1339 search_terms_data_, &result)); 1339 search_terms_data_, &result));
1340 EXPECT_EQ(GURL("http://google.com/?q=Bob%20Morane&b=456"), result); 1340 EXPECT_EQ(GURL("http://google.com/?q=Bob+Morane&b=456"), result);
1341 1341
1342 // Note: Spaces in REF parameters are not escaped. See TryEncoding() in 1342 // Note: Spaces in REF parameters are not escaped. See TryEncoding() in
1343 // template_url.cc for details. 1343 // template_url.cc for details.
1344 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1344 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1345 GURL("http://google.com/alt/?q=123#q=456"), search_terms, 1345 GURL("http://google.com/alt/?q=123#q=456"), search_terms,
1346 search_terms_data_, &result)); 1346 search_terms_data_, &result));
1347 EXPECT_EQ(GURL("http://google.com/alt/?q=123#q=Bob Morane"), result); 1347 EXPECT_EQ(GURL("http://google.com/alt/?q=123#q=Bob+Morane"), result);
1348 1348
1349 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1349 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1350 GURL("http://google.com/alt/?a=012&q=123&b=456#f=789"), search_terms, 1350 GURL("http://google.com/alt/?a=012&q=123&b=456#f=789"), search_terms,
1351 search_terms_data_, &result)); 1351 search_terms_data_, &result));
1352 EXPECT_EQ(GURL("http://google.com/alt/?a=012&q=Bob%20Morane&b=456#f=789"), 1352 EXPECT_EQ(GURL("http://google.com/alt/?a=012&q=Bob+Morane&b=456#f=789"),
1353 result); 1353 result);
1354 1354
1355 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1355 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1356 GURL("http://google.com/alt/?a=012&q=123&b=456#j=abc&q=789&h=def9"), 1356 GURL("http://google.com/alt/?a=012&q=123&b=456#j=abc&q=789&h=def9"),
1357 search_terms, search_terms_data_, &result)); 1357 search_terms, search_terms_data_, &result));
1358 EXPECT_EQ(GURL("http://google.com/alt/?a=012&q=123&b=456" 1358 EXPECT_EQ(GURL("http://google.com/alt/?a=012&q=123&b=456"
1359 "#j=abc&q=Bob Morane&h=def9"), result); 1359 "#j=abc&q=Bob+Morane&h=def9"), result);
1360 1360
1361 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1361 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
1362 GURL("http://google.com/alt/?q="), search_terms, 1362 GURL("http://google.com/alt/?q="), search_terms,
1363 search_terms_data_, &result)); 1363 search_terms_data_, &result));
1364 1364
1365 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1365 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
1366 GURL("http://google.com/alt/?#q="), search_terms, 1366 GURL("http://google.com/alt/?#q="), search_terms,
1367 search_terms_data_, &result)); 1367 search_terms_data_, &result));
1368 1368
1369 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1369 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
1370 GURL("http://google.com/alt/?q=#q="), search_terms, 1370 GURL("http://google.com/alt/?q=#q="), search_terms,
1371 search_terms_data_, &result)); 1371 search_terms_data_, &result));
1372 1372
1373 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1373 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
1374 GURL("http://google.com/alt/?q=123#q="), search_terms, 1374 GURL("http://google.com/alt/?q=123#q="), search_terms,
1375 search_terms_data_, &result)); 1375 search_terms_data_, &result));
1376 1376
1377 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1377 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1378 GURL("http://google.com/alt/?q=#q=123"), search_terms, 1378 GURL("http://google.com/alt/?q=#q=123"), search_terms,
1379 search_terms_data_, &result)); 1379 search_terms_data_, &result));
1380 EXPECT_EQ(GURL("http://google.com/alt/?q=#q=Bob Morane"), result); 1380 EXPECT_EQ(GURL("http://google.com/alt/?q=#q=Bob+Morane"), result);
1381 } 1381 }
1382 1382
1383 TEST_F(TemplateURLTest, ReplaceSearchTermsInURLPath) { 1383 TEST_F(TemplateURLTest, ReplaceSearchTermsInURLPath) {
1384 TemplateURLData data; 1384 TemplateURLData data;
1385 data.SetURL("http://term-in-path.com/begin/{searchTerms}/end"); 1385 data.SetURL("http://term-in-path.com/begin/{searchTerms}/end");
1386 TemplateURL url(data); 1386 TemplateURL url(data);
1387 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("Bob Morane")); 1387 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("Bob Morane"));
1388 GURL result; 1388 GURL result;
1389 1389
1390 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1390 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1391 GURL("http://term-in-path.com/begin/something/end"), search_terms, 1391 GURL("http://term-in-path.com/begin/something/end"), search_terms,
1392 search_terms_data_, &result)); 1392 search_terms_data_, &result));
1393 EXPECT_EQ(GURL("http://term-in-path.com/begin/Bob%20Morane/end"), result); 1393 EXPECT_EQ(GURL("http://term-in-path.com/begin/Bob%20Morane/end"), result);
1394 1394
1395 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1395 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1396 GURL("http://term-in-path.com/begin/1%202%203/end"), search_terms, 1396 GURL("http://term-in-path.com/begin/1%202%203/end"), search_terms,
1397 search_terms_data_, &result)); 1397 search_terms_data_, &result));
1398 EXPECT_EQ(GURL("http://term-in-path.com/begin/Bob%20Morane/end"), result); 1398 EXPECT_EQ(GURL("http://term-in-path.com/begin/Bob%20Morane/end"), result);
1399 1399
1400 result = GURL("http://should.not.change.com"); 1400 result = GURL("http://should.not.change.com");
1401 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1401 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
1402 GURL("http://term-in-path.com/about"), search_terms, 1402 GURL("http://term-in-path.com/about"), search_terms,
1403 search_terms_data_, &result)); 1403 search_terms_data_, &result));
1404 EXPECT_EQ(GURL("http://should.not.change.com"), result); 1404 EXPECT_EQ(GURL("http://should.not.change.com"), result);
1405 } 1405 }
1406 1406
1407 // Checks that the ReplaceSearchTermsInURL function works correctly
1408 // for search terms containing non-latin characters for a search engine
1409 // using UTF-8 input encoding.
1410 TEST_F(TemplateURLTest, ReplaceSearchTermsInUTF8URL) {
1411 TemplateURLData data;
1412 data.SetURL("http://utf-8.ru/?q={searchTerms}");
1413 data.alternate_urls.push_back("http://utf-8.ru/#q={searchTerms}");
1414 data.alternate_urls.push_back("http://utf-8.ru/path/{searchTerms}");
1415 TemplateURL url(data);
1416
1417 // Russian text which will be encoded with UTF-8.
1418 TemplateURLRef::SearchTermsArgs search_terms(base::WideToUTF16(
1419 L"\x0442\x0435\x043A\x0441\x0442"));
1420 GURL result;
1421
1422 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1423 GURL("http://utf-8.ru/?q=a+b"), search_terms, search_terms_data_,
1424 &result));
1425 EXPECT_EQ(GURL("http://utf-8.ru/?q=%D1%82%D0%B5%D0%BA%D1%81%D1%82"),
1426 result);
1427
1428 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1429 GURL("http://utf-8.ru/#q=a+b"), search_terms, search_terms_data_,
1430 &result));
1431 EXPECT_EQ(GURL("http://utf-8.ru/#q=%D1%82%D0%B5%D0%BA%D1%81%D1%82"),
1432 result);
1433
1434 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1435 GURL("http://utf-8.ru/path/a%20b"), search_terms, search_terms_data_,
1436 &result));
1437 EXPECT_EQ(GURL("http://utf-8.ru/path/%D1%82%D0%B5%D0%BA%D1%81%D1%82"),
1438 result);
1439 }
1440
1441 // Checks that the ReplaceSearchTermsInURL function works correctly
1442 // for search terms containing non-latin characters for a search engine
1443 // using non UTF-8 input encoding.
1444 TEST_F(TemplateURLTest, ReplaceSearchTermsInNonUTF8URL) {
1445 TemplateURLData data;
1446 data.SetURL("http://windows-1251.ru/?q={searchTerms}");
1447 data.alternate_urls.push_back("http://windows-1251.ru/#q={searchTerms}");
1448 data.alternate_urls.push_back("http://windows-1251.ru/path/{searchTerms}");
1449 data.input_encodings.push_back("windows-1251");
1450 TemplateURL url(data);
1451
1452 // Russian text which will be encoded with Windows-1251.
1453 TemplateURLRef::SearchTermsArgs search_terms(base::WideToUTF16(
1454 L"\x0442\x0435\x043A\x0441\x0442"));
1455 GURL result;
1456
1457 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1458 GURL("http://windows-1251.ru/?q=a+b"), search_terms, search_terms_data_,
1459 &result));
1460 EXPECT_EQ(GURL("http://windows-1251.ru/?q=%F2%E5%EA%F1%F2"),
1461 result);
1462
1463 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1464 GURL("http://windows-1251.ru/#q=a+b"), search_terms, search_terms_data_,
1465 &result));
1466 EXPECT_EQ(GURL("http://windows-1251.ru/#q=%F2%E5%EA%F1%F2"),
1467 result);
1468
1469 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1470 GURL("http://windows-1251.ru/path/a%20b"), search_terms,
1471 search_terms_data_, &result));
1472 EXPECT_EQ(GURL("http://windows-1251.ru/path/%F2%E5%EA%F1%F2"),
1473 result);
1474 }
1475
1407 // Test the |suggest_query_params| field of SearchTermsArgs. 1476 // Test the |suggest_query_params| field of SearchTermsArgs.
1408 TEST_F(TemplateURLTest, SuggestQueryParams) { 1477 TEST_F(TemplateURLTest, SuggestQueryParams) {
1409 TemplateURLData data; 1478 TemplateURLData data;
1410 // Pick a URL with replacements before, during, and after the query, to ensure 1479 // Pick a URL with replacements before, during, and after the query, to ensure
1411 // we don't goof up any of them. 1480 // we don't goof up any of them.
1412 data.SetURL("{google:baseURL}search?q={searchTerms}" 1481 data.SetURL("{google:baseURL}search?q={searchTerms}"
1413 "#{google:originalQueryForSuggestion}x"); 1482 "#{google:originalQueryForSuggestion}x");
1414 TemplateURL url(data); 1483 TemplateURL url(data);
1415 1484
1416 // Baseline: no |suggest_query_params| field. 1485 // Baseline: no |suggest_query_params| field.
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
1675 EXPECT_EQ("http://bar/search?q=foo&pfq=full%20query%20text&qha=2338&xssi=t", 1744 EXPECT_EQ("http://bar/search?q=foo&pfq=full%20query%20text&qha=2338&xssi=t",
1676 result); 1745 result);
1677 1746
1678 TemplateURL url2(data); 1747 TemplateURL url2(data);
1679 search_terms_args.prefetch_query.clear(); 1748 search_terms_args.prefetch_query.clear();
1680 search_terms_args.prefetch_query_type.clear(); 1749 search_terms_args.prefetch_query_type.clear();
1681 result = 1750 result =
1682 url2.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); 1751 url2.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_);
1683 EXPECT_EQ("http://bar/search?q=foo&xssi=t", result); 1752 EXPECT_EQ("http://bar/search?q=foo&xssi=t", result);
1684 } 1753 }
OLDNEW
« no previous file with comments | « components/search_engines/template_url.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698