Commit f887c0aa authored by Marijn Kruisselbrink's avatar Marijn Kruisselbrink Committed by Commit Bot

[MessagePort] Add usecounter for transferring a closed port.

There is discussion in https://github.com/whatwg/html/pull/3584 about no
longer allowing this, so measure how often this actually is used.

Bug: None
Change-Id: Id4ccf910993df37fa1754954f4fe9fc05cbd4493
Reviewed-on: https://chromium-review.googlesource.com/973693Reviewed-by: default avatarJeremy Roman <jbroman@chromium.org>
Commit-Queue: Marijn Kruisselbrink <mek@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544778}
parent f17c70fe
...@@ -167,6 +167,7 @@ Vector<MessagePortChannel> MessagePort::DisentanglePorts( ...@@ -167,6 +167,7 @@ Vector<MessagePortChannel> MessagePort::DisentanglePorts(
return Vector<MessagePortChannel>(); return Vector<MessagePortChannel>();
HeapHashSet<Member<MessagePort>> visited; HeapHashSet<Member<MessagePort>> visited;
bool has_closed_ports = false;
// Walk the incoming array - if there are any duplicate ports, or null ports // Walk the incoming array - if there are any duplicate ports, or null ports
// or cloned ports, throw an error (per section 8.3.3 of the HTML5 spec). // or cloned ports, throw an error (per section 8.3.3 of the HTML5 spec).
...@@ -185,10 +186,14 @@ Vector<MessagePortChannel> MessagePort::DisentanglePorts( ...@@ -185,10 +186,14 @@ Vector<MessagePortChannel> MessagePort::DisentanglePorts(
"Port at index " + String::Number(i) + " is " + type + "."); "Port at index " + String::Number(i) + " is " + type + ".");
return Vector<MessagePortChannel>(); return Vector<MessagePortChannel>();
} }
if (port->closed_)
has_closed_ports = true;
visited.insert(port); visited.insert(port);
} }
UseCounter::Count(context, WebFeature::kMessagePortsTransferred); UseCounter::Count(context, WebFeature::kMessagePortsTransferred);
if (has_closed_ports)
UseCounter::Count(context, WebFeature::kMessagePortTransferClosedPort);
// Passed-in ports passed validity checks, so we can disentangle them. // Passed-in ports passed validity checks, so we can disentangle them.
Vector<MessagePortChannel> channels; Vector<MessagePortChannel> channels;
......
...@@ -1881,6 +1881,7 @@ enum WebFeature { ...@@ -1881,6 +1881,7 @@ enum WebFeature {
kDistrustedLegacySymantecSubresource = 2389, kDistrustedLegacySymantecSubresource = 2389,
kVRDisplayGetFrameData = 2390, kVRDisplayGetFrameData = 2390,
kXMLHttpRequestResponseXML = 2391, kXMLHttpRequestResponseXML = 2391,
kMessagePortTransferClosedPort = 2392,
// Add new features immediately above this line. Don't change assigned // Add new features immediately above this line. Don't change assigned
// numbers of any item, and don't reuse removed slots. // numbers of any item, and don't reuse removed slots.
......
...@@ -17974,6 +17974,7 @@ Called by update_net_error_codes.py.--> ...@@ -17974,6 +17974,7 @@ Called by update_net_error_codes.py.-->
<int value="2389" label="DistrustedLegacySymantecSubresource"/> <int value="2389" label="DistrustedLegacySymantecSubresource"/>
<int value="2390" label="VRDisplayGetFrameData"/> <int value="2390" label="VRDisplayGetFrameData"/>
<int value="2391" label="XMLHttpRequestResponseXML"/> <int value="2391" label="XMLHttpRequestResponseXML"/>
<int value="2392" label="MessagePortTransferClosedPort"/>
</enum> </enum>
<enum name="FeedbackSource"> <enum name="FeedbackSource">
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment