WebKit Bugzilla
Attachment 371645 Details for
Bug 197908
: resize-observer/element-leak.html fails on Windows platform
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197908-20190608115351.patch (text/plain), 5.39 KB, created by
cathiechen
on 2019-06-07 20:53:52 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
cathiechen
Created:
2019-06-07 20:53:52 PDT
Size:
5.39 KB
patch
obsolete
>Subversion Revision: 246225 >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index dcbc10915ea79df6893448a18c16acbbbb48cb81..55112b94aff2141ae141778c945fbdc2f4ce192f 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,17 @@ >+2019-06-07 Cathie Chen <cathiechen@igalia.com> >+ >+ resize-observer/element-leak.html fails on Windows platform >+ https://bugs.webkit.org/show_bug.cgi?id=197908 >+ >+ Reviewed by Ryosuke Niwa. >+ >+ We have conservative GC, the removed objects might keep alive for a while. Change the test case >+ to 20 iframes. This would make the result more accurate. >+ >+ * platform/win/TestExpectations: >+ * resize-observer/element-leak-expected.txt: >+ * resize-observer/element-leak.html: >+ > 2019-06-07 Truitt Savell <tsavell@apple.com> > > Unreviewed, rolling out r246138. >diff --git a/LayoutTests/platform/win/TestExpectations b/LayoutTests/platform/win/TestExpectations >index 87726f13c59b989d9a494f85ea2d2b0f9eb6b4cf..ae571b0255e327de553e5de237f5b16c362fb4f4 100644 >--- a/LayoutTests/platform/win/TestExpectations >+++ b/LayoutTests/platform/win/TestExpectations >@@ -4402,8 +4402,4 @@ webkit.org/b/195623 http/tests/cache/link-prefetch-main-resource-iframe.html [ S > > webkit.org/b/198112 http/tests/security/showModalDialog-sync-cross-origin-page-load2.html [ Skip ] > >-# The removed elements couldn't be released properly in Win. >-# The relevant bug is https://bugs.webkit.org/show_bug.cgi?id=197908 >-resize-observer/element-leak.html [ Skip ] >- > webkit.org/b/198679 fast/events/fire-mousedown-while-pressing-mouse-button.html [ Failure ] >diff --git a/LayoutTests/resize-observer/element-leak-expected.txt b/LayoutTests/resize-observer/element-leak-expected.txt >index a25f3dbe173a59b991b2355765501ea4638d8971..e4c10546912f5b16bb6600e5efc9e1b616b4daa2 100644 >--- a/LayoutTests/resize-observer/element-leak-expected.txt >+++ b/LayoutTests/resize-observer/element-leak-expected.txt >@@ -1,4 +1,4 @@ > > PASS ResizeObserver implemented >-PASS Test elements leak >+PASS Test elements leak in 20 iframes > >diff --git a/LayoutTests/resize-observer/element-leak.html b/LayoutTests/resize-observer/element-leak.html >index 316f2afcc6646e875424093d990f3c84f9b5eaba..8a38e1273ff43eb0f8e2eedb3eb9443307a3010f 100644 >--- a/LayoutTests/resize-observer/element-leak.html >+++ b/LayoutTests/resize-observer/element-leak.html >@@ -7,35 +7,73 @@ > <script src="../resources/gc.js"></script> > </head> > <body> >-<iframe id="testFrame" src="resources/element-leak-frame.html"></iframe> > <script> > >-test(_ => { >- assert_own_property(window, "ResizeObserver"); >-}, "ResizeObserver implemented"); >- >-promise_test(async () => { >+let iframeCount = 20; >+function prepareFrame() { > return new Promise(function(resolve, reject) { >+ let container = document.createElement("div"); >+ for (let i = 0; i < iframeCount; ++i) { >+ let iframe = document.createElement("iframe"); >+ iframe.style.height = "1px"; >+ iframe.src = "resources/element-leak-frame.html"; >+ container.appendChild(iframe); >+ } >+ document.body.appendChild(container); >+ >+ let notifyCount = 0; > window.addEventListener('message', event => { > switch(event.data) { > case 'Notified': >- var testFrame = document.getElementById("testFrame"); >- let frameDocumentIdentifier = internals.documentIdentifier(testFrame.contentDocument); >- testFrame.remove(); >- >- handle = setInterval(function() { >- gc(); >- if (internals && !internals.isDocumentAlive(frameDocumentIdentifier)) { >- clearInterval(handle); >- resolve(); >- } >- }, 10); >+ notifyCount++; >+ if (notifyCount == iframeCount) { >+ resolve("All iframes notified"); >+ } > break; > } >- }, false); >- setTimeout(() => reject("Test timed out"), 5000); >+ }, false); >+ }); >+} >+ >+function testElementLeak(resolve, reject) { >+ return new Promise(function(resolve, reject) { >+ let documentIdentifierArray = new Array(iframeCount); >+ let count = 0; >+ document.querySelectorAll('iframe').forEach(iframe => { >+ documentIdentifierArray[count++] = internals.documentIdentifier(iframe.contentDocument); >+ iframe.remove(); >+ }); >+ >+ let handle = setInterval(function() { >+ gc(); >+ documentIdentifierArray.forEach(function(frameDocumentIdentifier) { >+ if (internals && !internals.isDocumentAlive(frameDocumentIdentifier)) { >+ clearInterval(handle); >+ documentIdentifierArray = []; >+ resolve("Detected document release."); >+ } >+ }); >+ }, 10); >+ }); >+} >+ >+function startTest() { >+ return prepareFrame().then(function(){ >+ return testElementLeak().catch(function(result){ >+ assert_unreached(result); >+ }); >+ }).catch(function(result){ >+ assert_unreached(result); > }); >-}, 'Test elements leak'); >+} >+ >+test(_ => { >+ assert_own_property(window, "ResizeObserver"); >+}, "ResizeObserver implemented"); >+ >+promise_test(async () => { >+ return startTest(); >+}, 'Test elements leak in 20 iframes'); > > </script> > </body>
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 197908
:
369932
|
369933
|
369948
|
369954
|
370042
|
370045
|
371578
|
371595
|
371597
| 371645 |
371650