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


Quelle  browser_originattributes.js   Sprache: JAVA

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

"use strict";

const USER_CONTEXTS = ["default""personal""work"];

const COOKIE_NAMES = ["cookie0""cookie1""cookie2"];

const TEST_URL =
  "http://example.com/browser/netwerk/cookie/test/browser/file_empty.html";

// opens `uri' in a new tab with the provided userContextId and focuses it.
// returns the newly opened tab
async function openTabInUserContext(uri, userContextId) {
  // open the tab in the correct userContextId
  let tab = BrowserTestUtils.addTab(gBrowser, uri, { userContextId });

  // select tab and make sure its browser is focused
  gBrowser.selectedTab = tab;
  tab.ownerGlobal.focus();

  let browser = gBrowser.getBrowserForTab(tab);
  // wait for tab load
  await BrowserTestUtils.browserLoaded(browser);

  return { tab, browser };
}

add_setup(async function () {
  // make sure userContext is enabled.
  await new Promise(resolve => {
    SpecialPowers.pushPrefEnv(
      { set: [["privacy.userContext.enabled"true]] },
      resolve
    );
  });
});

add_task(async function test() {
  // load the page in 3 different contexts and set a cookie
  // which should only be visible in that context
  for (let userContextId of Object.keys(USER_CONTEXTS)) {
    // open our tab in the given user context
    let { tab, browser } = await openTabInUserContext(TEST_URL, userContextId);

    await SpecialPowers.spawn(
      browser,
      [{ names: COOKIE_NAMES, value: USER_CONTEXTS[userContextId] }],
      function (opts) {
        for (let name of opts.names) {
          content.document.cookie = name + "=" + opts.value;
        }
      }
    );

    // remove the tab
    gBrowser.removeTab(tab);
  }

  let expectedValues = USER_CONTEXTS.slice(0);
  await checkCookies(expectedValues, "before removal");

  // remove cookies that belongs to user context id #1
  Services.cookies.removeCookiesWithOriginAttributes(
    JSON.stringify({ userContextId: 1 })
  );

  expectedValues[1] = undefined;
  await checkCookies(expectedValues, "after removal");
});

async function checkCookies(expectedValues, time) {
  for (let userContextId of Object.keys(expectedValues)) {
    let cookiesFromTitle = await getCookiesFromJS(userContextId);
    let cookiesFromManager = getCookiesFromManager(userContextId);

    let expectedValue = expectedValues[userContextId];
    for (let name of COOKIE_NAMES) {
      is(
        cookiesFromTitle[name],
        expectedValue,
        `User context ${userContextId}: ${name} should be correct from title ${time}`
      );
      is(
        cookiesFromManager[name],
        expectedValue,
        `User context ${userContextId}: ${name} should be correct from manager ${time}`
      );
    }
  }
}

function getCookiesFromManager(userContextId) {
  let cookies = {};
  let allCookies = Services.cookies.getCookiesWithOriginAttributes(
    JSON.stringify({ userContextId })
  );
  for (let cookie of allCookies) {
    cookies[cookie.name] = cookie.value;
  }
  return cookies;
}

async function getCookiesFromJS(userContextId) {
  let { tab, browser } = await openTabInUserContext(TEST_URL, userContextId);

  // get the cookies
  let cookieString = await SpecialPowers.spawn(browser, [], function () {
    return content.document.cookie;
  });

  // check each item in the title and validate it meets expectatations
  let cookies = {};
  for (let cookie of cookieString.split(";")) {
    let [name, value] = cookie.trim().split("=");
    cookies[name] = value;
  }

  gBrowser.removeTab(tab);
  return cookies;
}

Messung V0.5
C=88 H=48 G=70

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