Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/browser/components/sessionstore/test/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  browser_637020.js   Sprache: JAVA

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


const TEST_URL =
  "http://mochi.test:8888/browser/browser/components/" +
  "sessionstore/test/browser_637020_slow.sjs";

const TEST_STATE = {
  windows: [
    {
      tabs: [
        { entries: [{ url: "about:mozilla", triggeringPrincipal_base64 }] },
        { entries: [{ url: "about:robots", triggeringPrincipal_base64 }] },
      ],
    },
    {
      tabs: [
        { entries: [{ url: TEST_URL, triggeringPrincipal_base64 }] },
        { entries: [{ url: TEST_URL, triggeringPrincipal_base64 }] },
      ],
    },
  ],
};

/**
 * This test ensures that windows that have just been restored will be marked
 * as dirty, otherwise _getCurrentState() might ignore them when collecting
 * state for the first time and we'd just save them as empty objects.
 *
 * The dirty state acts as a cache to not collect data from all windows all the
 * time, so at the beginning, each window must be dirty so that we collect
 * their state at least once.
 */


add_task(async function test() {
  // Wait until the new window has been opened.
  let promiseWindow = new Promise(resolve => {
    Services.obs.addObserver(function onOpened(subject) {
      Services.obs.removeObserver(onOpened, "domwindowopened");
      resolve(subject);
    }, "domwindowopened");
  });

  // Set the new browser state that will
  // restore a window with two slowly loading tabs.
  let backupState = SessionStore.getBrowserState();
  SessionStore.setBrowserState(JSON.stringify(TEST_STATE));
  let win = await promiseWindow;
  let restoring = promiseWindowRestoring(win);
  let restored = promiseWindowRestored(win);
  await restoring;
  await restored;

  // The window has now been opened. Check the state that is returned,
  // this should come from the cache while the window isn't restored, yet.
  info("the window has been opened");
  checkWindows();

  // The history has now been restored and the tabs are loading. The data must
  // now come from the window, if it's correctly been marked as dirty before.
  await new Promise(resolve => whenDelayedStartupFinished(win, resolve));
  info("the delayed startup has finished");
  checkWindows();

  // Cleanup.
  await BrowserTestUtils.closeWindow(win);
  await promiseBrowserState(backupState);
});

function checkWindows() {
  let state = JSON.parse(SessionStore.getBrowserState());
  is(state.windows[0].tabs.length, 2, "first window has two tabs");
  is(state.windows[1].tabs.length, 2, "second window has two tabs");
}

Messung V0.5
C=86 H=93 G=89

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