зеркало из https://github.com/electron/electron.git
fix: create `userData` on requestSingleInstanceLock() if needed (#33559)
* test: use custom userData folder for requestSingleInstanceLock() * update test * prefix test folder path * fix: create userDataDir on requestSingleInstanceLock() if needed * Trigger Build
This commit is contained in:
Родитель
9207c2aa68
Коммит
78a3752ade
|
@ -1148,6 +1148,8 @@ bool App::RequestSingleInstanceLock(gin::Arguments* args) {
|
|||
|
||||
base::FilePath user_dir;
|
||||
base::PathService::Get(chrome::DIR_USER_DATA, &user_dir);
|
||||
// The user_dir may not have been created yet.
|
||||
base::CreateDirectoryAndGetError(user_dir, nullptr);
|
||||
|
||||
auto cb = base::BindRepeating(&App::OnSecondInstance, base::Unretained(this));
|
||||
auto wrapped_cb = base::BindRepeating(NotificationCallbackWrapper, cb);
|
||||
|
|
|
@ -228,6 +228,13 @@ describe('app module', () => {
|
|||
expect(code1).to.equal(0);
|
||||
});
|
||||
|
||||
it('returns true when setting non-existent user data folder', async function () {
|
||||
const appPath = path.join(fixturesPath, 'api', 'singleton-userdata');
|
||||
const instance = cp.spawn(process.execPath, [appPath]);
|
||||
const [code] = await emittedOnce(instance, 'exit');
|
||||
expect(code).to.equal(0);
|
||||
});
|
||||
|
||||
async function testArgumentPassing (testArgs: SingleInstanceLockTestArgs) {
|
||||
const appPath = path.join(fixturesPath, 'api', 'singleton-data');
|
||||
const first = cp.spawn(process.execPath, [appPath, ...testArgs.args]);
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
const { app } = require('electron');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// non-existent user data folder should not break requestSingleInstanceLock()
|
||||
// ref: https://github.com/electron/electron/issues/33547
|
||||
const userDataFolder = path.join(app.getPath('home'), 'electron-test-singleton-userdata');
|
||||
fs.rmSync(userDataFolder, { force: true, recursive: true });
|
||||
app.setPath('userData', userDataFolder);
|
||||
|
||||
const gotTheLock = app.requestSingleInstanceLock();
|
||||
app.exit(gotTheLock ? 0 : 1);
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"name": "electron-test-singleton-userdata",
|
||||
"main": "main.js"
|
||||
}
|
Загрузка…
Ссылка в новой задаче