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


Quelle  browser_net_block.js   Sprache: JAVA

 
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */


"use strict";

/**
 * Test blocking and unblocking a request.
 */


add_task(async function () {
  const { monitor, tab } = await initNetMonitor(HTTPS_SIMPLE_URL, {
    requestCount: 1,
  });
  info("Starting test... ");

  const { document, store, windowRequire } = monitor.panelWin;
  const { getSelectedRequest } = windowRequire(
    "devtools/client/netmonitor/src/selectors/index"
  );
  const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
  store.dispatch(Actions.batchEnable(false));

  // Reload to have one request in the list
  let waitForEvents = waitForNetworkEvents(monitor, 1);
  await navigateTo(HTTPS_SIMPLE_URL);
  await waitForEvents;

  // Capture normal request
  let normalRequestState;
  let normalRequestSize;
  let normalHeadersSectionSize;
  let normalFirstHeaderSectionTitle;
  {
    // Wait for the response and request header sections
    const waitForHeaderSections = waitForDOM(
      document,
      "#headers-panel .accordion-item",
      2
    );

    const firstRequest = document.querySelectorAll(".request-list-item")[0];
    EventUtils.sendMouseEvent({ type: "mousedown" }, firstRequest);

    await waitForHeaderSections;

    const headerSections = document.querySelectorAll(
      "#headers-panel .accordion-item"
    );
    normalRequestState = getSelectedRequest(store.getState());
    normalRequestSize = firstRequest.querySelector(
      ".requests-list-transferred"
    ).textContent;
    normalHeadersSectionSize = headerSections.length;
    normalFirstHeaderSectionTitle = headerSections[0].querySelector(
      ".accordion-header-label"
    ).textContent;

    info("Captured normal request");

    // Mark as blocked
    EventUtils.sendMouseEvent({ type: "contextmenu" }, firstRequest);
    const onRequestBlocked = waitForDispatch(
      store,
      "REQUEST_BLOCKING_UPDATE_COMPLETE"
    );

    await selectContextMenuItem(monitor, "request-list-context-block-url");

    info("Wait for selected request to be blocked");
    await onRequestBlocked;
    info("Selected request is now blocked");
  }

  // Reload to have one request in the list
  info("Reloading to check block");
  // We can't use the normal waiting methods because a canceled request won't send all
  // the extra update packets.
  waitForEvents = waitForNetworkEvents(monitor, 1);
  tab.linkedBrowser.reload();
  await waitForEvents;

  // Capture blocked request, then unblock
  let blockedRequestState;
  let blockedRequestSize;
  let blockedHeadersSectionSize;
  let blockedFirstHeaderSectionTitle;
  {
    const waitForHeaderSections = waitForDOM(
      document,
      "#headers-panel .accordion-item",
      1
    );

    const firstRequest = document.querySelectorAll(".request-list-item")[0];
    EventUtils.sendMouseEvent({ type: "mousedown" }, firstRequest);

    await waitForHeaderSections;

    const headerSections = document.querySelectorAll(
      "#headers-panel .accordion-item"
    );
    blockedRequestSize = firstRequest.querySelector(
      ".requests-list-transferred"
    ).textContent;
    blockedRequestState = getSelectedRequest(store.getState());
    blockedHeadersSectionSize = headerSections.length;
    blockedFirstHeaderSectionTitle = headerSections[0].querySelector(
      ".accordion-header-label"
    ).textContent;

    info("Captured blocked request");

    // Mark as unblocked
    EventUtils.sendMouseEvent({ type: "contextmenu" }, firstRequest);
    const onRequestUnblocked = waitForDispatch(
      store,
      "REQUEST_BLOCKING_UPDATE_COMPLETE"
    );

    await selectContextMenuItem(monitor, "request-list-context-unblock-url");

    info("Wait for selected request to be unblocked");
    await onRequestUnblocked;
    info("Selected request is now unblocked");
  }

  // Reload to have one request in the list
  info("Reloading to check unblock");
  waitForEvents = waitForNetworkEvents(monitor, 1);
  await reloadBrowser();
  await waitForEvents;

  // Capture unblocked request
  let unblockedRequestState;
  let unblockedRequestSize;
  {
    const firstRequest = document.querySelectorAll(".request-list-item")[0];
    unblockedRequestSize = firstRequest.querySelector(
      ".requests-list-transferred"
    ).textContent;
    EventUtils.sendMouseEvent({ type: "mousedown" }, firstRequest);
    unblockedRequestState = getSelectedRequest(store.getState());
    info("Captured unblocked request");
  }

  ok(!normalRequestState.blockedReason, "Normal request is not blocked");
  ok(!normalRequestSize.includes("Blocked"), "Normal request has a size");
  Assert.equal(normalHeadersSectionSize, 2, "Both header sections are showing");
  ok(
    normalFirstHeaderSectionTitle.includes("Response"),
    "The response header section is visible for normal requests"
  );

  ok(blockedRequestState.blockedReason, "Blocked request is blocked");
  ok(
    blockedRequestSize.includes("Blocked"),
    "Blocked request shows reason as size"
  );
  Assert.equal(
    blockedHeadersSectionSize,
    1,
    "Only one header section is showing"
  );
  ok(
    blockedFirstHeaderSectionTitle.includes("Request"),
    "The response header section is not visible for blocked requests"
  );

  ok(!unblockedRequestState.blockedReason, "Unblocked request is not blocked");
  ok(!unblockedRequestSize.includes("Blocked"), "Unblocked request has a size");

  return teardown(monitor);
});

Messung V0.5
C=96 H=76 G=86

¤ Dauer der Verarbeitung: 0.12 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