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

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

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