WebKit Bugzilla
Attachment 349155 Details for
Bug 189413
: Tests checking document GC in case of ActiveDOMObjects are flaky
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-189413-20180907103014.patch (text/plain), 6.89 KB, created by
youenn fablet
on 2018-09-07 10:30:15 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2018-09-07 10:30:15 PDT
Size:
6.89 KB
patch
obsolete
>Subversion Revision: 235741 >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 2afba80b37f47df48e5293115175694c356b6348..cf774301b8c137d2dc15123cf36f84a8d1ef9f65 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,23 @@ >+2018-09-07 Youenn Fablet <youenn@apple.com> >+ >+ Tests checking document GC in case of ActiveDOMObjects are flaky >+ https://bugs.webkit.org/show_bug.cgi?id=189413 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Instead of calling parent.done() use postMessage. >+ The assumption is that GC might not always collect 'parent' as it is in the call stack. >+ With postMessage, no flakiness is observed locally. >+ Added a related MediaDevices test that was missing from r235438. >+ >+ * http/tests/IndexedDB/collect-IDB-objects.https.html: >+ * http/tests/IndexedDB/resources/myidbframe.htm: >+ * http/tests/media/clearkey/collect-webkit-media-session.html: >+ * http/tests/media/clearkey/resources/mywebkitmediasessionframe.htm: >+ * http/tests/media/media-stream/collect-media-devices.https-expected.txt: Added. >+ * http/tests/media/media-stream/collect-media-devices.https.html: Added. >+ * http/tests/media/media-stream/resources/mymediadevicesframe.htm: Added. >+ > 2018-09-06 Miguel Gomez <magomez@igalia.com> > > Unreviewed GTK+ gardening after r235732. >diff --git a/LayoutTests/http/tests/IndexedDB/collect-IDB-objects.https.html b/LayoutTests/http/tests/IndexedDB/collect-IDB-objects.https.html >index 3c283de5dcc7e6fb0781f6a993c8e6972ba15412..84ca196d2c480af662ade079b7edcba0002a8be7 100644 >--- a/LayoutTests/http/tests/IndexedDB/collect-IDB-objects.https.html >+++ b/LayoutTests/http/tests/IndexedDB/collect-IDB-objects.https.html >@@ -30,11 +30,14 @@ async function done() > > await waitFor(50); > } >- } finally { > rejectCallback("Test failed"); >+ } catch (e) { >+ rejectCallback("Test failed: exception " + e); > } > } > >+window.addEventListener("message", done); >+ > promise_test((test) => { > if (!window.internals) > rejectCallback("Test require internals API"); >diff --git a/LayoutTests/http/tests/IndexedDB/resources/myidbframe.htm b/LayoutTests/http/tests/IndexedDB/resources/myidbframe.htm >index f907f7297af960f62aff218555911796f4bf01ea..f6c136579ed65408cd80881587e5f2c734dfec7f 100644 >--- a/LayoutTests/http/tests/IndexedDB/resources/myidbframe.htm >+++ b/LayoutTests/http/tests/IndexedDB/resources/myidbframe.htm >@@ -17,7 +17,7 @@ createdb(t).onupgradeneeded = function(e) { > .onsuccess = t.step_func(function(e) > { > t.done(); >- parent.done(); >+ parent.postMessage("done", "*"); > }); > }); > }; >diff --git a/LayoutTests/http/tests/media/clearkey/collect-webkit-media-session.html b/LayoutTests/http/tests/media/clearkey/collect-webkit-media-session.html >index 515ea7735f3ee6cb2b53164d53706faeb41e7163..644d8e96917a53edc04cf91c7270b2652f06a91e 100644 >--- a/LayoutTests/http/tests/media/clearkey/collect-webkit-media-session.html >+++ b/LayoutTests/http/tests/media/clearkey/collect-webkit-media-session.html >@@ -30,11 +30,14 @@ async function done() > > await waitFor(50); > } >- } finally { > rejectCallback("Test failed"); >+ } catch (e) { >+ rejectCallback("Test failed: exception " + e); > } > } > >+window.addEventListener("message", done); >+ > promise_test((test) => { > if (!window.internals) > rejectCallback("Test require internals API"); >diff --git a/LayoutTests/http/tests/media/clearkey/resources/mywebkitmediasessionframe.htm b/LayoutTests/http/tests/media/clearkey/resources/mywebkitmediasessionframe.htm >index acf55f5d043a15acad0b5469fb1b5c8518d6fbe1..5bed0c3b2b3a2efb9dfb1795a84d22cf3467a80a 100644 >--- a/LayoutTests/http/tests/media/clearkey/resources/mywebkitmediasessionframe.htm >+++ b/LayoutTests/http/tests/media/clearkey/resources/mywebkitmediasessionframe.htm >@@ -22,7 +22,7 @@ > } > > session = video.webkitKeys.createSession('application/x-mpegurl', event.initData); >- parent.done(); >+ parent.postMessage("done", "*"); > } > </script> > </head> >diff --git a/LayoutTests/http/tests/media/media-stream/collect-media-devices.https-expected.txt b/LayoutTests/http/tests/media/media-stream/collect-media-devices.https-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..a0d67a3d33c79f7e4976244b5bd9ad5151821898 >--- /dev/null >+++ b/LayoutTests/http/tests/media/media-stream/collect-media-devices.https-expected.txt >@@ -0,0 +1,4 @@ >+ >+ >+PASS Ensure that the frame's document get collected after being stopped while using MediaDevices >+ >diff --git a/LayoutTests/http/tests/media/media-stream/collect-media-devices.https.html b/LayoutTests/http/tests/media/media-stream/collect-media-devices.https.html >new file mode 100644 >index 0000000000000000000000000000000000000000..f33c4e135a3ccad391125978e50940db50fe7f06 >--- /dev/null >+++ b/LayoutTests/http/tests/media/media-stream/collect-media-devices.https.html >@@ -0,0 +1,48 @@ >+<!DOCTYPE html> >+<meta charset="utf-8"> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script> >+function waitFor(duration) >+{ >+ return new Promise((resolve) => setTimeout(resolve, duration)); >+} >+ >+var resolveCallback, rejectCallback; >+var promise = new Promise((resolve, reject) => { >+ resolveCallback = resolve; >+ rejectCallback = reject; >+}); >+ >+async function done() >+{ >+ try { >+ const frameIdentifier = internals.documentIdentifier(iframe.contentDocument); >+ iframe.src = "non-existent-frame"; >+ let counter = 0; >+ while (++counter < 50) { >+ if (!internals.isDocumentAlive(frameIdentifier)) { >+ resolveCallback(); >+ return; >+ } >+ if (window.GCController) >+ GCController.collect(); >+ >+ await waitFor(50); >+ } >+ rejectCallback("Test failed"); >+ } catch (e) { >+ rejectCallback("Test failed: exception " + e); >+ } >+} >+ >+window.addEventListener("message", done); >+ >+promise_test((test) => { >+ if (!window.internals) >+ rejectCallback("Test require internals API"); >+ return promise; >+}, "Ensure that the frame's document get collected after being stopped while using MediaDevices"); >+ >+</script> >+<iframe src="resources/mymediadevicesframe.htm" id="iframe"></iframe> >diff --git a/LayoutTests/http/tests/media/media-stream/resources/mymediadevicesframe.htm b/LayoutTests/http/tests/media/media-stream/resources/mymediadevicesframe.htm >new file mode 100644 >index 0000000000000000000000000000000000000000..fca55a0d6ad4d7b2bb8e49d80256eeed1ce55fa6 >--- /dev/null >+++ b/LayoutTests/http/tests/media/media-stream/resources/mymediadevicesframe.htm >@@ -0,0 +1,5 @@ >+<!DOCTYPE html> >+<script> >+navigator.mediaDevices.ondevicechange = () => {}; >+parent.postMessage("done", "*"); >+</script>
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
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 189413
:
349155
|
350464