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

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

Issue 651193002: Remove NOTIFICATION_HISTORY_URL_VISITED (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@373326.2
Patch Set: Address comments 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
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
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 private: 131 private:
132 // Not owned by us. 132 // Not owned by us.
133 HistoryBackendTestBase* test_; 133 HistoryBackendTestBase* test_;
134 134
135 DISALLOW_COPY_AND_ASSIGN(HistoryBackendTestDelegate); 135 DISALLOW_COPY_AND_ASSIGN(HistoryBackendTestDelegate);
136 }; 136 };
137 137
138 class HistoryBackendTestBase : public testing::Test { 138 class HistoryBackendTestBase : public testing::Test {
139 public: 139 public:
140 typedef std::vector<std::pair<int, HistoryDetails*> > NotificationList; 140 typedef std::vector<std::pair<int, HistoryDetails*> > NotificationList;
141 typedef std::vector<std::pair<ui::PageTransition, URLRow>> URLVisitedList;
141 142
142 HistoryBackendTestBase() 143 HistoryBackendTestBase()
143 : loaded_(false), 144 : loaded_(false),
144 favicon_changed_notifications_(0), 145 favicon_changed_notifications_(0),
145 ui_thread_(content::BrowserThread::UI, &message_loop_) {} 146 ui_thread_(content::BrowserThread::UI, &message_loop_) {}
146 147
147 virtual ~HistoryBackendTestBase() { 148 virtual ~HistoryBackendTestBase() {
148 STLDeleteValues(&broadcasted_notifications_); 149 STLDeleteValues(&broadcasted_notifications_);
149 } 150 }
150 151
151 protected: 152 protected:
152 int favicon_changed_notifications() const { 153 int favicon_changed_notifications() const {
153 return favicon_changed_notifications_; 154 return favicon_changed_notifications_;
154 } 155 }
155 156
156 void ClearFaviconChangedNotificationCounter() { 157 void ClearFaviconChangedNotificationCounter() {
157 favicon_changed_notifications_ = 0; 158 favicon_changed_notifications_ = 0;
158 } 159 }
159 160
161 int num_url_visited_notifications() const {
162 return url_visited_notifications_.size();
163 }
164
165 const URLVisitedList& url_visited_notifications() const {
166 return url_visited_notifications_;
167 }
168
160 int num_broadcasted_notifications() const { 169 int num_broadcasted_notifications() const {
161 return broadcasted_notifications_.size(); 170 return broadcasted_notifications_.size();
162 } 171 }
163 172
164 const NotificationList& broadcasted_notifications() const { 173 const NotificationList& broadcasted_notifications() const {
165 return broadcasted_notifications_; 174 return broadcasted_notifications_;
166 } 175 }
167 176
168 void ClearBroadcastedNotifications() { 177 void ClearBroadcastedNotifications() {
178 url_visited_notifications_.clear();
169 STLDeleteValues(&broadcasted_notifications_); 179 STLDeleteValues(&broadcasted_notifications_);
170 } 180 }
171 181
172 base::FilePath test_dir() { 182 base::FilePath test_dir() {
173 return test_dir_; 183 return test_dir_;
174 } 184 }
175 185
176 void NotifyFaviconChanged(const std::set<GURL>& changed_favicons) { 186 void NotifyFaviconChanged(const std::set<GURL>& changed_favicons) {
177 ++favicon_changed_notifications_; 187 ++favicon_changed_notifications_;
178 } 188 }
179 189
190 void NotifyURLVisited(ui::PageTransition transition,
191 const URLRow& row,
192 const RedirectList& redirects,
193 base::Time visit_time) {
194 url_visited_notifications_.push_back(std::make_pair(transition, row));
195 }
196
180 void BroadcastNotifications(int type, scoped_ptr<HistoryDetails> details) { 197 void BroadcastNotifications(int type, scoped_ptr<HistoryDetails> details) {
181 // Send the notifications directly to the in-memory database. 198 // Send the notifications directly to the in-memory database.
182 content::Details<HistoryDetails> det(details.get()); 199 content::Details<HistoryDetails> det(details.get());
183 mem_backend_->Observe( 200 mem_backend_->Observe(
184 type, content::Source<HistoryBackendTestBase>(NULL), det); 201 type, content::Source<HistoryBackendTestBase>(NULL), det);
185 202
186 // The backend passes ownership of the details pointer to us. 203 // The backend passes ownership of the details pointer to us.
187 broadcasted_notifications_.push_back( 204 broadcasted_notifications_.push_back(
188 std::make_pair(type, details.release())); 205 std::make_pair(type, details.release()));
189 } 206 }
(...skipping 27 matching lines...) Expand all
217 history_client_.ClearAllBookmarks(); 234 history_client_.ClearAllBookmarks();
218 } 235 }
219 236
220 void SetInMemoryBackend(scoped_ptr<InMemoryHistoryBackend> backend) { 237 void SetInMemoryBackend(scoped_ptr<InMemoryHistoryBackend> backend) {
221 mem_backend_.swap(backend); 238 mem_backend_.swap(backend);
222 } 239 }
223 240
224 // The types and details of notifications which were broadcasted. 241 // The types and details of notifications which were broadcasted.
225 NotificationList broadcasted_notifications_; 242 NotificationList broadcasted_notifications_;
226 int favicon_changed_notifications_; 243 int favicon_changed_notifications_;
244 URLVisitedList url_visited_notifications_;
227 245
228 base::MessageLoop message_loop_; 246 base::MessageLoop message_loop_;
229 base::FilePath test_dir_; 247 base::FilePath test_dir_;
230 content::TestBrowserThread ui_thread_; 248 content::TestBrowserThread ui_thread_;
231 249
232 DISALLOW_COPY_AND_ASSIGN(HistoryBackendTestBase); 250 DISALLOW_COPY_AND_ASSIGN(HistoryBackendTestBase);
233 }; 251 };
234 252
235 void HistoryBackendTestDelegate::SetInMemoryBackend( 253 void HistoryBackendTestDelegate::SetInMemoryBackend(
236 scoped_ptr<InMemoryHistoryBackend> backend) { 254 scoped_ptr<InMemoryHistoryBackend> backend) {
237 test_->SetInMemoryBackend(backend.Pass()); 255 test_->SetInMemoryBackend(backend.Pass());
238 } 256 }
239 257
240 void HistoryBackendTestDelegate::NotifyFaviconChanged( 258 void HistoryBackendTestDelegate::NotifyFaviconChanged(
241 const std::set<GURL>& changed_favicons) { 259 const std::set<GURL>& changed_favicons) {
242 test_->NotifyFaviconChanged(changed_favicons); 260 test_->NotifyFaviconChanged(changed_favicons);
243 } 261 }
244 262
245 void HistoryBackendTestDelegate::NotifyURLVisited(ui::PageTransition transition, 263 void HistoryBackendTestDelegate::NotifyURLVisited(ui::PageTransition transition,
246 const URLRow& row, 264 const URLRow& row,
247 const RedirectList& redirects, 265 const RedirectList& redirects,
248 base::Time visit_time) { 266 base::Time visit_time) {
249 scoped_ptr<URLVisitedDetails> details(new URLVisitedDetails()); 267 test_->NotifyURLVisited(transition, row, redirects, visit_time);
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 } 268 }
257 269
258 void HistoryBackendTestDelegate::BroadcastNotifications( 270 void HistoryBackendTestDelegate::BroadcastNotifications(
259 int type, 271 int type,
260 scoped_ptr<HistoryDetails> details) { 272 scoped_ptr<HistoryDetails> details) {
261 test_->BroadcastNotifications(type, details.Pass()); 273 test_->BroadcastNotifications(type, details.Pass());
262 } 274 }
263 275
264 void HistoryBackendTestDelegate::DBLoaded() { 276 void HistoryBackendTestDelegate::DBLoaded() {
265 test_->loaded_ = true; 277 test_->loaded_ = true;
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 const URLRow* row3 = NULL) { 442 const URLRow* row3 = NULL) {
431 URLRows rows; 443 URLRows rows;
432 rows.push_back(*row1); 444 rows.push_back(*row1);
433 if (row2) rows.push_back(*row2); 445 if (row2) rows.push_back(*row2);
434 if (row3) rows.push_back(*row3); 446 if (row3) rows.push_back(*row3);
435 447
436 if (type == chrome::NOTIFICATION_HISTORY_URLS_MODIFIED) { 448 if (type == chrome::NOTIFICATION_HISTORY_URLS_MODIFIED) {
437 scoped_ptr<URLsModifiedDetails> details(new URLsModifiedDetails()); 449 scoped_ptr<URLsModifiedDetails> details(new URLsModifiedDetails());
438 details->changed_urls.swap(rows); 450 details->changed_urls.swap(rows);
439 BroadcastNotifications(type, details.Pass()); 451 BroadcastNotifications(type, details.Pass());
440 } else if (type == chrome::NOTIFICATION_HISTORY_URL_VISITED) {
441 for (URLRows::const_iterator it = rows.begin(); it != rows.end(); ++it) {
442 scoped_ptr<URLVisitedDetails> details(new URLVisitedDetails());
443 details->row = *it;
444 BroadcastNotifications(type, details.Pass());
445 }
446 } else if (type == chrome::NOTIFICATION_HISTORY_URLS_DELETED) { 452 } else if (type == chrome::NOTIFICATION_HISTORY_URLS_DELETED) {
447 scoped_ptr<URLsDeletedDetails> details(new URLsDeletedDetails()); 453 scoped_ptr<URLsDeletedDetails> details(new URLsDeletedDetails());
448 details->rows = rows; 454 details->rows = rows;
449 BroadcastNotifications(type, details.Pass()); 455 BroadcastNotifications(type, details.Pass());
450 } else { 456 } else {
451 NOTREACHED(); 457 NOTREACHED();
452 } 458 }
453 } 459 }
454 460
455 protected: 461 protected:
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 for (int i = 0; i < 2; ++i) { 1273 for (int i = 0; i < 2; ++i) {
1268 backend_->AddPageVisit(url2, base::Time::Now(), 0, 1274 backend_->AddPageVisit(url2, base::Time::Now(), 0,
1269 ui::PAGE_TRANSITION_TYPED, 1275 ui::PAGE_TRANSITION_TYPED,
1270 history::SOURCE_BROWSED); 1276 history::SOURCE_BROWSED);
1271 } 1277 }
1272 1278
1273 URLRow stored_row1, stored_row2; 1279 URLRow stored_row1, stored_row2;
1274 EXPECT_NE(0, backend_->db_->GetRowForURL(url1, &stored_row1)); 1280 EXPECT_NE(0, backend_->db_->GetRowForURL(url1, &stored_row1));
1275 EXPECT_NE(0, backend_->db_->GetRowForURL(url2, &stored_row2)); 1281 EXPECT_NE(0, backend_->db_->GetRowForURL(url2, &stored_row2));
1276 1282
1277 // Expect that NOTIFICATION_HISTORY_URLS_VISITED has been fired 3x, and that 1283 // Expect that HistoryServiceObserver::OnURLVisited has been called 3 times,
1278 // each time, the URLRows have the correct URLs and IDs set. 1284 // and that each time the URLRows have the correct URLs and IDs set.
1279 ASSERT_EQ(3, num_broadcasted_notifications()); 1285 ASSERT_EQ(3, num_url_visited_notifications());
1280 ASSERT_EQ(chrome::NOTIFICATION_HISTORY_URL_VISITED, 1286 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(url_visited_notifications()[0].first,
1281 broadcasted_notifications()[0].first); 1287 ui::PAGE_TRANSITION_LINK));
1282 const URLVisitedDetails* details = static_cast<const URLVisitedDetails*>( 1288 EXPECT_EQ(stored_row1.id(), url_visited_notifications()[0].second.id());
1283 broadcasted_notifications()[0].second); 1289 EXPECT_EQ(stored_row1.url(), url_visited_notifications()[0].second.url());
1284 EXPECT_EQ(ui::PAGE_TRANSITION_LINK,
1285 ui::PageTransitionStripQualifier(details->transition));
1286 EXPECT_EQ(stored_row1.id(), details->row.id());
1287 EXPECT_EQ(stored_row1.url(), details->row.url());
1288 1290
1289 // No further checking, this case analogous to the first one. 1291 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(url_visited_notifications()[1].first,
1290 ASSERT_EQ(chrome::NOTIFICATION_HISTORY_URL_VISITED, 1292 ui::PAGE_TRANSITION_TYPED));
1291 broadcasted_notifications()[1].first); 1293 EXPECT_EQ(stored_row2.id(), url_visited_notifications()[1].second.id());
1294 EXPECT_EQ(stored_row2.url(), url_visited_notifications()[1].second.url());
1292 1295
1293 ASSERT_EQ(chrome::NOTIFICATION_HISTORY_URL_VISITED, 1296 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(url_visited_notifications()[2].first,
1294 broadcasted_notifications()[2].first); 1297 ui::PAGE_TRANSITION_TYPED));
1295 details = static_cast<const URLVisitedDetails*>( 1298 EXPECT_EQ(stored_row2.id(), url_visited_notifications()[2].second.id());
1296 broadcasted_notifications()[2].second); 1299 EXPECT_EQ(stored_row2.url(), url_visited_notifications()[2].second.url());
1297 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED,
1298 ui::PageTransitionStripQualifier(details->transition));
1299 EXPECT_EQ(stored_row2.id(), details->row.id());
1300 EXPECT_EQ(stored_row2.url(), details->row.url());
1301 } 1300 }
1302 1301
1303 TEST_F(HistoryBackendTest, AddPageArgsSource) { 1302 TEST_F(HistoryBackendTest, AddPageArgsSource) {
1304 ASSERT_TRUE(backend_.get()); 1303 ASSERT_TRUE(backend_.get());
1305 1304
1306 GURL url("http://testpageargs.com"); 1305 GURL url("http://testpageargs.com");
1307 1306
1308 // Assume this page is browsed by user. 1307 // Assume this page is browsed by user.
1309 HistoryAddPageArgs request1(url, base::Time::Now(), NULL, 0, GURL(), 1308 HistoryAddPageArgs request1(url, base::Time::Now(), NULL, 0, GURL(),
1310 history::RedirectList(), 1309 history::RedirectList(),
(...skipping 1952 matching lines...) Expand 10 before | Expand all | Expand 10 after
3263 // Verify that the second term is no longer returned as result, and also check 3262 // Verify that the second term is no longer returned as result, and also check
3264 // at the low level that it is gone for good. The term corresponding to the 3263 // at the low level that it is gone for good. The term corresponding to the
3265 // first URLRow should not be affected. 3264 // first URLRow should not be affected.
3266 EXPECT_EQ(1u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term1)); 3265 EXPECT_EQ(1u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term1));
3267 EXPECT_EQ(0u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term2)); 3266 EXPECT_EQ(0u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term2));
3268 EXPECT_TRUE(mem_backend_->db()->GetKeywordSearchTermRow(row1.id(), NULL)); 3267 EXPECT_TRUE(mem_backend_->db()->GetKeywordSearchTermRow(row1.id(), NULL));
3269 EXPECT_FALSE(mem_backend_->db()->GetKeywordSearchTermRow(row2.id(), NULL)); 3268 EXPECT_FALSE(mem_backend_->db()->GetKeywordSearchTermRow(row2.id(), NULL));
3270 } 3269 }
3271 3270
3272 } // namespace history 3271 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/history_backend.cc ('k') | chrome/browser/history/history_notifications.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698