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

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

Issue 631253002: Refactor sending NOTIFICATION_HISTORY_URL_VISITED (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests on Android Created 6 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
« no previous file with comments | « chrome/browser/history/history_backend.cc ('k') | chrome/browser/history/history_service.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/history/history_backend.h" 5 #include "chrome/browser/history/history_backend.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/callback.h"
13 #include "base/command_line.h" 14 #include "base/command_line.h"
14 #include "base/files/file_path.h" 15 #include "base/files/file_path.h"
15 #include "base/files/file_util.h" 16 #include "base/files/file_util.h"
16 #include "base/memory/ref_counted.h" 17 #include "base/memory/ref_counted.h"
17 #include "base/memory/scoped_ptr.h" 18 #include "base/memory/scoped_ptr.h"
18 #include "base/path_service.h" 19 #include "base/path_service.h"
19 #include "base/run_loop.h" 20 #include "base/run_loop.h"
20 #include "base/strings/string16.h" 21 #include "base/strings/string16.h"
21 #include "base/strings/string_number_conversions.h" 22 #include "base/strings/string_number_conversions.h"
22 #include "base/strings/utf_string_conversions.h" 23 #include "base/strings/utf_string_conversions.h"
(...skipping 29 matching lines...) Expand all
52 namespace { 53 namespace {
53 54
54 const int kTinyEdgeSize = 10; 55 const int kTinyEdgeSize = 10;
55 const int kSmallEdgeSize = 16; 56 const int kSmallEdgeSize = 16;
56 const int kLargeEdgeSize = 32; 57 const int kLargeEdgeSize = 32;
57 58
58 const gfx::Size kTinySize = gfx::Size(kTinyEdgeSize, kTinyEdgeSize); 59 const gfx::Size kTinySize = gfx::Size(kTinyEdgeSize, kTinyEdgeSize);
59 const gfx::Size kSmallSize = gfx::Size(kSmallEdgeSize, kSmallEdgeSize); 60 const gfx::Size kSmallSize = gfx::Size(kSmallEdgeSize, kSmallEdgeSize);
60 const gfx::Size kLargeSize = gfx::Size(kLargeEdgeSize, kLargeEdgeSize); 61 const gfx::Size kLargeSize = gfx::Size(kLargeEdgeSize, kLargeEdgeSize);
61 62
63 typedef base::Callback<void(const history::URLRow*,
64 const history::URLRow*,
65 const history::URLRow*)>
66 SimulateNotificationCallback;
67
62 // Comparison functions as to make it easier to check results of 68 // Comparison functions as to make it easier to check results of
63 // GetFaviconBitmaps() and GetIconMappingsForPageURL(). 69 // GetFaviconBitmaps() and GetIconMappingsForPageURL().
64 bool IconMappingLessThan(const history::IconMapping& a, 70 bool IconMappingLessThan(const history::IconMapping& a,
65 const history::IconMapping& b) { 71 const history::IconMapping& b) {
66 return a.icon_url < b.icon_url; 72 return a.icon_url < b.icon_url;
67 } 73 }
68 74
69 bool FaviconBitmapLessThan(const history::FaviconBitmap& a, 75 bool FaviconBitmapLessThan(const history::FaviconBitmap& a,
70 const history::FaviconBitmap& b) { 76 const history::FaviconBitmap& b) {
71 return a.pixel_size.GetArea() < b.pixel_size.GetArea(); 77 return a.pixel_size.GetArea() < b.pixel_size.GetArea();
72 } 78 }
73 79
74 class HistoryClientMock : public history::HistoryClientFakeBookmarks { 80 class HistoryClientMock : public history::HistoryClientFakeBookmarks {
75 public: 81 public:
76 MOCK_METHOD0(BlockUntilBookmarksLoaded, void()); 82 MOCK_METHOD0(BlockUntilBookmarksLoaded, void());
77 }; 83 };
78 84
85 void SimulateNotificationURLVisited(history::HistoryServiceObserver* observer,
86 const history::URLRow* row1,
87 const history::URLRow* row2,
88 const history::URLRow* row3) {
89 history::URLRows rows;
90 rows.push_back(*row1);
91 if (row2)
92 rows.push_back(*row2);
93 if (row3)
94 rows.push_back(*row3);
95
96 base::Time visit_time;
97 history::RedirectList redirects;
98 for (const auto& row : rows) {
99 observer->OnURLVisited(
100 nullptr, ui::PAGE_TRANSITION_LINK, row, redirects, visit_time);
101 }
102 }
103
79 } // namespace 104 } // namespace
80 105
81 namespace history { 106 namespace history {
82 107
83 class HistoryBackendTestBase; 108 class HistoryBackendTestBase;
84 109
85 // This must be a separate object since HistoryBackend manages its lifetime. 110 // This must be a separate object since HistoryBackend manages its lifetime.
86 // This just forwards the messages we're interested in to the test object. 111 // This just forwards the messages we're interested in to the test object.
87 class HistoryBackendTestDelegate : public HistoryBackend::Delegate { 112 class HistoryBackendTestDelegate : public HistoryBackend::Delegate {
88 public: 113 public:
89 explicit HistoryBackendTestDelegate(HistoryBackendTestBase* test) 114 explicit HistoryBackendTestDelegate(HistoryBackendTestBase* test)
90 : test_(test) {} 115 : test_(test) {}
91 116
92 virtual void NotifyProfileError(sql::InitStatus init_status) override {} 117 virtual void NotifyProfileError(sql::InitStatus init_status) override {}
93 virtual void SetInMemoryBackend( 118 virtual void SetInMemoryBackend(
94 scoped_ptr<InMemoryHistoryBackend> backend) override; 119 scoped_ptr<InMemoryHistoryBackend> backend) override;
95 virtual void NotifyAddVisit(const BriefVisitInfo& info) override {} 120 virtual void NotifyAddVisit(const BriefVisitInfo& info) override {}
96 virtual void NotifyFaviconChanged(const std::set<GURL>& urls) override; 121 virtual void NotifyFaviconChanged(const std::set<GURL>& urls) override;
122 virtual void NotifyURLVisited(ui::PageTransition transition,
123 const URLRow& row,
124 const RedirectList& redirects,
125 base::Time visit_time) override;
97 virtual void BroadcastNotifications( 126 virtual void BroadcastNotifications(
98 int type, 127 int type,
99 scoped_ptr<HistoryDetails> details) override; 128 scoped_ptr<HistoryDetails> details) override;
100 virtual void DBLoaded() override; 129 virtual void DBLoaded() override;
101 130
102 private: 131 private:
103 // Not owned by us. 132 // Not owned by us.
104 HistoryBackendTestBase* test_; 133 HistoryBackendTestBase* test_;
105 134
106 DISALLOW_COPY_AND_ASSIGN(HistoryBackendTestDelegate); 135 DISALLOW_COPY_AND_ASSIGN(HistoryBackendTestDelegate);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 void HistoryBackendTestDelegate::SetInMemoryBackend( 235 void HistoryBackendTestDelegate::SetInMemoryBackend(
207 scoped_ptr<InMemoryHistoryBackend> backend) { 236 scoped_ptr<InMemoryHistoryBackend> backend) {
208 test_->SetInMemoryBackend(backend.Pass()); 237 test_->SetInMemoryBackend(backend.Pass());
209 } 238 }
210 239
211 void HistoryBackendTestDelegate::NotifyFaviconChanged( 240 void HistoryBackendTestDelegate::NotifyFaviconChanged(
212 const std::set<GURL>& changed_favicons) { 241 const std::set<GURL>& changed_favicons) {
213 test_->NotifyFaviconChanged(changed_favicons); 242 test_->NotifyFaviconChanged(changed_favicons);
214 } 243 }
215 244
245 void HistoryBackendTestDelegate::NotifyURLVisited(ui::PageTransition transition,
246 const URLRow& row,
247 const RedirectList& redirects,
248 base::Time visit_time) {
249 scoped_ptr<URLVisitedDetails> details(new URLVisitedDetails());
250 details->transition = transition;
251 details->row = row;
252 details->redirects = redirects;
253 details->visit_time = visit_time;
254 test_->BroadcastNotifications(chrome::NOTIFICATION_HISTORY_URL_VISITED,
255 details.Pass());
256 }
257
216 void HistoryBackendTestDelegate::BroadcastNotifications( 258 void HistoryBackendTestDelegate::BroadcastNotifications(
217 int type, 259 int type,
218 scoped_ptr<HistoryDetails> details) { 260 scoped_ptr<HistoryDetails> details) {
219 test_->BroadcastNotifications(type, details.Pass()); 261 test_->BroadcastNotifications(type, details.Pass());
220 } 262 }
221 263
222 void HistoryBackendTestDelegate::DBLoaded() { 264 void HistoryBackendTestDelegate::DBLoaded() {
223 test_->loaded_ = true; 265 test_->loaded_ = true;
224 } 266 }
225 267
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 415
374 private: 416 private:
375 DISALLOW_COPY_AND_ASSIGN(HistoryBackendTest); 417 DISALLOW_COPY_AND_ASSIGN(HistoryBackendTest);
376 }; 418 };
377 419
378 class InMemoryHistoryBackendTest : public HistoryBackendTestBase { 420 class InMemoryHistoryBackendTest : public HistoryBackendTestBase {
379 public: 421 public:
380 InMemoryHistoryBackendTest() {} 422 InMemoryHistoryBackendTest() {}
381 virtual ~InMemoryHistoryBackendTest() {} 423 virtual ~InMemoryHistoryBackendTest() {}
382 424
383 protected: 425 // Public so that the method can be bound in test fixture using
426 // base::Bind(&InMemoryHistoryBackendTest::SimulateNotification, ...).
384 void SimulateNotification(int type, 427 void SimulateNotification(int type,
385 const URLRow* row1, 428 const URLRow* row1,
386 const URLRow* row2 = NULL, 429 const URLRow* row2 = NULL,
387 const URLRow* row3 = NULL) { 430 const URLRow* row3 = NULL) {
388 URLRows rows; 431 URLRows rows;
389 rows.push_back(*row1); 432 rows.push_back(*row1);
390 if (row2) rows.push_back(*row2); 433 if (row2) rows.push_back(*row2);
391 if (row3) rows.push_back(*row3); 434 if (row3) rows.push_back(*row3);
392 435
393 if (type == chrome::NOTIFICATION_HISTORY_URLS_MODIFIED) { 436 if (type == chrome::NOTIFICATION_HISTORY_URLS_MODIFIED) {
394 scoped_ptr<URLsModifiedDetails> details(new URLsModifiedDetails()); 437 scoped_ptr<URLsModifiedDetails> details(new URLsModifiedDetails());
395 details->changed_urls.swap(rows); 438 details->changed_urls.swap(rows);
396 BroadcastNotifications(type, details.PassAs<HistoryDetails>()); 439 BroadcastNotifications(type, details.PassAs<HistoryDetails>());
397 } else if (type == chrome::NOTIFICATION_HISTORY_URL_VISITED) { 440 } else if (type == chrome::NOTIFICATION_HISTORY_URL_VISITED) {
398 for (URLRows::const_iterator it = rows.begin(); it != rows.end(); ++it) { 441 for (URLRows::const_iterator it = rows.begin(); it != rows.end(); ++it) {
399 scoped_ptr<URLVisitedDetails> details(new URLVisitedDetails()); 442 scoped_ptr<URLVisitedDetails> details(new URLVisitedDetails());
400 details->row = *it; 443 details->row = *it;
401 BroadcastNotifications(type, details.PassAs<HistoryDetails>()); 444 BroadcastNotifications(type, details.PassAs<HistoryDetails>());
402 } 445 }
403 } else if (type == chrome::NOTIFICATION_HISTORY_URLS_DELETED) { 446 } else if (type == chrome::NOTIFICATION_HISTORY_URLS_DELETED) {
404 scoped_ptr<URLsDeletedDetails> details(new URLsDeletedDetails()); 447 scoped_ptr<URLsDeletedDetails> details(new URLsDeletedDetails());
405 details->rows = rows; 448 details->rows = rows;
406 BroadcastNotifications(type, details.PassAs<HistoryDetails>()); 449 BroadcastNotifications(type, details.PassAs<HistoryDetails>());
407 } else { 450 } else {
408 NOTREACHED(); 451 NOTREACHED();
409 } 452 }
410 } 453 }
411 454
455 protected:
412 size_t GetNumberOfMatchingSearchTerms(const int keyword_id, 456 size_t GetNumberOfMatchingSearchTerms(const int keyword_id,
413 const base::string16& prefix) { 457 const base::string16& prefix) {
414 std::vector<KeywordSearchTermVisit> matching_terms; 458 std::vector<KeywordSearchTermVisit> matching_terms;
415 mem_backend_->db()->GetMostRecentKeywordSearchTerms( 459 mem_backend_->db()->GetMostRecentKeywordSearchTerms(
416 keyword_id, prefix, 1, &matching_terms); 460 keyword_id, prefix, 1, &matching_terms);
417 return matching_terms.size(); 461 return matching_terms.size();
418 } 462 }
419 463
420 static URLRow CreateTestTypedURL() { 464 static URLRow CreateTestTypedURL() {
421 URLRow url_row(GURL("https://www.google.com/")); 465 URLRow url_row(GURL("https://www.google.com/"));
(...skipping 22 matching lines...) Expand all
444 url_row.set_visit_count(5); 488 url_row.set_visit_count(5);
445 url_row.set_last_visit(Time::Now() - base::TimeDelta::FromHours(3)); 489 url_row.set_last_visit(Time::Now() - base::TimeDelta::FromHours(3));
446 return url_row; 490 return url_row;
447 } 491 }
448 492
449 void PopulateTestURLsAndSearchTerms(URLRow* row1, 493 void PopulateTestURLsAndSearchTerms(URLRow* row1,
450 URLRow* row2, 494 URLRow* row2,
451 const base::string16& term1, 495 const base::string16& term1,
452 const base::string16& term2); 496 const base::string16& term2);
453 497
454 void TestAddingAndChangingURLRows(int notification_type); 498 void TestAddingAndChangingURLRows(
499 const SimulateNotificationCallback& callback);
455 500
456 static const KeywordID kTestKeywordId; 501 static const KeywordID kTestKeywordId;
457 static const char kTestSearchTerm1[]; 502 static const char kTestSearchTerm1[];
458 static const char kTestSearchTerm2[]; 503 static const char kTestSearchTerm2[];
459 504
460 private: 505 private:
461 DISALLOW_COPY_AND_ASSIGN(InMemoryHistoryBackendTest); 506 DISALLOW_COPY_AND_ASSIGN(InMemoryHistoryBackendTest);
462 }; 507 };
463 508
464 const KeywordID InMemoryHistoryBackendTest::kTestKeywordId = 42; 509 const KeywordID InMemoryHistoryBackendTest::kTestKeywordId = 42;
(...skipping 2541 matching lines...) Expand 10 before | Expand all | Expand 10 after
3006 EXPECT_FALSE(base::PathExists(db1)); 3051 EXPECT_FALSE(base::PathExists(db1));
3007 EXPECT_FALSE(base::PathExists(db1_wal)); 3052 EXPECT_FALSE(base::PathExists(db1_wal));
3008 EXPECT_FALSE(base::PathExists(db1_journal)); 3053 EXPECT_FALSE(base::PathExists(db1_journal));
3009 EXPECT_FALSE(base::PathExists(db2_symlink)); 3054 EXPECT_FALSE(base::PathExists(db2_symlink));
3010 EXPECT_TRUE(base::PathExists(db2_actual)); // Symlinks shouldn't be followed. 3055 EXPECT_TRUE(base::PathExists(db2_actual)); // Symlinks shouldn't be followed.
3011 } 3056 }
3012 3057
3013 // Common implementation for the two tests below, given that the only difference 3058 // Common implementation for the two tests below, given that the only difference
3014 // between them is the type of the notification sent out. 3059 // between them is the type of the notification sent out.
3015 void InMemoryHistoryBackendTest::TestAddingAndChangingURLRows( 3060 void InMemoryHistoryBackendTest::TestAddingAndChangingURLRows(
3016 int notification_type) { 3061 const SimulateNotificationCallback& callback) {
3017 const char kTestTypedURLAlternativeTitle[] = "Google Search Again"; 3062 const char kTestTypedURLAlternativeTitle[] = "Google Search Again";
3018 const char kTestNonTypedURLAlternativeTitle[] = "Google News Again"; 3063 const char kTestNonTypedURLAlternativeTitle[] = "Google News Again";
3019 3064
3020 // Notify the in-memory database that a typed and non-typed URLRow (which were 3065 // Notify the in-memory database that a typed and non-typed URLRow (which were
3021 // never before seen by the cache) have been modified. 3066 // never before seen by the cache) have been modified.
3022 URLRow row1(CreateTestTypedURL()); 3067 URLRow row1(CreateTestTypedURL());
3023 URLRow row2(CreateTestNonTypedURL()); 3068 URLRow row2(CreateTestNonTypedURL());
3024 SimulateNotification(notification_type, &row1, &row2); 3069 callback.Run(&row1, &row2, nullptr);
3025 3070
3026 // The in-memory database should only pick up the typed URL, and should ignore 3071 // The in-memory database should only pick up the typed URL, and should ignore
3027 // the non-typed one. The typed URL should retain the ID that was present in 3072 // the non-typed one. The typed URL should retain the ID that was present in
3028 // the notification. 3073 // the notification.
3029 URLRow cached_row1, cached_row2; 3074 URLRow cached_row1, cached_row2;
3030 EXPECT_NE(0, mem_backend_->db()->GetRowForURL(row1.url(), &cached_row1)); 3075 EXPECT_NE(0, mem_backend_->db()->GetRowForURL(row1.url(), &cached_row1));
3031 EXPECT_EQ(0, mem_backend_->db()->GetRowForURL(row2.url(), &cached_row2)); 3076 EXPECT_EQ(0, mem_backend_->db()->GetRowForURL(row2.url(), &cached_row2));
3032 EXPECT_EQ(row1.id(), cached_row1.id()); 3077 EXPECT_EQ(row1.id(), cached_row1.id());
3033 3078
3034 // Try changing attributes (other than typed_count) for existing URLRows. 3079 // Try changing attributes (other than typed_count) for existing URLRows.
3035 row1.set_title(base::UTF8ToUTF16(kTestTypedURLAlternativeTitle)); 3080 row1.set_title(base::UTF8ToUTF16(kTestTypedURLAlternativeTitle));
3036 row2.set_title(base::UTF8ToUTF16(kTestNonTypedURLAlternativeTitle)); 3081 row2.set_title(base::UTF8ToUTF16(kTestNonTypedURLAlternativeTitle));
3037 SimulateNotification(notification_type, &row1, &row2); 3082 callback.Run(&row1, &row2, nullptr);
3038 3083
3039 // URLRows that are cached by the in-memory database should be updated. 3084 // URLRows that are cached by the in-memory database should be updated.
3040 EXPECT_NE(0, mem_backend_->db()->GetRowForURL(row1.url(), &cached_row1)); 3085 EXPECT_NE(0, mem_backend_->db()->GetRowForURL(row1.url(), &cached_row1));
3041 EXPECT_EQ(0, mem_backend_->db()->GetRowForURL(row2.url(), &cached_row2)); 3086 EXPECT_EQ(0, mem_backend_->db()->GetRowForURL(row2.url(), &cached_row2));
3042 EXPECT_EQ(base::UTF8ToUTF16(kTestTypedURLAlternativeTitle), 3087 EXPECT_EQ(base::UTF8ToUTF16(kTestTypedURLAlternativeTitle),
3043 cached_row1.title()); 3088 cached_row1.title());
3044 3089
3045 // Now decrease the typed count for the typed URLRow, and increase it for the 3090 // Now decrease the typed count for the typed URLRow, and increase it for the
3046 // previously non-typed URLRow. 3091 // previously non-typed URLRow.
3047 row1.set_typed_count(0); 3092 row1.set_typed_count(0);
3048 row2.set_typed_count(2); 3093 row2.set_typed_count(2);
3049 SimulateNotification(notification_type, &row1, &row2); 3094 callback.Run(&row1, &row2, nullptr);
3050 3095
3051 // The in-memory database should stop caching the first URLRow, and start 3096 // The in-memory database should stop caching the first URLRow, and start
3052 // caching the second URLRow. 3097 // caching the second URLRow.
3053 EXPECT_EQ(0, mem_backend_->db()->GetRowForURL(row1.url(), &cached_row1)); 3098 EXPECT_EQ(0, mem_backend_->db()->GetRowForURL(row1.url(), &cached_row1));
3054 EXPECT_NE(0, mem_backend_->db()->GetRowForURL(row2.url(), &cached_row2)); 3099 EXPECT_NE(0, mem_backend_->db()->GetRowForURL(row2.url(), &cached_row2));
3055 EXPECT_EQ(row2.id(), cached_row2.id()); 3100 EXPECT_EQ(row2.id(), cached_row2.id());
3056 EXPECT_EQ(base::UTF8ToUTF16(kTestNonTypedURLAlternativeTitle), 3101 EXPECT_EQ(base::UTF8ToUTF16(kTestNonTypedURLAlternativeTitle),
3057 cached_row2.title()); 3102 cached_row2.title());
3058 } 3103 }
3059 3104
3060 TEST_F(InMemoryHistoryBackendTest, OnURLsModified) { 3105 TEST_F(InMemoryHistoryBackendTest, OnURLsModified) {
3061 TestAddingAndChangingURLRows(chrome::NOTIFICATION_HISTORY_URLS_MODIFIED); 3106 TestAddingAndChangingURLRows(
3107 base::Bind(&InMemoryHistoryBackendTest::SimulateNotification,
3108 base::Unretained(this),
3109 chrome::NOTIFICATION_HISTORY_URLS_MODIFIED));
3062 } 3110 }
3063 3111
3064 TEST_F(InMemoryHistoryBackendTest, OnURLsVisisted) { 3112 TEST_F(InMemoryHistoryBackendTest, OnURLsVisisted) {
3065 TestAddingAndChangingURLRows(chrome::NOTIFICATION_HISTORY_URL_VISITED); 3113 TestAddingAndChangingURLRows(base::Bind(
3114 &SimulateNotificationURLVisited, base::Unretained(mem_backend_.get())));
3066 } 3115 }
3067 3116
3068 TEST_F(InMemoryHistoryBackendTest, OnURLsDeletedPiecewise) { 3117 TEST_F(InMemoryHistoryBackendTest, OnURLsDeletedPiecewise) {
3069 // Add two typed and one non-typed URLRow to the in-memory database. 3118 // Add two typed and one non-typed URLRow to the in-memory database.
3070 URLRow row1(CreateTestTypedURL()); 3119 URLRow row1(CreateTestTypedURL());
3071 URLRow row2(CreateAnotherTestTypedURL()); 3120 URLRow row2(CreateAnotherTestTypedURL());
3072 URLRow row3(CreateTestNonTypedURL()); 3121 URLRow row3(CreateTestNonTypedURL());
3073 SimulateNotification(chrome::NOTIFICATION_HISTORY_URLS_MODIFIED, 3122 SimulateNotification(chrome::NOTIFICATION_HISTORY_URLS_MODIFIED,
3074 &row1, &row2, &row3); 3123 &row1, &row2, &row3);
3075 3124
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
3214 // Verify that the second term is no longer returned as result, and also check 3263 // Verify that the second term is no longer returned as result, and also check
3215 // at the low level that it is gone for good. The term corresponding to the 3264 // at the low level that it is gone for good. The term corresponding to the
3216 // first URLRow should not be affected. 3265 // first URLRow should not be affected.
3217 EXPECT_EQ(1u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term1)); 3266 EXPECT_EQ(1u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term1));
3218 EXPECT_EQ(0u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term2)); 3267 EXPECT_EQ(0u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term2));
3219 EXPECT_TRUE(mem_backend_->db()->GetKeywordSearchTermRow(row1.id(), NULL)); 3268 EXPECT_TRUE(mem_backend_->db()->GetKeywordSearchTermRow(row1.id(), NULL));
3220 EXPECT_FALSE(mem_backend_->db()->GetKeywordSearchTermRow(row2.id(), NULL)); 3269 EXPECT_FALSE(mem_backend_->db()->GetKeywordSearchTermRow(row2.id(), NULL));
3221 } 3270 }
3222 3271
3223 } // namespace history 3272 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/history_backend.cc ('k') | chrome/browser/history/history_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698