OLD | NEW |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 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 "components/browsing_data/core/counters/history_counter.h" | 5 #include "components/browsing_data/core/counters/history_counter.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "chrome/browser/history/history_service_factory.h" | 10 #include "chrome/browser/history/history_service_factory.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 void SetUpOnMainThread() override { | 42 void SetUpOnMainThread() override { |
43 time_ = base::Time::Now(); | 43 time_ = base::Time::Now(); |
44 history_service_ = HistoryServiceFactory::GetForProfileWithoutCreating( | 44 history_service_ = HistoryServiceFactory::GetForProfileWithoutCreating( |
45 browser()->profile()); | 45 browser()->profile()); |
46 fake_web_history_service_.reset(new history::FakeWebHistoryService( | 46 fake_web_history_service_.reset(new history::FakeWebHistoryService( |
47 ProfileOAuth2TokenServiceFactory::GetForProfile(browser()->profile()), | 47 ProfileOAuth2TokenServiceFactory::GetForProfile(browser()->profile()), |
48 SigninManagerFactory::GetForProfile(browser()->profile()), | 48 SigninManagerFactory::GetForProfile(browser()->profile()), |
49 browser()->profile()->GetRequestContext())); | 49 browser()->profile()->GetRequestContext())); |
50 | 50 |
51 SetHistoryDeletionPref(true); | 51 SetHistoryDeletionPref(true); |
52 SetDeletionPeriodPref(browsing_data::ALL_TIME); | 52 SetDeletionPeriodPref(browsing_data::TimePeriod::ALL_TIME); |
53 } | 53 } |
54 | 54 |
55 void AddVisit(const std::string url) { | 55 void AddVisit(const std::string url) { |
56 history_service_->AddPage(GURL(url), time_, history::SOURCE_BROWSED); | 56 history_service_->AddPage(GURL(url), time_, history::SOURCE_BROWSED); |
57 } | 57 } |
58 | 58 |
59 const base::Time& GetCurrentTime() { | 59 const base::Time& GetCurrentTime() { |
60 return time_; | 60 return time_; |
61 } | 61 } |
62 | 62 |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 | 174 |
175 Profile* profile = browser()->profile(); | 175 Profile* profile = browser()->profile(); |
176 | 176 |
177 browsing_data::HistoryCounter counter( | 177 browsing_data::HistoryCounter counter( |
178 GetHistoryService(), | 178 GetHistoryService(), |
179 base::Bind(&HistoryCounterTest::GetRealWebHistoryService, | 179 base::Bind(&HistoryCounterTest::GetRealWebHistoryService, |
180 base::Unretained(this), | 180 base::Unretained(this), |
181 base::Unretained(profile)), | 181 base::Unretained(profile)), |
182 ProfileSyncServiceFactory::GetForProfile(profile)); | 182 ProfileSyncServiceFactory::GetForProfile(profile)); |
183 | 183 |
184 counter.Init(profile->GetPrefs(), base::Bind(&HistoryCounterTest::Callback, | 184 counter.Init( |
185 base::Unretained(this))); | 185 profile->GetPrefs(), browsing_data::ClearBrowsingDataTab::ADVANCED, |
| 186 base::Bind(&HistoryCounterTest::Callback, base::Unretained(this))); |
186 counter.Restart(); | 187 counter.Restart(); |
187 | 188 |
188 WaitForCounting(); | 189 WaitForCounting(); |
189 EXPECT_EQ(7u, GetLocalResult()); | 190 EXPECT_EQ(7u, GetLocalResult()); |
190 } | 191 } |
191 | 192 |
192 // Tests that the counter starts counting automatically when the deletion | 193 // Tests that the counter starts counting automatically when the deletion |
193 // pref changes to true. | 194 // pref changes to true. |
194 IN_PROC_BROWSER_TEST_F(HistoryCounterTest, PrefChanged) { | 195 IN_PROC_BROWSER_TEST_F(HistoryCounterTest, PrefChanged) { |
195 SetHistoryDeletionPref(false); | 196 SetHistoryDeletionPref(false); |
196 AddVisit("https://www.google.com"); | 197 AddVisit("https://www.google.com"); |
197 AddVisit("https://www.chrome.com"); | 198 AddVisit("https://www.chrome.com"); |
198 | 199 |
199 Profile* profile = browser()->profile(); | 200 Profile* profile = browser()->profile(); |
200 | 201 |
201 browsing_data::HistoryCounter counter( | 202 browsing_data::HistoryCounter counter( |
202 GetHistoryService(), | 203 GetHistoryService(), |
203 base::Bind(&HistoryCounterTest::GetRealWebHistoryService, | 204 base::Bind(&HistoryCounterTest::GetRealWebHistoryService, |
204 base::Unretained(this), | 205 base::Unretained(this), |
205 base::Unretained(profile)), | 206 base::Unretained(profile)), |
206 ProfileSyncServiceFactory::GetForProfile(profile)); | 207 ProfileSyncServiceFactory::GetForProfile(profile)); |
207 | 208 |
208 counter.Init(profile->GetPrefs(), base::Bind(&HistoryCounterTest::Callback, | 209 counter.Init( |
209 base::Unretained(this))); | 210 profile->GetPrefs(), browsing_data::ClearBrowsingDataTab::ADVANCED, |
| 211 base::Bind(&HistoryCounterTest::Callback, base::Unretained(this))); |
210 SetHistoryDeletionPref(true); | 212 SetHistoryDeletionPref(true); |
211 | 213 |
212 WaitForCounting(); | 214 WaitForCounting(); |
213 EXPECT_EQ(2u, GetLocalResult()); | 215 EXPECT_EQ(2u, GetLocalResult()); |
214 } | 216 } |
215 | 217 |
216 // Tests that changing the deletion period restarts the counting, and that | 218 // Tests that changing the deletion period restarts the counting, and that |
217 // the result takes visit dates into account. | 219 // the result takes visit dates into account. |
218 IN_PROC_BROWSER_TEST_F(HistoryCounterTest, PeriodChanged) { | 220 IN_PROC_BROWSER_TEST_F(HistoryCounterTest, PeriodChanged) { |
219 AddVisit("https://www.google.com"); | 221 AddVisit("https://www.google.com"); |
(...skipping 19 matching lines...) Expand all Loading... |
239 | 241 |
240 Profile* profile = browser()->profile(); | 242 Profile* profile = browser()->profile(); |
241 | 243 |
242 browsing_data::HistoryCounter counter( | 244 browsing_data::HistoryCounter counter( |
243 GetHistoryService(), | 245 GetHistoryService(), |
244 base::Bind(&HistoryCounterTest::GetRealWebHistoryService, | 246 base::Bind(&HistoryCounterTest::GetRealWebHistoryService, |
245 base::Unretained(this), | 247 base::Unretained(this), |
246 base::Unretained(profile)), | 248 base::Unretained(profile)), |
247 ProfileSyncServiceFactory::GetForProfile(profile)); | 249 ProfileSyncServiceFactory::GetForProfile(profile)); |
248 | 250 |
249 counter.Init(profile->GetPrefs(), base::Bind(&HistoryCounterTest::Callback, | 251 counter.Init( |
250 base::Unretained(this))); | 252 profile->GetPrefs(), browsing_data::ClearBrowsingDataTab::ADVANCED, |
| 253 base::Bind(&HistoryCounterTest::Callback, base::Unretained(this))); |
251 | 254 |
252 SetDeletionPeriodPref(browsing_data::LAST_HOUR); | 255 SetDeletionPeriodPref(browsing_data::TimePeriod::LAST_HOUR); |
253 WaitForCounting(); | 256 WaitForCounting(); |
254 EXPECT_EQ(1u, GetLocalResult()); | 257 EXPECT_EQ(1u, GetLocalResult()); |
255 | 258 |
256 SetDeletionPeriodPref(browsing_data::LAST_DAY); | 259 SetDeletionPeriodPref(browsing_data::TimePeriod::LAST_DAY); |
257 WaitForCounting(); | 260 WaitForCounting(); |
258 EXPECT_EQ(1u, GetLocalResult()); | 261 EXPECT_EQ(1u, GetLocalResult()); |
259 | 262 |
260 SetDeletionPeriodPref(browsing_data::LAST_WEEK); | 263 SetDeletionPeriodPref(browsing_data::TimePeriod::LAST_WEEK); |
261 WaitForCounting(); | 264 WaitForCounting(); |
262 EXPECT_EQ(5u, GetLocalResult()); | 265 EXPECT_EQ(5u, GetLocalResult()); |
263 | 266 |
264 SetDeletionPeriodPref(browsing_data::FOUR_WEEKS); | 267 SetDeletionPeriodPref(browsing_data::TimePeriod::FOUR_WEEKS); |
265 WaitForCounting(); | 268 WaitForCounting(); |
266 EXPECT_EQ(8u, GetLocalResult()); | 269 EXPECT_EQ(8u, GetLocalResult()); |
267 | 270 |
268 SetDeletionPeriodPref(browsing_data::ALL_TIME); | 271 SetDeletionPeriodPref(browsing_data::TimePeriod::ALL_TIME); |
269 WaitForCounting(); | 272 WaitForCounting(); |
270 EXPECT_EQ(9u, GetLocalResult()); | 273 EXPECT_EQ(9u, GetLocalResult()); |
271 } | 274 } |
272 | 275 |
273 // Test the behavior for a profile that syncs history. | 276 // Test the behavior for a profile that syncs history. |
274 IN_PROC_BROWSER_TEST_F(HistoryCounterTest, Synced) { | 277 IN_PROC_BROWSER_TEST_F(HistoryCounterTest, Synced) { |
275 // WebHistoryService makes network requests, so we need to use a fake one | 278 // WebHistoryService makes network requests, so we need to use a fake one |
276 // for testing. | 279 // for testing. |
277 Profile* profile = browser()->profile(); | 280 Profile* profile = browser()->profile(); |
278 | 281 |
279 browsing_data::HistoryCounter counter( | 282 browsing_data::HistoryCounter counter( |
280 GetHistoryService(), | 283 GetHistoryService(), |
281 base::Bind(&HistoryCounterTest::GetFakeWebHistoryService, | 284 base::Bind(&HistoryCounterTest::GetFakeWebHistoryService, |
282 base::Unretained(this), | 285 base::Unretained(this), |
283 base::Unretained(profile), | 286 base::Unretained(profile), |
284 false), | 287 false), |
285 ProfileSyncServiceFactory::GetForProfile(profile)); | 288 ProfileSyncServiceFactory::GetForProfile(profile)); |
286 | 289 |
287 counter.Init(profile->GetPrefs(), base::Bind(&HistoryCounterTest::Callback, | 290 counter.Init( |
288 base::Unretained(this))); | 291 profile->GetPrefs(), browsing_data::ClearBrowsingDataTab::ADVANCED, |
| 292 base::Bind(&HistoryCounterTest::Callback, base::Unretained(this))); |
289 | 293 |
290 history::FakeWebHistoryService* service = | 294 history::FakeWebHistoryService* service = |
291 static_cast<history::FakeWebHistoryService*>(GetFakeWebHistoryService( | 295 static_cast<history::FakeWebHistoryService*>(GetFakeWebHistoryService( |
292 profile, false)); | 296 profile, false)); |
293 | 297 |
294 // No entries locally and no entries in Sync. | 298 // No entries locally and no entries in Sync. |
295 service->SetupFakeResponse(true /* success */, net::HTTP_OK); | 299 service->SetupFakeResponse(true /* success */, net::HTTP_OK); |
296 counter.Restart(); | 300 counter.Restart(); |
297 WaitForCounting(); | 301 WaitForCounting(); |
298 EXPECT_EQ(0u, GetLocalResult()); | 302 EXPECT_EQ(0u, GetLocalResult()); |
299 EXPECT_FALSE(HasSyncedVisits()); | 303 EXPECT_FALSE(HasSyncedVisits()); |
300 | 304 |
301 // No entries locally. There are some entries in Sync, but they are out of the | 305 // No entries locally. There are some entries in Sync, but they are out of the |
302 // time range. | 306 // time range. |
303 SetDeletionPeriodPref(browsing_data::LAST_HOUR); | 307 SetDeletionPeriodPref(browsing_data::TimePeriod::LAST_HOUR); |
304 service->AddSyncedVisit( | 308 service->AddSyncedVisit( |
305 "www.google.com", GetCurrentTime() - base::TimeDelta::FromHours(2)); | 309 "www.google.com", GetCurrentTime() - base::TimeDelta::FromHours(2)); |
306 service->AddSyncedVisit( | 310 service->AddSyncedVisit( |
307 "www.chrome.com", GetCurrentTime() - base::TimeDelta::FromHours(2)); | 311 "www.chrome.com", GetCurrentTime() - base::TimeDelta::FromHours(2)); |
308 service->SetupFakeResponse(true /* success */, net::HTTP_OK); | 312 service->SetupFakeResponse(true /* success */, net::HTTP_OK); |
309 counter.Restart(); | 313 counter.Restart(); |
310 WaitForCounting(); | 314 WaitForCounting(); |
311 EXPECT_EQ(0u, GetLocalResult()); | 315 EXPECT_EQ(0u, GetLocalResult()); |
312 EXPECT_FALSE(HasSyncedVisits()); | 316 EXPECT_FALSE(HasSyncedVisits()); |
313 | 317 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 // Set up the fake web history service and the counter. | 372 // Set up the fake web history service and the counter. |
369 | 373 |
370 browsing_data::HistoryCounter counter( | 374 browsing_data::HistoryCounter counter( |
371 GetHistoryService(), | 375 GetHistoryService(), |
372 base::Bind(&HistoryCounterTest::GetFakeWebHistoryService, | 376 base::Bind(&HistoryCounterTest::GetFakeWebHistoryService, |
373 base::Unretained(this), | 377 base::Unretained(this), |
374 base::Unretained(profile), | 378 base::Unretained(profile), |
375 true), | 379 true), |
376 sync_service); | 380 sync_service); |
377 | 381 |
378 counter.Init(profile->GetPrefs(), base::Bind(&HistoryCounterTest::Callback, | 382 counter.Init( |
379 base::Unretained(this))); | 383 profile->GetPrefs(), browsing_data::ClearBrowsingDataTab::ADVANCED, |
| 384 base::Bind(&HistoryCounterTest::Callback, base::Unretained(this))); |
380 | 385 |
381 // Note that some Sync operations notify observers immediately (and thus there | 386 // Note that some Sync operations notify observers immediately (and thus there |
382 // is no need to call |WaitForCounting()|; in fact, it would block the test), | 387 // is no need to call |WaitForCounting()|; in fact, it would block the test), |
383 // while other operations only post the task on UI thread's message loop | 388 // while other operations only post the task on UI thread's message loop |
384 // (which requires calling |WaitForCounting()| for them to run). Therefore, | 389 // (which requires calling |WaitForCounting()| for them to run). Therefore, |
385 // this test always checks if the callback has already run and only waits | 390 // this test always checks if the callback has already run and only waits |
386 // if it has not. | 391 // if it has not. |
387 | 392 |
388 // We sync all datatypes by default, so starting Sync means that we start | 393 // We sync all datatypes by default, so starting Sync means that we start |
389 // syncing history deletion, and this should restart the counter. | 394 // syncing history deletion, and this should restart the counter. |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 // history deletion did not change. However, in reality we can get two | 435 // history deletion did not change. However, in reality we can get two |
431 // notifications, one that history sync has stopped and another that it is | 436 // notifications, one that history sync has stopped and another that it is |
432 // active again. | 437 // active again. |
433 | 438 |
434 // Stopping the Sync service triggers a restart. | 439 // Stopping the Sync service triggers a restart. |
435 sync_service->RequestStop(syncer::SyncService::CLEAR_DATA); | 440 sync_service->RequestStop(syncer::SyncService::CLEAR_DATA); |
436 WaitForCountingOrConfirmFinished(); | 441 WaitForCountingOrConfirmFinished(); |
437 } | 442 } |
438 | 443 |
439 } // namespace | 444 } // namespace |
OLD | NEW |