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

Unified Diff: components/safe_browsing/base_resource_throttle.h

Issue 2876473003: [ABANDONED] [WIP] Refactor SafeBrowsingResourceThrottle in preparation for WebSocket (Closed)
Patch Set: Minor fixes Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/safe_browsing/DEPS ('k') | components/safe_browsing/base_resource_throttle.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/safe_browsing/base_resource_throttle.h
diff --git a/components/safe_browsing/base_resource_throttle.h b/components/safe_browsing/base_resource_throttle.h
deleted file mode 100644
index 1fe92f316039f70ba3ba1731e5069fe1a6e1eb88..0000000000000000000000000000000000000000
--- a/components/safe_browsing/base_resource_throttle.h
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright (c) 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_SAFE_BROWSING_BASE_RESOURCE_THROTTLE_H_
-#define COMPONENTS_SAFE_BROWSING_BASE_RESOURCE_THROTTLE_H_
-
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/time/time.h"
-#include "base/timer/timer.h"
-#include "components/safe_browsing/base_ui_manager.h"
-#include "components/safe_browsing_db/database_manager.h"
-#include "components/security_interstitials/content/unsafe_resource.h"
-#include "content/public/browser/resource_throttle.h"
-#include "content/public/common/resource_type.h"
-#include "net/log/net_log_event_type.h"
-#include "net/log/net_log_with_source.h"
-#include "url/gurl.h"
-
-namespace content {
-class ResourceRequestInfo;
-}
-
-namespace net {
-class URLRequest;
-}
-
-namespace safe_browsing {
-
-// BaseResourceThrottle checks that URLs are "safe" before
-// navigating to them. To be considered "safe", a URL must not appear in the
-// malware/phishing blacklists (see SafeBrowsingService for details).
-//
-// Note that the safe browsing check takes at most kCheckUrlTimeoutMs
-// milliseconds. If it takes longer than this, then the system defaults to
-// treating the URL as safe.
-//
-// If the URL is classified as dangerous, a warning page is thrown up and
-// the request remains suspended. If the user clicks "proceed" on warning
-// page, we resume the request.
-//
-// Note: The ResourceThrottle interface is called in this order:
-// WillStartRequest once, WillRedirectRequest zero or more times, and then
-// WillProcessReponse once.
-class BaseResourceThrottle
- : public content::ResourceThrottle,
- public SafeBrowsingDatabaseManager::Client,
- public base::SupportsWeakPtr<BaseResourceThrottle> {
- public:
- // Construct a BaseResourceThrottle, or return nullptr if we
- // cannot access the safe browsing API on Android
- static BaseResourceThrottle* MaybeCreate(
- net::URLRequest* request,
- content::ResourceType resource_type,
- scoped_refptr<SafeBrowsingDatabaseManager>
- database_manager,
- scoped_refptr<BaseUIManager> ui_manager);
-
- // content::ResourceThrottle implementation (called on IO thread):
- void WillStartRequest(bool* defer) override;
- void WillRedirectRequest(const net::RedirectInfo& redirect_info,
- bool* defer) override;
- void WillProcessResponse(bool* defer) override;
- bool MustProcessResponseBeforeReadingBody() override;
-
- const char* GetNameForLogging() const override;
-
- // SafeBrowsingDatabaseManager::Client implementation (called on IO thread):
- void OnCheckBrowseUrlResult(
- const GURL& url,
- SBThreatType threat_type,
- const ThreatMetadata& metadata) override;
-
- protected:
- BaseResourceThrottle(
- const net::URLRequest* request,
- content::ResourceType resource_type,
- scoped_refptr<SafeBrowsingDatabaseManager>
- database_manager,
- scoped_refptr<BaseUIManager> ui_manager);
-
- ~BaseResourceThrottle() override;
-
- // If our blocked resource is the main frame, this calls
- // ContentSubresourceFilterDriverFactory's
- // OnMainResourceMatchedSafeBrowsingBlacklist method.
- static void NotifySubresourceFilterOfBlockedResource(
- const security_interstitials::UnsafeResource& resource);
-
- // Does nothing in the base class. Override this to destroy prerender contents
- // in chrome.
- virtual void MaybeDestroyPrerenderContents(
- const content::ResourceRequestInfo* info);
-
- // Posts a task for StartDisplayingBlockingPage
- virtual void StartDisplayingBlockingPageHelper(
- security_interstitials::UnsafeResource resource);
-
- // Called by OnBlockingPageComplete when proceed == false. This removes the
- // blocking page. This calls ResourceThrottle::Cancel() to show the previous
- // page, but may be overridden in a subclass.
- virtual void CancelResourceLoad();
-
- scoped_refptr<BaseUIManager> ui_manager();
-
- private:
- // Describes what phase of the check a throttle is in.
- enum State {
- // Haven't started checking or checking is complete. Not deferred.
- STATE_NONE,
- // We have one outstanding URL-check. Could be deferred.
- STATE_CHECKING_URL,
- // We're displaying a blocking page. Could be deferred.
- STATE_DISPLAYING_BLOCKING_PAGE,
- };
-
- // Describes what stage of the request got paused by the check.
- enum DeferState {
- DEFERRED_NONE,
- DEFERRED_START,
- DEFERRED_REDIRECT,
- DEFERRED_UNCHECKED_REDIRECT, // unchecked_redirect_url_ is populated.
- DEFERRED_PROCESSING,
- };
-
- scoped_refptr<BaseUIManager> ui_manager_;
-
- // Called on the IO thread when the user has decided to proceed with the
- // current request, or go back.
- void OnBlockingPageComplete(bool proceed);
-
- // Starts running |url| through the safe browsing check. Returns true if the
- // URL is safe to visit. Otherwise returns false and will call
- // OnBrowseUrlResult() when the check has completed.
- bool CheckUrl(const GURL& url);
-
- // Callback for when the safe browsing check (which was initiated by
- // StartCheckingUrl()) has taken longer than kCheckUrlTimeoutMs.
- void OnCheckUrlTimeout();
-
- // Starts displaying the safe browsing interstitial page. Called on the UI
- // thread.
- static void StartDisplayingBlockingPage(
- const base::WeakPtr<BaseResourceThrottle>& throttle,
- scoped_refptr<BaseUIManager> ui_manager,
- const security_interstitials::UnsafeResource& resource);
-
- void ResumeRequest();
-
- // For marking network events. |name| and |value| can be null.
- void BeginNetLogEvent(net::NetLogEventType type,
- const GURL& url,
- const char* name,
- const char* value);
- void EndNetLogEvent(net::NetLogEventType type,
- const char* name,
- const char* value);
-
- // The result of the most recent safe browsing check. Only valid to read this
- // when state_ != STATE_CHECKING_URL.
- safe_browsing::SBThreatType threat_type_;
-
- // The time when we started deferring the request.
- base::TimeTicks defer_start_time_;
-
- // Timer to abort the safe browsing check if it takes too long.
- base::OneShotTimer timer_;
-
- // The redirect chain for this resource
- std::vector<GURL> redirect_urls_;
-
- // If in DEFERRED_UNCHECKED_REDIRECT state, this is the
- // URL we still need to check before resuming.
- GURL unchecked_redirect_url_;
- GURL url_being_checked_;
-
- scoped_refptr<SafeBrowsingDatabaseManager> database_manager_;
- const net::URLRequest* request_;
-
- State state_;
- DeferState defer_state_;
-
- const content::ResourceType resource_type_;
- net::NetLogWithSource net_log_with_source_;
-
- DISALLOW_COPY_AND_ASSIGN(BaseResourceThrottle);
-};
-
-} // namespace safe_browsing
-
-#endif // COMPONENTS_SAFE_BROWSING_BASE_RESOURCE_THROTTLE_H_
« no previous file with comments | « components/safe_browsing/DEPS ('k') | components/safe_browsing/base_resource_throttle.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698