Merge "[DO NOT MERGE] WifiManagerFacade: split state trackers" into nyc-dev
diff --git a/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java b/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java
index 4c436fa..96947e7 100755
--- a/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java
@@ -78,6 +78,7 @@
     private final WifiScanReceiver mScanResultsAvailableReceiver;
     private final WifiStateChangeReceiver mStateChangeReceiver;
     private boolean mTrackingWifiStateChange;
+    private boolean mTrackingTetherStateChange;
 
     private final BroadcastReceiver mTetherStateReceiver = new BroadcastReceiver() {
         @Override
@@ -130,6 +131,7 @@
         mScanResultsAvailableReceiver = new WifiScanReceiver(mEventFacade);
         mStateChangeReceiver = new WifiStateChangeReceiver();
         mTrackingWifiStateChange = false;
+        mTrackingTetherStateChange = false;
     }
 
     private void makeLock(int wifiMode) {
@@ -835,19 +837,31 @@
     @Rpc(description = "Start listening for wifi state change related broadcasts.")
     public void wifiStartTrackingStateChange() {
         mService.registerReceiver(mStateChangeReceiver, mStateChangeFilter);
-        mService.registerReceiver(mTetherStateReceiver, mTetherFilter);
         mTrackingWifiStateChange = true;
     }
 
     @Rpc(description = "Stop listening for wifi state change related broadcasts.")
     public void wifiStopTrackingStateChange() {
         if (mTrackingWifiStateChange == true) {
-            mService.unregisterReceiver(mTetherStateReceiver);
             mService.unregisterReceiver(mStateChangeReceiver);
             mTrackingWifiStateChange = false;
         }
     }
 
+    @Rpc(description = "Start listening for tether state change related broadcasts.")
+    public void wifiStartTrackingTetherStateChange() {
+        mService.registerReceiver(mTetherStateReceiver, mTetherFilter);
+        mTrackingTetherStateChange = true;
+    }
+
+    @Rpc(description = "Stop listening for wifi state change related broadcasts.")
+    public void wifiStopTrackingTetherStateChange() {
+        if (mTrackingTetherStateChange == true) {
+            mService.unregisterReceiver(mTetherStateReceiver);
+            mTrackingTetherStateChange = false;
+        }
+    }
+
     @Rpc(description = "Toggle Wifi on and off.", returns = "True if Wifi is enabled.")
     public Boolean wifiToggleState(@RpcParameter(name = "enabled") @RpcOptional Boolean enabled) {
         if (enabled == null) {
@@ -888,5 +902,8 @@
         if (mTrackingWifiStateChange == true) {
             wifiStopTrackingStateChange();
         }
+        if (mTrackingTetherStateChange == true) {
+            wifiStopTrackingTetherStateChange();
+        }
     }
 }