diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/components/safe_browsing/content/renderer | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/safe_browsing/content/renderer')
-rw-r--r-- | chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.cc | 38 | ||||
-rw-r--r-- | chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h | 20 |
2 files changed, 21 insertions, 37 deletions
diff --git a/chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.cc b/chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.cc index 4b92b8fcffa..d9fef3975a1 100644 --- a/chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.cc +++ b/chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.cc @@ -23,22 +23,9 @@ namespace safe_browsing { WebSocketSBHandshakeThrottle::WebSocketSBHandshakeThrottle( mojom::SafeBrowsing* safe_browsing, int render_frame_id) - : render_frame_id_(render_frame_id), - safe_browsing_(safe_browsing), - result_(Result::UNKNOWN) {} + : render_frame_id_(render_frame_id), safe_browsing_(safe_browsing) {} -WebSocketSBHandshakeThrottle::~WebSocketSBHandshakeThrottle() { - // ThrottleHandshake() should always be called, but since that is done all the - // way over in Blink, just avoid logging if it is not called rather than - // DCHECK()ing. - if (start_time_.is_null()) - return; - if (result_ == Result::UNKNOWN) { - result_ = Result::ABANDONED; - UMA_HISTOGRAM_TIMES("SafeBrowsing.WebSocket.Elapsed.Abandoned", - base::TimeTicks::Now() - start_time_); - } -} +WebSocketSBHandshakeThrottle::~WebSocketSBHandshakeThrottle() = default; void WebSocketSBHandshakeThrottle::ThrottleHandshake( const blink::WebURL& url, @@ -48,7 +35,8 @@ void WebSocketSBHandshakeThrottle::ThrottleHandshake( completion_callback_ = std::move(completion_callback); url_ = url; int load_flags = 0; - start_time_ = base::TimeTicks::Now(); + DCHECK_EQ(state_, State::kInitial); + state_ = State::kStarted; safe_browsing_->CreateCheckerAndCheck( render_frame_id_, url_checker_.BindNewPipeAndPassReceiver(), url, "GET", net::HttpRequestHeaders(), load_flags, @@ -65,17 +53,14 @@ void WebSocketSBHandshakeThrottle::ThrottleHandshake( void WebSocketSBHandshakeThrottle::OnCompleteCheck(bool proceed, bool showed_interstitial) { - DCHECK(!start_time_.is_null()); - base::TimeDelta elapsed = base::TimeTicks::Now() - start_time_; + DCHECK_EQ(state_, State::kStarted); if (proceed) { - result_ = Result::SAFE; - UMA_HISTOGRAM_TIMES("SafeBrowsing.WebSocket.Elapsed.Safe", elapsed); + state_ = State::kSafe; std::move(completion_callback_).Run(base::nullopt); } else { // When the insterstitial is dismissed the page is navigated and this object // is destroyed before reaching here. - result_ = Result::BLOCKED; - UMA_HISTOGRAM_TIMES("SafeBrowsing.WebSocket.Elapsed.Blocked", elapsed); + state_ = State::kBlocked; std::move(completion_callback_) .Run(blink::WebString::FromUTF8(base::StringPrintf( "WebSocket connection to %s failed safe browsing check", @@ -93,7 +78,8 @@ void WebSocketSBHandshakeThrottle::OnCheckResult( return; } - // TODO(yzshen): Notify the network service to pause processing response body. + // TODO(yzshen): Notify the network service to stop reading from the + // WebSocket. if (!notifier_receiver_) { notifier_receiver_ = std::make_unique<mojo::Receiver<mojom::UrlCheckNotifier>>(this); @@ -102,14 +88,12 @@ void WebSocketSBHandshakeThrottle::OnCheckResult( } void WebSocketSBHandshakeThrottle::OnMojoDisconnect() { - DCHECK_EQ(result_, Result::UNKNOWN); + DCHECK(state_ == State::kStarted); url_checker_.reset(); notifier_receiver_.reset(); - // Make the destructor record NOT_SUPPORTED in the result histogram. - result_ = Result::NOT_SUPPORTED; - // Don't record the time elapsed because it's unlikely to be meaningful. + state_ = State::kNotSupported; std::move(completion_callback_).Run(base::nullopt); // |this| is destroyed here. } diff --git a/chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h b/chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h index 53f7761c78b..c703942d2e0 100644 --- a/chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h +++ b/chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h @@ -35,14 +35,12 @@ class WebSocketSBHandshakeThrottle : public blink::WebSocketHandshakeThrottle, completion_callback) override; private: - // These values are logged to UMA so do not renumber or reuse. - enum class Result { - UNKNOWN = 0, - SAFE = 1, - BLOCKED = 2, - ABANDONED = 3, - NOT_SUPPORTED = 4, - RESULT_COUNT + enum class State { + kInitial, + kStarted, + kSafe, + kBlocked, + kNotSupported, }; // mojom::UrlCheckNotifier implementation. @@ -60,8 +58,10 @@ class WebSocketSBHandshakeThrottle : public blink::WebSocketHandshakeThrottle, mojo::Remote<mojom::SafeBrowsingUrlChecker> url_checker_; mojom::SafeBrowsing* safe_browsing_; std::unique_ptr<mojo::Receiver<mojom::UrlCheckNotifier>> notifier_receiver_; - base::TimeTicks start_time_; - Result result_; + + // |state_| is used to validate that events happen in the right order. It + // isn't used to control the behaviour of the class. + State state_ = State::kInitial; base::WeakPtrFactory<WebSocketSBHandshakeThrottle> weak_factory_{this}; |