diff --git a/docs/api/process.md b/docs/api/process.md index ec77bda8b8..ee00672129 100644 --- a/docs/api/process.md +++ b/docs/api/process.md @@ -22,6 +22,7 @@ In sandboxed renderers the `process` object contains only a subset of the APIs: * `getSystemVersion()` * `getCPUUsage()` * `getIOCounters()` +* `uptime()` * `argv` * `execPath` * `env` diff --git a/shell/renderer/electron_sandboxed_renderer_client.cc b/shell/renderer/electron_sandboxed_renderer_client.cc index bba81eb28f..dca4cb6861 100644 --- a/shell/renderer/electron_sandboxed_renderer_client.cc +++ b/shell/renderer/electron_sandboxed_renderer_client.cc @@ -90,6 +90,11 @@ v8::Local CreatePreloadScript(v8::Isolate* isolate, preloadSrc); } +double Uptime() { + return (base::Time::Now() - base::Process::Current().CreationTime()) + .InSecondsF(); +} + void InvokeHiddenCallback(v8::Handle context, const std::string& hidden_key, const std::string& callback_name) { @@ -137,6 +142,7 @@ void ElectronSandboxedRendererClient::InitializeBindings( ElectronBindings::BindProcess(isolate, &process, metrics_.get()); + process.SetMethod("uptime", Uptime); process.Set("argv", base::CommandLine::ForCurrentProcess()->argv()); process.SetReadOnly("pid", base::GetCurrentProcId()); process.SetReadOnly("sandboxed", true); diff --git a/spec-main/api-browser-window-spec.ts b/spec-main/api-browser-window-spec.ts index 587457c028..d72b8daad0 100644 --- a/spec-main/api-browser-window-spec.ts +++ b/spec-main/api-browser-window-spec.ts @@ -2533,6 +2533,7 @@ describe('BrowserWindow module', () => { expect(test.systemVersion).to.be.a('string'); expect(test.cpuUsage).to.be.an('object'); expect(test.ioCounters).to.be.an('object'); + expect(test.uptime).to.be.a('number'); expect(test.arch).to.equal(process.arch); expect(test.platform).to.equal(process.platform); expect(test.env).to.deep.equal(process.env); diff --git a/spec-main/fixtures/module/preload-sandbox.js b/spec-main/fixtures/module/preload-sandbox.js index 524771046a..3f216a3e03 100644 --- a/spec-main/fixtures/module/preload-sandbox.js +++ b/spec-main/fixtures/module/preload-sandbox.js @@ -33,6 +33,7 @@ systemVersion: invoke(() => process.getSystemVersion()), cpuUsage: invoke(() => process.getCPUUsage()), ioCounters: invoke(() => process.getIOCounters()), + uptime: invoke(() => process.uptime()), env: process.env, execPath: process.execPath, pid: process.pid,