tor-browser

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

test_ImageObjectProcessor_purpose.html (3723B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug </title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
     11  <script src="common.js"></script>
     12  <script>
     13    /**
     14     * Image object's purpose member
     15     * https://w3c.github.io/manifest/#purpose-member
     16     */
     17 
     18    "use strict";
     19    const testManifest = {
     20      icons: [{
     21        src: "test",
     22      }],
     23    };
     24 
     25    const invalidPurposeTypes = [
     26      [],
     27      123,
     28      {},
     29      null,
     30    ]
     31 
     32    invalidPurposeTypes.forEach(invalidType => {
     33      const expected = `Invalid types get treated as 'any'.`;
     34      testManifest.icons[0].purpose = invalidType;
     35      data.jsonText = JSON.stringify(testManifest);
     36      const result = processor.process(data);
     37      is(result.icons.length, 1, expected);
     38      is(result.icons[0].purpose.length, 1, expected);
     39      is(result.icons[0].purpose[0], "any", expected);
     40    });
     41 
     42    const invalidPurposes = [
     43      "not-known-test-purpose",
     44      "invalid-purpose invalid-purpose",
     45      "no-purpose invalid-purpose some-other-non-valid-purpose",
     46    ];
     47 
     48    invalidPurposes.forEach(invalidPurpose => {
     49      const expected = `Expect invalid purposes to invalidate the icon.`;
     50      testManifest.icons[0].purpose = invalidPurpose;
     51      data.jsonText = JSON.stringify(testManifest);
     52      const result = processor.process(data);
     53      is(result.icons.length, 0, expected);
     54    });
     55 
     56    const mixedMaskableAndInvalidPurposes = [
     57      "not-known-test-purpose maskable",
     58      "maskable invalid-purpose invalid-purpose",
     59      "no-purpose invalid-purpose maskable some-other-non-valid-purpose",
     60    ];
     61 
     62    mixedMaskableAndInvalidPurposes.forEach(mixedPurpose => {
     63      const expected = `Expect on 'maskable' to remain.`;
     64      testManifest.icons[0].purpose = mixedPurpose;
     65      data.jsonText = JSON.stringify(testManifest);
     66      const result = processor.process(data);
     67      is(result.icons.length, 1, expected);
     68      is(result.icons[0].purpose.join(), "maskable", expected);
     69    });
     70 
     71    const mixedMonochromeAndInvalidPurposes = [
     72      "not-known-test-purpose monochrome",
     73      "monochrome invalid-purpose invalid-purpose",
     74      "no-purpose invalid-purpose monochrome some-other-non-valid-purpose",
     75    ];
     76 
     77    mixedMonochromeAndInvalidPurposes.forEach(mixedPurpose => {
     78      const expected = `Expect on 'monochrome' to remain.`;
     79      testManifest.icons[0].purpose = mixedPurpose;
     80      data.jsonText = JSON.stringify(testManifest);
     81      const result = processor.process(data);
     82      is(result.icons.length, 1, expected);
     83      is(result.icons[0].purpose.join(), "monochrome", expected);
     84    });
     85 
     86    const validPurposes = [
     87      "maskable",
     88      "monochrome",
     89      "any",
     90      "any maskable",
     91      "maskable any",
     92      "any monochrome",
     93      "monochrome any",
     94      "maskable monochrome any",
     95      "monochrome maskable"
     96    ];
     97 
     98    validPurposes.forEach(purpose => {
     99      testManifest.icons[0].purpose = purpose;
    100      data.jsonText = JSON.stringify(testManifest);
    101      var manifest = processor.process(data);
    102      is(manifest.icons[0].purpose.join(" "), purpose, `Expected "${purpose}" as purpose.`);
    103    });
    104 
    105    const validWhiteSpace = [
    106      "",
    107      whiteSpace, // defined in common.js
    108      `${whiteSpace}any`,
    109      `any${whiteSpace}`,
    110      `${whiteSpace}any${whiteSpace}`,
    111    ];
    112 
    113    validWhiteSpace.forEach(purpose => {
    114      testManifest.icons[0].purpose = purpose;
    115      data.jsonText = JSON.stringify(testManifest);
    116      var manifest = processor.process(data);
    117      is(manifest.icons[0].purpose.join(), "any");
    118    });
    119  </script>
    120 </head>