Bug 710793 - Move hal's private methods outside of Hal.h. r=jlebar sr=cjones
--- a/hal/Hal.cpp
+++ b/hal/Hal.cpp
@@ -33,16 +33,18 @@
* 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 "HalSandbox.h"
#include "mozilla/Util.h"
#include "nsThreadUtils.h"
#include "nsXULAppAPI.h"
#include "mozilla/Observer.h"
#include "nsIDOMDocument.h"
#include "nsIDOMWindow.h"
#include "mozilla/Services.h"
#include "nsIWebNavigation.h"
@@ -257,19 +259,16 @@ RegisterBatteryObserver(BatteryObserver*
void
UnregisterBatteryObserver(BatteryObserver* aBatteryObserver)
{
AssertMainThread();
sBatteryObservers.RemoveObserver(aBatteryObserver);
}
-// EnableBatteryNotifications isn't defined on purpose.
-// DisableBatteryNotifications isn't defined on purpose.
-
void
GetCurrentBatteryInformation(BatteryInformation* aBatteryInfo)
{
AssertMainThread();
if (sBatteryObservers.HasCachedBatteryInformation()) {
sBatteryObservers.GetCachedBatteryInformation(aBatteryInfo);
} else {
--- a/hal/Hal.h
+++ b/hal/Hal.h
@@ -35,63 +35,52 @@
* 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 ***** */
#ifndef mozilla_Hal_h
#define mozilla_Hal_h 1
+#include "mozilla/hal_sandbox/PHal.h"
#include "base/basictypes.h"
#include "mozilla/Types.h"
#include "nsTArray.h"
#include "prlog.h"
#include "mozilla/dom/battery/Types.h"
-#ifndef MOZ_HAL_NAMESPACE
+/*
+ * Hal.h contains the public Hal API.
+ *
+ * By default, this file defines its functions in the hal namespace, but if
+ * MOZ_HAL_NAMESPACE is defined, we'll define our functions in that namespace.
+ *
+ * This is used by HalImpl.h and HalSandbox.h, which define copies of all the
+ * functions here in the hal_impl and hal_sandbox namespaces.
+ */
class nsIDOMWindow;
-// Only include this hunk of code once, and include it before
-// HalImpl.h and HalSandbox.h.
-namespace mozilla {
-namespace hal {
-
-extern PRLogModuleInfo *sHalLog;
-#define HAL_LOG(msg) PR_LOG(sHalLog, PR_LOG_DEBUG, msg)
-
-class WindowIdentifier;
-
-} // namespace hal
-} // namespace mozilla
-
-// This goop plays some cpp tricks to ensure a uniform API across the
-// API entry point, "sandbox" implementations (for content processes),
-// and "impl" backends where the real work happens. After this runs
-// through cpp, there will be three sets of identical APIs
-// hal_impl:: --- the platform-specific implementation of an API.
-// hal_sandbox:: --- forwards calls up to the parent process
-// hal:: --- invokes sandboxed impl if in a sandboxed process,
-// otherwise forwards to hal_impl
-//
-// External code should never invoke hal_impl:: or hal_sandbox:: code
-// directly.
-# include "HalImpl.h"
-# include "HalSandbox.h"
+#ifndef MOZ_HAL_NAMESPACE
# define MOZ_HAL_NAMESPACE hal
# define MOZ_DEFINED_HAL_NAMESPACE 1
#endif
namespace mozilla {
namespace hal {
-class BatteryInformation;
+
+class WindowIdentifier;
+
+extern PRLogModuleInfo *sHalLog;
+#define HAL_LOG(msg) PR_LOG(sHalLog, PR_LOG_DEBUG, msg)
+
} // namespace hal
-namespace MOZ_HAL_NAMESPACE /*hal*/ {
+namespace MOZ_HAL_NAMESPACE {
/**
* Turn the default vibrator device on/off per the pattern specified
* by |pattern|. Each element in the pattern is the number of
* milliseconds to turn the vibrator on or off. The first element in
* |pattern| is an "on" element, the next is "off", and so on.
*
* If |pattern| is empty, any in-progress vibration is canceled.
@@ -131,34 +120,16 @@ void RegisterBatteryObserver(BatteryObse
/**
* Inform the battery backend a battery observer unregistered.
* @param aBatteryObserver The observer that should be removed.
*/
void UnregisterBatteryObserver(BatteryObserver* aBatteryObserver);
/**
- * Enables battery notifications from the backend.
- *
- * This method is semi-private in the sense of it is visible in the hal
- * namespace but should not be used. Calls to this method from the hal
- * namespace will produce a link error because it is not defined.
- */
-void EnableBatteryNotifications();
-
-/**
- * Disables battery notifications from the backend.
- *
- * This method is semi-private in the sense of it is visible in the hal
- * namespace but should not be used. Calls to this method from the hal
- * namespace will produce a link error because it is not defined.
- */
-void DisableBatteryNotifications();
-
-/**
* Returns the current battery information.
*/
void GetCurrentBatteryInformation(hal::BatteryInformation* aBatteryInfo);
/**
* Notify of a change in the battery state.
* @param aBatteryInfo The new battery information.
*/
--- a/hal/HalImpl.h
+++ b/hal/HalImpl.h
@@ -32,17 +32,19 @@
* 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 ***** */
-#ifndef mozilla_Hal_h
-# error "This is an internal file, don't include it"
-#endif
+#ifndef mozilla_HalImpl_h
+#define mozilla_HalImpl_h
+#define MOZ_HAL_NAMESPACE hal_impl
#undef mozilla_Hal_h
-#define MOZ_HAL_NAMESPACE hal_impl
+#undef mozilla_HalInternal_h
#include "Hal.h"
+#include "HalInternal.h"
#undef MOZ_HAL_NAMESPACE
+#endif // mozilla_HalImpl_h
new file mode 100644
--- /dev/null
+++ b/hal/HalInternal.h
@@ -0,0 +1,73 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set sw=2 ts=8 et ft=cpp : */
+/* ***** 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 Code.
+ *
+ * The Initial Developer of the Original Code is
+ * The 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>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either 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 ***** */
+
+#ifndef mozilla_HalInternal_h
+#define mozilla_HalInternal_h 1
+
+/*
+ * This file is included by HalImpl.h and HalSandbox.h with a mechanism similar
+ * to Hal.h. That means those headers set MOZ_HAL_NAMESPACE to specify in which
+ * namespace the internal functions should appear.
+ *
+ * The difference between Hal.h and HalInternal.h is that methods declared in
+ * HalInternal.h don't appear in the hal namespace. That also means this file
+ * should not be included except by HalInternal.h and HalSandbox.h.
+ */
+
+#ifndef MOZ_HAL_NAMESPACE
+# error "You shouldn't directly include HalInternal.h!"
+#endif
+
+namespace mozilla {
+namespace MOZ_HAL_NAMESPACE {
+
+/**
+ * Enables battery notifications from the backend.
+ */
+void EnableBatteryNotifications();
+
+/**
+ * Disables battery notifications from the backend.
+ */
+void DisableBatteryNotifications();
+
+} // namespace MOZ_HAL_NAMESPACE
+} // namespace mozilla
+
+#endif // mozilla_HalInternal_h
--- a/hal/HalSandbox.h
+++ b/hal/HalSandbox.h
@@ -32,17 +32,19 @@
* 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 ***** */
-#ifndef mozilla_Hal_h
-# error "This is an internal file, don't include it"
-#endif
+#ifndef mozilla_hal_HalSandbox_h
+#define mozilla_hal_HalSandbox_h
+#define MOZ_HAL_NAMESPACE hal_sandbox
#undef mozilla_Hal_h
-#define MOZ_HAL_NAMESPACE hal_sandbox
+#undef mozilla_HalInternal_h
#include "Hal.h"
-#include "mozilla/hal_sandbox/PHal.h"
+#include "HalInternal.h"
#undef MOZ_HAL_NAMESPACE
+
+#endif // mozilla_hal_HalSandbox_h
--- a/hal/android/AndroidHal.cpp
+++ b/hal/android/AndroidHal.cpp
@@ -31,16 +31,17 @@
* 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"
using mozilla::hal::WindowIdentifier;
namespace mozilla {
namespace hal_impl {
--- a/hal/windows/WindowsBattery.cpp
+++ b/hal/windows/WindowsBattery.cpp
@@ -31,16 +31,17 @@
* 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 "nsITimer.h"
#include "mozilla/Preferences.h"
#include "mozilla/dom/battery/Constants.h"
#include <windows.h>
using namespace mozilla::dom::battery;