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

Side by Side Diff: chrome/browser/history/in_memory_url_index_unittest.cc

Issue 296743009: Pass AutocompleteProvider::kMaxMatches to InMemoryURLIndex (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 7 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
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 <algorithm> 5 #include <algorithm>
6 #include <fstream> 6 #include <fstream>
7 7
8 #include "base/auto_reset.h" 8 #include "base/auto_reset.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
11 #include "base/files/scoped_temp_dir.h" 11 #include "base/files/scoped_temp_dir.h"
12 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "base/path_service.h" 13 #include "base/path_service.h"
14 #include "base/strings/string16.h" 14 #include "base/strings/string16.h"
15 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
16 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
17 #include "chrome/browser/autocomplete/autocomplete_provider.h"
18 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 17 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
19 #include "chrome/browser/chrome_notification_types.h" 18 #include "chrome/browser/chrome_notification_types.h"
20 #include "chrome/browser/history/history_backend.h" 19 #include "chrome/browser/history/history_backend.h"
21 #include "chrome/browser/history/history_database.h" 20 #include "chrome/browser/history/history_database.h"
22 #include "chrome/browser/history/history_notifications.h" 21 #include "chrome/browser/history/history_notifications.h"
23 #include "chrome/browser/history/history_service.h" 22 #include "chrome/browser/history/history_service.h"
24 #include "chrome/browser/history/history_service_factory.h" 23 #include "chrome/browser/history/history_service_factory.h"
25 #include "chrome/browser/history/in_memory_url_index.h" 24 #include "chrome/browser/history/in_memory_url_index.h"
26 #include "chrome/browser/history/in_memory_url_index_types.h" 25 #include "chrome/browser/history/in_memory_url_index_types.h"
27 #include "chrome/browser/history/url_index_private_data.h" 26 #include "chrome/browser/history/url_index_private_data.h"
28 #include "chrome/common/chrome_paths.h" 27 #include "chrome/common/chrome_paths.h"
29 #include "chrome/test/base/history_index_restore_observer.h" 28 #include "chrome/test/base/history_index_restore_observer.h"
30 #include "chrome/test/base/testing_profile.h" 29 #include "chrome/test/base/testing_profile.h"
31 #include "components/bookmarks/test/bookmark_test_helpers.h" 30 #include "components/bookmarks/test/bookmark_test_helpers.h"
32 #include "content/public/browser/notification_details.h" 31 #include "content/public/browser/notification_details.h"
33 #include "content/public/browser/notification_source.h" 32 #include "content/public/browser/notification_source.h"
34 #include "content/public/test/test_browser_thread.h" 33 #include "content/public/test/test_browser_thread.h"
35 #include "sql/transaction.h" 34 #include "sql/transaction.h"
36 #include "testing/gtest/include/gtest/gtest.h" 35 #include "testing/gtest/include/gtest/gtest.h"
37 36
38 using base::ASCIIToUTF16; 37 using base::ASCIIToUTF16;
39 using content::BrowserThread; 38 using content::BrowserThread;
40 39
40 namespace {
41 const size_t kMaxMatches = 3;
42 } // namespace
43
41 // The test version of the history url database table ('url') is contained in 44 // The test version of the history url database table ('url') is contained in
42 // a database file created from a text file('url_history_provider_test.db.txt'). 45 // a database file created from a text file('url_history_provider_test.db.txt').
43 // The only difference between this table and a live 'urls' table from a 46 // The only difference between this table and a live 'urls' table from a
44 // profile is that the last_visit_time column in the test table contains a 47 // profile is that the last_visit_time column in the test table contains a
45 // number specifying the number of days relative to 'today' to which the 48 // number specifying the number of days relative to 'today' to which the
46 // absolute time should be set during the test setup stage. 49 // absolute time should be set during the test setup stage.
47 // 50 //
48 // The format of the test database text file is of a SQLite .dump file. 51 // The format of the test database text file is of a SQLite .dump file.
49 // Note that only lines whose first character is an upper-case letter are 52 // Note that only lines whose first character is an upper-case letter are
50 // processed when creating the test database. 53 // processed when creating the test database.
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 443
441 // history_info_map_ should have the same number of items as were filtered. 444 // history_info_map_ should have the same number of items as were filtered.
442 EXPECT_EQ(1U, private_data.history_info_map_.size()); 445 EXPECT_EQ(1U, private_data.history_info_map_.size());
443 EXPECT_EQ(35U, private_data.char_word_map_.size()); 446 EXPECT_EQ(35U, private_data.char_word_map_.size());
444 EXPECT_EQ(17U, private_data.word_map_.size()); 447 EXPECT_EQ(17U, private_data.word_map_.size());
445 } 448 }
446 449
447 TEST_F(InMemoryURLIndexTest, Retrieval) { 450 TEST_F(InMemoryURLIndexTest, Retrieval) {
448 // See if a very specific term gives a single result. 451 // See if a very specific term gives a single result.
449 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms( 452 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
450 ASCIIToUTF16("DrudgeReport"), base::string16::npos); 453 ASCIIToUTF16("DrudgeReport"), base::string16::npos, kMaxMatches);
451 ASSERT_EQ(1U, matches.size()); 454 ASSERT_EQ(1U, matches.size());
452 455
453 // Verify that we got back the result we expected. 456 // Verify that we got back the result we expected.
454 EXPECT_EQ(5, matches[0].url_info.id()); 457 EXPECT_EQ(5, matches[0].url_info.id());
455 EXPECT_EQ("http://drudgereport.com/", matches[0].url_info.url().spec()); 458 EXPECT_EQ("http://drudgereport.com/", matches[0].url_info.url().spec());
456 EXPECT_EQ(ASCIIToUTF16("DRUDGE REPORT 2010"), matches[0].url_info.title()); 459 EXPECT_EQ(ASCIIToUTF16("DRUDGE REPORT 2010"), matches[0].url_info.title());
457 EXPECT_TRUE(matches[0].can_inline()); 460 EXPECT_TRUE(matches[0].can_inline());
458 461
459 // Make sure a trailing space prevents inline-ability but still results 462 // Make sure a trailing space prevents inline-ability but still results
460 // in the expected result. 463 // in the expected result.
461 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("DrudgeReport "), 464 matches = url_index_->HistoryItemsForTerms(
462 base::string16::npos); 465 ASCIIToUTF16("DrudgeReport "), base::string16::npos, kMaxMatches);
463 ASSERT_EQ(1U, matches.size()); 466 ASSERT_EQ(1U, matches.size());
464 EXPECT_EQ(5, matches[0].url_info.id()); 467 EXPECT_EQ(5, matches[0].url_info.id());
465 EXPECT_EQ("http://drudgereport.com/", matches[0].url_info.url().spec()); 468 EXPECT_EQ("http://drudgereport.com/", matches[0].url_info.url().spec());
466 EXPECT_EQ(ASCIIToUTF16("DRUDGE REPORT 2010"), matches[0].url_info.title()); 469 EXPECT_EQ(ASCIIToUTF16("DRUDGE REPORT 2010"), matches[0].url_info.title());
467 EXPECT_FALSE(matches[0].can_inline()); 470 EXPECT_FALSE(matches[0].can_inline());
468 471
469 // Search which should result in multiple results. 472 // Search which should result in multiple results.
470 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("drudge"), 473 matches = url_index_->HistoryItemsForTerms(
471 base::string16::npos); 474 ASCIIToUTF16("drudge"), base::string16::npos, kMaxMatches);
472 ASSERT_EQ(2U, matches.size()); 475 ASSERT_EQ(2U, matches.size());
473 // The results should be in descending score order. 476 // The results should be in descending score order.
474 EXPECT_GE(matches[0].raw_score(), matches[1].raw_score()); 477 EXPECT_GE(matches[0].raw_score(), matches[1].raw_score());
475 478
476 // Search which should result in nearly perfect result. 479 // Search which should result in nearly perfect result.
477 matches = url_index_->HistoryItemsForTerms( 480 matches = url_index_->HistoryItemsForTerms(
478 ASCIIToUTF16("Nearly Perfect Result"), base::string16::npos); 481 ASCIIToUTF16("Nearly Perfect Result"), base::string16::npos, kMaxMatches);
479 ASSERT_EQ(1U, matches.size()); 482 ASSERT_EQ(1U, matches.size());
480 // The results should have a very high score. 483 // The results should have a very high score.
481 EXPECT_GT(matches[0].raw_score(), 900); 484 EXPECT_GT(matches[0].raw_score(), 900);
482 EXPECT_EQ(32, matches[0].url_info.id()); 485 EXPECT_EQ(32, matches[0].url_info.id());
483 EXPECT_EQ("https://nearlyperfectresult.com/", 486 EXPECT_EQ("https://nearlyperfectresult.com/",
484 matches[0].url_info.url().spec()); // Note: URL gets lowercased. 487 matches[0].url_info.url().spec()); // Note: URL gets lowercased.
485 EXPECT_EQ(ASCIIToUTF16("Practically Perfect Search Result"), 488 EXPECT_EQ(ASCIIToUTF16("Practically Perfect Search Result"),
486 matches[0].url_info.title()); 489 matches[0].url_info.title());
487 EXPECT_FALSE(matches[0].can_inline()); 490 EXPECT_FALSE(matches[0].can_inline());
488 491
489 // Search which should result in very poor result. 492 // Search which should result in very poor result.
490 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("qui c"), 493 matches = url_index_->HistoryItemsForTerms(
491 base::string16::npos); 494 ASCIIToUTF16("qui c"), base::string16::npos, kMaxMatches);
492 ASSERT_EQ(1U, matches.size()); 495 ASSERT_EQ(1U, matches.size());
493 // The results should have a poor score. 496 // The results should have a poor score.
494 EXPECT_LT(matches[0].raw_score(), 500); 497 EXPECT_LT(matches[0].raw_score(), 500);
495 EXPECT_EQ(33, matches[0].url_info.id()); 498 EXPECT_EQ(33, matches[0].url_info.id());
496 EXPECT_EQ("http://quiteuselesssearchresultxyz.com/", 499 EXPECT_EQ("http://quiteuselesssearchresultxyz.com/",
497 matches[0].url_info.url().spec()); // Note: URL gets lowercased. 500 matches[0].url_info.url().spec()); // Note: URL gets lowercased.
498 EXPECT_EQ(ASCIIToUTF16("Practically Useless Search Result"), 501 EXPECT_EQ(ASCIIToUTF16("Practically Useless Search Result"),
499 matches[0].url_info.title()); 502 matches[0].url_info.title());
500 EXPECT_FALSE(matches[0].can_inline()); 503 EXPECT_FALSE(matches[0].can_inline());
501 504
502 // Search which will match at the end of an URL with encoded characters. 505 // Search which will match at the end of an URL with encoded characters.
503 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("Mice"), 506 matches = url_index_->HistoryItemsForTerms(
504 base::string16::npos); 507 ASCIIToUTF16("Mice"), base::string16::npos, kMaxMatches);
505 ASSERT_EQ(1U, matches.size()); 508 ASSERT_EQ(1U, matches.size());
506 EXPECT_EQ(30, matches[0].url_info.id()); 509 EXPECT_EQ(30, matches[0].url_info.id());
507 EXPECT_FALSE(matches[0].can_inline()); 510 EXPECT_FALSE(matches[0].can_inline());
508 511
509 // Check that URLs are not escaped an escape time. 512 // Check that URLs are not escaped an escape time.
510 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("1% wikipedia"), 513 matches = url_index_->HistoryItemsForTerms(
511 base::string16::npos); 514 ASCIIToUTF16("1% wikipedia"), base::string16::npos, kMaxMatches);
512 ASSERT_EQ(1U, matches.size()); 515 ASSERT_EQ(1U, matches.size());
513 EXPECT_EQ(35, matches[0].url_info.id()); 516 EXPECT_EQ(35, matches[0].url_info.id());
514 EXPECT_EQ("http://en.wikipedia.org/wiki/1%25_rule_(Internet_culture)", 517 EXPECT_EQ("http://en.wikipedia.org/wiki/1%25_rule_(Internet_culture)",
515 matches[0].url_info.url().spec()); 518 matches[0].url_info.url().spec());
516 519
517 // Verify that a single term can appear multiple times in the URL and as long 520 // Verify that a single term can appear multiple times in the URL and as long
518 // as one starts the URL it is still inlined. 521 // as one starts the URL it is still inlined.
519 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("fubar"), 522 matches = url_index_->HistoryItemsForTerms(
520 base::string16::npos); 523 ASCIIToUTF16("fubar"), base::string16::npos, kMaxMatches);
521 ASSERT_EQ(1U, matches.size()); 524 ASSERT_EQ(1U, matches.size());
522 EXPECT_EQ(34, matches[0].url_info.id()); 525 EXPECT_EQ(34, matches[0].url_info.id());
523 EXPECT_EQ("http://fubarfubarandfubar.com/", matches[0].url_info.url().spec()); 526 EXPECT_EQ("http://fubarfubarandfubar.com/", matches[0].url_info.url().spec());
524 EXPECT_EQ(ASCIIToUTF16("Situation Normal -- FUBARED"), 527 EXPECT_EQ(ASCIIToUTF16("Situation Normal -- FUBARED"),
525 matches[0].url_info.title()); 528 matches[0].url_info.title());
526 EXPECT_TRUE(matches[0].can_inline()); 529 EXPECT_TRUE(matches[0].can_inline());
527 } 530 }
528 531
529 TEST_F(InMemoryURLIndexTest, CursorPositionRetrieval) { 532 TEST_F(InMemoryURLIndexTest, CursorPositionRetrieval) {
530 // See if a very specific term with no cursor gives an empty result. 533 // See if a very specific term with no cursor gives an empty result.
531 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms( 534 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
532 ASCIIToUTF16("DrudReport"), base::string16::npos); 535 ASCIIToUTF16("DrudReport"), base::string16::npos, kMaxMatches);
533 ASSERT_EQ(0U, matches.size()); 536 ASSERT_EQ(0U, matches.size());
534 537
535 // The same test with the cursor at the end should give an empty result. 538 // The same test with the cursor at the end should give an empty result.
536 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("DrudReport"), 10u); 539 matches = url_index_->HistoryItemsForTerms(
540 ASCIIToUTF16("DrudReport"), 10u, kMaxMatches);
537 ASSERT_EQ(0U, matches.size()); 541 ASSERT_EQ(0U, matches.size());
538 542
539 // If the cursor is between Drud and Report, we should find the desired 543 // If the cursor is between Drud and Report, we should find the desired
540 // result. 544 // result.
541 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("DrudReport"), 4u); 545 matches = url_index_->HistoryItemsForTerms(
546 ASCIIToUTF16("DrudReport"), 4u, kMaxMatches);
542 ASSERT_EQ(1U, matches.size()); 547 ASSERT_EQ(1U, matches.size());
543 EXPECT_EQ("http://drudgereport.com/", matches[0].url_info.url().spec()); 548 EXPECT_EQ("http://drudgereport.com/", matches[0].url_info.url().spec());
544 EXPECT_EQ(ASCIIToUTF16("DRUDGE REPORT 2010"), matches[0].url_info.title()); 549 EXPECT_EQ(ASCIIToUTF16("DRUDGE REPORT 2010"), matches[0].url_info.title());
545 550
546 // Now check multi-word inputs. No cursor should fail to find a 551 // Now check multi-word inputs. No cursor should fail to find a
547 // result on this input. 552 // result on this input.
548 matches = url_index_->HistoryItemsForTerms( 553 matches = url_index_->HistoryItemsForTerms(
549 ASCIIToUTF16("MORTGAGERATE DROPS"), base::string16::npos); 554 ASCIIToUTF16("MORTGAGERATE DROPS"), base::string16::npos, kMaxMatches);
550 ASSERT_EQ(0U, matches.size()); 555 ASSERT_EQ(0U, matches.size());
551 556
552 // Ditto with cursor at end. 557 // Ditto with cursor at end.
553 matches = url_index_->HistoryItemsForTerms( 558 matches = url_index_->HistoryItemsForTerms(
554 ASCIIToUTF16("MORTGAGERATE DROPS"), 18u); 559 ASCIIToUTF16("MORTGAGERATE DROPS"), 18u, kMaxMatches);
555 ASSERT_EQ(0U, matches.size()); 560 ASSERT_EQ(0U, matches.size());
556 561
557 // If the cursor is between MORTAGE And RATE, we should find the 562 // If the cursor is between MORTAGE And RATE, we should find the
558 // desired result. 563 // desired result.
559 matches = url_index_->HistoryItemsForTerms( 564 matches = url_index_->HistoryItemsForTerms(
560 ASCIIToUTF16("MORTGAGERATE DROPS"), 8u); 565 ASCIIToUTF16("MORTGAGERATE DROPS"), 8u, kMaxMatches);
561 ASSERT_EQ(1U, matches.size()); 566 ASSERT_EQ(1U, matches.size());
562 EXPECT_EQ("http://www.reuters.com/article/idUSN0839880620100708", 567 EXPECT_EQ("http://www.reuters.com/article/idUSN0839880620100708",
563 matches[0].url_info.url().spec()); 568 matches[0].url_info.url().spec());
564 EXPECT_EQ(ASCIIToUTF16( 569 EXPECT_EQ(ASCIIToUTF16(
565 "UPDATE 1-US 30-yr mortgage rate drops to new record low | Reuters"), 570 "UPDATE 1-US 30-yr mortgage rate drops to new record low | Reuters"),
566 matches[0].url_info.title()); 571 matches[0].url_info.title());
567 } 572 }
568 573
569 TEST_F(InMemoryURLIndexTest, URLPrefixMatching) { 574 TEST_F(InMemoryURLIndexTest, URLPrefixMatching) {
570 // "drudgere" - found, can inline 575 // "drudgere" - found, can inline
571 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms( 576 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
572 ASCIIToUTF16("drudgere"), base::string16::npos); 577 ASCIIToUTF16("drudgere"), base::string16::npos, kMaxMatches);
573 ASSERT_EQ(1U, matches.size()); 578 ASSERT_EQ(1U, matches.size());
574 EXPECT_TRUE(matches[0].can_inline()); 579 EXPECT_TRUE(matches[0].can_inline());
575 580
576 // "drudgere" - found, can inline 581 // "drudgere" - found, can inline
577 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("drudgere"), 582 matches = url_index_->HistoryItemsForTerms(
578 base::string16::npos); 583 ASCIIToUTF16("drudgere"), base::string16::npos, kMaxMatches);
579 ASSERT_EQ(1U, matches.size()); 584 ASSERT_EQ(1U, matches.size());
580 EXPECT_TRUE(matches[0].can_inline()); 585 EXPECT_TRUE(matches[0].can_inline());
581 586
582 // "www.atdmt" - not found 587 // "www.atdmt" - not found
583 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("www.atdmt"), 588 matches = url_index_->HistoryItemsForTerms(
584 base::string16::npos); 589 ASCIIToUTF16("www.atdmt"), base::string16::npos, kMaxMatches);
585 EXPECT_EQ(0U, matches.size()); 590 EXPECT_EQ(0U, matches.size());
586 591
587 // "atdmt" - found, cannot inline 592 // "atdmt" - found, cannot inline
588 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("atdmt"), 593 matches = url_index_->HistoryItemsForTerms(
589 base::string16::npos); 594 ASCIIToUTF16("atdmt"), base::string16::npos, kMaxMatches);
590 ASSERT_EQ(1U, matches.size()); 595 ASSERT_EQ(1U, matches.size());
591 EXPECT_FALSE(matches[0].can_inline()); 596 EXPECT_FALSE(matches[0].can_inline());
592 597
593 // "view.atdmt" - found, can inline 598 // "view.atdmt" - found, can inline
594 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("view.atdmt"), 599 matches = url_index_->HistoryItemsForTerms(
595 base::string16::npos); 600 ASCIIToUTF16("view.atdmt"), base::string16::npos, kMaxMatches);
596 ASSERT_EQ(1U, matches.size()); 601 ASSERT_EQ(1U, matches.size());
597 EXPECT_TRUE(matches[0].can_inline()); 602 EXPECT_TRUE(matches[0].can_inline());
598 603
599 // "view.atdmt" - found, can inline 604 // "view.atdmt" - found, can inline
600 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("view.atdmt"), 605 matches = url_index_->HistoryItemsForTerms(
601 base::string16::npos); 606 ASCIIToUTF16("view.atdmt"), base::string16::npos, kMaxMatches);
602 ASSERT_EQ(1U, matches.size()); 607 ASSERT_EQ(1U, matches.size());
603 EXPECT_TRUE(matches[0].can_inline()); 608 EXPECT_TRUE(matches[0].can_inline());
604 609
605 // "cnn.com" - found, can inline 610 // "cnn.com" - found, can inline
606 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("cnn.com"), 611 matches = url_index_->HistoryItemsForTerms(
607 base::string16::npos); 612 ASCIIToUTF16("cnn.com"), base::string16::npos, kMaxMatches);
608 ASSERT_EQ(2U, matches.size()); 613 ASSERT_EQ(2U, matches.size());
609 // One match should be inline-able, the other not. 614 // One match should be inline-able, the other not.
610 EXPECT_TRUE(matches[0].can_inline() != matches[1].can_inline()); 615 EXPECT_TRUE(matches[0].can_inline() != matches[1].can_inline());
611 616
612 // "www.cnn.com" - found, can inline 617 // "www.cnn.com" - found, can inline
613 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("www.cnn.com"), 618 matches = url_index_->HistoryItemsForTerms(
614 base::string16::npos); 619 ASCIIToUTF16("www.cnn.com"), base::string16::npos, kMaxMatches);
615 ASSERT_EQ(1U, matches.size()); 620 ASSERT_EQ(1U, matches.size());
616 EXPECT_TRUE(matches[0].can_inline()); 621 EXPECT_TRUE(matches[0].can_inline());
617 622
618 // "ww.cnn.com" - found because we allow mid-term matches in hostnames 623 // "ww.cnn.com" - found because we allow mid-term matches in hostnames
619 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("ww.cnn.com"), 624 matches = url_index_->HistoryItemsForTerms(
620 base::string16::npos); 625 ASCIIToUTF16("ww.cnn.com"), base::string16::npos, kMaxMatches);
621 ASSERT_EQ(1U, matches.size()); 626 ASSERT_EQ(1U, matches.size());
622 627
623 // "www.cnn.com" - found, can inline 628 // "www.cnn.com" - found, can inline
624 matches = 629 matches = url_index_->HistoryItemsForTerms(
625 url_index_->HistoryItemsForTerms(ASCIIToUTF16("www.cnn.com"), 630 ASCIIToUTF16("www.cnn.com"), base::string16::npos, kMaxMatches);
626 base::string16::npos);
627 ASSERT_EQ(1U, matches.size()); 631 ASSERT_EQ(1U, matches.size());
628 EXPECT_TRUE(matches[0].can_inline()); 632 EXPECT_TRUE(matches[0].can_inline());
629 633
630 // "tp://www.cnn.com" - not found because we don't allow tp as a mid-term 634 // "tp://www.cnn.com" - not found because we don't allow tp as a mid-term
631 // match 635 // match
632 matches = 636 matches = url_index_->HistoryItemsForTerms(
633 url_index_->HistoryItemsForTerms(ASCIIToUTF16("tp://www.cnn.com"), 637 ASCIIToUTF16("tp://www.cnn.com"), base::string16::npos, kMaxMatches);
634 base::string16::npos);
635 ASSERT_EQ(0U, matches.size()); 638 ASSERT_EQ(0U, matches.size());
636 } 639 }
637 640
638 TEST_F(InMemoryURLIndexTest, ProperStringMatching) { 641 TEST_F(InMemoryURLIndexTest, ProperStringMatching) {
639 // Search for the following with the expected results: 642 // Search for the following with the expected results:
640 // "atdmt view" - found 643 // "atdmt view" - found
641 // "atdmt.view" - not found 644 // "atdmt.view" - not found
642 // "view.atdmt" - found 645 // "view.atdmt" - found
643 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms( 646 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
644 ASCIIToUTF16("atdmt view"), base::string16::npos); 647 ASCIIToUTF16("atdmt view"), base::string16::npos, kMaxMatches);
645 ASSERT_EQ(1U, matches.size()); 648 ASSERT_EQ(1U, matches.size());
646 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("atdmt.view"), 649 matches = url_index_->HistoryItemsForTerms(
647 base::string16::npos); 650 ASCIIToUTF16("atdmt.view"), base::string16::npos, kMaxMatches);
648 ASSERT_EQ(0U, matches.size()); 651 ASSERT_EQ(0U, matches.size());
649 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("view.atdmt"), 652 matches = url_index_->HistoryItemsForTerms(
650 base::string16::npos); 653 ASCIIToUTF16("view.atdmt"), base::string16::npos, kMaxMatches);
651 ASSERT_EQ(1U, matches.size()); 654 ASSERT_EQ(1U, matches.size());
652 } 655 }
653 656
654 TEST_F(InMemoryURLIndexTest, HugeResultSet) { 657 TEST_F(InMemoryURLIndexTest, HugeResultSet) {
655 // Create a huge set of qualifying history items. 658 // Create a huge set of qualifying history items.
656 for (URLID row_id = 5000; row_id < 6000; ++row_id) { 659 for (URLID row_id = 5000; row_id < 6000; ++row_id) {
657 URLRow new_row(GURL("http://www.brokeandaloneinmanitoba.com/"), row_id); 660 URLRow new_row(GURL("http://www.brokeandaloneinmanitoba.com/"), row_id);
658 new_row.set_last_visit(base::Time::Now()); 661 new_row.set_last_visit(base::Time::Now());
659 EXPECT_TRUE(UpdateURL(new_row)); 662 EXPECT_TRUE(UpdateURL(new_row));
660 } 663 }
661 664
662 ScoredHistoryMatches matches = 665 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
663 url_index_->HistoryItemsForTerms(ASCIIToUTF16("b"), base::string16::npos); 666 ASCIIToUTF16("b"), base::string16::npos, kMaxMatches);
664 URLIndexPrivateData& private_data(*GetPrivateData()); 667 URLIndexPrivateData& private_data(*GetPrivateData());
665 ASSERT_EQ(AutocompleteProvider::kMaxMatches, matches.size()); 668 ASSERT_EQ(kMaxMatches, matches.size());
666 // There are 7 matches already in the database. 669 // There are 7 matches already in the database.
667 ASSERT_EQ(1008U, private_data.pre_filter_item_count_); 670 ASSERT_EQ(1008U, private_data.pre_filter_item_count_);
668 ASSERT_EQ(500U, private_data.post_filter_item_count_); 671 ASSERT_EQ(500U, private_data.post_filter_item_count_);
669 ASSERT_EQ(AutocompleteProvider::kMaxMatches, 672 ASSERT_EQ(kMaxMatches, private_data.post_scoring_item_count_);
670 private_data.post_scoring_item_count_);
671 } 673 }
672 674
673 TEST_F(InMemoryURLIndexTest, TitleSearch) { 675 TEST_F(InMemoryURLIndexTest, TitleSearch) {
674 // Signal if someone has changed the test DB. 676 // Signal if someone has changed the test DB.
675 EXPECT_EQ(29U, GetPrivateData()->history_info_map_.size()); 677 EXPECT_EQ(29U, GetPrivateData()->history_info_map_.size());
676 678
677 // Ensure title is being searched. 679 // Ensure title is being searched.
678 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms( 680 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
679 ASCIIToUTF16("MORTGAGE RATE DROPS"), base::string16::npos); 681 ASCIIToUTF16("MORTGAGE RATE DROPS"), base::string16::npos, kMaxMatches);
680 ASSERT_EQ(1U, matches.size()); 682 ASSERT_EQ(1U, matches.size());
681 683
682 // Verify that we got back the result we expected. 684 // Verify that we got back the result we expected.
683 EXPECT_EQ(1, matches[0].url_info.id()); 685 EXPECT_EQ(1, matches[0].url_info.id());
684 EXPECT_EQ("http://www.reuters.com/article/idUSN0839880620100708", 686 EXPECT_EQ("http://www.reuters.com/article/idUSN0839880620100708",
685 matches[0].url_info.url().spec()); 687 matches[0].url_info.url().spec());
686 EXPECT_EQ(ASCIIToUTF16( 688 EXPECT_EQ(ASCIIToUTF16(
687 "UPDATE 1-US 30-yr mortgage rate drops to new record low | Reuters"), 689 "UPDATE 1-US 30-yr mortgage rate drops to new record low | Reuters"),
688 matches[0].url_info.title()); 690 matches[0].url_info.title());
689 } 691 }
690 692
691 TEST_F(InMemoryURLIndexTest, TitleChange) { 693 TEST_F(InMemoryURLIndexTest, TitleChange) {
692 // Verify current title terms retrieves desired item. 694 // Verify current title terms retrieves desired item.
693 base::string16 original_terms = 695 base::string16 original_terms =
694 ASCIIToUTF16("lebronomics could high taxes influence"); 696 ASCIIToUTF16("lebronomics could high taxes influence");
695 ScoredHistoryMatches matches = 697 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
696 url_index_->HistoryItemsForTerms(original_terms, base::string16::npos); 698 original_terms, base::string16::npos, kMaxMatches);
697 ASSERT_EQ(1U, matches.size()); 699 ASSERT_EQ(1U, matches.size());
698 700
699 // Verify that we got back the result we expected. 701 // Verify that we got back the result we expected.
700 const URLID expected_id = 3; 702 const URLID expected_id = 3;
701 EXPECT_EQ(expected_id, matches[0].url_info.id()); 703 EXPECT_EQ(expected_id, matches[0].url_info.id());
702 EXPECT_EQ("http://www.businessandmedia.org/articles/2010/20100708120415.aspx", 704 EXPECT_EQ("http://www.businessandmedia.org/articles/2010/20100708120415.aspx",
703 matches[0].url_info.url().spec()); 705 matches[0].url_info.url().spec());
704 EXPECT_EQ(ASCIIToUTF16( 706 EXPECT_EQ(ASCIIToUTF16(
705 "LeBronomics: Could High Taxes Influence James' Team Decision?"), 707 "LeBronomics: Could High Taxes Influence James' Team Decision?"),
706 matches[0].url_info.title()); 708 matches[0].url_info.title());
707 URLRow old_row(matches[0].url_info); 709 URLRow old_row(matches[0].url_info);
708 710
709 // Verify new title terms retrieves nothing. 711 // Verify new title terms retrieves nothing.
710 base::string16 new_terms = ASCIIToUTF16("does eat oats little lambs ivy"); 712 base::string16 new_terms = ASCIIToUTF16("does eat oats little lambs ivy");
711 matches = url_index_->HistoryItemsForTerms(new_terms, base::string16::npos); 713 matches = url_index_->HistoryItemsForTerms(
714 new_terms, base::string16::npos, kMaxMatches);
712 ASSERT_EQ(0U, matches.size()); 715 ASSERT_EQ(0U, matches.size());
713 716
714 // Update the row. 717 // Update the row.
715 old_row.set_title(ASCIIToUTF16("Does eat oats and little lambs eat ivy")); 718 old_row.set_title(ASCIIToUTF16("Does eat oats and little lambs eat ivy"));
716 EXPECT_TRUE(UpdateURL(old_row)); 719 EXPECT_TRUE(UpdateURL(old_row));
717 720
718 // Verify we get the row using the new terms but not the original terms. 721 // Verify we get the row using the new terms but not the original terms.
719 matches = url_index_->HistoryItemsForTerms(new_terms, base::string16::npos); 722 matches = url_index_->HistoryItemsForTerms(
723 new_terms, base::string16::npos, kMaxMatches);
720 ASSERT_EQ(1U, matches.size()); 724 ASSERT_EQ(1U, matches.size());
721 EXPECT_EQ(expected_id, matches[0].url_info.id()); 725 EXPECT_EQ(expected_id, matches[0].url_info.id());
722 matches = 726 matches = url_index_->HistoryItemsForTerms(
723 url_index_->HistoryItemsForTerms(original_terms, base::string16::npos); 727 original_terms, base::string16::npos, kMaxMatches);
724 ASSERT_EQ(0U, matches.size()); 728 ASSERT_EQ(0U, matches.size());
725 } 729 }
726 730
727 TEST_F(InMemoryURLIndexTest, NonUniqueTermCharacterSets) { 731 TEST_F(InMemoryURLIndexTest, NonUniqueTermCharacterSets) {
728 // The presence of duplicate characters should succeed. Exercise by cycling 732 // The presence of duplicate characters should succeed. Exercise by cycling
729 // through a string with several duplicate characters. 733 // through a string with several duplicate characters.
730 ScoredHistoryMatches matches = 734 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
731 url_index_->HistoryItemsForTerms(ASCIIToUTF16("ABRA"), 735 ASCIIToUTF16("ABRA"), base::string16::npos, kMaxMatches);
732 base::string16::npos);
733 ASSERT_EQ(1U, matches.size()); 736 ASSERT_EQ(1U, matches.size());
734 EXPECT_EQ(28, matches[0].url_info.id()); 737 EXPECT_EQ(28, matches[0].url_info.id());
735 EXPECT_EQ("http://www.ddj.com/windows/184416623", 738 EXPECT_EQ("http://www.ddj.com/windows/184416623",
736 matches[0].url_info.url().spec()); 739 matches[0].url_info.url().spec());
737 740
738 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("ABRACAD"), 741 matches = url_index_->HistoryItemsForTerms(
739 base::string16::npos); 742 ASCIIToUTF16("ABRACAD"), base::string16::npos, kMaxMatches);
740 ASSERT_EQ(1U, matches.size()); 743 ASSERT_EQ(1U, matches.size());
741 EXPECT_EQ(28, matches[0].url_info.id()); 744 EXPECT_EQ(28, matches[0].url_info.id());
742 745
743 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("ABRACADABRA"), 746 matches = url_index_->HistoryItemsForTerms(
744 base::string16::npos); 747 ASCIIToUTF16("ABRACADABRA"), base::string16::npos, kMaxMatches);
745 ASSERT_EQ(1U, matches.size()); 748 ASSERT_EQ(1U, matches.size());
746 EXPECT_EQ(28, matches[0].url_info.id()); 749 EXPECT_EQ(28, matches[0].url_info.id());
747 750
748 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("ABRACADABR"), 751 matches = url_index_->HistoryItemsForTerms(
749 base::string16::npos); 752 ASCIIToUTF16("ABRACADABR"), base::string16::npos, kMaxMatches);
750 ASSERT_EQ(1U, matches.size()); 753 ASSERT_EQ(1U, matches.size());
751 EXPECT_EQ(28, matches[0].url_info.id()); 754 EXPECT_EQ(28, matches[0].url_info.id());
752 755
753 matches = url_index_->HistoryItemsForTerms(ASCIIToUTF16("ABRACA"), 756 matches = url_index_->HistoryItemsForTerms(
754 base::string16::npos); 757 ASCIIToUTF16("ABRACA"), base::string16::npos, kMaxMatches);
755 ASSERT_EQ(1U, matches.size()); 758 ASSERT_EQ(1U, matches.size());
756 EXPECT_EQ(28, matches[0].url_info.id()); 759 EXPECT_EQ(28, matches[0].url_info.id());
757 } 760 }
758 761
759 TEST_F(InMemoryURLIndexTest, TypedCharacterCaching) { 762 TEST_F(InMemoryURLIndexTest, TypedCharacterCaching) {
760 // Verify that match results for previously typed characters are retained 763 // Verify that match results for previously typed characters are retained
761 // (in the term_char_word_set_cache_) and reused, if possible, in future 764 // (in the term_char_word_set_cache_) and reused, if possible, in future
762 // autocompletes. 765 // autocompletes.
763 766
764 URLIndexPrivateData::SearchTermCacheMap& cache( 767 URLIndexPrivateData::SearchTermCacheMap& cache(
765 GetPrivateData()->search_term_cache_); 768 GetPrivateData()->search_term_cache_);
766 769
767 // The cache should be empty at this point. 770 // The cache should be empty at this point.
768 EXPECT_EQ(0U, cache.size()); 771 EXPECT_EQ(0U, cache.size());
769 772
770 // Now simulate typing search terms into the omnibox and check the state of 773 // Now simulate typing search terms into the omnibox and check the state of
771 // the cache as each item is 'typed'. 774 // the cache as each item is 'typed'.
772 775
773 // Simulate typing "r" giving "r" in the simulated omnibox. The results for 776 // Simulate typing "r" giving "r" in the simulated omnibox. The results for
774 // 'r' will be not cached because it is only 1 character long. 777 // 'r' will be not cached because it is only 1 character long.
775 url_index_->HistoryItemsForTerms(ASCIIToUTF16("r"), base::string16::npos); 778 url_index_->HistoryItemsForTerms(
779 ASCIIToUTF16("r"), base::string16::npos, kMaxMatches);
776 EXPECT_EQ(0U, cache.size()); 780 EXPECT_EQ(0U, cache.size());
777 781
778 // Simulate typing "re" giving "r re" in the simulated omnibox. 782 // Simulate typing "re" giving "r re" in the simulated omnibox.
779 // 're' should be cached at this point but not 'r' as it is a single 783 // 're' should be cached at this point but not 'r' as it is a single
780 // character. 784 // character.
781 url_index_->HistoryItemsForTerms(ASCIIToUTF16("r re"), base::string16::npos); 785 url_index_->HistoryItemsForTerms(
786 ASCIIToUTF16("r re"), base::string16::npos, kMaxMatches);
782 ASSERT_EQ(1U, cache.size()); 787 ASSERT_EQ(1U, cache.size());
783 CheckTerm(cache, ASCIIToUTF16("re")); 788 CheckTerm(cache, ASCIIToUTF16("re"));
784 789
785 // Simulate typing "reco" giving "r re reco" in the simulated omnibox. 790 // Simulate typing "reco" giving "r re reco" in the simulated omnibox.
786 // 're' and 'reco' should be cached at this point but not 'r' as it is a 791 // 're' and 'reco' should be cached at this point but not 'r' as it is a
787 // single character. 792 // single character.
788 url_index_->HistoryItemsForTerms(ASCIIToUTF16("r re reco"), 793 url_index_->HistoryItemsForTerms(
789 base::string16::npos); 794 ASCIIToUTF16("r re reco"), base::string16::npos, kMaxMatches);
790 ASSERT_EQ(2U, cache.size()); 795 ASSERT_EQ(2U, cache.size());
791 CheckTerm(cache, ASCIIToUTF16("re")); 796 CheckTerm(cache, ASCIIToUTF16("re"));
792 CheckTerm(cache, ASCIIToUTF16("reco")); 797 CheckTerm(cache, ASCIIToUTF16("reco"));
793 798
794 // Simulate typing "mort". 799 // Simulate typing "mort".
795 // Since we now have only one search term, the cached results for 're' and 800 // Since we now have only one search term, the cached results for 're' and
796 // 'reco' should be purged, giving us only 1 item in the cache (for 'mort'). 801 // 'reco' should be purged, giving us only 1 item in the cache (for 'mort').
797 url_index_->HistoryItemsForTerms(ASCIIToUTF16("mort"), base::string16::npos); 802 url_index_->HistoryItemsForTerms(
803 ASCIIToUTF16("mort"), base::string16::npos, kMaxMatches);
798 ASSERT_EQ(1U, cache.size()); 804 ASSERT_EQ(1U, cache.size());
799 CheckTerm(cache, ASCIIToUTF16("mort")); 805 CheckTerm(cache, ASCIIToUTF16("mort"));
800 806
801 // Simulate typing "reco" giving "mort reco" in the simulated omnibox. 807 // Simulate typing "reco" giving "mort reco" in the simulated omnibox.
802 url_index_->HistoryItemsForTerms(ASCIIToUTF16("mort reco"), 808 url_index_->HistoryItemsForTerms(
803 base::string16::npos); 809 ASCIIToUTF16("mort reco"), base::string16::npos, kMaxMatches);
804 ASSERT_EQ(2U, cache.size()); 810 ASSERT_EQ(2U, cache.size());
805 CheckTerm(cache, ASCIIToUTF16("mort")); 811 CheckTerm(cache, ASCIIToUTF16("mort"));
806 CheckTerm(cache, ASCIIToUTF16("reco")); 812 CheckTerm(cache, ASCIIToUTF16("reco"));
807 813
808 // Simulate a <DELETE> by removing the 'reco' and adding back the 'rec'. 814 // Simulate a <DELETE> by removing the 'reco' and adding back the 'rec'.
809 url_index_->HistoryItemsForTerms(ASCIIToUTF16("mort rec"), 815 url_index_->HistoryItemsForTerms(
810 base::string16::npos); 816 ASCIIToUTF16("mort rec"), base::string16::npos, kMaxMatches);
811 ASSERT_EQ(2U, cache.size()); 817 ASSERT_EQ(2U, cache.size());
812 CheckTerm(cache, ASCIIToUTF16("mort")); 818 CheckTerm(cache, ASCIIToUTF16("mort"));
813 CheckTerm(cache, ASCIIToUTF16("rec")); 819 CheckTerm(cache, ASCIIToUTF16("rec"));
814 } 820 }
815 821
816 TEST_F(InMemoryURLIndexTest, AddNewRows) { 822 TEST_F(InMemoryURLIndexTest, AddNewRows) {
817 // Verify that the row we're going to add does not already exist. 823 // Verify that the row we're going to add does not already exist.
818 URLID new_row_id = 87654321; 824 URLID new_row_id = 87654321;
819 // Newly created URLRows get a last_visit time of 'right now' so it should 825 // Newly created URLRows get a last_visit time of 'right now' so it should
820 // qualify as a quick result candidate. 826 // qualify as a quick result candidate.
821 EXPECT_TRUE(url_index_->HistoryItemsForTerms( 827 EXPECT_TRUE(url_index_->HistoryItemsForTerms(
822 ASCIIToUTF16("brokeandalone"), base::string16::npos).empty()); 828 ASCIIToUTF16("brokeandalone"), base::string16::npos, kMaxMatches)
829 .empty());
823 830
824 // Add a new row. 831 // Add a new row.
825 URLRow new_row(GURL("http://www.brokeandaloneinmanitoba.com/"), new_row_id++); 832 URLRow new_row(GURL("http://www.brokeandaloneinmanitoba.com/"), new_row_id++);
826 new_row.set_last_visit(base::Time::Now()); 833 new_row.set_last_visit(base::Time::Now());
827 EXPECT_TRUE(UpdateURL(new_row)); 834 EXPECT_TRUE(UpdateURL(new_row));
828 835
829 // Verify that we can retrieve it. 836 // Verify that we can retrieve it.
830 EXPECT_EQ(1U, url_index_->HistoryItemsForTerms( 837 EXPECT_EQ(1U, url_index_->HistoryItemsForTerms(
831 ASCIIToUTF16("brokeandalone"), base::string16::npos).size()); 838 ASCIIToUTF16("brokeandalone"), base::string16::npos, kMaxMatches).size());
832 839
833 // Add it again just to be sure that is harmless and that it does not update 840 // Add it again just to be sure that is harmless and that it does not update
834 // the index. 841 // the index.
835 EXPECT_FALSE(UpdateURL(new_row)); 842 EXPECT_FALSE(UpdateURL(new_row));
836 EXPECT_EQ(1U, url_index_->HistoryItemsForTerms( 843 EXPECT_EQ(1U, url_index_->HistoryItemsForTerms(
837 ASCIIToUTF16("brokeandalone"), base::string16::npos).size()); 844 ASCIIToUTF16("brokeandalone"), base::string16::npos, kMaxMatches).size());
838 845
839 // Make up an URL that does not qualify and try to add it. 846 // Make up an URL that does not qualify and try to add it.
840 URLRow unqualified_row(GURL("http://www.brokeandaloneinmanitoba.com/"), 847 URLRow unqualified_row(GURL("http://www.brokeandaloneinmanitoba.com/"),
841 new_row_id++); 848 new_row_id++);
842 EXPECT_FALSE(UpdateURL(new_row)); 849 EXPECT_FALSE(UpdateURL(new_row));
843 } 850 }
844 851
845 TEST_F(InMemoryURLIndexTest, DeleteRows) { 852 TEST_F(InMemoryURLIndexTest, DeleteRows) {
846 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms( 853 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
847 ASCIIToUTF16("DrudgeReport"), base::string16::npos); 854 ASCIIToUTF16("DrudgeReport"), base::string16::npos, kMaxMatches);
848 ASSERT_EQ(1U, matches.size()); 855 ASSERT_EQ(1U, matches.size());
849 856
850 // Delete the URL then search again. 857 // Delete the URL then search again.
851 EXPECT_TRUE(DeleteURL(matches[0].url_info.url())); 858 EXPECT_TRUE(DeleteURL(matches[0].url_info.url()));
852 EXPECT_TRUE(url_index_->HistoryItemsForTerms( 859 EXPECT_TRUE(url_index_->HistoryItemsForTerms(
853 ASCIIToUTF16("DrudgeReport"), base::string16::npos).empty()); 860 ASCIIToUTF16("DrudgeReport"), base::string16::npos, kMaxMatches).empty());
854 861
855 // Make up an URL that does not exist in the database and delete it. 862 // Make up an URL that does not exist in the database and delete it.
856 GURL url("http://www.hokeypokey.com/putyourrightfootin.html"); 863 GURL url("http://www.hokeypokey.com/putyourrightfootin.html");
857 EXPECT_FALSE(DeleteURL(url)); 864 EXPECT_FALSE(DeleteURL(url));
858 } 865 }
859 866
860 TEST_F(InMemoryURLIndexTest, ExpireRow) { 867 TEST_F(InMemoryURLIndexTest, ExpireRow) {
861 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms( 868 ScoredHistoryMatches matches = url_index_->HistoryItemsForTerms(
862 ASCIIToUTF16("DrudgeReport"), base::string16::npos); 869 ASCIIToUTF16("DrudgeReport"), base::string16::npos, kMaxMatches);
863 ASSERT_EQ(1U, matches.size()); 870 ASSERT_EQ(1U, matches.size());
864 871
865 // Determine the row id for the result, remember that id, broadcast a 872 // Determine the row id for the result, remember that id, broadcast a
866 // delete notification, then ensure that the row has been deleted. 873 // delete notification, then ensure that the row has been deleted.
867 URLsDeletedDetails deleted_details; 874 URLsDeletedDetails deleted_details;
868 deleted_details.all_history = false; 875 deleted_details.all_history = false;
869 deleted_details.rows.push_back(matches[0].url_info); 876 deleted_details.rows.push_back(matches[0].url_info);
870 Observe(chrome::NOTIFICATION_HISTORY_URLS_DELETED, 877 Observe(chrome::NOTIFICATION_HISTORY_URLS_DELETED,
871 content::Source<InMemoryURLIndexTest>(this), 878 content::Source<InMemoryURLIndexTest>(this),
872 content::Details<history::HistoryDetails>(&deleted_details)); 879 content::Details<history::HistoryDetails>(&deleted_details));
873 EXPECT_TRUE(url_index_->HistoryItemsForTerms( 880 EXPECT_TRUE(url_index_->HistoryItemsForTerms(
874 ASCIIToUTF16("DrudgeReport"), base::string16::npos).empty()); 881 ASCIIToUTF16("DrudgeReport"), base::string16::npos, kMaxMatches).empty());
875 } 882 }
876 883
877 TEST_F(InMemoryURLIndexTest, WhitelistedURLs) { 884 TEST_F(InMemoryURLIndexTest, WhitelistedURLs) {
878 struct TestData { 885 struct TestData {
879 const std::string url_spec; 886 const std::string url_spec;
880 const bool expected_is_whitelisted; 887 const bool expected_is_whitelisted;
881 } data[] = { 888 } data[] = {
882 // URLs with whitelisted schemes. 889 // URLs with whitelisted schemes.
883 { "about:histograms", true }, 890 { "about:histograms", true },
884 { "chrome://settings", true }, 891 { "chrome://settings", true },
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
1177 full_file_path.GetComponents(&actual_parts); 1184 full_file_path.GetComponents(&actual_parts);
1178 ASSERT_EQ(expected_parts.size(), actual_parts.size()); 1185 ASSERT_EQ(expected_parts.size(), actual_parts.size());
1179 size_t count = expected_parts.size(); 1186 size_t count = expected_parts.size();
1180 for (size_t i = 0; i < count; ++i) 1187 for (size_t i = 0; i < count; ++i)
1181 EXPECT_EQ(expected_parts[i], actual_parts[i]); 1188 EXPECT_EQ(expected_parts[i], actual_parts[i]);
1182 // Must clear the history_dir_ to satisfy the dtor's DCHECK. 1189 // Must clear the history_dir_ to satisfy the dtor's DCHECK.
1183 set_history_dir(base::FilePath()); 1190 set_history_dir(base::FilePath());
1184 } 1191 }
1185 1192
1186 } // namespace history 1193 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/in_memory_url_index.cc ('k') | chrome/browser/history/url_index_private_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698