tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Document-importNode-cross-document.window.js (5516B)


      1 // Target document has a global registry
      2 
      3 test(t => {
      4  const contentDocument = document.body.appendChild(document.createElement('iframe')).contentDocument;
      5  t.add_cleanup(() => contentDocument.defaultView.frameElement.remove());
      6 
      7  const element = document.createElement("div");
      8  const clone = contentDocument.importNode(element);
      9  assert_equals(clone.customElementRegistry, contentDocument.defaultView.customElements);
     10 }, "Cloning with global registry");
     11 
     12 test(t => {
     13  const contentDocument = document.body.appendChild(document.createElement('iframe')).contentDocument;
     14  t.add_cleanup(() => contentDocument.defaultView.frameElement.remove());
     15 
     16  const element = document.createElement("div", { customElementRegistry: customElements });
     17  const clone = contentDocument.importNode(element);
     18  assert_equals(clone.customElementRegistry, contentDocument.defaultView.customElements);
     19 }, "Cloning with explicit global registry");
     20 
     21 test(t => {
     22  const contentDocument = document.body.appendChild(document.createElement('iframe')).contentDocument;
     23  t.add_cleanup(() => contentDocument.defaultView.frameElement.remove());
     24 
     25  const scoped = new CustomElementRegistry();
     26  const element = document.createElement("div", { customElementRegistry: scoped });
     27  const clone = contentDocument.importNode(element);
     28  assert_equals(clone.customElementRegistry, scoped);
     29 }, "Cloning with scoped registry");
     30 
     31 test(t => {
     32  const contentDocument = document.body.appendChild(document.createElement('iframe')).contentDocument;
     33  t.add_cleanup(() => contentDocument.defaultView.frameElement.remove());
     34 
     35  const element = document.createElement("div");
     36  const elementShadow = element.attachShadow({ mode: "open", clonable: true });
     37  const clone = contentDocument.importNode(element);
     38  assert_equals(clone.shadowRoot.customElementRegistry, contentDocument.defaultView.customElements);
     39 }, "Cloning including shadow tree with global registry");
     40 
     41 test(t => {
     42  const contentDocument = document.body.appendChild(document.createElement('iframe')).contentDocument;
     43  t.add_cleanup(() => contentDocument.defaultView.frameElement.remove());
     44 
     45  const element = document.createElement("div");
     46  const elementShadow = element.attachShadow({ mode: "open", clonable: true, customElementRegistry: customElements });
     47  const clone = contentDocument.importNode(element);
     48  assert_equals(clone.shadowRoot.customElementRegistry, contentDocument.defaultView.customElements);
     49 }, "Cloning including shadow tree with explicit global registry");
     50 
     51 test(t => {
     52  const contentDocument = document.body.appendChild(document.createElement('iframe')).contentDocument;
     53  t.add_cleanup(() => contentDocument.defaultView.frameElement.remove());
     54 
     55  const scoped = new CustomElementRegistry();
     56  const element = document.createElement("div");
     57  const elementShadow = element.attachShadow({ mode: "open", clonable: true, customElementRegistry: scoped });
     58  const clone = contentDocument.importNode(element);
     59  assert_equals(clone.shadowRoot.customElementRegistry, scoped);
     60 }, "Cloning including shadow tree with scoped registry");
     61 
     62 
     63 // Target document has a null registry
     64 
     65 test(t => {
     66  const contentDocument = document.implementation.createHTMLDocument();
     67 
     68  const element = document.createElement("div");
     69  const clone = contentDocument.importNode(element);
     70  assert_equals(clone.customElementRegistry, null);
     71 }, "Cloning with global registry (null registry target)");
     72 
     73 test(t => {
     74  const contentDocument = document.implementation.createHTMLDocument();
     75 
     76  const element = document.createElement("div", { customElementRegistry: customElements });
     77  const clone = contentDocument.importNode(element);
     78  assert_equals(clone.customElementRegistry, null);
     79 }, "Cloning with explicit global registry (null registry target)");
     80 
     81 test(t => {
     82  const contentDocument = document.implementation.createHTMLDocument();
     83 
     84  const scoped = new CustomElementRegistry();
     85  const element = document.createElement("div", { customElementRegistry: scoped });
     86  const clone = contentDocument.importNode(element);
     87  assert_equals(clone.customElementRegistry, scoped);
     88 }, "Cloning with scoped registry (null registry target)");
     89 
     90 test(t => {
     91  const contentDocument = document.implementation.createHTMLDocument();
     92 
     93  const element = document.createElement("div");
     94  const elementShadow = element.attachShadow({ mode: "open", clonable: true });
     95  const clone = contentDocument.importNode(element);
     96  assert_equals(clone.shadowRoot.customElementRegistry, null);
     97 }, "Cloning including shadow tree with global registry (null registry target)");
     98 
     99 test(t => {
    100  const contentDocument = document.implementation.createHTMLDocument();
    101 
    102  const element = document.createElement("div");
    103  const elementShadow = element.attachShadow({ mode: "open", clonable: true, customElementRegistry: customElements });
    104  const clone = contentDocument.importNode(element);
    105  assert_equals(clone.shadowRoot.customElementRegistry, null);
    106 }, "Cloning including shadow tree with explicit global registry (null registry target)");
    107 
    108 test(t => {
    109  const contentDocument = document.implementation.createHTMLDocument();
    110 
    111  const scoped = new CustomElementRegistry();
    112  const element = document.createElement("div");
    113  const elementShadow = element.attachShadow({ mode: "open", clonable: true, customElementRegistry: scoped });
    114  const clone = contentDocument.importNode(element);
    115  assert_equals(clone.shadowRoot.customElementRegistry, scoped);
    116 }, "Cloning including shadow tree with scoped registry (null registry target)");