dom/browser-element/mochitest/browserElement_XFrameOptionsAllowFrom.js

Wed, 31 Dec 2014 06:55:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:50 +0100
changeset 2
7e26c7da4463
permissions
-rw-r--r--

Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2

     1 /* Any copyright is dedicated to the public domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 // Bug 690168 - Support Allow-From notation for X-Frame-Options header.
     5 "use strict";
     7 SimpleTest.waitForExplicitFinish();
     8 browserElementTestHelpers.setEnabledPref(true);
     9 browserElementTestHelpers.addPermission();
    11 var initialScreenshotArrayBuffer = null;
    13 function arrayBuffersEqual(a, b) {
    14   var x = new Int8Array(a);
    15   var y = new Int8Array(b);
    16   if (x.length != y.length) {
    17     return false;
    18   }
    20   for (var i = 0; i < x.length; i++) {
    21     if (x[i] != y[i]) {
    22       return false;
    23     }
    24   }
    26   return true;
    27 }
    29 function runTest() {
    30   var count = 0;
    32   var iframe = document.createElement('iframe');
    33   SpecialPowers.wrap(iframe).mozbrowser = true;
    34   iframe.height = '1000px';
    36   // The innermost page we load will fire an alert when it successfully loads.
    37   iframe.addEventListener('mozbrowsershowmodalprompt', function(e) {
    38     switch (e.detail.message) {
    39     case 'step 1':
    40       // Make the page wait for us to unblock it (which we do after we finish
    41       // taking the screenshot).
    42       e.preventDefault();
    44       iframe.getScreenshot(1000, 1000).onsuccess = function(sshot) {
    45         var fr = new FileReader();
    46         fr.onloadend = function() {
    47           if (initialScreenshotArrayBuffer == null)
    48             initialScreenshotArrayBuffer = fr.result;
    49           e.detail.unblock();
    50         };
    51         fr.readAsArrayBuffer(sshot.target.result);
    52       };
    53       break;
    54     case 'step 2':
    55       ok(false, 'cross origin page loaded');
    56       break;
    57     case 'finish':
    58       // The page has now attempted to load the X-Frame-Options page; take
    59       // another screenshot.
    60       iframe.getScreenshot(1000, 1000).onsuccess = function(sshot) {
    61         var fr = new FileReader();
    62         fr.onloadend = function() {
    63           ok(arrayBuffersEqual(fr.result, initialScreenshotArrayBuffer),
    64              "Screenshots should be identical");
    65           SimpleTest.finish();
    66         };
    67         fr.readAsArrayBuffer(sshot.target.result);
    68       };
    69       break;
    70     }
    71   });
    73   document.body.appendChild(iframe);
    75   iframe.src = 'http://example.com/tests/dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.html';
    76 }
    78 addEventListener('testready', runTest);

mercurial