summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/common/webmessageportchannel_impl.cc5
-rw-r--r--chrome/worker/worker_uitest.cc6
2 files changed, 5 insertions, 6 deletions
diff --git a/chrome/common/webmessageportchannel_impl.cc b/chrome/common/webmessageportchannel_impl.cc
index 4ff8b55..24304fd 100644
--- a/chrome/common/webmessageportchannel_impl.cc
+++ b/chrome/common/webmessageportchannel_impl.cc
@@ -151,6 +151,11 @@ void WebMessagePortChannelImpl::Entangle(
}
void WebMessagePortChannelImpl::QueueMessages() {
+ if (MessageLoop::current() != ChildThread::current()->message_loop()) {
+ ChildThread::current()->message_loop()->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &WebMessagePortChannelImpl::QueueMessages));
+ return;
+ }
// This message port is being sent elsewhere (perhaps to another process).
// The new endpoint needs to receive the queued messages, including ones that
// could still be in-flight. So we tell the browser to queue messages, and it
diff --git a/chrome/worker/worker_uitest.cc b/chrome/worker/worker_uitest.cc
index 99a80d1..1abc538 100644
--- a/chrome/worker/worker_uitest.cc
+++ b/chrome/worker/worker_uitest.cc
@@ -229,12 +229,6 @@ TEST_F(WorkerTest, WorkerContextGc) {
RunWorkerFastLayoutTest("worker-context-gc.html");
}
-// BUG 42783
-// Still fails intermittently on rel builds of Linux.
-#if defined(OS_LINUX)
-#define WorkerContextMultiPort DISABLED_WorkerContextMultiPort
-#endif
-
TEST_F(WorkerTest, WorkerContextMultiPort) {
RunWorkerFastLayoutTest("worker-context-multi-port.html");
}