forked from mirrors/gecko-dev
		
	# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D36056 --HG-- extra : source : 2616392f26053ee376b9126fbca696de5d4bb15b
		
			
				
	
	
		
			134 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const { ProfileAge } = ChromeUtils.import(
 | 
						|
  "resource://gre/modules/ProfileAge.jsm"
 | 
						|
);
 | 
						|
const { OS } = ChromeUtils.import("resource://gre/modules/osfile.jsm");
 | 
						|
const { CommonUtils } = ChromeUtils.import(
 | 
						|
  "resource://services-common/utils.js"
 | 
						|
);
 | 
						|
 | 
						|
const gProfD = do_get_profile();
 | 
						|
let ID = 0;
 | 
						|
 | 
						|
// Creates a unique profile directory to use for a test.
 | 
						|
function withDummyProfile(task) {
 | 
						|
  return async () => {
 | 
						|
    let profile = OS.Path.join(gProfD.path, "" + ID++);
 | 
						|
    await OS.File.makeDir(profile);
 | 
						|
    await task(profile);
 | 
						|
    await OS.File.removeDir(profile);
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
add_task(
 | 
						|
  withDummyProfile(async profile => {
 | 
						|
    let times = await ProfileAge(profile);
 | 
						|
    Assert.ok(
 | 
						|
      (await times.created) > 0,
 | 
						|
      "We can't really say what this will be, just assume if it is a number it's ok."
 | 
						|
    );
 | 
						|
    Assert.equal(
 | 
						|
      await times.reset,
 | 
						|
      undefined,
 | 
						|
      "Reset time is undefined in a new profile"
 | 
						|
    );
 | 
						|
    Assert.ok(
 | 
						|
      (await times.firstUse) <= Date.now(),
 | 
						|
      "Should have initialised a first use time."
 | 
						|
    );
 | 
						|
  })
 | 
						|
);
 | 
						|
 | 
						|
add_task(
 | 
						|
  withDummyProfile(async profile => {
 | 
						|
    const CREATED_TIME = Date.now() - 2000;
 | 
						|
    const RESET_TIME = Date.now() - 1000;
 | 
						|
 | 
						|
    await CommonUtils.writeJSON(
 | 
						|
      {
 | 
						|
        created: CREATED_TIME,
 | 
						|
      },
 | 
						|
      OS.Path.join(profile, "times.json")
 | 
						|
    );
 | 
						|
 | 
						|
    let times = await ProfileAge(profile);
 | 
						|
    Assert.equal(
 | 
						|
      await times.created,
 | 
						|
      CREATED_TIME,
 | 
						|
      "Should have seen the right profile time."
 | 
						|
    );
 | 
						|
    Assert.equal(
 | 
						|
      await times.firstUse,
 | 
						|
      undefined,
 | 
						|
      "Should be no first use time."
 | 
						|
    );
 | 
						|
 | 
						|
    let times2 = await ProfileAge(profile);
 | 
						|
    Assert.equal(times, times2, "Should have got the same instance.");
 | 
						|
 | 
						|
    let promise = times.recordProfileReset(RESET_TIME);
 | 
						|
    Assert.equal(
 | 
						|
      await times2.reset,
 | 
						|
      RESET_TIME,
 | 
						|
      "Should have seen the right reset time in the second instance immediately."
 | 
						|
    );
 | 
						|
    await promise;
 | 
						|
 | 
						|
    let results = await CommonUtils.readJSON(
 | 
						|
      OS.Path.join(profile, "times.json")
 | 
						|
    );
 | 
						|
    Assert.deepEqual(
 | 
						|
      results,
 | 
						|
      {
 | 
						|
        created: CREATED_TIME,
 | 
						|
        reset: RESET_TIME,
 | 
						|
      },
 | 
						|
      "Should have seen the right results."
 | 
						|
    );
 | 
						|
  })
 | 
						|
);
 | 
						|
 | 
						|
add_task(
 | 
						|
  withDummyProfile(async profile => {
 | 
						|
    const RESET_TIME = Date.now() - 1000;
 | 
						|
    const RESET_TIME2 = Date.now() - 2000;
 | 
						|
 | 
						|
    // The last call to recordProfileReset should always win.
 | 
						|
    let times = await ProfileAge(profile);
 | 
						|
    await Promise.all([
 | 
						|
      times.recordProfileReset(RESET_TIME),
 | 
						|
      times.recordProfileReset(RESET_TIME2),
 | 
						|
    ]);
 | 
						|
 | 
						|
    let results = await CommonUtils.readJSON(
 | 
						|
      OS.Path.join(profile, "times.json")
 | 
						|
    );
 | 
						|
    delete results.firstUse;
 | 
						|
    Assert.deepEqual(
 | 
						|
      results,
 | 
						|
      {
 | 
						|
        reset: RESET_TIME2,
 | 
						|
      },
 | 
						|
      "Should have seen the right results."
 | 
						|
    );
 | 
						|
  })
 | 
						|
);
 | 
						|
 | 
						|
add_task(
 | 
						|
  withDummyProfile(async profile => {
 | 
						|
    const CREATED_TIME = Date.now() - 1000;
 | 
						|
 | 
						|
    await CommonUtils.writeJSON(
 | 
						|
      {
 | 
						|
        created: CREATED_TIME,
 | 
						|
        firstUse: null,
 | 
						|
      },
 | 
						|
      OS.Path.join(profile, "times.json")
 | 
						|
    );
 | 
						|
 | 
						|
    let times = await ProfileAge(profile);
 | 
						|
    Assert.ok(
 | 
						|
      (await times.firstUse) <= Date.now(),
 | 
						|
      "Should have initialised a first use time."
 | 
						|
    );
 | 
						|
  })
 | 
						|
);
 |