diff --git a/shell/common/platform_util_linux.cc b/shell/common/platform_util_linux.cc index 231e0ad0e8c9..6b001ce4144d 100644 --- a/shell/common/platform_util_linux.cc +++ b/shell/common/platform_util_linux.cc @@ -13,6 +13,7 @@ #include "base/no_destructor.h" #include "base/process/kill.h" #include "base/process/launch.h" +#include "base/threading/thread_restrictions.h" #include "components/dbus/thread_linux/dbus_thread_linux.h" #include "content/public/browser/browser_thread.h" #include "dbus/bus.h" @@ -125,6 +126,8 @@ bool XDGUtil(const std::vector& argv, return false; if (wait_for_exit) { + base::ScopedAllowBaseSyncPrimitivesForTesting + allow_sync; // required by WaitForExit int exit_code = -1; bool success = process.WaitForExit(&exit_code); if (!callback.is_null()) diff --git a/spec-main/api-shell-spec.ts b/spec-main/api-shell-spec.ts index 747add42f9d5..29a052837aaf 100644 --- a/spec-main/api-shell-spec.ts +++ b/spec-main/api-shell-spec.ts @@ -1,9 +1,12 @@ -import { BrowserWindow } from 'electron/main'; +import { BrowserWindow, app } from 'electron/main'; import { shell } from 'electron/common'; import { closeAllWindows } from './window-helpers'; import { emittedOnce } from './events-helpers'; import * as http from 'http'; +import * as fs from 'fs-extra'; +import * as path from 'path'; import { AddressInfo } from 'net'; +import { expect } from 'chai'; describe('shell module', () => { describe('shell.openExternal()', () => { @@ -57,4 +60,21 @@ describe('shell module', () => { ]); }); }); + + describe('shell.moveItemToTrash()', () => { + it('moves an item to the trash', async () => { + const dir = await fs.mkdtemp(path.resolve(app.getPath('temp'), 'electron-shell-spec-')); + const filename = path.join(dir, 'temp-to-be-deleted'); + await fs.writeFile(filename, 'dummy-contents'); + const result = shell.moveItemToTrash(filename); + expect(result).to.be.true(); + expect(fs.existsSync(filename)).to.be.false(); + }); + + it('returns false when called with a nonexistent path', () => { + const filename = path.join(app.getPath('temp'), 'does-not-exist'); + const result = shell.moveItemToTrash(filename); + expect(result).to.be.false(); + }); + }); });