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

Side by Side Diff: chrome/browser/autocomplete/autocomplete_unittest.cc

Issue 8294018: Merge 105363 - Tweak omnibox parsing heuristics more: (Closed) Base URL: svn://svn.chromium.org/chrome/branches/874/src/
Patch Set: Created 9 years, 2 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) 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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/string_number_conversions.h" 7 #include "base/string_number_conversions.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/autocomplete/autocomplete.h" 10 #include "chrome/browser/autocomplete/autocomplete.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 { ASCIIToUTF16("?foo bar"), AutocompleteInput::FORCED_QUERY }, 283 { ASCIIToUTF16("?foo bar"), AutocompleteInput::FORCED_QUERY },
284 { ASCIIToUTF16("?http://foo.com/bar"), AutocompleteInput::FORCED_QUERY }, 284 { ASCIIToUTF16("?http://foo.com/bar"), AutocompleteInput::FORCED_QUERY },
285 { ASCIIToUTF16("foo"), AutocompleteInput::UNKNOWN }, 285 { ASCIIToUTF16("foo"), AutocompleteInput::UNKNOWN },
286 { ASCIIToUTF16("localhost"), AutocompleteInput::URL }, 286 { ASCIIToUTF16("localhost"), AutocompleteInput::URL },
287 { ASCIIToUTF16("foo.c"), AutocompleteInput::UNKNOWN }, 287 { ASCIIToUTF16("foo.c"), AutocompleteInput::UNKNOWN },
288 { ASCIIToUTF16("foo.com"), AutocompleteInput::URL }, 288 { ASCIIToUTF16("foo.com"), AutocompleteInput::URL },
289 { ASCIIToUTF16("-foo.com"), AutocompleteInput::URL }, 289 { ASCIIToUTF16("-foo.com"), AutocompleteInput::URL },
290 { ASCIIToUTF16("foo-.com"), AutocompleteInput::UNKNOWN }, 290 { ASCIIToUTF16("foo-.com"), AutocompleteInput::UNKNOWN },
291 { ASCIIToUTF16("foo.-com"), AutocompleteInput::QUERY }, 291 { ASCIIToUTF16("foo.-com"), AutocompleteInput::QUERY },
292 { ASCIIToUTF16("foo/bar"), AutocompleteInput::UNKNOWN }, 292 { ASCIIToUTF16("foo/bar"), AutocompleteInput::UNKNOWN },
293 { ASCIIToUTF16("foo.com/bar"), AutocompleteInput::URL },
293 { ASCIIToUTF16("foo;bar"), AutocompleteInput::QUERY }, 294 { ASCIIToUTF16("foo;bar"), AutocompleteInput::QUERY },
294 { ASCIIToUTF16("foo/bar baz"), AutocompleteInput::UNKNOWN }, 295 { ASCIIToUTF16("foo/bar baz"), AutocompleteInput::UNKNOWN },
295 { ASCIIToUTF16("foo bar.com"), AutocompleteInput::QUERY }, 296 { ASCIIToUTF16("foo bar.com"), AutocompleteInput::QUERY },
296 { ASCIIToUTF16("foo bar"), AutocompleteInput::QUERY }, 297 { ASCIIToUTF16("foo bar"), AutocompleteInput::QUERY },
297 { ASCIIToUTF16("foo+bar"), AutocompleteInput::QUERY }, 298 { ASCIIToUTF16("foo+bar"), AutocompleteInput::QUERY },
298 { ASCIIToUTF16("foo+bar.com"), AutocompleteInput::UNKNOWN }, 299 { ASCIIToUTF16("foo+bar.com"), AutocompleteInput::UNKNOWN },
299 { ASCIIToUTF16("\"foo:bar\""), AutocompleteInput::QUERY }, 300 { ASCIIToUTF16("\"foo:bar\""), AutocompleteInput::QUERY },
300 { ASCIIToUTF16("link:foo.com"), AutocompleteInput::UNKNOWN }, 301 { ASCIIToUTF16("link:foo.com"), AutocompleteInput::UNKNOWN },
301 { ASCIIToUTF16("foo:81"), AutocompleteInput::UNKNOWN }, 302 { ASCIIToUTF16("foo:81"), AutocompleteInput::UNKNOWN },
302 { ASCIIToUTF16("localhost:8080"), AutocompleteInput::URL }, 303 { ASCIIToUTF16("localhost:8080"), AutocompleteInput::URL },
303 { ASCIIToUTF16("www.foo.com:81"), AutocompleteInput::URL }, 304 { ASCIIToUTF16("www.foo.com:81"), AutocompleteInput::URL },
304 { ASCIIToUTF16("foo.com:123456"), AutocompleteInput::QUERY }, 305 { ASCIIToUTF16("foo.com:123456"), AutocompleteInput::QUERY },
305 { ASCIIToUTF16("foo.com:abc"), AutocompleteInput::QUERY }, 306 { ASCIIToUTF16("foo.com:abc"), AutocompleteInput::QUERY },
306 { ASCIIToUTF16("1.2.3.4:abc"), AutocompleteInput::QUERY }, 307 { ASCIIToUTF16("1.2.3.4:abc"), AutocompleteInput::QUERY },
307 { ASCIIToUTF16("user@foo.com"), AutocompleteInput::UNKNOWN }, 308 { ASCIIToUTF16("user@foo.com"), AutocompleteInput::UNKNOWN },
308 { ASCIIToUTF16("user@foo/z"), AutocompleteInput::UNKNOWN }, 309 { ASCIIToUTF16("user@foo/z"), AutocompleteInput::URL },
309 { ASCIIToUTF16("user@foo/z z"), AutocompleteInput::UNKNOWN }, 310 { ASCIIToUTF16("user@foo/z z"), AutocompleteInput::URL },
310 { ASCIIToUTF16("user@foo.com/z"), AutocompleteInput::URL }, 311 { ASCIIToUTF16("user@foo.com/z"), AutocompleteInput::URL },
311 { ASCIIToUTF16("user:pass@"), AutocompleteInput::UNKNOWN }, 312 { ASCIIToUTF16("user:pass@"), AutocompleteInput::UNKNOWN },
312 { ASCIIToUTF16("user:pass@!foo.com"), AutocompleteInput::UNKNOWN }, 313 { ASCIIToUTF16("user:pass@!foo.com"), AutocompleteInput::UNKNOWN },
313 { ASCIIToUTF16("user:pass@foo"), AutocompleteInput::URL }, 314 { ASCIIToUTF16("user:pass@foo"), AutocompleteInput::URL },
314 { ASCIIToUTF16("user:pass@foo.c"), AutocompleteInput::URL }, 315 { ASCIIToUTF16("user:pass@foo.c"), AutocompleteInput::URL },
315 { ASCIIToUTF16("user:pass@foo.com"), AutocompleteInput::URL }, 316 { ASCIIToUTF16("user:pass@foo.com"), AutocompleteInput::URL },
316 { ASCIIToUTF16("user:pass@foo.com:81"), AutocompleteInput::URL }, 317 { ASCIIToUTF16("user:pass@foo.com:81"), AutocompleteInput::URL },
317 { ASCIIToUTF16("user:pass@foo:81"), AutocompleteInput::URL }, 318 { ASCIIToUTF16("user:pass@foo:81"), AutocompleteInput::URL },
318 { ASCIIToUTF16("1.2"), AutocompleteInput::UNKNOWN }, 319 { ASCIIToUTF16("1.2"), AutocompleteInput::UNKNOWN },
319 { ASCIIToUTF16("1.2/45"), AutocompleteInput::UNKNOWN }, 320 { ASCIIToUTF16("1.2/45"), AutocompleteInput::UNKNOWN },
320 { ASCIIToUTF16("1.2:45"), AutocompleteInput::UNKNOWN }, 321 { ASCIIToUTF16("1.2:45"), AutocompleteInput::UNKNOWN },
321 { ASCIIToUTF16("user@1.2:45"), AutocompleteInput::UNKNOWN }, 322 { ASCIIToUTF16("user@1.2:45"), AutocompleteInput::URL },
322 { ASCIIToUTF16("user@foo:45"), AutocompleteInput::UNKNOWN }, 323 { ASCIIToUTF16("user@foo:45"), AutocompleteInput::URL },
323 { ASCIIToUTF16("user:pass@1.2:45"), AutocompleteInput::URL }, 324 { ASCIIToUTF16("user:pass@1.2:45"), AutocompleteInput::URL },
325 { ASCIIToUTF16("host?query"), AutocompleteInput::UNKNOWN },
326 { ASCIIToUTF16("host#ref"), AutocompleteInput::UNKNOWN },
327 { ASCIIToUTF16("host/path?query"), AutocompleteInput::URL },
328 { ASCIIToUTF16("host/path#ref"), AutocompleteInput::URL },
324 { ASCIIToUTF16("en.wikipedia.org/wiki/James Bond"), 329 { ASCIIToUTF16("en.wikipedia.org/wiki/James Bond"),
325 AutocompleteInput::URL }, 330 AutocompleteInput::URL },
326 // In Chrome itself, mailto: will get handled by ShellExecute, but in 331 // In Chrome itself, mailto: will get handled by ShellExecute, but in
327 // unittest mode, we don't have the data loaded in the external protocol 332 // unittest mode, we don't have the data loaded in the external protocol
328 // handler to know this. 333 // handler to know this.
329 // { ASCIIToUTF16("mailto:abuse@foo.com"), AutocompleteInput::URL }, 334 // { ASCIIToUTF16("mailto:abuse@foo.com"), AutocompleteInput::URL },
330 { ASCIIToUTF16("view-source:http://www.foo.com/"), AutocompleteInput::URL }, 335 { ASCIIToUTF16("view-source:http://www.foo.com/"), AutocompleteInput::URL },
331 { ASCIIToUTF16("javascript:alert(\"Hey there!\");"), 336 { ASCIIToUTF16("javascript:alert(\"Hey there!\");"),
332 AutocompleteInput::URL }, 337 AutocompleteInput::URL },
333 #if defined(OS_WIN) 338 #if defined(OS_WIN)
(...skipping 16 matching lines...) Expand all
350 { ASCIIToUTF16("http:user@foo.com"), AutocompleteInput::URL }, 355 { ASCIIToUTF16("http:user@foo.com"), AutocompleteInput::URL },
351 { ASCIIToUTF16("http://user@foo.com"), AutocompleteInput::URL }, 356 { ASCIIToUTF16("http://user@foo.com"), AutocompleteInput::URL },
352 { ASCIIToUTF16("http:user:pass@foo.com"), AutocompleteInput::URL }, 357 { ASCIIToUTF16("http:user:pass@foo.com"), AutocompleteInput::URL },
353 { ASCIIToUTF16("http://user:pass@foo.com"), AutocompleteInput::URL }, 358 { ASCIIToUTF16("http://user:pass@foo.com"), AutocompleteInput::URL },
354 { ASCIIToUTF16("http://1.2"), AutocompleteInput::URL }, 359 { ASCIIToUTF16("http://1.2"), AutocompleteInput::URL },
355 { ASCIIToUTF16("http://1.2/45"), AutocompleteInput::URL }, 360 { ASCIIToUTF16("http://1.2/45"), AutocompleteInput::URL },
356 { ASCIIToUTF16("http:ps/2 games"), AutocompleteInput::URL }, 361 { ASCIIToUTF16("http:ps/2 games"), AutocompleteInput::URL },
357 { ASCIIToUTF16("https://foo.com"), AutocompleteInput::URL }, 362 { ASCIIToUTF16("https://foo.com"), AutocompleteInput::URL },
358 { ASCIIToUTF16("127.0.0.1"), AutocompleteInput::URL }, 363 { ASCIIToUTF16("127.0.0.1"), AutocompleteInput::URL },
359 { ASCIIToUTF16("127.0.1"), AutocompleteInput::UNKNOWN }, 364 { ASCIIToUTF16("127.0.1"), AutocompleteInput::UNKNOWN },
360 { ASCIIToUTF16("127.0.1/"), AutocompleteInput::UNKNOWN }, 365 { ASCIIToUTF16("127.0.1/"), AutocompleteInput::URL },
361 { ASCIIToUTF16("browser.tabs.closeButtons"), AutocompleteInput::UNKNOWN }, 366 { ASCIIToUTF16("browser.tabs.closeButtons"), AutocompleteInput::UNKNOWN },
362 { WideToUTF16(L"\u6d4b\u8bd5"), AutocompleteInput::UNKNOWN }, 367 { WideToUTF16(L"\u6d4b\u8bd5"), AutocompleteInput::UNKNOWN },
363 { ASCIIToUTF16("[2001:]"), AutocompleteInput::QUERY }, // Not a valid IP 368 { ASCIIToUTF16("[2001:]"), AutocompleteInput::QUERY }, // Not a valid IP
364 { ASCIIToUTF16("[2001:dB8::1]"), AutocompleteInput::URL }, 369 { ASCIIToUTF16("[2001:dB8::1]"), AutocompleteInput::URL },
365 { ASCIIToUTF16("192.168.0.256"), 370 { ASCIIToUTF16("192.168.0.256"),
366 AutocompleteInput::QUERY }, // Invalid IPv4 literal. 371 AutocompleteInput::QUERY }, // Invalid IPv4 literal.
367 { ASCIIToUTF16("[foo.com]"), 372 { ASCIIToUTF16("[foo.com]"),
368 AutocompleteInput::QUERY }, // Invalid IPv6 literal. 373 AutocompleteInput::QUERY }, // Invalid IPv6 literal.
369 }; 374 };
370 375
371 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(input_cases); ++i) { 376 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(input_cases); ++i) {
372 SCOPED_TRACE(input_cases[i].input); 377 SCOPED_TRACE(input_cases[i].input);
373 AutocompleteInput input(input_cases[i].input, string16(), true, false, 378 AutocompleteInput input(input_cases[i].input, string16(), true, false,
374 true, AutocompleteInput::ALL_MATCHES); 379 true, AutocompleteInput::ALL_MATCHES);
375 EXPECT_EQ(input_cases[i].type, input.type()); 380 EXPECT_EQ(input_cases[i].type, input.type());
376 } 381 }
377 } 382 }
378 383
379 TEST_F(AutocompleteTest, InputTypeWithDesiredTLD) { 384 TEST_F(AutocompleteTest, InputTypeWithDesiredTLD) {
380 struct test_data { 385 struct test_data {
381 const string16 input; 386 const string16 input;
382 const AutocompleteInput::Type type; 387 const AutocompleteInput::Type type;
383 } input_cases[] = { 388 } input_cases[] = {
384 { ASCIIToUTF16("401k"), AutocompleteInput::REQUESTED_URL }, 389 { ASCIIToUTF16("401k"), AutocompleteInput::REQUESTED_URL },
385 { ASCIIToUTF16("999999999999999"), AutocompleteInput::REQUESTED_URL }, 390 { ASCIIToUTF16("999999999999999"), AutocompleteInput::REQUESTED_URL },
386 { ASCIIToUTF16("x@y/z z"), AutocompleteInput::REQUESTED_URL }, 391 { ASCIIToUTF16("x@y"), AutocompleteInput::REQUESTED_URL },
392 { ASCIIToUTF16("y/z z"), AutocompleteInput::REQUESTED_URL },
387 }; 393 };
388 394
389 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(input_cases); ++i) { 395 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(input_cases); ++i) {
396 SCOPED_TRACE(input_cases[i].input);
390 AutocompleteInput input(input_cases[i].input, ASCIIToUTF16("com"), true, 397 AutocompleteInput input(input_cases[i].input, ASCIIToUTF16("com"), true,
391 false, true, AutocompleteInput::ALL_MATCHES); 398 false, true, AutocompleteInput::ALL_MATCHES);
392 EXPECT_EQ(input_cases[i].type, input.type()) << "Input: " << 399 EXPECT_EQ(input_cases[i].type, input.type());
393 input_cases[i].input;
394 } 400 }
395 } 401 }
396 402
397 // This tests for a regression where certain input in the omnibox caused us to 403 // This tests for a regression where certain input in the omnibox caused us to
398 // crash. As long as the test completes without crashing, we're fine. 404 // crash. As long as the test completes without crashing, we're fine.
399 TEST_F(AutocompleteTest, InputCrash) { 405 TEST_F(AutocompleteTest, InputCrash) {
400 AutocompleteInput input(WideToUTF16(L"\uff65@s"), string16(), true, false, 406 AutocompleteInput input(WideToUTF16(L"\uff65@s"), string16(), true, false,
401 true, AutocompleteInput::ALL_MATCHES); 407 true, AutocompleteInput::ALL_MATCHES);
402 } 408 }
403 409
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 { ASCIIToUTF16("view-source:"), Component(0, 11), kInvalidComponent }, 461 { ASCIIToUTF16("view-source:"), Component(0, 11), kInvalidComponent },
456 { ASCIIToUTF16("view-source:garbage"), kInvalidComponent, 462 { ASCIIToUTF16("view-source:garbage"), kInvalidComponent,
457 Component(12, 7) }, 463 Component(12, 7) },
458 { ASCIIToUTF16("view-source:http://http://foo"), Component(12, 4), 464 { ASCIIToUTF16("view-source:http://http://foo"), Component(12, 4),
459 Component(19, 4) }, 465 Component(19, 4) },
460 { ASCIIToUTF16("view-source:view-source:http://example.com/"), 466 { ASCIIToUTF16("view-source:view-source:http://example.com/"),
461 Component(12, 11), kInvalidComponent } 467 Component(12, 11), kInvalidComponent }
462 }; 468 };
463 469
464 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(input_cases); ++i) { 470 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(input_cases); ++i) {
471 SCOPED_TRACE(input_cases[i].input);
465 Component scheme, host; 472 Component scheme, host;
466 AutocompleteInput::ParseForEmphasizeComponents(input_cases[i].input, 473 AutocompleteInput::ParseForEmphasizeComponents(input_cases[i].input,
467 string16(), 474 string16(),
468 &scheme, 475 &scheme,
469 &host); 476 &host);
470 AutocompleteInput input(input_cases[i].input, string16(), true, false, 477 AutocompleteInput input(input_cases[i].input, string16(), true, false,
471 true, AutocompleteInput::ALL_MATCHES); 478 true, AutocompleteInput::ALL_MATCHES);
472 EXPECT_EQ(input_cases[i].scheme.begin, scheme.begin) << "Input: " << 479 EXPECT_EQ(input_cases[i].scheme.begin, scheme.begin);
473 input_cases[i].input; 480 EXPECT_EQ(input_cases[i].scheme.len, scheme.len);
474 EXPECT_EQ(input_cases[i].scheme.len, scheme.len) << "Input: " << 481 EXPECT_EQ(input_cases[i].host.begin, host.begin);
475 input_cases[i].input; 482 EXPECT_EQ(input_cases[i].host.len, host.len);
476 EXPECT_EQ(input_cases[i].host.begin, host.begin) << "Input: " <<
477 input_cases[i].input;
478 EXPECT_EQ(input_cases[i].host.len, host.len) << "Input: " <<
479 input_cases[i].input;
480 } 483 }
481 } 484 }
482 485
483 } // namespace 486 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete.cc ('k') | chrome/browser/autocomplete/history_url_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698