Title: [203188] trunk/LayoutTests
Revision
203188
Author
[email protected]
Date
2016-07-13 14:14:28 -0700 (Wed, 13 Jul 2016)

Log Message

Add test verifying detached iframes cannot set IDB values
https://bugs.webkit.org/show_bug.cgi?id=159736

Patch by Alex Christensen <[email protected]> on 2016-07-13
Reviewed by Brady Eidson.

We match Chrome but not Firefox in this case.

* storage/indexeddb/detached-iframe-expected.txt: Added.
* storage/indexeddb/detached-iframe.html: Added.
* storage/indexeddb/resources/detached-iframe.html: Added.
* storage/indexeddb/resources/detached-iframe.js: Added.
(done):
(unexpectedErrorCallback):
(getRequestCallback):
(dbOpenedSecondTime):
(getValueFromIDB):
(makeDetachedFrame):
(prepareDatabase):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (203187 => 203188)


--- trunk/LayoutTests/ChangeLog	2016-07-13 20:52:21 UTC (rev 203187)
+++ trunk/LayoutTests/ChangeLog	2016-07-13 21:14:28 UTC (rev 203188)
@@ -1,3 +1,24 @@
+2016-07-13  Alex Christensen  <[email protected]>
+
+        Add test verifying detached iframes cannot set IDB values
+        https://bugs.webkit.org/show_bug.cgi?id=159736
+
+        Reviewed by Brady Eidson.
+        
+        We match Chrome but not Firefox in this case.
+
+        * storage/indexeddb/detached-iframe-expected.txt: Added.
+        * storage/indexeddb/detached-iframe.html: Added.
+        * storage/indexeddb/resources/detached-iframe.html: Added.
+        * storage/indexeddb/resources/detached-iframe.js: Added.
+        (done):
+        (unexpectedErrorCallback):
+        (getRequestCallback):
+        (dbOpenedSecondTime):
+        (getValueFromIDB):
+        (makeDetachedFrame):
+        (prepareDatabase):
+
 2016-07-12  Ryosuke Niwa  <[email protected]>
 
         REGRESSION(r202953): Clicking on input[type=file] doesn't open a file picker

Added: trunk/LayoutTests/storage/indexeddb/detached-iframe-expected.txt (0 => 203188)


--- trunk/LayoutTests/storage/indexeddb/detached-iframe-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/detached-iframe-expected.txt	2016-07-13 21:14:28 UTC (rev 203188)
@@ -0,0 +1,5 @@
+ALERT: original value
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/storage/indexeddb/detached-iframe.html (0 => 203188)


--- trunk/LayoutTests/storage/indexeddb/detached-iframe.html	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/detached-iframe.html	2016-07-13 21:14:28 UTC (rev 203188)
@@ -0,0 +1,16 @@
+<html>
+<head>
+<script src=""
+<script src=""
+<script>
+function detachIframe() {
+    var testIframe = document.getElementById('testIframe');
+    testIframe.parentNode.remove(testIframe);
+}
+</script>
+</head>
+<body>
+<script src=""
+<iframe src="" id="testIframe"></iframe>
+</body>
+</html>

Added: trunk/LayoutTests/storage/indexeddb/resources/detached-iframe.html (0 => 203188)


--- trunk/LayoutTests/storage/indexeddb/resources/detached-iframe.html	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/detached-iframe.html	2016-07-13 21:14:28 UTC (rev 203188)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<script>
+
+function databaseOpened(event) {
+    var getRequest = event.target.result.transaction(["foo"], "readwrite").objectStore("foo").put("value from detached iframe", "key");
+    getRequest._onsuccess_ = getRequestCallback;
+    getRequest._onerror_ = unexpectedErrorCallback;
+}
+
+function openDatabase(event) {
+    parent.detachIframe();
+    var openRequest = window.indexedDB.open("detached-iframe.html");
+    openRequest._onsuccess_ = databaseOpened;
+    openRequest._onblocked_ = openDatabase;
+}
+
+window.addEventListener("message", openDatabase, false);
+
+</script>

Added: trunk/LayoutTests/storage/indexeddb/resources/detached-iframe.js (0 => 203188)


--- trunk/LayoutTests/storage/indexeddb/resources/detached-iframe.js	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/detached-iframe.js	2016-07-13 21:14:28 UTC (rev 203188)
@@ -0,0 +1,35 @@
+indexedDBTest(prepareDatabase);
+
+function done() { finishJSTest(); }
+
+function unexpectedErrorCallback() { alert("unexpected error"); done(); }
+
+function getRequestCallback(event) {
+    alert(event.target.result);
+    done();
+}
+
+function dbOpenedSecondTime(event) {
+    var getRequest = event.target.result.transaction(["foo"], "readonly").objectStore("foo").get("key");
+    getRequest._onsuccess_ = getRequestCallback;
+    getRequest._onerror_ = unexpectedErrorCallback;
+}
+
+function getValueFromIDB() {
+    var openRequest = window.indexedDB.open(dbname);
+    openRequest._onsuccess_ = dbOpenedSecondTime;
+    openRequest._onblocked_ = unexpectedErrorCallback;
+}
+
+function makeDetachedFrame() {
+    var iframe = document.getElementById('testIframe');
+    iframe.contentWindow.postMessage('value1inDB', '*');
+
+	setTimeout(getValueFromIDB, 500);
+}
+
+function prepareDatabase(event) {
+    var request = event.target.result.createObjectStore("foo").add("original value", "key");
+    request._onsuccess_ = makeDetachedFrame;
+    request._onerror_ = unexpectedErrorCallback;
+}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to