forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			245 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			245 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | |
| /* ***** BEGIN LICENSE BLOCK *****
 | |
|  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 | |
|  *
 | |
|  * The contents of this file are subject to the Mozilla Public License Version
 | |
|  * 1.1 (the "License"); you may not use this file except in compliance with
 | |
|  * the License. You may obtain a copy of the License at
 | |
|  * http://www.mozilla.org/MPL/
 | |
|  *
 | |
|  * Software distributed under the License is distributed on an "AS IS" basis,
 | |
|  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 | |
|  * for the specific language governing rights and limitations under the
 | |
|  * License.
 | |
|  *
 | |
|  * The Original Code is mozilla.org code.
 | |
|  *
 | |
|  * The Initial Developer of the Original Code is Mozilla Foundation
 | |
|  * Portions created by the Initial Developer are Copyright (C) 2011
 | |
|  * the Initial Developer. All Rights Reserved.
 | |
|  *
 | |
|  * Contributor(s):
 | |
|  *   Mounir Lamouri <mounir.lamouri@mozilla.com> (Original Author)
 | |
|  *
 | |
|  * Alternatively, the contents of this file may be used under the terms of
 | |
|  * either of the GNU General Public License Version 2 or later (the "GPL"),
 | |
|  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 | |
|  * in which case the provisions of the GPL or the LGPL are applicable instead
 | |
|  * of those above. If you wish to allow use of your version of this file only
 | |
|  * under the terms of either the GPL or the LGPL, and not to allow others to
 | |
|  * use your version of this file under the terms of the MPL, indicate your
 | |
|  * decision by deleting the provisions above and replace them with the notice
 | |
|  * and other provisions required by the GPL or the LGPL. If you do not delete
 | |
|  * the provisions above, a recipient may use your version of this file under
 | |
|  * the terms of any one of the MPL, the GPL or the LGPL.
 | |
|  *
 | |
|  * ***** END LICENSE BLOCK ***** */
 | |
| 
 | |
| #include "Hal.h"
 | |
| #include "HalImpl.h"
 | |
| #include "WindowIdentifier.h"
 | |
| #include "AndroidBridge.h"
 | |
| #include "mozilla/dom/network/Constants.h"
 | |
| #include "mozilla/dom/ScreenOrientation.h"
 | |
| 
 | |
| using mozilla::hal::WindowIdentifier;
 | |
| 
 | |
| namespace mozilla {
 | |
| namespace hal_impl {
 | |
| 
 | |
| void
 | |
| Vibrate(const nsTArray<uint32> &pattern, const WindowIdentifier &)
 | |
| {
 | |
|   // Ignore the WindowIdentifier parameter; it's here only because hal::Vibrate,
 | |
|   // hal_sandbox::Vibrate, and hal_impl::Vibrate all must have the same
 | |
|   // signature.
 | |
| 
 | |
|   // Strangely enough, the Android Java API seems to treat vibrate([0]) as a
 | |
|   // nop.  But we want to treat vibrate([0]) like CancelVibrate!  (Note that we
 | |
|   // also need to treat vibrate([]) as a call to CancelVibrate.)
 | |
|   bool allZero = true;
 | |
|   for (uint32 i = 0; i < pattern.Length(); i++) {
 | |
|     if (pattern[i] != 0) {
 | |
|       allZero = false;
 | |
|       break;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (allZero) {
 | |
|     hal_impl::CancelVibrate(WindowIdentifier());
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   AndroidBridge* b = AndroidBridge::Bridge();
 | |
|   if (!b) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   b->Vibrate(pattern);
 | |
| }
 | |
| 
 | |
| void
 | |
| CancelVibrate(const WindowIdentifier &)
 | |
| {
 | |
|   // Ignore WindowIdentifier parameter.
 | |
| 
 | |
|   AndroidBridge* b = AndroidBridge::Bridge();
 | |
|   if (b)
 | |
|     b->CancelVibrate();
 | |
| }
 | |
| 
 | |
| void
 | |
| EnableBatteryNotifications()
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->EnableBatteryNotifications();
 | |
| }
 | |
| 
 | |
| void
 | |
| DisableBatteryNotifications()
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->DisableBatteryNotifications();
 | |
| }
 | |
| 
 | |
| void
 | |
| GetCurrentBatteryInformation(hal::BatteryInformation* aBatteryInfo)
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->GetCurrentBatteryInformation(aBatteryInfo);
 | |
| }
 | |
| 
 | |
| bool
 | |
| GetScreenEnabled()
 | |
| {
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| void
 | |
| SetScreenEnabled(bool enabled)
 | |
| {}
 | |
| 
 | |
| double
 | |
| GetScreenBrightness()
 | |
| {
 | |
|   return 1;
 | |
| }
 | |
| 
 | |
| void
 | |
| SetScreenBrightness(double brightness)
 | |
| {}
 | |
| 
 | |
| void
 | |
| EnableNetworkNotifications()
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->EnableNetworkNotifications();
 | |
| }
 | |
| 
 | |
| void
 | |
| DisableNetworkNotifications()
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->DisableNetworkNotifications();
 | |
| }
 | |
| 
 | |
| void
 | |
| GetCurrentNetworkInformation(hal::NetworkInformation* aNetworkInfo)
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->GetCurrentNetworkInformation(aNetworkInfo);
 | |
| }
 | |
| 
 | |
| void
 | |
| Reboot()
 | |
| {}
 | |
| 
 | |
| void
 | |
| PowerOff()
 | |
| {}
 | |
| 
 | |
| void
 | |
| EnableScreenOrientationNotifications()
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->EnableScreenOrientationNotifications();
 | |
| }
 | |
| 
 | |
| void
 | |
| DisableScreenOrientationNotifications()
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->DisableScreenOrientationNotifications();
 | |
| }
 | |
| 
 | |
| void
 | |
| GetCurrentScreenOrientation(dom::ScreenOrientation* aScreenOrientation)
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   dom::ScreenOrientationWrapper orientationWrapper;
 | |
|   bridge->GetScreenOrientation(orientationWrapper);
 | |
|   *aScreenOrientation = orientationWrapper.orientation;
 | |
| }
 | |
| 
 | |
| bool
 | |
| LockScreenOrientation(const dom::ScreenOrientation& aOrientation)
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return false;
 | |
|   }
 | |
| 
 | |
|   bridge->LockScreenOrientation(dom::ScreenOrientationWrapper(aOrientation));
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| void
 | |
| UnlockScreenOrientation()
 | |
| {
 | |
|   AndroidBridge* bridge = AndroidBridge::Bridge();
 | |
|   if (!bridge) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   bridge->UnlockScreenOrientation();
 | |
| }
 | |
| 
 | |
| } // hal_impl
 | |
| } // mozilla
 | |
| 
 | 
