OLD | NEW |
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 <set> | 5 #include <set> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 virtual sql::Connection& GetDB() OVERRIDE { | 64 virtual sql::Connection& GetDB() OVERRIDE { |
65 return db_; | 65 return db_; |
66 } | 66 } |
67 | 67 |
68 base::ScopedTempDir temp_dir_; | 68 base::ScopedTempDir temp_dir_; |
69 sql::Connection db_; | 69 sql::Connection db_; |
70 }; | 70 }; |
71 | 71 |
72 TEST_F(VisitDatabaseTest, Add) { | 72 TEST_F(VisitDatabaseTest, Add) { |
73 // Add one visit. | 73 // Add one visit. |
74 VisitRow visit_info1(1, Time::Now(), 0, content::PAGE_TRANSITION_LINK, 0); | 74 VisitRow visit_info1(1, Time::Now(), 0, ui::PAGE_TRANSITION_LINK, 0); |
75 EXPECT_TRUE(AddVisit(&visit_info1, SOURCE_BROWSED)); | 75 EXPECT_TRUE(AddVisit(&visit_info1, SOURCE_BROWSED)); |
76 | 76 |
77 // Add second visit for the same page. | 77 // Add second visit for the same page. |
78 VisitRow visit_info2(visit_info1.url_id, | 78 VisitRow visit_info2(visit_info1.url_id, |
79 visit_info1.visit_time + TimeDelta::FromSeconds(1), 1, | 79 visit_info1.visit_time + TimeDelta::FromSeconds(1), 1, |
80 content::PAGE_TRANSITION_TYPED, 0); | 80 ui::PAGE_TRANSITION_TYPED, 0); |
81 EXPECT_TRUE(AddVisit(&visit_info2, SOURCE_BROWSED)); | 81 EXPECT_TRUE(AddVisit(&visit_info2, SOURCE_BROWSED)); |
82 | 82 |
83 // Add third visit for a different page. | 83 // Add third visit for a different page. |
84 VisitRow visit_info3(2, | 84 VisitRow visit_info3(2, |
85 visit_info1.visit_time + TimeDelta::FromSeconds(2), 0, | 85 visit_info1.visit_time + TimeDelta::FromSeconds(2), 0, |
86 content::PAGE_TRANSITION_LINK, 0); | 86 ui::PAGE_TRANSITION_LINK, 0); |
87 EXPECT_TRUE(AddVisit(&visit_info3, SOURCE_BROWSED)); | 87 EXPECT_TRUE(AddVisit(&visit_info3, SOURCE_BROWSED)); |
88 | 88 |
89 // Query the first two. | 89 // Query the first two. |
90 std::vector<VisitRow> matches; | 90 std::vector<VisitRow> matches; |
91 EXPECT_TRUE(GetVisitsForURL(visit_info1.url_id, &matches)); | 91 EXPECT_TRUE(GetVisitsForURL(visit_info1.url_id, &matches)); |
92 EXPECT_EQ(static_cast<size_t>(2), matches.size()); | 92 EXPECT_EQ(static_cast<size_t>(2), matches.size()); |
93 | 93 |
94 // Make sure we got both (order in result set is visit time). | 94 // Make sure we got both (order in result set is visit time). |
95 EXPECT_TRUE(IsVisitInfoEqual(matches[0], visit_info1) && | 95 EXPECT_TRUE(IsVisitInfoEqual(matches[0], visit_info1) && |
96 IsVisitInfoEqual(matches[1], visit_info2)); | 96 IsVisitInfoEqual(matches[1], visit_info2)); |
97 } | 97 } |
98 | 98 |
99 TEST_F(VisitDatabaseTest, Delete) { | 99 TEST_F(VisitDatabaseTest, Delete) { |
100 // Add three visits that form a chain of navigation, and then delete the | 100 // Add three visits that form a chain of navigation, and then delete the |
101 // middle one. We should be left with the outer two visits, and the chain | 101 // middle one. We should be left with the outer two visits, and the chain |
102 // should link them. | 102 // should link them. |
103 static const int kTime1 = 1000; | 103 static const int kTime1 = 1000; |
104 VisitRow visit_info1(1, Time::FromInternalValue(kTime1), 0, | 104 VisitRow visit_info1(1, Time::FromInternalValue(kTime1), 0, |
105 content::PAGE_TRANSITION_LINK, 0); | 105 ui::PAGE_TRANSITION_LINK, 0); |
106 EXPECT_TRUE(AddVisit(&visit_info1, SOURCE_BROWSED)); | 106 EXPECT_TRUE(AddVisit(&visit_info1, SOURCE_BROWSED)); |
107 | 107 |
108 static const int kTime2 = kTime1 + 1; | 108 static const int kTime2 = kTime1 + 1; |
109 VisitRow visit_info2(1, Time::FromInternalValue(kTime2), | 109 VisitRow visit_info2(1, Time::FromInternalValue(kTime2), |
110 visit_info1.visit_id, content::PAGE_TRANSITION_LINK, 0); | 110 visit_info1.visit_id, ui::PAGE_TRANSITION_LINK, 0); |
111 EXPECT_TRUE(AddVisit(&visit_info2, SOURCE_BROWSED)); | 111 EXPECT_TRUE(AddVisit(&visit_info2, SOURCE_BROWSED)); |
112 | 112 |
113 static const int kTime3 = kTime2 + 1; | 113 static const int kTime3 = kTime2 + 1; |
114 VisitRow visit_info3(1, Time::FromInternalValue(kTime3), | 114 VisitRow visit_info3(1, Time::FromInternalValue(kTime3), |
115 visit_info2.visit_id, content::PAGE_TRANSITION_LINK, 0); | 115 visit_info2.visit_id, ui::PAGE_TRANSITION_LINK, 0); |
116 EXPECT_TRUE(AddVisit(&visit_info3, SOURCE_BROWSED)); | 116 EXPECT_TRUE(AddVisit(&visit_info3, SOURCE_BROWSED)); |
117 | 117 |
118 // First make sure all the visits are there. | 118 // First make sure all the visits are there. |
119 std::vector<VisitRow> matches; | 119 std::vector<VisitRow> matches; |
120 EXPECT_TRUE(GetVisitsForURL(visit_info1.url_id, &matches)); | 120 EXPECT_TRUE(GetVisitsForURL(visit_info1.url_id, &matches)); |
121 EXPECT_EQ(static_cast<size_t>(3), matches.size()); | 121 EXPECT_EQ(static_cast<size_t>(3), matches.size()); |
122 EXPECT_TRUE(IsVisitInfoEqual(matches[0], visit_info1) && | 122 EXPECT_TRUE(IsVisitInfoEqual(matches[0], visit_info1) && |
123 IsVisitInfoEqual(matches[1], visit_info2) && | 123 IsVisitInfoEqual(matches[1], visit_info2) && |
124 IsVisitInfoEqual(matches[2], visit_info3)); | 124 IsVisitInfoEqual(matches[2], visit_info3)); |
125 | 125 |
126 // Delete the middle one. | 126 // Delete the middle one. |
127 DeleteVisit(visit_info2); | 127 DeleteVisit(visit_info2); |
128 | 128 |
129 // The outer two should be left, and the last one should have the first as | 129 // The outer two should be left, and the last one should have the first as |
130 // the referrer. | 130 // the referrer. |
131 visit_info3.referring_visit = visit_info1.visit_id; | 131 visit_info3.referring_visit = visit_info1.visit_id; |
132 matches.clear(); | 132 matches.clear(); |
133 EXPECT_TRUE(GetVisitsForURL(visit_info1.url_id, &matches)); | 133 EXPECT_TRUE(GetVisitsForURL(visit_info1.url_id, &matches)); |
134 EXPECT_EQ(static_cast<size_t>(2), matches.size()); | 134 EXPECT_EQ(static_cast<size_t>(2), matches.size()); |
135 EXPECT_TRUE(IsVisitInfoEqual(matches[0], visit_info1) && | 135 EXPECT_TRUE(IsVisitInfoEqual(matches[0], visit_info1) && |
136 IsVisitInfoEqual(matches[1], visit_info3)); | 136 IsVisitInfoEqual(matches[1], visit_info3)); |
137 } | 137 } |
138 | 138 |
139 TEST_F(VisitDatabaseTest, Update) { | 139 TEST_F(VisitDatabaseTest, Update) { |
140 // Make something in the database. | 140 // Make something in the database. |
141 VisitRow original(1, Time::Now(), 23, content::PageTransitionFromInt(0), 19); | 141 VisitRow original(1, Time::Now(), 23, ui::PageTransitionFromInt(0), 19); |
142 AddVisit(&original, SOURCE_BROWSED); | 142 AddVisit(&original, SOURCE_BROWSED); |
143 | 143 |
144 // Mutate that row. | 144 // Mutate that row. |
145 VisitRow modification(original); | 145 VisitRow modification(original); |
146 modification.url_id = 2; | 146 modification.url_id = 2; |
147 modification.transition = content::PAGE_TRANSITION_TYPED; | 147 modification.transition = ui::PAGE_TRANSITION_TYPED; |
148 modification.visit_time = Time::Now() + TimeDelta::FromDays(1); | 148 modification.visit_time = Time::Now() + TimeDelta::FromDays(1); |
149 modification.referring_visit = 9292; | 149 modification.referring_visit = 9292; |
150 UpdateVisitRow(modification); | 150 UpdateVisitRow(modification); |
151 | 151 |
152 // Check that the mutated version was written. | 152 // Check that the mutated version was written. |
153 VisitRow final; | 153 VisitRow final; |
154 GetRowForVisit(original.visit_id, &final); | 154 GetRowForVisit(original.visit_id, &final); |
155 EXPECT_TRUE(IsVisitInfoEqual(modification, final)); | 155 EXPECT_TRUE(IsVisitInfoEqual(modification, final)); |
156 } | 156 } |
157 | 157 |
158 // TODO(brettw) write test for GetMostRecentVisitForURL! | 158 // TODO(brettw) write test for GetMostRecentVisitForURL! |
159 | 159 |
160 namespace { | 160 namespace { |
161 | 161 |
162 std::vector<VisitRow> GetTestVisitRows() { | 162 std::vector<VisitRow> GetTestVisitRows() { |
163 // Tests can be sensitive to the local timezone, so use a local time as the | 163 // Tests can be sensitive to the local timezone, so use a local time as the |
164 // basis for all visit times. | 164 // basis for all visit times. |
165 base::Time base_time = Time::UnixEpoch().LocalMidnight(); | 165 base::Time base_time = Time::UnixEpoch().LocalMidnight(); |
166 | 166 |
167 // Add one visit. | 167 // Add one visit. |
168 VisitRow visit_info1(1, base_time + TimeDelta::FromMinutes(1), 0, | 168 VisitRow visit_info1(1, base_time + TimeDelta::FromMinutes(1), 0, |
169 static_cast<content::PageTransition>( | 169 ui::PageTransitionFromInt( |
170 content::PAGE_TRANSITION_LINK | | 170 ui::PAGE_TRANSITION_LINK | |
171 content::PAGE_TRANSITION_CHAIN_START | | 171 ui::PAGE_TRANSITION_CHAIN_START | |
172 content::PAGE_TRANSITION_CHAIN_END), | 172 ui::PAGE_TRANSITION_CHAIN_END), |
173 0); | 173 0); |
174 visit_info1.visit_id = 1; | 174 visit_info1.visit_id = 1; |
175 | 175 |
176 // Add second visit for the same page. | 176 // Add second visit for the same page. |
177 VisitRow visit_info2(visit_info1.url_id, | 177 VisitRow visit_info2(visit_info1.url_id, |
178 visit_info1.visit_time + TimeDelta::FromSeconds(1), 1, | 178 visit_info1.visit_time + TimeDelta::FromSeconds(1), 1, |
179 static_cast<content::PageTransition>( | 179 ui::PageTransitionFromInt( |
180 content::PAGE_TRANSITION_TYPED | | 180 ui::PAGE_TRANSITION_TYPED | |
181 content::PAGE_TRANSITION_CHAIN_START | | 181 ui::PAGE_TRANSITION_CHAIN_START | |
182 content::PAGE_TRANSITION_CHAIN_END), | 182 ui::PAGE_TRANSITION_CHAIN_END), |
183 0); | 183 0); |
184 visit_info2.visit_id = 2; | 184 visit_info2.visit_id = 2; |
185 | 185 |
186 // Add third visit for a different page. | 186 // Add third visit for a different page. |
187 VisitRow visit_info3(2, | 187 VisitRow visit_info3(2, |
188 visit_info1.visit_time + TimeDelta::FromSeconds(2), 0, | 188 visit_info1.visit_time + TimeDelta::FromSeconds(2), 0, |
189 static_cast<content::PageTransition>( | 189 ui::PageTransitionFromInt( |
190 content::PAGE_TRANSITION_LINK | | 190 ui::PAGE_TRANSITION_LINK | |
191 content::PAGE_TRANSITION_CHAIN_START), | 191 ui::PAGE_TRANSITION_CHAIN_START), |
192 0); | 192 0); |
193 visit_info3.visit_id = 3; | 193 visit_info3.visit_id = 3; |
194 | 194 |
195 // Add a redirect visit from the last page. | 195 // Add a redirect visit from the last page. |
196 VisitRow visit_info4(3, | 196 VisitRow visit_info4(3, |
197 visit_info1.visit_time + TimeDelta::FromSeconds(3), visit_info3.visit_id, | 197 visit_info1.visit_time + TimeDelta::FromSeconds(3), visit_info3.visit_id, |
198 static_cast<content::PageTransition>( | 198 ui::PageTransitionFromInt( |
199 content::PAGE_TRANSITION_SERVER_REDIRECT | | 199 ui::PAGE_TRANSITION_SERVER_REDIRECT | |
200 content::PAGE_TRANSITION_CHAIN_END), | 200 ui::PAGE_TRANSITION_CHAIN_END), |
201 0); | 201 0); |
202 visit_info4.visit_id = 4; | 202 visit_info4.visit_id = 4; |
203 | 203 |
204 // Add a subframe visit. | 204 // Add a subframe visit. |
205 VisitRow visit_info5(4, | 205 VisitRow visit_info5(4, |
206 visit_info1.visit_time + TimeDelta::FromSeconds(4), visit_info4.visit_id, | 206 visit_info1.visit_time + TimeDelta::FromSeconds(4), visit_info4.visit_id, |
207 static_cast<content::PageTransition>( | 207 ui::PageTransitionFromInt( |
208 content::PAGE_TRANSITION_AUTO_SUBFRAME | | 208 ui::PAGE_TRANSITION_AUTO_SUBFRAME | |
209 content::PAGE_TRANSITION_CHAIN_START | | 209 ui::PAGE_TRANSITION_CHAIN_START | |
210 content::PAGE_TRANSITION_CHAIN_END), | 210 ui::PAGE_TRANSITION_CHAIN_END), |
211 0); | 211 0); |
212 visit_info5.visit_id = 5; | 212 visit_info5.visit_id = 5; |
213 | 213 |
214 // Add third visit for the same URL as visit 1 and 2, but exactly a day | 214 // Add third visit for the same URL as visit 1 and 2, but exactly a day |
215 // later than visit 2. | 215 // later than visit 2. |
216 VisitRow visit_info6(visit_info1.url_id, | 216 VisitRow visit_info6(visit_info1.url_id, |
217 visit_info2.visit_time + TimeDelta::FromDays(1), 1, | 217 visit_info2.visit_time + TimeDelta::FromDays(1), 1, |
218 static_cast<content::PageTransition>( | 218 ui::PageTransitionFromInt( |
219 content::PAGE_TRANSITION_TYPED | | 219 ui::PAGE_TRANSITION_TYPED | |
220 content::PAGE_TRANSITION_CHAIN_START | | 220 ui::PAGE_TRANSITION_CHAIN_START | |
221 content::PAGE_TRANSITION_CHAIN_END), | 221 ui::PAGE_TRANSITION_CHAIN_END), |
222 0); | 222 0); |
223 visit_info6.visit_id = 6; | 223 visit_info6.visit_id = 6; |
224 | 224 |
225 std::vector<VisitRow> test_visit_rows; | 225 std::vector<VisitRow> test_visit_rows; |
226 test_visit_rows.push_back(visit_info1); | 226 test_visit_rows.push_back(visit_info1); |
227 test_visit_rows.push_back(visit_info2); | 227 test_visit_rows.push_back(visit_info2); |
228 test_visit_rows.push_back(visit_info3); | 228 test_visit_rows.push_back(visit_info3); |
229 test_visit_rows.push_back(visit_info4); | 229 test_visit_rows.push_back(visit_info4); |
230 test_visit_rows.push_back(visit_info5); | 230 test_visit_rows.push_back(visit_info5); |
231 test_visit_rows.push_back(visit_info6); | 231 test_visit_rows.push_back(visit_info6); |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 options.begin_time = test_visit_rows[1].visit_time; | 348 options.begin_time = test_visit_rows[1].visit_time; |
349 options.end_time = test_visit_rows[3].visit_time; | 349 options.end_time = test_visit_rows[3].visit_time; |
350 options.max_count = 0; | 350 options.max_count = 0; |
351 GetVisibleVisitsInRange(options, &results); | 351 GetVisibleVisitsInRange(options, &results); |
352 ASSERT_EQ(static_cast<size_t>(1), results.size()); | 352 ASSERT_EQ(static_cast<size_t>(1), results.size()); |
353 EXPECT_TRUE(IsVisitInfoEqual(results[0], test_visit_rows[1])); | 353 EXPECT_TRUE(IsVisitInfoEqual(results[0], test_visit_rows[1])); |
354 } | 354 } |
355 | 355 |
356 TEST_F(VisitDatabaseTest, VisitSource) { | 356 TEST_F(VisitDatabaseTest, VisitSource) { |
357 // Add visits. | 357 // Add visits. |
358 VisitRow visit_info1(111, Time::Now(), 0, content::PAGE_TRANSITION_LINK, 0); | 358 VisitRow visit_info1(111, Time::Now(), 0, ui::PAGE_TRANSITION_LINK, 0); |
359 ASSERT_TRUE(AddVisit(&visit_info1, SOURCE_BROWSED)); | 359 ASSERT_TRUE(AddVisit(&visit_info1, SOURCE_BROWSED)); |
360 | 360 |
361 VisitRow visit_info2(112, Time::Now(), 1, content::PAGE_TRANSITION_TYPED, 0); | 361 VisitRow visit_info2(112, Time::Now(), 1, ui::PAGE_TRANSITION_TYPED, 0); |
362 ASSERT_TRUE(AddVisit(&visit_info2, SOURCE_SYNCED)); | 362 ASSERT_TRUE(AddVisit(&visit_info2, SOURCE_SYNCED)); |
363 | 363 |
364 VisitRow visit_info3(113, Time::Now(), 0, content::PAGE_TRANSITION_TYPED, 0); | 364 VisitRow visit_info3(113, Time::Now(), 0, ui::PAGE_TRANSITION_TYPED, 0); |
365 ASSERT_TRUE(AddVisit(&visit_info3, SOURCE_EXTENSION)); | 365 ASSERT_TRUE(AddVisit(&visit_info3, SOURCE_EXTENSION)); |
366 | 366 |
367 // Query each visit. | 367 // Query each visit. |
368 std::vector<VisitRow> matches; | 368 std::vector<VisitRow> matches; |
369 ASSERT_TRUE(GetVisitsForURL(111, &matches)); | 369 ASSERT_TRUE(GetVisitsForURL(111, &matches)); |
370 ASSERT_EQ(1U, matches.size()); | 370 ASSERT_EQ(1U, matches.size()); |
371 VisitSourceMap sources; | 371 VisitSourceMap sources; |
372 GetVisitsSource(matches, &sources); | 372 GetVisitsSource(matches, &sources); |
373 EXPECT_EQ(0U, sources.size()); | 373 EXPECT_EQ(0U, sources.size()); |
374 | 374 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 // Now try without de-duping, expect to see all visible visits to url id 1. | 413 // Now try without de-duping, expect to see all visible visits to url id 1. |
414 options.duplicate_policy = QueryOptions::KEEP_ALL_DUPLICATES; | 414 options.duplicate_policy = QueryOptions::KEEP_ALL_DUPLICATES; |
415 GetVisibleVisitsForURL(url_id, options, &results); | 415 GetVisibleVisitsForURL(url_id, options, &results); |
416 ASSERT_EQ(static_cast<size_t>(3), results.size()); | 416 ASSERT_EQ(static_cast<size_t>(3), results.size()); |
417 EXPECT_TRUE(IsVisitInfoEqual(results[0], test_visit_rows[5])); | 417 EXPECT_TRUE(IsVisitInfoEqual(results[0], test_visit_rows[5])); |
418 EXPECT_TRUE(IsVisitInfoEqual(results[1], test_visit_rows[1])); | 418 EXPECT_TRUE(IsVisitInfoEqual(results[1], test_visit_rows[1])); |
419 EXPECT_TRUE(IsVisitInfoEqual(results[2], test_visit_rows[0])); | 419 EXPECT_TRUE(IsVisitInfoEqual(results[2], test_visit_rows[0])); |
420 } | 420 } |
421 | 421 |
422 } // namespace history | 422 } // namespace history |
OLD | NEW |