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

Side by Side Diff: chrome/browser/safe_browsing/last_download_finder.cc

Issue 418103006: Ignore duplicate calls to safe browsing's last download finder SearchInProfile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | 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 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/last_download_finder.h" 5 #include "chrome/browser/safe_browsing/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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 } 138 }
139 139
140 void LastDownloadFinder::SearchInProfile(Profile* profile) { 140 void LastDownloadFinder::SearchInProfile(Profile* profile) {
141 // Do not look in OTR profiles or in profiles that do not participate in 141 // Do not look in OTR profiles or in profiles that do not participate in
142 // safe browsing. 142 // safe browsing.
143 if (profile->IsOffTheRecord() || 143 if (profile->IsOffTheRecord() ||
144 !profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled)) { 144 !profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled)) {
145 return; 145 return;
146 } 146 }
147 147
148 // Exit early if already processing this profile. This could happen if, for
149 // example, NOTIFICATION_PROFILE_ADDED arrives after construction while
150 // waiting for NOTIFICATION_HISTORY_LOADED.
151 if (std::find(profiles_.begin(), profiles_.end(), profile) !=
152 profiles_.end()) {
153 return;
154 }
155
148 HistoryService* history_service = 156 HistoryService* history_service =
149 HistoryServiceFactory::GetForProfile(profile, Profile::IMPLICIT_ACCESS); 157 HistoryServiceFactory::GetForProfile(profile, Profile::IMPLICIT_ACCESS);
150 // No history service is returned for profiles that do not save history. 158 // No history service is returned for profiles that do not save history.
151 if (!history_service) 159 if (!history_service)
152 return; 160 return;
153 161
154 profiles_.push_back(profile); 162 profiles_.push_back(profile);
155 if (history_service->BackendLoaded()) { 163 if (history_service->BackendLoaded()) {
156 history_service->QueryDownloads( 164 history_service->QueryDownloads(
157 base::Bind(&LastDownloadFinder::OnDownloadQuery, 165 base::Bind(&LastDownloadFinder::OnDownloadQuery,
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 break; 248 break;
241 case chrome::NOTIFICATION_PROFILE_DESTROYED: 249 case chrome::NOTIFICATION_PROFILE_DESTROYED:
242 AbandonSearchInProfile(content::Source<Profile>(source).ptr()); 250 AbandonSearchInProfile(content::Source<Profile>(source).ptr());
243 break; 251 break;
244 default: 252 default:
245 break; 253 break;
246 } 254 }
247 } 255 }
248 256
249 } // namespace safe_browsing 257 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698