feat: add app.isHardwareAccelerationEnabled() (#48679)
* feat: add app.isHardwareAccelerationEnabled() Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> * chore: address review feedback Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> --------- Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
parent
6a03d14055
commit
dc5681ed79
4 changed files with 27 additions and 0 deletions
|
|
@ -1212,6 +1212,13 @@ Disables hardware acceleration for current app.
|
|||
|
||||
This method can only be called before app is ready.
|
||||
|
||||
### `app.isHardwareAccelerationEnabled()`
|
||||
|
||||
Returns `boolean` - whether hardware acceleration is currently disabled.
|
||||
|
||||
> [!NOTE]
|
||||
> This information is only usable after the `gpu-info-update` event is emitted.
|
||||
|
||||
### `app.disableDomainBlockingFor3DAPIs()`
|
||||
|
||||
By default, Chromium disables 3D APIs (e.g. WebGL) until restart on a per
|
||||
|
|
|
|||
|
|
@ -1134,6 +1134,10 @@ void App::DisableHardwareAcceleration(gin_helper::ErrorThrower thrower) {
|
|||
"before app is ready");
|
||||
return;
|
||||
}
|
||||
|
||||
// If the GpuDataManager is already initialized, disable hardware
|
||||
// acceleration immediately. Otherwise, set a flag to disable it in
|
||||
// OnPreCreateThreads().
|
||||
if (content::GpuDataManager::Initialized()) {
|
||||
content::GpuDataManager::GetInstance()->DisableHardwareAcceleration();
|
||||
} else {
|
||||
|
|
@ -1141,6 +1145,13 @@ void App::DisableHardwareAcceleration(gin_helper::ErrorThrower thrower) {
|
|||
}
|
||||
}
|
||||
|
||||
bool App::IsHardwareAccelerationEnabled() {
|
||||
if (content::GpuDataManager::Initialized())
|
||||
return content::GpuDataManager::GetInstance()
|
||||
->HardwareAccelerationEnabled();
|
||||
return !disable_hw_acceleration_;
|
||||
}
|
||||
|
||||
void App::DisableDomainBlockingFor3DAPIs(gin_helper::ErrorThrower thrower) {
|
||||
if (Browser::Get()->is_ready()) {
|
||||
thrower.ThrowError(
|
||||
|
|
@ -1908,6 +1919,8 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuilder(v8::Isolate* isolate) {
|
|||
&App::SetAccessibilitySupportEnabled)
|
||||
.SetMethod("disableHardwareAcceleration",
|
||||
&App::DisableHardwareAcceleration)
|
||||
.SetMethod("isHardwareAccelerationEnabled",
|
||||
&App::IsHardwareAccelerationEnabled)
|
||||
.SetMethod("disableDomainBlockingFor3DAPIs",
|
||||
&App::DisableDomainBlockingFor3DAPIs)
|
||||
.SetMethod("getFileIcon", &App::GetFileIcon)
|
||||
|
|
|
|||
|
|
@ -209,6 +209,7 @@ class App final : public ElectronBrowserClient::Delegate,
|
|||
void ReleaseSingleInstanceLock();
|
||||
bool Relaunch(gin::Arguments* args);
|
||||
void DisableHardwareAcceleration(gin_helper::ErrorThrower thrower);
|
||||
bool IsHardwareAccelerationEnabled();
|
||||
void DisableDomainBlockingFor3DAPIs(gin_helper::ErrorThrower thrower);
|
||||
bool IsAccessibilitySupportEnabled();
|
||||
v8::Local<v8::Value> GetAccessibilitySupportFeatures();
|
||||
|
|
|
|||
|
|
@ -149,6 +149,12 @@ describe('app module', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('app.isHardwareAccelerationEnabled()', () => {
|
||||
it('should be a boolean', () => {
|
||||
expect(app.isHardwareAccelerationEnabled()).to.be.a('boolean');
|
||||
});
|
||||
});
|
||||
|
||||
describe('app.isPackaged', () => {
|
||||
it('should be false during tests', () => {
|
||||
expect(app.isPackaged).to.equal(false);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue