diff --git a/shell/browser/api/electron_api_tray.cc b/shell/browser/api/electron_api_tray.cc index f80d753ddf57..312fec8b09dd 100644 --- a/shell/browser/api/electron_api_tray.cc +++ b/shell/browser/api/electron_api_tray.cc @@ -89,8 +89,10 @@ gin::Handle Tray::New(gin_helper::ErrorThrower thrower, } #endif - return gin::CreateHandle(thrower.isolate(), - new Tray(args->isolate(), image, guid)); + auto handle = gin::CreateHandle(args->isolate(), + new Tray(args->isolate(), image, guid)); + handle->Pin(args->isolate()); + return handle; } void Tray::OnClicked(const gfx::Rect& bounds, @@ -180,6 +182,7 @@ void Tray::OnDragEnded() { } void Tray::Destroy() { + Unpin(); menu_.Reset(); tray_icon_.reset(); } diff --git a/shell/browser/api/electron_api_tray.h b/shell/browser/api/electron_api_tray.h index 19a28eef2371..8c4870b11ad8 100644 --- a/shell/browser/api/electron_api_tray.h +++ b/shell/browser/api/electron_api_tray.h @@ -19,6 +19,7 @@ #include "shell/common/gin_helper/cleaned_up_at_exit.h" #include "shell/common/gin_helper/constructible.h" #include "shell/common/gin_helper/error_thrower.h" +#include "shell/common/gin_helper/pinnable.h" namespace gfx { class Image; @@ -38,6 +39,7 @@ class Tray : public gin::Wrappable, public gin_helper::EventEmitterMixin, public gin_helper::Constructible, public gin_helper::CleanedUpAtExit, + public gin_helper::Pinnable, public TrayIconObserver { public: // gin_helper::Constructible