Restructure WifiManager Action Listener.

Add proper names to events of action listener.
Add an Rpc method to retrieve device model.

Change-Id: If21311ac377d6c2332372f765916f280e25da680
diff --git a/Common/src/com/googlecode/android_scripting/facade/AndroidFacade.java b/Common/src/com/googlecode/android_scripting/facade/AndroidFacade.java
index f16ac30..6c461ae 100644
--- a/Common/src/com/googlecode/android_scripting/facade/AndroidFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/AndroidFacade.java
@@ -813,4 +813,9 @@
     }
     return result;
   }
+
+  @Rpc(description = "Get the end-user-visible name for the end product.")
+  public String getDeviceModel() {
+      return android.os.Build.MODEL;
+  }
 }
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 e0c32b2..11d4e64 100644
--- a/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/wifi/WifiManagerFacade.java
@@ -42,7 +42,6 @@
   private final IntentFilter mScanFilter;
   private final IntentFilter mStateChangeFilter;
   private final WifiScanReceiver mScanResultsAvailableReceiver;
-  private final WifiActionListener mWifiActionListener;
   private final WifiStateChangeReceiver mStateChangeReceiver;
 
   private WifiLock mLock;
@@ -62,7 +61,6 @@
     mStateChangeFilter.setPriority(999);
 
     mScanResultsAvailableReceiver = new WifiScanReceiver(mEventFacade);
-    mWifiActionListener = new WifiActionListener(mEventFacade);
     mStateChangeReceiver = new WifiStateChangeReceiver();
   }
 
@@ -102,27 +100,24 @@
 
   class WifiActionListener implements WifiManager.ActionListener{
     private final EventFacade mEventFacade;
-    private final Bundle mResults;
+    private final String TAG;
 
-    public WifiActionListener(EventFacade eventFacade) {
+    public WifiActionListener(EventFacade eventFacade, String tag) {
       mEventFacade = eventFacade;
-      mResults = new Bundle();
+      this.TAG = tag;
     }
 
     @Override
     public void onSuccess() {
-      Log.d("WifiActionListener  "+ mEventType);
-      mResults.putString("Type", "onSuccess");
-      mEventFacade.postEvent(mEventType, mResults.clone());
-      mResults.clear();
+      mEventFacade.postEvent(mEventType + TAG + "OnSuccess", null);
     }
 
     @Override
     public void onFailure(int reason) {
       Log.d("WifiActionListener  "+ mEventType);
-      mResults.putString("Type", "onFailure");
-      mEventFacade.postEvent(mEventType, mResults.clone());
-      mResults.clear();
+      Bundle msg = new Bundle();
+      msg.putInt("reason", reason);
+      mEventFacade.postEvent(mEventType + TAG + "OnFailure", msg);
     }
   }
 
@@ -132,8 +127,11 @@
         String action = intent.getAction();
         if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
             Log.d("Wifi network state changed.");
-            if (intent.hasExtra(WifiManager.EXTRA_WIFI_INFO)) {
-              WifiInfo wInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
+            NetworkInfo nInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
+            WifiInfo wInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
+            Log.d("NetworkInfo " + nInfo);
+            Log.d("WifiInfo " + wInfo);
+            if (wInfo != null) {
               Bundle msg = new Bundle();
               String ssid = wInfo.getSSID();
               if (ssid.charAt(0)=='"' && ssid.charAt(ssid.length()-1)=='"') {
@@ -142,12 +140,9 @@
                   msg.putString("ssid", ssid);
               }
               msg.putString("bssid", wInfo.getBSSID());
+              Log.d("WifiNetworkConnected");
               mEventFacade.postEvent("WifiNetworkConnected", msg);
             }
-            NetworkInfo nInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
-            WifiInfo wInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
-            Log.d("NetworkInfo " + nInfo);
-            Log.d("WifiInfo " + wInfo);
         } else if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
             Log.d("Supplicant connection state changed.");
             mIsConnected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false);
@@ -290,7 +285,8 @@
    */
   @Rpc(description = "Forget a wifi network with priority")
   public void wifiForgetNetwork(@RpcParameter(name = "wifiSSID") Integer newtorkId ) {
-    mWifi.forget(newtorkId, mWifiActionListener);
+    WifiActionListener listener = new WifiActionListener(mEventFacade, "ForgetNetwork");
+    mWifi.forget(newtorkId, listener);
   }
 
   @Rpc(description = "Return a list of all the configured wifi networks.")
@@ -343,7 +339,8 @@
       wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
     else
       wifiConfig.preSharedKey = "\"" + wifiPassword + "\"";
-    mWifi.connect(wifiConfig, mWifiActionListener);
+    WifiActionListener listener = new WifiActionListener(mEventFacade, "PriorityConnect");
+    mWifi.connect(wifiConfig, listener);
   }
 
   @Rpc(description = "Reassociates with the currently active access point.",