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

Side by Side Diff: components/history/core/browser/history_service_unittest.cc

Issue 2757003002: Untyped intranet URL check should examine the start and end of a redirect chain. (Closed)
Patch Set: Created 3 years, 9 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 | « components/history/core/browser/history_backend.cc ('k') | no next file » | 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 // History unit tests come in two flavors: 5 // History unit tests come in two flavors:
6 // 6 //
7 // 1. The more complicated style is that the unit test creates a full history 7 // 1. The more complicated style is that the unit test creates a full history
8 // service. This spawns a background thread for the history backend, and 8 // service. This spawns a background thread for the history backend, and
9 // all communication is asynchronous. This is useful for testing more 9 // all communication is asynchronous. This is useful for testing more
10 // complicated things or end-to-end behavior. 10 // complicated things or end-to-end behavior.
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 history::RedirectList(), ui::PAGE_TRANSITION_LINK, 197 history::RedirectList(), ui::PAGE_TRANSITION_LINK,
198 history::SOURCE_BROWSED, false); 198 history::SOURCE_BROWSED, false);
199 EXPECT_TRUE(QueryURL(history_service_.get(), test_url)); 199 EXPECT_TRUE(QueryURL(history_service_.get(), test_url));
200 EXPECT_EQ(2, query_url_row_.visit_count()); // Added twice. 200 EXPECT_EQ(2, query_url_row_.visit_count()); // Added twice.
201 EXPECT_EQ(0, query_url_row_.typed_count()); // Never typed. 201 EXPECT_EQ(0, query_url_row_.typed_count()); // Never typed.
202 EXPECT_FALSE(query_url_row_.hidden()); // Because loaded in main frame. 202 EXPECT_FALSE(query_url_row_.hidden()); // Because loaded in main frame.
203 } 203 }
204 204
205 TEST_F(HistoryServiceTest, AddRedirect) { 205 TEST_F(HistoryServiceTest, AddRedirect) {
206 ASSERT_TRUE(history_service_.get()); 206 ASSERT_TRUE(history_service_.get());
207 const char* first_sequence[] = { 207 history::RedirectList first_redirects = {GURL("http://first.page.com/"),
208 "http://first.page.com/", 208 GURL("http://second.page.com/")};
209 "http://second.page.com/"};
210 int first_count = arraysize(first_sequence);
211 history::RedirectList first_redirects;
212 for (int i = 0; i < first_count; i++)
213 first_redirects.push_back(GURL(first_sequence[i]));
214 209
215 // Add the sequence of pages as a server with no referrer. Note that we need 210 // Add the sequence of pages as a server with no referrer. Note that we need
216 // to have a non-NULL page ID scope. 211 // to have a non-NULL page ID scope.
217 history_service_->AddPage( 212 history_service_->AddPage(
218 first_redirects.back(), base::Time::Now(), 213 first_redirects.back(), base::Time::Now(),
219 reinterpret_cast<ContextID>(1), 0, GURL(), first_redirects, 214 reinterpret_cast<ContextID>(1), 0, GURL(), first_redirects,
220 ui::PAGE_TRANSITION_LINK, history::SOURCE_BROWSED, true); 215 ui::PAGE_TRANSITION_LINK, history::SOURCE_BROWSED, true);
221 216
222 // The first page should be added once with a link visit type (because we set 217 // The first page should be added once with a link visit type (because we set
223 // LINK when we added the original URL, and a referrer of nowhere (0). 218 // LINK when we added the original URL, and a referrer of nowhere (0).
(...skipping 21 matching lines...) Expand all
245 240
246 // Check that the redirect finding function successfully reports it. 241 // Check that the redirect finding function successfully reports it.
247 saved_redirects_.clear(); 242 saved_redirects_.clear();
248 QueryRedirectsFrom(history_service_.get(), first_redirects[0]); 243 QueryRedirectsFrom(history_service_.get(), first_redirects[0]);
249 ASSERT_EQ(1U, saved_redirects_.size()); 244 ASSERT_EQ(1U, saved_redirects_.size());
250 EXPECT_EQ(first_redirects[1], saved_redirects_[0]); 245 EXPECT_EQ(first_redirects[1], saved_redirects_[0]);
251 246
252 // Now add a client redirect from that second visit to a third, client 247 // Now add a client redirect from that second visit to a third, client
253 // redirects are tracked by the RenderView prior to updating history, 248 // redirects are tracked by the RenderView prior to updating history,
254 // so we pass in a CLIENT_REDIRECT qualifier to mock that behavior. 249 // so we pass in a CLIENT_REDIRECT qualifier to mock that behavior.
255 history::RedirectList second_redirects; 250 history::RedirectList second_redirects = {first_redirects[1],
256 second_redirects.push_back(first_redirects[1]); 251 GURL("http://last.page.com/")};
257 second_redirects.push_back(GURL("http://last.page.com/"));
258 history_service_->AddPage(second_redirects[1], base::Time::Now(), 252 history_service_->AddPage(second_redirects[1], base::Time::Now(),
259 reinterpret_cast<ContextID>(1), 1, 253 reinterpret_cast<ContextID>(1), 1,
260 second_redirects[0], second_redirects, 254 second_redirects[0], second_redirects,
261 ui::PageTransitionFromInt( 255 ui::PageTransitionFromInt(
262 ui::PAGE_TRANSITION_LINK | 256 ui::PAGE_TRANSITION_LINK |
263 ui::PAGE_TRANSITION_CLIENT_REDIRECT), 257 ui::PAGE_TRANSITION_CLIENT_REDIRECT),
264 history::SOURCE_BROWSED, true); 258 history::SOURCE_BROWSED, true);
265 259
266 // The last page (source of the client redirect) should NOT have an 260 // The last page (source of the client redirect) should NOT have an
267 // additional visit added, because it was a client redirect (normally it 261 // additional visit added, because it was a client redirect (normally it
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 history_service_->AddPage( 351 history_service_->AddPage(
358 test_url, base::Time::Now(), NULL, 0, GURL(), 352 test_url, base::Time::Now(), NULL, 0, GURL(),
359 history::RedirectList(), ui::PAGE_TRANSITION_LINK, 353 history::RedirectList(), ui::PAGE_TRANSITION_LINK,
360 history::SOURCE_BROWSED, false); 354 history::SOURCE_BROWSED, false);
361 EXPECT_TRUE(QueryURL(history_service_.get(), test_url)); 355 EXPECT_TRUE(QueryURL(history_service_.get(), test_url));
362 EXPECT_EQ(2, query_url_row_.visit_count()); 356 EXPECT_EQ(2, query_url_row_.visit_count());
363 EXPECT_EQ(1, query_url_row_.typed_count()); 357 EXPECT_EQ(1, query_url_row_.typed_count());
364 ASSERT_EQ(2U, query_url_visits_.size()); 358 ASSERT_EQ(2U, query_url_visits_.size());
365 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(query_url_visits_[1].transition, 359 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(query_url_visits_[1].transition,
366 ui::PAGE_TRANSITION_LINK)); 360 ui::PAGE_TRANSITION_LINK));
361
362 // A redirect chain with an intranet URL at the head should be promoted.
363 history::RedirectList redirects1 = {GURL("http://intranet1/path"),
364 GURL("http://second1.com/"),
365 GURL("http://third1.com/")};
366 history_service_->AddPage(redirects1.back(), base::Time::Now(), NULL, 0,
367 GURL(), redirects1, ui::PAGE_TRANSITION_LINK,
368 history::SOURCE_BROWSED, false);
369 EXPECT_TRUE(QueryURL(history_service_.get(), redirects1.front()));
370 EXPECT_EQ(1, query_url_row_.visit_count());
371 EXPECT_EQ(1, query_url_row_.typed_count());
372 ASSERT_EQ(1U, query_url_visits_.size());
373 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(query_url_visits_[0].transition,
374 ui::PAGE_TRANSITION_TYPED));
375
376 // As should one with an intranet URL at the tail.
377 history::RedirectList redirects2 = {GURL("http://first2.com/"),
378 GURL("http://second2.com/"),
379 GURL("http://intranet2/path")};
380 history_service_->AddPage(redirects2.back(), base::Time::Now(), NULL, 0,
381 GURL(), redirects2, ui::PAGE_TRANSITION_LINK,
382 history::SOURCE_BROWSED, false);
383 EXPECT_TRUE(QueryURL(history_service_.get(), redirects2.back()));
384 EXPECT_EQ(1, query_url_row_.visit_count());
385 EXPECT_EQ(0, query_url_row_.typed_count());
386 ASSERT_EQ(1U, query_url_visits_.size());
387 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(query_url_visits_[0].transition,
388 ui::PAGE_TRANSITION_TYPED));
389
390 // But not one with an intranet URL in the middle.
391 history::RedirectList redirects3 = {GURL("http://first3.com/"),
392 GURL("http://intranet3/path"),
393 GURL("http://third3.com/")};
394 history_service_->AddPage(redirects3.back(), base::Time::Now(), NULL, 0,
395 GURL(), redirects3, ui::PAGE_TRANSITION_LINK,
396 history::SOURCE_BROWSED, false);
397 EXPECT_TRUE(QueryURL(history_service_.get(), redirects3[1]));
398 EXPECT_EQ(1, query_url_row_.visit_count());
399 EXPECT_EQ(0, query_url_row_.typed_count());
400 ASSERT_EQ(1U, query_url_visits_.size());
401 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(query_url_visits_[0].transition,
402 ui::PAGE_TRANSITION_LINK));
367 } 403 }
368 404
369 TEST_F(HistoryServiceTest, Typed) { 405 TEST_F(HistoryServiceTest, Typed) {
370 const ContextID context_id = reinterpret_cast<ContextID>(1); 406 const ContextID context_id = reinterpret_cast<ContextID>(1);
371 407
372 ASSERT_TRUE(history_service_.get()); 408 ASSERT_TRUE(history_service_.get());
373 409
374 // Add the page once as typed. 410 // Add the page once as typed.
375 const GURL test_url("http://www.google.com/"); 411 const GURL test_url("http://www.google.com/");
376 history_service_->AddPage( 412 history_service_->AddPage(
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 base::Bind(&HistoryServiceTest::OnMostVisitedURLsAvailable, 561 base::Bind(&HistoryServiceTest::OnMostVisitedURLsAvailable,
526 base::Unretained(this)), 562 base::Unretained(this)),
527 &tracker_); 563 &tracker_);
528 base::RunLoop().Run(); 564 base::RunLoop().Run();
529 565
530 EXPECT_EQ(3U, most_visited_urls_.size()); 566 EXPECT_EQ(3U, most_visited_urls_.size());
531 EXPECT_EQ(url1, most_visited_urls_[0].url); 567 EXPECT_EQ(url1, most_visited_urls_[0].url);
532 EXPECT_EQ(url2, most_visited_urls_[1].url); 568 EXPECT_EQ(url2, most_visited_urls_[1].url);
533 EXPECT_EQ(url0, most_visited_urls_[2].url); 569 EXPECT_EQ(url0, most_visited_urls_[2].url);
534 570
535 // Redirects
536 history::RedirectList redirects;
537 redirects.push_back(url3);
538 redirects.push_back(url4);
539
540 // Visit url4 using redirects. 571 // Visit url4 using redirects.
572 history::RedirectList redirects = {url3, url4};
541 history_service_->AddPage( 573 history_service_->AddPage(
542 url4, base::Time::Now(), context_id, 0, GURL(), 574 url4, base::Time::Now(), context_id, 0, GURL(),
543 redirects, ui::PAGE_TRANSITION_TYPED, 575 redirects, ui::PAGE_TRANSITION_TYPED,
544 history::SOURCE_BROWSED, false); 576 history::SOURCE_BROWSED, false);
545 history_service_->QueryMostVisitedURLs( 577 history_service_->QueryMostVisitedURLs(
546 20, 578 20,
547 90, 579 90,
548 base::Bind(&HistoryServiceTest::OnMostVisitedURLsAvailable, 580 base::Bind(&HistoryServiceTest::OnMostVisitedURLsAvailable,
549 base::Unretained(this)), 581 base::Unretained(this)),
550 &tracker_); 582 &tracker_);
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 // Expect two sync changes for deleting processed directives. 894 // Expect two sync changes for deleting processed directives.
863 const syncer::SyncChangeList& sync_changes = change_processor.changes(); 895 const syncer::SyncChangeList& sync_changes = change_processor.changes();
864 ASSERT_EQ(2u, sync_changes.size()); 896 ASSERT_EQ(2u, sync_changes.size());
865 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[0].change_type()); 897 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[0].change_type());
866 EXPECT_EQ(1, syncer::SyncDataRemote(sync_changes[0].sync_data()).GetId()); 898 EXPECT_EQ(1, syncer::SyncDataRemote(sync_changes[0].sync_data()).GetId());
867 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[1].change_type()); 899 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[1].change_type());
868 EXPECT_EQ(2, syncer::SyncDataRemote(sync_changes[1].sync_data()).GetId()); 900 EXPECT_EQ(2, syncer::SyncDataRemote(sync_changes[1].sync_data()).GetId());
869 } 901 }
870 902
871 } // namespace history 903 } // namespace history
OLDNEW
« no previous file with comments | « components/history/core/browser/history_backend.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698