tor-browser

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

test_require_lazy.js (1384B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const { loader } = ChromeUtils.importESModule(
      7  "resource://devtools/shared/loader/Loader.sys.mjs"
      8 );
      9 // Test devtools.lazyRequireGetter
     10 
     11 function run_test() {
     12  const name = "asyncUtils";
     13  const path = "devtools/shared/async-utils";
     14  const o = {};
     15  loader.lazyRequireGetter(o, name, path);
     16  const asyncUtils = require(path);
     17  // XXX: do_check_eq only works on primitive types, so we have this
     18  // do_check_true of an equality expression.
     19  Assert.strictEqual(o.asyncUtils, asyncUtils);
     20 
     21  // A non-main loader should get a new object via |lazyRequireGetter|, just
     22  // as it would via a direct |require|.
     23  const o2 = {};
     24  const loader2 = new DevToolsLoader();
     25 
     26  // We have to init the loader by loading any module before
     27  // lazyRequireGetter is available
     28  loader2.require("resource://devtools/shared/DevToolsUtils.js");
     29 
     30  loader2.lazyRequireGetter(o2, name, path);
     31  Assert.notStrictEqual(o2.asyncUtils, asyncUtils);
     32 
     33  // A module required via a non-main loader that then uses |lazyRequireGetter|
     34  // should also get the same object from that non-main loader.
     35  const exposeLoader = loader2.require("xpcshell-test/exposeLoader");
     36  const o3 = exposeLoader.exerciseLazyRequire(name, path);
     37  Assert.strictEqual(o3.asyncUtils, o2.asyncUtils);
     38 }