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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_service.h

Issue 7080034: Currently, there is a bug in the way we show the csd phishing interstitial. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Address Brian's comments. Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // The Safe Browsing service is responsible for downloading anti-phishing and 5 // The Safe Browsing service is responsible for downloading anti-phishing and
6 // anti-malware tables and checking urls against them. 6 // anti-malware tables and checking urls against them.
7 7
8 #ifndef CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_ 8 #ifndef CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_
9 #define CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_ 9 #define CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_
10 #pragma once 10 #pragma once
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 176
177 // Called on the IO thread to cancel a pending check if the result is no 177 // Called on the IO thread to cancel a pending check if the result is no
178 // longer needed. 178 // longer needed.
179 void CancelCheck(Client* client); 179 void CancelCheck(Client* client);
180 180
181 // Called on the IO thread to display an interstitial page. 181 // Called on the IO thread to display an interstitial page.
182 // |url| is the url of the resource that matches a safe browsing list. 182 // |url| is the url of the resource that matches a safe browsing list.
183 // If the request contained a chain of redirects, |url| is the last url 183 // If the request contained a chain of redirects, |url| is the last url
184 // in the chain, and |original_url| is the first one (the root of the 184 // in the chain, and |original_url| is the first one (the root of the
185 // chain). Otherwise, |original_url| = |url|. 185 // chain). Otherwise, |original_url| = |url|.
186 virtual void DisplayBlockingPage(const GURL& url, 186 void DisplayBlockingPage(const GURL& url,
187 const GURL& original_url, 187 const GURL& original_url,
188 const std::vector<GURL>& redirect_urls, 188 const std::vector<GURL>& redirect_urls,
189 ResourceType::Type resource_type, 189 ResourceType::Type resource_type,
190 UrlCheckResult result, 190 UrlCheckResult result,
191 Client* client, 191 Client* client,
192 int render_process_host_id, 192 int render_process_host_id,
193 int render_view_id); 193 int render_view_id);
194
195 // Same as above but gets invoked on the UI thread.
196 virtual void DoDisplayBlockingPage(const UnsafeResource& resource);
197
198 // Returns true if we already displayed an interstitial for that resource.
199 // Called on the UI thread.
200 bool IsWhitelisted(const UnsafeResource& resource);
194 201
195 // Called on the IO thread when the SafeBrowsingProtocolManager has received 202 // Called on the IO thread when the SafeBrowsingProtocolManager has received
196 // the full hash results for prefix hits detected in the database. 203 // the full hash results for prefix hits detected in the database.
197 void HandleGetHashResults( 204 void HandleGetHashResults(
198 SafeBrowsingCheck* check, 205 SafeBrowsingCheck* check,
199 const std::vector<SBFullHashResult>& full_hashes, 206 const std::vector<SBFullHashResult>& full_hashes,
200 bool can_cache); 207 bool can_cache);
201 208
202 // Called on the IO thread. 209 // Called on the IO thread.
203 void HandleChunk(const std::string& list, SBChunkList* chunks); 210 void HandleChunk(const std::string& list, SBChunkList* chunks);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 365
359 // Internal worker function for processing full hashes. 366 // Internal worker function for processing full hashes.
360 void OnHandleGetHashResults(SafeBrowsingCheck* check, 367 void OnHandleGetHashResults(SafeBrowsingCheck* check,
361 const std::vector<SBFullHashResult>& full_hashes); 368 const std::vector<SBFullHashResult>& full_hashes);
362 369
363 // Run one check against |full_hashes|. Returns |true| if the check 370 // Run one check against |full_hashes|. Returns |true| if the check
364 // finds a match in |full_hashes|. 371 // finds a match in |full_hashes|.
365 bool HandleOneCheck(SafeBrowsingCheck* check, 372 bool HandleOneCheck(SafeBrowsingCheck* check,
366 const std::vector<SBFullHashResult>& full_hashes); 373 const std::vector<SBFullHashResult>& full_hashes);
367 374
368 // Invoked on the UI thread to show the blocking page.
369 void DoDisplayBlockingPage(const UnsafeResource& resource);
370
371 // Call protocol manager on IO thread to report hits of unsafe contents. 375 // Call protocol manager on IO thread to report hits of unsafe contents.
372 void ReportSafeBrowsingHitOnIOThread(const GURL& malicious_url, 376 void ReportSafeBrowsingHitOnIOThread(const GURL& malicious_url,
373 const GURL& page_url, 377 const GURL& page_url,
374 const GURL& referrer_url, 378 const GURL& referrer_url,
375 bool is_subresource, 379 bool is_subresource,
376 UrlCheckResult threat_type, 380 UrlCheckResult threat_type,
377 const std::string& post_data); 381 const std::string& post_data);
378 382
379 // Checks the download hash on safe_browsing_thread_. 383 // Checks the download hash on safe_browsing_thread_.
380 void CheckDownloadHashOnSBThread(SafeBrowsingCheck* check); 384 void CheckDownloadHashOnSBThread(SafeBrowsingCheck* check);
(...skipping 16 matching lines...) Expand all
397 void SafeBrowsingCheckDone(SafeBrowsingCheck* check); 401 void SafeBrowsingCheckDone(SafeBrowsingCheck* check);
398 402
399 // Helper function to set |check| with default values and start a safe 403 // Helper function to set |check| with default values and start a safe
400 // browsing check with timeout of |timeout_ms|. |task| will be called upon 404 // browsing check with timeout of |timeout_ms|. |task| will be called upon
401 // success, otherwise TimeoutCallback will be called. 405 // success, otherwise TimeoutCallback will be called.
402 void StartDownloadCheck(SafeBrowsingCheck* check, 406 void StartDownloadCheck(SafeBrowsingCheck* check,
403 Client* client, 407 Client* client,
404 CancelableTask* task, 408 CancelableTask* task,
405 int64 timeout_ms); 409 int64 timeout_ms);
406 410
411 // Adds the given entry to the whitelist. Called on the UI thread.
412 void UpdateWhitelist(UnsafeResource resource);
413
407 // The factory used to instanciate a SafeBrowsingService object. 414 // The factory used to instanciate a SafeBrowsingService object.
408 // Useful for tests, so they can provide their own implementation of 415 // Useful for tests, so they can provide their own implementation of
409 // SafeBrowsingService. 416 // SafeBrowsingService.
410 static SafeBrowsingServiceFactory* factory_; 417 static SafeBrowsingServiceFactory* factory_;
411 418
412 CurrentChecks checks_; 419 CurrentChecks checks_;
413 420
414 // Used for issuing only one GetHash request for a given prefix. 421 // Used for issuing only one GetHash request for a given prefix.
415 GetHashRequests gethash_requests_; 422 GetHashRequests gethash_requests_;
416 423
417 // The persistent database. We don't use a scoped_ptr because it 424 // The persistent database. We don't use a scoped_ptr because it
418 // needs to be destructed on a different thread than this object. 425 // needs to be destructed on a different thread than this object.
419 SafeBrowsingDatabase* database_; 426 SafeBrowsingDatabase* database_;
420 427
421 // Lock used to prevent possible data races due to compiler optimizations. 428 // Lock used to prevent possible data races due to compiler optimizations.
422 mutable base::Lock database_lock_; 429 mutable base::Lock database_lock_;
423 430
424 // Handles interaction with SafeBrowsing servers. 431 // Handles interaction with SafeBrowsing servers.
425 SafeBrowsingProtocolManager* protocol_manager_; 432 SafeBrowsingProtocolManager* protocol_manager_;
426 433
434 // Only access this whitelist from the UI thread.
427 std::vector<WhiteListedEntry> white_listed_entries_; 435 std::vector<WhiteListedEntry> white_listed_entries_;
428 436
429 // Whether the service is running. 'enabled_' is used by SafeBrowsingService 437 // Whether the service is running. 'enabled_' is used by SafeBrowsingService
430 // on the IO thread during normal operations. 438 // on the IO thread during normal operations.
431 bool enabled_; 439 bool enabled_;
432 440
433 // Indicate if download_protection is enabled by command switch 441 // Indicate if download_protection is enabled by command switch
434 // so we allow this feature to be exersized. 442 // so we allow this feature to be exersized.
435 bool enable_download_protection_; 443 bool enable_download_protection_;
436 444
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 class SafeBrowsingServiceFactory { 480 class SafeBrowsingServiceFactory {
473 public: 481 public:
474 SafeBrowsingServiceFactory() { } 482 SafeBrowsingServiceFactory() { }
475 virtual ~SafeBrowsingServiceFactory() { } 483 virtual ~SafeBrowsingServiceFactory() { }
476 virtual SafeBrowsingService* CreateSafeBrowsingService() = 0; 484 virtual SafeBrowsingService* CreateSafeBrowsingService() = 0;
477 private: 485 private:
478 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingServiceFactory); 486 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingServiceFactory);
479 }; 487 };
480 488
481 #endif // CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_ 489 #endif // CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/client_side_detection_service.cc ('k') | chrome/browser/safe_browsing/safe_browsing_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698