mirror of
https://github.com/electron/electron.git
synced 2026-02-19 03:14:51 -05:00
refactor: use gin::Wrappable in electron::api::PowerSaveBlocker (#49381)
* refactor: PowerSaveBlocker subclasses gin::Wrappable * chore: update chore_add_electron_objects_to_wrappablepointertag.patch * chore: e patches all
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
#include "shell/browser/javascript_environment.h"
|
||||
#include "shell/common/gin_helper/handle.h"
|
||||
#include "shell/common/node_includes.h"
|
||||
#include "v8/include/cppgc/allocation.h"
|
||||
#include "v8/include/v8-cppgc.h"
|
||||
|
||||
namespace gin {
|
||||
|
||||
@@ -41,14 +43,39 @@ struct Converter<device::mojom::WakeLockType> {
|
||||
|
||||
namespace electron::api {
|
||||
|
||||
gin::DeprecatedWrapperInfo PowerSaveBlocker::kWrapperInfo = {
|
||||
gin::kEmbedderNativeGin};
|
||||
const gin::WrapperInfo PowerSaveBlocker::kWrapperInfo = {
|
||||
{gin::kEmbedderNativeGin},
|
||||
gin::kElectronPowerSaveBlocker};
|
||||
|
||||
PowerSaveBlocker::PowerSaveBlocker(v8::Isolate* isolate)
|
||||
: current_lock_type_(device::mojom::WakeLockType::kPreventAppSuspension) {}
|
||||
|
||||
PowerSaveBlocker::~PowerSaveBlocker() = default;
|
||||
|
||||
// static
|
||||
gin_helper::Handle<PowerSaveBlocker> PowerSaveBlocker::Create(
|
||||
v8::Isolate* isolate) {
|
||||
return gin_helper::CreateHandle(
|
||||
isolate, cppgc::MakeGarbageCollected<PowerSaveBlocker>(
|
||||
isolate->GetCppHeap()->GetAllocationHandle(), isolate));
|
||||
}
|
||||
|
||||
const gin::WrapperInfo* PowerSaveBlocker::wrapper_info() const {
|
||||
return &kWrapperInfo;
|
||||
}
|
||||
|
||||
const char* PowerSaveBlocker::GetHumanReadableName() const {
|
||||
return "Electron / PowerSaveBlocker";
|
||||
}
|
||||
|
||||
gin::ObjectTemplateBuilder PowerSaveBlocker::GetObjectTemplateBuilder(
|
||||
v8::Isolate* isolate) {
|
||||
return gin::Wrappable<PowerSaveBlocker>::GetObjectTemplateBuilder(isolate)
|
||||
.SetMethod("start", &PowerSaveBlocker::Start)
|
||||
.SetMethod("stop", &PowerSaveBlocker::Stop)
|
||||
.SetMethod("isStarted", &PowerSaveBlocker::IsStarted);
|
||||
}
|
||||
|
||||
void PowerSaveBlocker::UpdatePowerSaveBlocker() {
|
||||
if (wake_lock_types_.empty()) {
|
||||
if (is_wake_lock_active_) {
|
||||
@@ -66,6 +93,7 @@ void PowerSaveBlocker::UpdatePowerSaveBlocker() {
|
||||
// Only the highest-precedence blocker type takes effect.
|
||||
device::mojom::WakeLockType new_lock_type =
|
||||
device::mojom::WakeLockType::kPreventAppSuspension;
|
||||
|
||||
for (const auto& element : wake_lock_types_) {
|
||||
if (element.second == device::mojom::WakeLockType::kPreventDisplaySleep) {
|
||||
new_lock_type = device::mojom::WakeLockType::kPreventDisplaySleep;
|
||||
@@ -114,25 +142,6 @@ bool PowerSaveBlocker::IsStarted(int id) const {
|
||||
return wake_lock_types_.contains(id);
|
||||
}
|
||||
|
||||
// static
|
||||
gin_helper::Handle<PowerSaveBlocker> PowerSaveBlocker::Create(
|
||||
v8::Isolate* isolate) {
|
||||
return gin_helper::CreateHandle(isolate, new PowerSaveBlocker(isolate));
|
||||
}
|
||||
|
||||
gin::ObjectTemplateBuilder PowerSaveBlocker::GetObjectTemplateBuilder(
|
||||
v8::Isolate* isolate) {
|
||||
return gin_helper::DeprecatedWrappable<
|
||||
PowerSaveBlocker>::GetObjectTemplateBuilder(isolate)
|
||||
.SetMethod("start", &PowerSaveBlocker::Start)
|
||||
.SetMethod("stop", &PowerSaveBlocker::Stop)
|
||||
.SetMethod("isStarted", &PowerSaveBlocker::IsStarted);
|
||||
}
|
||||
|
||||
const char* PowerSaveBlocker::GetTypeName() {
|
||||
return "PowerSaveBlocker";
|
||||
}
|
||||
|
||||
} // namespace electron::api
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
#define ELECTRON_SHELL_BROWSER_API_ELECTRON_API_POWER_SAVE_BLOCKER_H_
|
||||
|
||||
#include "base/containers/flat_map.h"
|
||||
#include "gin/wrappable.h"
|
||||
#include "mojo/public/cpp/bindings/remote.h"
|
||||
#include "services/device/public/mojom/wake_lock.mojom.h"
|
||||
#include "shell/common/gin_helper/wrappable.h"
|
||||
|
||||
namespace gin {
|
||||
class ObjectTemplateBuilder;
|
||||
@@ -21,25 +21,25 @@ class Handle;
|
||||
|
||||
namespace electron::api {
|
||||
|
||||
class PowerSaveBlocker final
|
||||
: public gin_helper::DeprecatedWrappable<PowerSaveBlocker> {
|
||||
class PowerSaveBlocker final : public gin::Wrappable<PowerSaveBlocker> {
|
||||
public:
|
||||
static gin_helper::Handle<PowerSaveBlocker> Create(v8::Isolate* isolate);
|
||||
|
||||
// gin_helper::Wrappable
|
||||
static gin::DeprecatedWrapperInfo kWrapperInfo;
|
||||
// gin::Wrappable
|
||||
static const gin::WrapperInfo kWrapperInfo;
|
||||
const gin::WrapperInfo* wrapper_info() const override;
|
||||
const char* GetHumanReadableName() const override;
|
||||
gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
|
||||
v8::Isolate* isolate) override;
|
||||
const char* GetTypeName() override;
|
||||
|
||||
// Make public for cppgc::MakeGarbageCollected.
|
||||
explicit PowerSaveBlocker(v8::Isolate* isolate);
|
||||
~PowerSaveBlocker() override;
|
||||
|
||||
// disable copy
|
||||
PowerSaveBlocker(const PowerSaveBlocker&) = delete;
|
||||
PowerSaveBlocker& operator=(const PowerSaveBlocker&) = delete;
|
||||
|
||||
protected:
|
||||
explicit PowerSaveBlocker(v8::Isolate* isolate);
|
||||
~PowerSaveBlocker() override;
|
||||
|
||||
private:
|
||||
void UpdatePowerSaveBlocker();
|
||||
int Start(device::mojom::WakeLockType type);
|
||||
|
||||
Reference in New Issue
Block a user