summaryrefslogtreecommitdiff
path: root/chromium/components/safe_browsing/content/renderer
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/components/safe_browsing/content/renderer
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-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.cc38
-rw-r--r--chromium/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h20
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};