Title: [252056] trunk
- Revision
- 252056
- Author
- [email protected]
- Date
- 2019-11-05 08:58:57 -0800 (Tue, 05 Nov 2019)
Log Message
MessagePort::close cannot assume that is execution context is not null
https://bugs.webkit.org/show_bug.cgi?id=203843
<rdar://problem/55599877>
Reviewed by Chris Dumez.
Source/WebCore:
Covered by updated test.
* dom/MessagePort.cpp:
(WebCore::MessagePort::close):
Do not use m_scriptExecutionContext since it can be nulled out in MessagePort::disentangle.
* dom/messageports/WorkerMessagePortChannelProvider.cpp:
(WebCore::WorkerMessagePortChannelProvider::messagePortClosed):
LayoutTests:
* http/tests/workers/service/basic-messageport-expected.txt:
* http/tests/workers/service/resources/basic-messageport.js:
(async.doLog):
(then):
(): Deleted.
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (252055 => 252056)
--- trunk/LayoutTests/ChangeLog 2019-11-05 16:52:31 UTC (rev 252055)
+++ trunk/LayoutTests/ChangeLog 2019-11-05 16:58:57 UTC (rev 252056)
@@ -1,3 +1,17 @@
+2019-11-05 youenn fablet <[email protected]>
+
+ MessagePort::close cannot assume that is execution context is not null
+ https://bugs.webkit.org/show_bug.cgi?id=203843
+ <rdar://problem/55599877>
+
+ Reviewed by Chris Dumez.
+
+ * http/tests/workers/service/basic-messageport-expected.txt:
+ * http/tests/workers/service/resources/basic-messageport.js:
+ (async.doLog):
+ (then):
+ (): Deleted.
+
2019-11-05 Eric Carlson <[email protected]>
[iOS] Update fast/forms/ios/file-upload-panel.html test and results
Modified: trunk/LayoutTests/http/tests/workers/service/basic-messageport-expected.txt (252055 => 252056)
--- trunk/LayoutTests/http/tests/workers/service/basic-messageport-expected.txt 2019-11-05 16:52:31 UTC (rev 252055)
+++ trunk/LayoutTests/http/tests/workers/service/basic-messageport-expected.txt 2019-11-05 16:58:57 UTC (rev 252056)
@@ -1,4 +1,5 @@
Message received from MessagePort: MessagePort echo: Message to a port!
Message received from ServiceWorker: PASS: Got the MessagePort
Message received from ServiceWorker: messageport thing received....
+Test finished
Modified: trunk/LayoutTests/http/tests/workers/service/resources/basic-messageport.js (252055 => 252056)
--- trunk/LayoutTests/http/tests/workers/service/resources/basic-messageport.js 2019-11-05 16:52:31 UTC (rev 252055)
+++ trunk/LayoutTests/http/tests/workers/service/resources/basic-messageport.js 2019-11-05 16:58:57 UTC (rev 252056)
@@ -1,6 +1,7 @@
var messages = [];
+var registration;
-function doLog(message)
+async function doLog(message)
{
messages.push(message)
if (messages.length === 3) {
@@ -7,6 +8,10 @@
messages.sort();
for (let message of messages)
log(message);
+ channel.port2.close();
+ if (registration)
+ await registration.unregister();
+ log("Test finished");
finishSWTest();
}
}
@@ -20,12 +25,15 @@
doLog("Message received from MessagePort: " + event.data);
}
-navigator.serviceWorker.register("resources/messageport-echo-worker.js", { }).then(function(registration) {
+navigator.serviceWorker.register("resources/messageport-echo-worker.js", { }).then((r) => {
+ registration = r;
try {
registration.installing.postMessage("Here is your port", [channel.port2]);
channel.port1.postMessage("Message to a port!");
} catch(e) {
doLog("Exception: " + e);
+ if (registration)
+ registration.unregister();
finishSWTest();
}
});
Modified: trunk/Source/WebCore/ChangeLog (252055 => 252056)
--- trunk/Source/WebCore/ChangeLog 2019-11-05 16:52:31 UTC (rev 252055)
+++ trunk/Source/WebCore/ChangeLog 2019-11-05 16:58:57 UTC (rev 252056)
@@ -1,3 +1,19 @@
+2019-11-05 youenn fablet <[email protected]>
+
+ MessagePort::close cannot assume that is execution context is not null
+ https://bugs.webkit.org/show_bug.cgi?id=203843
+ <rdar://problem/55599877>
+
+ Reviewed by Chris Dumez.
+
+ Covered by updated test.
+
+ * dom/MessagePort.cpp:
+ (WebCore::MessagePort::close):
+ Do not use m_scriptExecutionContext since it can be nulled out in MessagePort::disentangle.
+ * dom/messageports/WorkerMessagePortChannelProvider.cpp:
+ (WebCore::WorkerMessagePortChannelProvider::messagePortClosed):
+
2019-11-05 James Darpinian <[email protected]>
Enable powerPreference controlled GPU switching with ANGLE
Modified: trunk/Source/WebCore/dom/MessagePort.cpp (252055 => 252056)
--- trunk/Source/WebCore/dom/MessagePort.cpp 2019-11-05 16:52:31 UTC (rev 252055)
+++ trunk/Source/WebCore/dom/MessagePort.cpp 2019-11-05 16:58:57 UTC (rev 252056)
@@ -226,7 +226,14 @@
return;
m_closed = true;
- MessagePortChannelProvider::fromContext(*m_scriptExecutionContext).messagePortClosed(m_identifier);
+ if (isMainThread())
+ MessagePortChannelProvider::singleton().messagePortClosed(m_identifier);
+ else {
+ callOnMainThread([identifier = m_identifier] {
+ MessagePortChannelProvider::singleton().messagePortClosed(identifier);
+ });
+ }
+
removeAllEventListeners();
m_eventQueue->close();
}
Modified: trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp (252055 => 252056)
--- trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp 2019-11-05 16:52:31 UTC (rev 252055)
+++ trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp 2019-11-05 16:58:57 UTC (rev 252056)
@@ -74,11 +74,9 @@
});
}
-void WorkerMessagePortChannelProvider::messagePortClosed(const MessagePortIdentifier& local)
+void WorkerMessagePortChannelProvider::messagePortClosed(const MessagePortIdentifier&)
{
- callOnMainThread([local] {
- MessagePortChannelProvider::singleton().messagePortClosed(local);
- });
+ ASSERT_NOT_REACHED();
}
void WorkerMessagePortChannelProvider::postMessageToRemote(const MessageWithMessagePorts& message, const MessagePortIdentifier& remoteTarget)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes