tor-browser

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

browser_device_custom_remove.js (4249B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 // Test adding several devices and removing one to ensure the correct device is removed.
      7 
      8 const TEST_URL = "data:text/html;charset=utf-8,";
      9 
     10 const device = {
     11  width: 400,
     12  height: 570,
     13  pixelRatio: 1.5,
     14  userAgent: "Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0",
     15  touch: true,
     16 };
     17 
     18 const device1 = Object.assign({}, device, {
     19  name: "Test Device 1",
     20 });
     21 
     22 const device2 = Object.assign({}, device, {
     23  name: "Test Device 2",
     24 });
     25 
     26 addRDMTask(
     27  TEST_URL,
     28  async function ({ ui }) {
     29    const { toolWindow } = ui;
     30    const { store, document } = toolWindow;
     31 
     32    info("Verify that remove buttons affect the correct device");
     33 
     34    const deviceSelector = document.getElementById("device-selector");
     35 
     36    await openDeviceModal(ui);
     37 
     38    info("Reveal device adder form");
     39    let adderShow = document.querySelector("#device-add-button");
     40    adderShow.click();
     41 
     42    info("Add test device 1");
     43    await addDeviceInModal(ui, device1);
     44 
     45    info("Reveal device adder form");
     46    adderShow = document.querySelector("#device-add-button");
     47    adderShow.click();
     48 
     49    info("Add test device 2");
     50    await addDeviceInModal(ui, device2);
     51 
     52    info("Verify all custom devices default to enabled in modal");
     53    const deviceCbs = [
     54      ...document.querySelectorAll(
     55        ".device-type-custom .device-input-checkbox"
     56      ),
     57    ];
     58    is(deviceCbs.length, 2, "Both devices have a checkbox in modal");
     59    for (const cb of deviceCbs) {
     60      ok(cb.checked, "Custom device enabled");
     61    }
     62    document.getElementById("device-close-button").click();
     63 
     64    info("Look for device 1 and 2 in device selector");
     65 
     66    await testMenuItems(toolWindow, deviceSelector, menuItems => {
     67      const deviceItem1 = findMenuItem(menuItems, device1.name);
     68      const deviceItem2 = findMenuItem(menuItems, device2.name);
     69      ok(deviceItem1, "Test device 1 menu item added to device selector");
     70      ok(deviceItem2, "Test device 2 menu item added to device selector");
     71    });
     72 
     73    await openDeviceModal(ui);
     74 
     75    info("Remove device 2");
     76    const deviceRemoveButtons = [
     77      ...document.querySelectorAll(".device-remove-button"),
     78    ];
     79    is(
     80      deviceRemoveButtons.length,
     81      2,
     82      "Both devices have a remove button in modal"
     83    );
     84    const removed = waitUntilState(
     85      store,
     86      state => state.devices.custom.length == 1
     87    );
     88    deviceRemoveButtons[1].click();
     89    await removed;
     90    document.getElementById("device-close-button").click();
     91 
     92    info("Ensure device 2 is no longer in device selector");
     93    await testMenuItems(toolWindow, deviceSelector, menuItems => {
     94      const deviceItem1 = findMenuItem(menuItems, device1.name);
     95      const deviceItem2 = findMenuItem(menuItems, device2.name);
     96      ok(deviceItem1, "Test device 1 menu item exists");
     97      ok(!deviceItem2, "Test device 2 menu item removed");
     98    });
     99  },
    100  { waitForDeviceList: true }
    101 );
    102 
    103 addRDMTask(
    104  TEST_URL,
    105  async function ({ ui }) {
    106    const { toolWindow } = ui;
    107    const { document } = toolWindow;
    108 
    109    const deviceSelector = document.getElementById("device-selector");
    110 
    111    info("Ensure device 1 is still in device selector");
    112    await testMenuItems(toolWindow, deviceSelector, menuItems => {
    113      const deviceItem1 = findMenuItem(menuItems, device1.name);
    114      const deviceItem2 = findMenuItem(menuItems, device2.name);
    115      ok(deviceItem1, "Test device 1 menu item exists");
    116      ok(!deviceItem2, "Test device 2 option removed");
    117    });
    118 
    119    await openDeviceModal(ui);
    120 
    121    info("Ensure device 1 is still in device modal");
    122    const deviceCbs = [
    123      ...document.querySelectorAll(
    124        ".device-type-custom .device-input-checkbox"
    125      ),
    126    ];
    127    is(deviceCbs.length, 1, "Only 1 custom present in modal");
    128    const deviceCb1 = deviceCbs.find(cb => cb.value == device1.name);
    129    ok(
    130      deviceCb1 && deviceCb1.checked,
    131      "Test device 1 checkbox exists and enabled"
    132    );
    133 
    134    info("Ensure device 2 is no longer in device modal");
    135    const deviceCb2 = deviceCbs.find(cb => cb.value == device2.name);
    136    ok(!deviceCb2, "Test device 2 checkbox does not exist");
    137  },
    138  { waitForDeviceList: true }
    139 );