dom/u2f/tests/test_polyfill_interaction.html
author ffxbld <ffxbld@mozilla.com>
Mon, 03 Aug 2020 10:13:16 +0000
changeset 605813 0e0faa02ce530adccb4b358a56bca24d26548853
parent 536485 617d77613a30d7feab1621cd36cf6d29d8e08544
permissions -rw-r--r--
No Bug, mozilla-release repo-update remote-settings - a=repo-update r=RyanVM Differential Revision: https://phabricator.services.mozilla.com/D85739

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>Test that our U2F implementation interacts OK with the Google polyfill</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
  <script>
    // We want to run our test script at toplevel, because that's where the
    // polyfill runs.  But we also need to wait until the pref is set, so go
    // ahead and use a dynamically created script element.
    SimpleTest.waitForExplicitFinish();
    SpecialPowers.pushPrefEnv({ "set": [["security.webauth.u2f", true]] },
                              doTest);

    function doTest() {
        // Need a new global for the pref to really take effect.
        var iframe = document.createElement("iframe");
        document.documentElement.appendChild(iframe);
        var win = iframe.contentWindow;
        var s = document.createElement("script");
        s.textContent = `
          'use strict';
          try {
            var savedU2f = u2f;
            var savedRegister = savedU2f.register;
            var savedSign = savedU2f.sign;
            var u2f = u2f || {};
            u2f.register = function() {};
            u2f.sign = function() {};
            parent.is(u2f, savedU2f, "Should still have the right object");
            parent.is(u2f.register, savedRegister, "Should not allow overriding 'sign'");
            parent.is(u2f.sign, savedSign, "Should not allow overriding 'sign'");
          } catch (e) {
            parent.ok(false, "Threw an exception: " + e);
          } finally {
            parent.SimpleTest.finish();
          }
        `;
        win.document.documentElement.appendChild(s);
    }
  </script>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</html>