forked from mirrors/gecko-dev
		
	# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D36042 --HG-- extra : source : d3afcafdce650a6f36cebbc126ee93b17f13cf52
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* eslint-disable mozilla/no-arbitrary-setTimeout */
 | 
						|
let NS_OSX_PICTURE_DOCUMENTS_DIR = "Pct";
 | 
						|
let NS_MAC_USER_LIB_DIR = "ULibDir";
 | 
						|
 | 
						|
/**
 | 
						|
 * Tests "Set As Desktop Background" on macOS.
 | 
						|
 */
 | 
						|
add_task(async function() {
 | 
						|
  await BrowserTestUtils.withNewTab(
 | 
						|
    {
 | 
						|
      gBrowser,
 | 
						|
      url: "about:logo",
 | 
						|
    },
 | 
						|
    async browser => {
 | 
						|
      let dirSvc = Cc["@mozilla.org/file/directory_service;1"].getService(
 | 
						|
        Ci.nsIDirectoryServiceProvider
 | 
						|
      );
 | 
						|
 | 
						|
      let desktopBackgroundDb = dirSvc.getFile(NS_MAC_USER_LIB_DIR, {});
 | 
						|
      desktopBackgroundDb.append("Application Support");
 | 
						|
      desktopBackgroundDb.append("Dock");
 | 
						|
      let desktopBackgroundDbBackup = desktopBackgroundDb.clone();
 | 
						|
      desktopBackgroundDb.append("desktoppicture.db");
 | 
						|
      desktopBackgroundDbBackup.append("desktoppicture.db.backup");
 | 
						|
 | 
						|
      ok(
 | 
						|
        desktopBackgroundDb.exists(),
 | 
						|
        "Desktop background database must exist for test to run."
 | 
						|
      );
 | 
						|
 | 
						|
      if (desktopBackgroundDbBackup.exists()) {
 | 
						|
        desktopBackgroundDbBackup.remove(false);
 | 
						|
      }
 | 
						|
 | 
						|
      desktopBackgroundDb.copyTo(null, desktopBackgroundDbBackup.leafName);
 | 
						|
 | 
						|
      let wpFile = dirSvc.getFile(NS_OSX_PICTURE_DOCUMENTS_DIR, {});
 | 
						|
      wpFile.append("logo.png");
 | 
						|
      if (wpFile.exists()) {
 | 
						|
        wpFile.remove(false);
 | 
						|
      }
 | 
						|
 | 
						|
      let shell = Cc["@mozilla.org/browser/shell-service;1"].getService(
 | 
						|
        Ci.nsIShellService
 | 
						|
      );
 | 
						|
 | 
						|
      // For simplicity, we're going to reach in and access the image on the
 | 
						|
      // page directly, which means the page shouldn't be running in a remote
 | 
						|
      // browser. Thankfully, about:logo runs in the parent process for now.
 | 
						|
      Assert.ok(
 | 
						|
        !gBrowser.selectedBrowser.isRemoteBrowser,
 | 
						|
        "image can be accessed synchronously from the parent process"
 | 
						|
      );
 | 
						|
 | 
						|
      let image = gBrowser.selectedBrowser.contentDocument.images[0];
 | 
						|
      shell.setDesktopBackground(image, 0, "logo.png");
 | 
						|
 | 
						|
      await BrowserTestUtils.waitForCondition(() => wpFile.exists());
 | 
						|
      info("Desktop background was written to disk.");
 | 
						|
 | 
						|
      desktopBackgroundDbBackup.moveTo(null, desktopBackgroundDb.leafName);
 | 
						|
      wpFile.remove(false);
 | 
						|
 | 
						|
      // Restart Dock to reload previous background image.
 | 
						|
      let killall = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
 | 
						|
      killall.initWithPath("/usr/bin/killall");
 | 
						|
      let dockArg = ["Dock"];
 | 
						|
      let process = Cc["@mozilla.org/process/util;1"].createInstance(
 | 
						|
        Ci.nsIProcess
 | 
						|
      );
 | 
						|
      process.init(killall);
 | 
						|
      process.run(true, dockArg, 1);
 | 
						|
    }
 | 
						|
  );
 | 
						|
});
 |