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

Unified Diff: chrome/browser/history/history_backend_unittest.cc

Issue 147145: Fix: Certain redirections remove sites from the history... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/history/history_backend.cc ('k') | chrome/browser/history/history_marshaling.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/history/history_backend_unittest.cc
===================================================================
--- chrome/browser/history/history_backend_unittest.cc (revision 19705)
+++ chrome/browser/history/history_backend_unittest.cc (working copy)
@@ -70,10 +70,43 @@
scoped_refptr<history::HistoryAddPageArgs> request(
new history::HistoryAddPageArgs(
redirects.back(), Time::Now(), scope, page_id, GURL(),
- redirects, PageTransition::LINK));
+ redirects, PageTransition::LINK, true));
backend_->AddPage(request);
}
+ // Adds CLIENT_REDIRECT page transition.
+ // |url1| is the source URL and |url2| is the destination.
+ // |did_replace| is true if the transition is non-user initiated and the
+ // navigation entry for |url2| has replaced that for |url1|. The possibly
+ // updated transition code of the visit records for |url1| and |url2| is
+ // returned by filling in |*transition1| and |*transition2|, respectively.
+ void AddClientRedirect(const GURL& url1, const GURL& url2, bool did_replace,
+ int* transition1, int* transition2) {
+ void* const dummy_scope = reinterpret_cast<void*>(0x87654321);
+ HistoryService::RedirectList redirects;
+ if (url1.is_valid())
+ redirects.push_back(url1);
+ if (url2.is_valid())
+ redirects.push_back(url2);
+ scoped_refptr<HistoryAddPageArgs> request(
+ new HistoryAddPageArgs(url2, base::Time(), dummy_scope, 0, url1,
+ redirects, PageTransition::CLIENT_REDIRECT, did_replace));
+ backend_->AddPage(request);
+
+ *transition1 = getTransition(url1);
+ *transition2 = getTransition(url2);
+ }
+
+ int getTransition(const GURL& url) {
+ if (!url.is_valid())
+ return 0;
+ URLRow row;
+ URLID id = backend_->db()->GetRowForURL(url, &row);
+ VisitVector visits;
+ EXPECT_TRUE(backend_->db()->GetVisitsForURL(id, &visits));
+ return visits[0].transition;
+ }
+
BookmarkModel bookmark_model_;
protected:
@@ -406,7 +439,7 @@
scoped_refptr<HistoryAddPageArgs> request(
new HistoryAddPageArgs(url, visit_time, NULL, 0, GURL(),
HistoryService::RedirectList(),
- PageTransition::KEYWORD_GENERATED));
+ PageTransition::KEYWORD_GENERATED, false));
backend_->AddPage(request);
// A row should have been added for the url.
@@ -444,4 +477,28 @@
ASSERT_EQ(0, backend_->db()->GetRowForURL(url, &row));
}
+TEST_F(HistoryBackendTest, ClientRedirect) {
+ ASSERT_TRUE(backend_.get());
+
+ int transition1;
+ int transition2;
+
+ // Initial transition to page A.
+ GURL url_a("http://google.com/a");
+ AddClientRedirect(GURL(), url_a, false, &transition1, &transition2);
+ EXPECT_TRUE(transition2 & PageTransition::CHAIN_END);
+
+ // User initiated redirect to page B.
+ GURL url_b("http://google.com/b");
+ AddClientRedirect(url_a, url_b, false, &transition1, &transition2);
+ EXPECT_TRUE(transition1 & PageTransition::CHAIN_END);
+ EXPECT_TRUE(transition2 & PageTransition::CHAIN_END);
+
+ // Non-user initiated redirect to page C.
+ GURL url_c("http://google.com/c");
+ AddClientRedirect(url_b, url_c, true, &transition1, &transition2);
+ EXPECT_FALSE(transition1 & PageTransition::CHAIN_END);
+ EXPECT_TRUE(transition2 & PageTransition::CHAIN_END);
+}
+
} // namespace history
« no previous file with comments | « chrome/browser/history/history_backend.cc ('k') | chrome/browser/history/history_marshaling.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698