summaryrefslogtreecommitdiffstats
path: root/dom/crypto/test/test_indexedDB.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/crypto/test/test_indexedDB.html')
-rw-r--r--dom/crypto/test/test_indexedDB.html49
1 files changed, 49 insertions, 0 deletions
diff --git a/dom/crypto/test/test_indexedDB.html b/dom/crypto/test/test_indexedDB.html
new file mode 100644
index 0000000000..ba5a91c6d4
--- /dev/null
+++ b/dom/crypto/test/test_indexedDB.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Bug 1188750 - WebCrypto must ensure NSS is initialized before deserializing</title>
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"?>
+</head>
+<body>
+ <script type="application/javascript">
+ /*
+ * Bug 1188750 - The WebCrypto API must ensure that NSS was initialized
+ * for the current process before trying to deserialize objects like
+ * CryptoKeys from e.g. IndexedDB.
+ */
+ "use strict";
+
+ const TEST_URI = "https://example.com/tests/" +
+ "dom/crypto/test/file_indexedDB.html";
+
+ function createFrame() {
+ let frame = document.createElement("iframe");
+ frame.src = TEST_URI;
+
+ return new Promise(resolve => {
+ addEventListener("message", event => {
+ is(event.source.frameElement, frame,
+ "Message must come from the correct iframe");
+ resolve([frame, event.data]);
+ }, { once: true });
+
+ document.body.appendChild(frame);
+ });
+ }
+
+ add_task(async function() {
+ // Load the test app once, to generate and store keys.
+ let [frame, result] = await createFrame();
+ is(result, "ok", "stored keys successfully");
+ frame.remove();
+
+ // Load the test app again to retrieve stored keys.
+ let [recFrame, recResult] = await createFrame();
+ is(recResult, "ok", "retrieved keys successfully");
+ recFrame.remove();
+ });
+ </script>
+</body>
+</html>