зеркало из https://github.com/electron/electron.git
chore: improve `contents.takeHeapSnapshot` error messages (#37434)
* chore: improve contents.takeHeapSnapshot error messages * fix wstring conversion issue
This commit is contained in:
Родитель
8f2917db01
Коммит
9b20b3a722
|
@ -3609,18 +3609,26 @@ v8::Local<v8::Promise> WebContents::TakeHeapSnapshot(
|
|||
flags = base::File::AddFlagsForPassingToUntrustedProcess(flags);
|
||||
base::File file(file_path, flags);
|
||||
if (!file.IsValid()) {
|
||||
promise.RejectWithErrorMessage("takeHeapSnapshot failed");
|
||||
promise.RejectWithErrorMessage(
|
||||
"Failed to take heap snapshot with invalid file path " +
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
base::WideToUTF8(file_path.value()));
|
||||
#else
|
||||
file_path.value());
|
||||
#endif
|
||||
return handle;
|
||||
}
|
||||
|
||||
auto* frame_host = web_contents()->GetPrimaryMainFrame();
|
||||
if (!frame_host) {
|
||||
promise.RejectWithErrorMessage("takeHeapSnapshot failed");
|
||||
promise.RejectWithErrorMessage(
|
||||
"Failed to take heap snapshot with invalid webContents main frame");
|
||||
return handle;
|
||||
}
|
||||
|
||||
if (!frame_host->IsRenderFrameLive()) {
|
||||
promise.RejectWithErrorMessage("takeHeapSnapshot failed");
|
||||
promise.RejectWithErrorMessage(
|
||||
"Failed to take heap snapshot with nonexistent render frame");
|
||||
return handle;
|
||||
}
|
||||
|
||||
|
@ -3640,7 +3648,7 @@ v8::Local<v8::Promise> WebContents::TakeHeapSnapshot(
|
|||
if (success) {
|
||||
promise.Resolve();
|
||||
} else {
|
||||
promise.RejectWithErrorMessage("takeHeapSnapshot failed");
|
||||
promise.RejectWithErrorMessage("Failed to take heap snapshot");
|
||||
}
|
||||
},
|
||||
base::Owned(std::move(electron_renderer)), std::move(promise)));
|
||||
|
|
|
@ -1803,8 +1803,24 @@ describe('webContents module', () => {
|
|||
|
||||
await w.loadURL('about:blank');
|
||||
|
||||
const promise = w.webContents.takeHeapSnapshot('');
|
||||
return expect(promise).to.be.eventually.rejectedWith(Error, 'takeHeapSnapshot failed');
|
||||
const badPath = path.join('i', 'am', 'a', 'super', 'bad', 'path');
|
||||
const promise = w.webContents.takeHeapSnapshot(badPath);
|
||||
return expect(promise).to.be.eventually.rejectedWith(Error, `Failed to take heap snapshot with invalid file path ${badPath}`);
|
||||
});
|
||||
|
||||
it('fails with invalid render process', async () => {
|
||||
const w = new BrowserWindow({
|
||||
show: false,
|
||||
webPreferences: {
|
||||
sandbox: true
|
||||
}
|
||||
});
|
||||
|
||||
const filePath = path.join(app.getPath('temp'), 'test.heapsnapshot');
|
||||
|
||||
w.webContents.destroy();
|
||||
const promise = w.webContents.takeHeapSnapshot(filePath);
|
||||
return expect(promise).to.be.eventually.rejectedWith(Error, 'Failed to take heap snapshot with nonexistent render frame');
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче