Bug 710793 - Move hal's private methods outside of Hal.h. r=jlebar sr=cjones
authorMounir Lamouri <mounir.lamouri@gmail.com>
Sat, 17 Dec 2011 22:04:51 +0100
changeset 84901 e04774d1a06f82fa03a6445aec4ecbf088dc0793
parent 84900 d1bce65ac70db6debecd69292424aeca54ab814f
child 84902 08543c8312d6dbd7c4f9f42ea612d81aa35569a0
push id114
push userffxbld
push dateFri, 09 Mar 2012 01:01:18 +0000
treeherdermozilla-release@c081ebf13261 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjlebar, cjones
bugs710793
milestone11.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 710793 - Move hal's private methods outside of Hal.h. r=jlebar sr=cjones
hal/Hal.cpp
hal/Hal.h
hal/HalImpl.h
hal/HalInternal.h
hal/HalSandbox.h
hal/android/AndroidHal.cpp
hal/windows/WindowsBattery.cpp
--- 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;