Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/safe_browsing/incident_reporting/last_download_finder.h " | 5 #include "chrome/browser/safe_browsing/incident_reporting/last_download_finder.h " |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <functional> | 8 #include <functional> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 239 base::Bind(&LastDownloadFinder::OnDownloadQuery, | 239 base::Bind(&LastDownloadFinder::OnDownloadQuery, |
| 240 weak_ptr_factory_.GetWeakPtr(), | 240 weak_ptr_factory_.GetWeakPtr(), |
| 241 profile)); | 241 profile)); |
| 242 } else { | 242 } else { |
| 243 // else wait until history is loaded. | 243 // else wait until history is loaded. |
| 244 history_service_observer_.Add(history_service); | 244 history_service_observer_.Add(history_service); |
| 245 } | 245 } |
| 246 } | 246 } |
| 247 } | 247 } |
| 248 | 248 |
| 249 void LastDownloadFinder::OnProfileHistoryLoaded( | |
| 250 Profile* profile, | |
| 251 HistoryService* history_service) { | |
| 252 auto iter = profile_states_.find(profile); | |
| 253 if (iter == profile_states_.end()) | |
| 254 return; | |
| 255 | |
| 256 // Start the query in the history service if the finder was waiting for the | |
| 257 // service to load. | |
| 258 if (iter->second == WAITING_FOR_HISTORY) { | |
| 259 history_service->QueryDownloads( | |
| 260 base::Bind(&LastDownloadFinder::OnDownloadQuery, | |
| 261 weak_ptr_factory_.GetWeakPtr(), | |
| 262 profile)); | |
| 263 } | |
| 264 } | |
| 265 | |
| 266 void LastDownloadFinder::AbandonSearchInProfile(Profile* profile) { | 249 void LastDownloadFinder::AbandonSearchInProfile(Profile* profile) { |
| 267 // |profile| may not be present in the set of profiles. | 250 // |profile| may not be present in the set of profiles. |
| 268 auto iter = profile_states_.find(profile); | 251 auto iter = profile_states_.find(profile); |
| 269 if (iter != profile_states_.end()) | 252 if (iter != profile_states_.end()) |
| 270 RemoveProfileAndReportIfDone(iter); | 253 RemoveProfileAndReportIfDone(iter); |
| 271 } | 254 } |
| 272 | 255 |
| 273 void LastDownloadFinder::OnDownloadQuery( | 256 void LastDownloadFinder::OnDownloadQuery( |
| 274 Profile* profile, | 257 Profile* profile, |
| 275 scoped_ptr<std::vector<history::DownloadRow> > downloads) { | 258 scoped_ptr<std::vector<history::DownloadRow> > downloads) { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 332 case chrome::NOTIFICATION_PROFILE_DESTROYED: | 315 case chrome::NOTIFICATION_PROFILE_DESTROYED: |
| 333 AbandonSearchInProfile(content::Source<Profile>(source).ptr()); | 316 AbandonSearchInProfile(content::Source<Profile>(source).ptr()); |
| 334 break; | 317 break; |
| 335 default: | 318 default: |
| 336 break; | 319 break; |
| 337 } | 320 } |
| 338 } | 321 } |
| 339 | 322 |
| 340 void LastDownloadFinder::OnHistoryServiceLoaded( | 323 void LastDownloadFinder::OnHistoryServiceLoaded( |
| 341 HistoryService* history_service) { | 324 HistoryService* history_service) { |
| 342 OnProfileHistoryLoaded(history_service->profile(), history_service); | 325 for (const auto& pair : profile_states_) { |
| 326 HistoryService* hs = HistoryServiceFactory::GetForProfileIfExists( | |
|
sky
2014/12/11 19:23:49
IMO the old way is cleaner. Why do you need to rem
| |
| 327 pair.first, Profile::EXPLICIT_ACCESS); | |
| 328 if (hs == history_service) { | |
| 329 // Start the query in the history service if the finder was waiting for | |
| 330 // the service to load. | |
| 331 if (pair.second == WAITING_FOR_HISTORY) { | |
| 332 history_service->QueryDownloads( | |
| 333 base::Bind(&LastDownloadFinder::OnDownloadQuery, | |
| 334 weak_ptr_factory_.GetWeakPtr(), | |
| 335 pair.first)); | |
| 336 } | |
| 337 return; | |
| 338 } | |
| 339 } | |
| 343 } | 340 } |
| 344 | 341 |
| 345 void LastDownloadFinder::HistoryServiceBeingDeleted( | 342 void LastDownloadFinder::HistoryServiceBeingDeleted( |
| 346 HistoryService* history_service) { | 343 HistoryService* history_service) { |
| 347 history_service_observer_.Remove(history_service); | 344 history_service_observer_.Remove(history_service); |
| 348 } | 345 } |
| 349 | 346 |
| 350 } // namespace safe_browsing | 347 } // namespace safe_browsing |
| OLD | NEW |