Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/docshell/test/browser/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 3 kB image not shown  

Quelle  browser_bug2004165.js

  Sprache: JAVA
 

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


"use strict";

const { TabStateFlusher } = ChromeUtils.importESModule(
  "resource:///modules/sessionstore/TabStateFlusher.sys.mjs"
);

// Go to example.com, do window.open() to obtain an initial about:blank with content principal
const ABOUT_BLANK_FROM_CONTENT_STATE = {
  entries: [
    {
      url: "about:blank",
      principalToInherit_base64: '{"1":{"0":"https://example.com/"}}',
      triggeringPrincipal_base64: '{"1":{"0":"https://example.com/"}}',
    },
  ],
  index: 1,
};

// Ensure ABOUT_BLANK_FROM_CONTENT_STATE matches a tab opened from a content document
add_task(async function test_about_blank_tab_state_matches_fixture() {
  const openerTab = await BrowserTestUtils.openNewForegroundTab(
    gBrowser,
    "https://example.com/"
  );

  const newTabPromise = BrowserTestUtils.waitForNewTab(
    gBrowser,
    "about:blank",
    true
  );
  await SpecialPowers.spawn(openerTab.linkedBrowser, [], () => {
    content.open("about:blank");
  });
  const aboutBlankTab = await newTabPromise;

  await TabStateFlusher.flush(aboutBlankTab.linkedBrowser);
  const state = JSON.parse(SessionStore.getTabState(aboutBlankTab));

  is(state.entries.length, 1"Got one SH entry");
  const actualEntryFixture = {
    url: state.entries[0].url,
    principalToInherit_base64: state.entries[0].principalToInherit_base64,
    triggeringPrincipal_base64: state.entries[0].triggeringPrincipal_base64,
  };
  Assert.deepEqual(
    actualEntryFixture,
    ABOUT_BLANK_FROM_CONTENT_STATE.entries[0]
  );

  BrowserTestUtils.removeTab(aboutBlankTab);
  BrowserTestUtils.removeTab(openerTab);
});

// Crashtest for bug 2004165 and bug 2005202
add_task(
  async function test_restore_initial_about_blank_with_content_principal() {
    // Need to restore a whole window such that that restoring the about:blank
    // counts as the initial load and hits the synchronous path.
    const win = await BrowserTestUtils.openNewBrowserWindow();

    // browserLoaded doesn't work reliably for a synchronous load in a different process
    let restored = BrowserTestUtils.waitForEvent(
      win.gBrowser.tabContainer,
      "SSTabRestored"
    );

    const windowState = {
      windows: [
        {
          tabs: [ABOUT_BLANK_FROM_CONTENT_STATE],
          selected: 1,
        },
      ],
      selectedWindow: 1,
    };
    SessionStore.setWindowState(win, JSON.stringify(windowState), true);
    await restored;

    ok(true"Did not crash");

    const tab = win.gBrowser.selectedTab;

    // Sanity check the restored tab
    await SpecialPowers.spawn(tab.linkedBrowser, [], function () {
      let principal = content.document.nodePrincipal;
      // The crash occured in the synchronous load path, so verify it was taken.
      // That should be equivalent to the document being initial and committed.
      const isInitialCommitted =
        content.document.isInitialDocument &&
        !content.document.isUncommittedInitialDocument;
      // XXX The initial fix for bug 2004165 is to skip the sync path. So
      // assert the opposite till a better fix is implemented. (bug 2005205)
      Assert.ok(
        !isInitialCommitted,
        "about:blank was not restored as initial document"
      );
      Assert.ok(
        principal.isContentPrincipal,
        "Restored about:blank document has a content principal"
      );
      Assert.equal(
        principal.origin,
        "https://example.com",
        "Restored about:blank inherits the origin from https://example.com/"
      );
    });

    BrowserTestUtils.removeTab(tab);
  }
);

Messung V0.5 in Prozent
C=91 H=95 G=92

¤ Dauer der Verarbeitung: 0.28 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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.