Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  test_bug375314-2.html   Sprache: HTML

 
 products/Sources/formale Sprachen/C/Firefox/dom/base/test/test_bug375314-2.html


<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=375314
-->

<head>
  <title>Test for Bug 375314</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=375314">Mozilla Bug 375314</a>
<p id="display"></p>
<div id="content" style="display: none">

</div>
<pre id="test">
<script class="testbody" type="text/javascript">

/** Test for Bug 375314 **/

var lastContentType = -1;
const testURL = window.location.href + "/this/is/the/test/url";

function createChromeScript() {
  /* eslint-env mozilla/chrome-script */
  var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(
    Ci.nsICategoryManager
  );

  const POLICYNAME = "@mozilla.org/testpolicy;1";
  const POLICYID = Components.ID("{6cc95ef3-40e1-4d59-87f0-86f100373227}");

  var policy = {
    // nsISupports implementation
    QueryInterface: ChromeUtils.generateQI([
       "nsIFactory",
       "nsIContentPolicy",
    ]),

    // nsIFactory implementation
    createInstance(iid) {
      return this.QueryInterface(iid);
    },

    // nsIContentPolicy implementation
    shouldLoad(contentLocation, loadInfo) {
      if (contentLocation.asciiSpec === "http://mochi.test:8888/tests/dom/base/test/test_bug375314-2.html/this/is/the/test/url") {
        sendAsyncMessage("loadBlocked", { policyType: loadInfo.externalContentPolicyType});
        return Ci.nsIContentPolicy.REJECT_REQUEST;
      }
      return Ci.nsIContentPolicy.ACCEPT;
    },

    shouldProcess(contentLocation, loadInfo) {
      return Ci.nsIContentPolicy.ACCEPT;
    }
  };

  // Register content policy
  var componentManager = Components.manager.QueryInterface(
    Ci.nsIComponentRegistrar
  );

  componentManager.registerFactory(
    POLICYID,
    "Test content policy",
    POLICYNAME,
    policy
  );
  categoryManager.addCategoryEntry(
    "content-policy",
    POLICYNAME,
    POLICYNAME,
    false,
    true
  );

  addMessageListener("shutdown", _ => {
    categoryManager.deleteCategoryEntry(
      "content-policy",
      POLICYNAME,
      false
    );
    componentManager.unregisterFactory(POLICYID, policy);
  });

  // Adding a new category dispatches an event to update
  // caches, so we need to also dispatch an event to make
  // sure we don't start the load until after that happens.
  Services.tm.dispatchToMainThread(() => {
    sendAsyncMessage("setupComplete");
  });
}

// Request creating functions

function requestDocument() {
  // GeckoView shows an error page for CSP errors, which breaks this test, so just skip in that case.
  try {
    if (!SpecialPowers.Cc["@mozilla.org/android/bridge;1"].getService(SpecialPowers.Ci.nsIGeckoViewBridge).isFennec) {
      return false;
    }
  } catch (e){}

  top.location.href = testURL;
  return true;
}

function requestSubdocument() {
  var content = $("content");

  var frame = document.createElement("iframe");
  frame.setAttribute("src", testURL);
  content.appendChild(frame);
}

function requestObject() {
  var content = $("content");

  var object = document.createElement("embed");
  object.setAttribute("src", testURL);
  content.appendChild(object);
}

add_task(async function() {
  let chromeScript = SpecialPowers.loadChromeScript(createChromeScript);
  await chromeScript.promiseOneMessage("setupComplete");

  if (requestDocument()) {
    let result = await chromeScript.promiseOneMessage("loadBlocked");
    is(result.policyType, SpecialPowers.Ci.nsIContentPolicy.TYPE_DOCUMENT, "Content policies triggered for TYPE_DOCUMENT");
  }

  requestSubdocument();
  result = await chromeScript.promiseOneMessage("loadBlocked");
  is(result.policyType, SpecialPowers.Ci.nsIContentPolicy.TYPE_SUBDOCUMENT, "Content policies triggered for TYPE_SUBDOCUMENT");

  requestObject();
  result = await chromeScript.promiseOneMessage("loadBlocked");
  is(result.policyType, SpecialPowers.Ci.nsIContentPolicy.TYPE_OBJECT, "Content policies triggered for TYPE_OBJECT");

  chromeScript.sendAsyncMessage("shutdown");
  chromeScript.destroy();
});

</script>
</pre>
</body>
</html>


Messung V0.5
C=99 H=100 G=99

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge