| 
									
										
										
										
											2013-08-03 15:58:59 +08:00
										 |  |  | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
 | 
					
						
							|  |  |  | // Use of this source code is governed by a BSD-style license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-16 08:30:26 +08:00
										 |  |  | #include "atom/browser/api/atom_api_power_monitor.h"
 | 
					
						
							| 
									
										
										
										
											2013-08-03 15:58:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include "base/power_monitor/power_monitor.h"
 | 
					
						
							| 
									
										
										
										
											2013-12-11 15:48:19 +08:00
										 |  |  | #include "base/power_monitor/power_monitor_device_source.h"
 | 
					
						
							| 
									
										
										
										
											2014-04-17 17:13:17 +08:00
										 |  |  | #include "native_mate/dictionary.h"
 | 
					
						
							| 
									
										
										
										
											2013-12-11 15:48:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 13:45:14 +08:00
										 |  |  | #include "atom/common/node_includes.h"
 | 
					
						
							| 
									
										
										
										
											2013-08-03 15:58:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace atom { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace api { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 17:13:17 +08:00
										 |  |  | PowerMonitor::PowerMonitor() { | 
					
						
							| 
									
										
										
										
											2013-08-03 15:58:59 +08:00
										 |  |  |   base::PowerMonitor::Get()->AddObserver(this); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PowerMonitor::~PowerMonitor() { | 
					
						
							|  |  |  |   base::PowerMonitor::Get()->RemoveObserver(this); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void PowerMonitor::OnPowerStateChange(bool on_battery_power) { | 
					
						
							|  |  |  |   if (on_battery_power) | 
					
						
							|  |  |  |     Emit("on-battery"); | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     Emit("on-ac"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void PowerMonitor::OnSuspend() { | 
					
						
							|  |  |  |   Emit("suspend"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void PowerMonitor::OnResume() { | 
					
						
							|  |  |  |   Emit("resume"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // static
 | 
					
						
							| 
									
										
										
										
											2014-04-17 17:13:17 +08:00
										 |  |  | mate::Handle<PowerMonitor> PowerMonitor::Create(v8::Isolate* isolate) { | 
					
						
							|  |  |  |   return CreateHandle(isolate, new PowerMonitor); | 
					
						
							| 
									
										
										
										
											2013-08-03 15:58:59 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 17:13:17 +08:00
										 |  |  | }  // namespace api
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace atom
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void Initialize(v8::Handle<v8::Object> exports) { | 
					
						
							| 
									
										
										
										
											2013-12-11 15:48:19 +08:00
										 |  |  | #if defined(OS_MACOSX)
 | 
					
						
							|  |  |  |   base::PowerMonitorDeviceSource::AllocateSystemIOPorts(); | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2013-08-03 15:58:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 17:13:17 +08:00
										 |  |  |   using atom::api::PowerMonitor; | 
					
						
							|  |  |  |   v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 
					
						
							|  |  |  |   mate::Handle<PowerMonitor> power_monitor = PowerMonitor::Create(isolate); | 
					
						
							|  |  |  |   mate::Dictionary dict(isolate, exports); | 
					
						
							|  |  |  |   dict.Set("powerMonitor", power_monitor); | 
					
						
							| 
									
										
										
										
											2013-08-03 15:58:59 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 17:13:17 +08:00
										 |  |  | }  // namespace
 | 
					
						
							| 
									
										
										
										
											2013-08-03 15:58:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 17:13:17 +08:00
										 |  |  | NODE_MODULE(atom_browser_power_monitor, Initialize) |