WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Implementation of WorkerContext.close() + layout test
patch.txt (text/plain), 5.75 KB, created by
Andrew Wilson
on 2009-05-22 13:09:14 PDT
(
hide
)
Description:
Implementation of WorkerContext.close() + layout test
Filename:
MIME Type:
Creator:
Andrew Wilson
Created:
2009-05-22 13:09:14 PDT
Size:
5.75 KB
patch
obsolete
>diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index d29dfc1..8512dba 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,14 @@ >+2009-05-22 Drew Wilson <atwilson@google.com> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added WorkerContext.close() >+ >+ * fast/workers/resources/worker-common.js: >+ (onmessage): >+ * fast/workers/worker-close-expected.txt: Added. >+ * fast/workers/worker-close.html: Added. >+ > 2009-05-22 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org> > > Reviewed by Simon Hausmann. >diff --git a/LayoutTests/fast/workers/resources/worker-common.js b/LayoutTests/fast/workers/resources/worker-common.js >index cfeabe2..e05f7ec 100644 >--- a/LayoutTests/fast/workers/resources/worker-common.js >+++ b/LayoutTests/fast/workers/resources/worker-common.js >@@ -13,6 +13,8 @@ onmessage = function(evt) > postMessage("pong"); > else if (evt.data == "freeze") > while (1) {} >+ else if (evt.data == "close") >+ close(); > else if (/eval.+/.test(evt.data)) { > try { > postMessage(evt.data.substr(5) + ": " + eval(evt.data.substr(5))); >diff --git a/LayoutTests/fast/workers/worker-close-expected.txt b/LayoutTests/fast/workers/worker-close-expected.txt >new file mode 100644 >index 0000000..aa1bd12 >--- /dev/null >+++ b/LayoutTests/fast/workers/worker-close-expected.txt >@@ -0,0 +1,6 @@ >+Test WorkerContext.close functionality. Should print a series of PASS messages, followed with DONE. >+ >+PASS: typeof close: function >+PASS: messages sent after close() are ignored >+DONE >+ >diff --git a/LayoutTests/fast/workers/worker-close.html b/LayoutTests/fast/workers/worker-close.html >new file mode 100644 >index 0000000..25c18ce >--- /dev/null >+++ b/LayoutTests/fast/workers/worker-close.html >@@ -0,0 +1,48 @@ >+<body> >+<p>Test WorkerContext.close functionality. Should print a series of PASS messages, followed with DONE.</p> >+<div id=result></div> >+<script> >+function log(message) >+{ >+ document.getElementById("result").innerHTML += message + "<br>"; >+} >+ >+if (window.layoutTestController) { >+ layoutTestController.dumpAsText(); >+ layoutTestController.waitUntilDone(); >+} >+ >+var worker = new Worker('resources/worker-common.js'); >+var timeout = 0; >+ >+worker.postMessage("eval typeof close"); >+worker.onmessage = function(evt) { >+ if (evt.data == "typeof close: function") >+ log("PASS: " + evt.data); >+ else >+ log("FAIL: " + evt.data); >+ worker.onmessage = function(evt) { >+ log("FAIL: Received message after worker closed: " + evt.data); >+ done(); >+ }; >+ worker.postMessage("close"); >+ worker.postMessage("ping"); >+ timeout = setTimeout(noMessage, 1000); >+} >+ >+function noMessage() { >+ log("PASS: messages sent after close() are ignored"); >+ done(); >+} >+ >+function done() { >+ if (timeout) >+ clearTimeout(timeout); >+ log("DONE"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+} >+</script> >+</body> >+</html> >+ >diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog >index d14ad88..5d053a0 100644 >--- a/WebCore/ChangeLog >+++ b/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2009-05-22 Drew Wilson <atwilson@google.com> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added WorkerContext.close() >+ >+ Test: fast/workers/worker-close.html >+ >+ * workers/WorkerContext.cpp: >+ (WebCore::WorkerContext::close): >+ * workers/WorkerContext.h: >+ * workers/WorkerContext.idl: >+ * workers/WorkerMessagingProxy.cpp: >+ (WebCore::WorkerMessagingProxy::workerContextDestroyedInternal): >+ > 2009-05-22 Pavel Feldman <pfeldman@chromium.org> > > Fix the call to editingCancelled to be this._editingCancelled, since >diff --git a/WebCore/workers/WorkerContext.cpp b/WebCore/workers/WorkerContext.cpp >index 5882ddb..38cc003 100644 >--- a/WebCore/workers/WorkerContext.cpp >+++ b/WebCore/workers/WorkerContext.cpp >@@ -106,6 +106,11 @@ WorkerLocation* WorkerContext::location() const > return m_location.get(); > } > >+void WorkerContext::close() >+{ >+ m_thread->stop(); >+} >+ > WorkerNavigator* WorkerContext::navigator() const > { > if (!m_navigator) >diff --git a/WebCore/workers/WorkerContext.h b/WebCore/workers/WorkerContext.h >index bfddef1..5b20fa4 100644 >--- a/WebCore/workers/WorkerContext.h >+++ b/WebCore/workers/WorkerContext.h >@@ -84,6 +84,7 @@ namespace WebCore { > // WorkerGlobalScope > WorkerContext* self() { return this; } > WorkerLocation* location() const; >+ void close(); > > // WorkerUtils > void importScripts(const Vector<String>& urls, const String& callerURL, int callerLine, ExceptionCode&); >diff --git a/WebCore/workers/WorkerContext.idl b/WebCore/workers/WorkerContext.idl >index d91c6e7..60568fb 100644 >--- a/WebCore/workers/WorkerContext.idl >+++ b/WebCore/workers/WorkerContext.idl >@@ -40,7 +40,7 @@ module threads { > attribute [Replaceable] WorkerContext self; > #endif > attribute [Replaceable] WorkerLocation location; >- // void close(); >+ void close(); > // attribute EventListener onclose; > // attribute EventListener onerror; > >diff --git a/WebCore/workers/WorkerMessagingProxy.cpp b/WebCore/workers/WorkerMessagingProxy.cpp >index 4b34658..07ee4f9 100644 >--- a/WebCore/workers/WorkerMessagingProxy.cpp >+++ b/WebCore/workers/WorkerMessagingProxy.cpp >@@ -296,6 +296,7 @@ void WorkerMessagingProxy::workerContextDestroyedInternal() > { > // WorkerContextDestroyedTask is always the last to be performed, so the proxy is not needed for communication > // in either side any more. However, the Worker object may still exist, and it assumes that the proxy exists, too. >+ m_askedToTerminate = true; > m_workerThread = 0; > if (!m_workerObject) > delete this;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
ap
:
review-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 25902
:
30590
|
30752