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