diff --git a/dom/power/Makefile.in b/dom/power/Makefile.in index b5a663bae78..0cb7635960d 100644 --- a/dom/power/Makefile.in +++ b/dom/power/Makefile.in @@ -68,4 +68,6 @@ ifdef ENABLE_TESTS DIRS += test endif +include $(topsrcdir)/config/config.mk +include $(topsrcdir)/ipc/chromium/chromium-config.mk include $(topsrcdir)/config/rules.mk diff --git a/dom/power/PowerManager.cpp b/dom/power/PowerManager.cpp index 4ab6cbdc59b..b0196f2070a 100644 --- a/dom/power/PowerManager.cpp +++ b/dom/power/PowerManager.cpp @@ -35,9 +35,11 @@ * * ***** END LICENSE BLOCK ***** */ -#include "nsDOMClassInfoID.h" - #include "PowerManager.h" +#include "nsContentUtils.h" +#include "nsDOMClassInfoID.h" +#include "nsIPowerManagerService.h" +#include "nsServiceManagerUtils.h" DOMCI_DATA(MozPowerManager, mozilla::dom::power::PowerManager) @@ -57,13 +59,29 @@ NS_IMPL_RELEASE(PowerManager) NS_IMETHODIMP PowerManager::Reboot() { - return NS_ERROR_NOT_IMPLEMENTED; + NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome(), NS_ERROR_DOM_SECURITY_ERR); + + nsCOMPtr pmService = + do_GetService(POWERMANAGERSERVICE_CONTRACTID); + NS_ENSURE_TRUE(pmService, NS_OK); + + pmService->Reboot(); + + return NS_OK; } NS_IMETHODIMP PowerManager::PowerOff() { - return NS_ERROR_NOT_IMPLEMENTED; + NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome(), NS_ERROR_DOM_SECURITY_ERR); + + nsCOMPtr pmService = + do_GetService(POWERMANAGERSERVICE_CONTRACTID); + NS_ENSURE_TRUE(pmService, NS_OK); + + pmService->PowerOff(); + + return NS_OK; } } // power diff --git a/dom/power/PowerManagerService.cpp b/dom/power/PowerManagerService.cpp index 902b4dbba56..6cd0092eb7b 100644 --- a/dom/power/PowerManagerService.cpp +++ b/dom/power/PowerManagerService.cpp @@ -35,6 +35,7 @@ * * ***** END LICENSE BLOCK ***** */ +#include "mozilla/Hal.h" #include "PowerManagerService.h" namespace mozilla { @@ -56,13 +57,15 @@ PowerManagerService::GetInstance() NS_IMETHODIMP PowerManagerService::Reboot() { - return NS_ERROR_NOT_IMPLEMENTED; + hal::Reboot(); + return NS_OK; } NS_IMETHODIMP PowerManagerService::PowerOff() { - return NS_ERROR_NOT_IMPLEMENTED; + hal::PowerOff(); + return NS_OK; } } // power