}
GlobalShortcut::~GlobalShortcut() {
+}
+
+void GlobalShortcut::Destroy() {
UnregisterAll();
}
#include <map>
#include <string>
+#include "atom/browser/api/trackable_object.h"
#include "base/callback.h"
#include "chrome/browser/extensions/global_shortcut_listener.h"
-#include "native_mate/wrappable.h"
#include "native_mate/handle.h"
#include "ui/base/accelerators/accelerator.h"
namespace api {
class GlobalShortcut : public extensions::GlobalShortcutListener::Observer,
- public mate::Wrappable {
+ public mate::TrackableObject<GlobalShortcut> {
public:
static mate::Handle<GlobalShortcut> Create(v8::Isolate* isolate);
protected:
GlobalShortcut();
- virtual ~GlobalShortcut();
+ ~GlobalShortcut() override;
+
+ // mate::TrackableObject:
+ void Destroy() override;
// mate::Wrappable implementations:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
Menu::~Menu() {
}
+void Menu::Destroy() {
+ model_.reset();
+}
+
+bool Menu::IsDestroyed() const {
+ return !model_;
+}
+
void Menu::AfterInit(v8::Isolate* isolate) {
mate::Dictionary wrappable(isolate, GetWrapper(isolate));
mate::Dictionary delegate;
#include <string>
#include "atom/browser/api/atom_api_window.h"
+#include "atom/browser/api/trackable_object.h"
#include "atom/browser/ui/atom_menu_model.h"
#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
-#include "native_mate/wrappable.h"
namespace atom {
namespace api {
-class Menu : public mate::Wrappable,
+class Menu : public mate::TrackableObject<Menu>,
public AtomMenuModel::Delegate {
public:
static mate::Wrappable* Create();
protected:
Menu();
- virtual ~Menu();
+ ~Menu() override;
+
+ // mate::TrackableObject:
+ void Destroy() override;
// mate::Wrappable:
+ bool IsDestroyed() const override;
void AfterInit(v8::Isolate* isolate) override;
// ui::SimpleMenuModel::Delegate:
protected:
MenuMac();
+ void Destroy() override;
void Popup(Window* window) override;
void PopupAt(Window* window, int x, int y) override;
MenuMac::MenuMac() {
}
+void MenuMac::Destroy() {
+ menu_controller_.reset();
+ Menu::Destroy();
+}
+
void MenuMac::Popup(Window* window) {
NativeWindow* native_window = window->window();
if (!native_window)
}
PowerMonitor::~PowerMonitor() {
+}
+
+void PowerMonitor::Destroy() {
base::PowerMonitor::Get()->RemoveObserver(this);
}
#ifndef ATOM_BROWSER_API_ATOM_API_POWER_MONITOR_H_
#define ATOM_BROWSER_API_ATOM_API_POWER_MONITOR_H_
-#include "atom/browser/api/event_emitter.h"
+#include "atom/browser/api/trackable_object.h"
#include "base/compiler_specific.h"
#include "base/power_monitor/power_observer.h"
#include "native_mate/handle.h"
namespace api {
-class PowerMonitor : public mate::EventEmitter,
+class PowerMonitor : public mate::TrackableObject<PowerMonitor>,
public base::PowerObserver {
public:
static v8::Local<v8::Value> Create(v8::Isolate* isolate);
protected:
PowerMonitor();
- virtual ~PowerMonitor();
+ ~PowerMonitor() override;
+
+ // mate::TrackableObject:
+ void Destroy() override;
// base::PowerObserver implementations:
void OnPowerStateChange(bool on_battery_power) override;
PowerSaveBlocker::~PowerSaveBlocker() {
}
+void PowerSaveBlocker::Destroy() {
+ power_save_blocker_types_.clear();
+ power_save_blocker_.reset();
+}
+
void PowerSaveBlocker::UpdatePowerSaveBlocker() {
if (power_save_blocker_types_.empty()) {
power_save_blocker_.reset();
#include <map>
+#include "atom/browser/api/trackable_object.h"
#include "base/memory/scoped_ptr.h"
#include "content/public/browser/power_save_blocker.h"
#include "native_mate/handle.h"
-#include "native_mate/wrappable.h"
namespace mate {
class Dictionary;
namespace api {
-class PowerSaveBlocker : public mate::Wrappable {
+class PowerSaveBlocker : public mate::TrackableObject<PowerSaveBlocker> {
public:
static mate::Handle<PowerSaveBlocker> Create(v8::Isolate* isolate);
protected:
PowerSaveBlocker();
- virtual ~PowerSaveBlocker();
+ ~PowerSaveBlocker() override;
+
+ // mate::TrackableObject:
+ void Destroy() override;
// mate::Wrappable implementations:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
std::map<int, content::PowerSaveBlocker::PowerSaveBlockerType>;
PowerSaveBlockerTypeMap power_save_blocker_types_;
-
DISALLOW_COPY_AND_ASSIGN(PowerSaveBlocker);
};
#include <string>
#include <vector>
-#include "atom/browser/api/event_emitter.h"
+#include "atom/browser/api/trackable_object.h"
#include "atom/browser/ui/tray_icon_observer.h"
#include "base/memory/scoped_ptr.h"
class Menu;
-class Tray : public mate::EventEmitter,
+class Tray : public mate::TrackableObject<Tray>,
public TrayIconObserver {
public:
static mate::Wrappable* New(v8::Isolate* isolate, const gfx::Image& image);
protected:
explicit Tray(const gfx::Image& image);
- virtual ~Tray();
+ ~Tray() override;
// TrayIconObserver:
void OnClicked(const gfx::Rect& bounds, int modifiers) override;
// mate::Wrappable:
bool IsDestroyed() const override;
- void Destroy();
+ // mate::TrackableObject:
+ void Destroy() override;
+
void SetImage(mate::Arguments* args, const gfx::Image& image);
void SetPressedImage(mate::Arguments* args, const gfx::Image& image);
void SetToolTip(mate::Arguments* args, const std::string& tool_tip);