Automated import from //branches/master/...@142348,142348
diff --git a/services/java/com/android/server/status/StatusBarPolicy.java b/services/java/com/android/server/status/StatusBarPolicy.java
index 36d1465..713cd13 100644
--- a/services/java/com/android/server/status/StatusBarPolicy.java
+++ b/services/java/com/android/server/status/StatusBarPolicy.java
@@ -17,9 +17,11 @@
 package com.android.server.status;
 
 import com.android.internal.R;
+import com.android.internal.app.IBatteryStats;
 import com.android.internal.location.GpsLocationProvider;
 import com.android.internal.telephony.SimCard;
 import com.android.internal.telephony.TelephonyIntents;
+import com.android.server.am.BatteryStatsService;
 
 import android.app.AlertDialog;
 import android.bluetooth.BluetoothA2dp;
@@ -38,9 +40,11 @@
 import android.media.AudioManager;
 import android.net.NetworkInfo;
 import android.net.wifi.WifiManager;
+import android.os.Binder;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
+import android.os.RemoteException;
 import android.provider.Settings;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
@@ -78,9 +82,10 @@
     private static final int BATTERY_THRESHOLD_WARNING = 1;
     private static final int BATTERY_THRESHOLD_EMPTY = 2;
 
-    private Context mContext;
-    private StatusBarService mService;
-    private Handler mHandler = new StatusBarHandler();
+    private final Context mContext;
+    private final StatusBarService mService;
+    private final Handler mHandler = new StatusBarHandler();
+    private final IBatteryStats mBatteryStats;
 
     // clock
     private Calendar mCalendar;
@@ -144,6 +149,7 @@
     SimCard.State mSimState = SimCard.State.READY;
     int mPhoneState = TelephonyManager.CALL_STATE_IDLE;
     int mDataState = TelephonyManager.DATA_DISCONNECTED;
+    int mDataNetType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
     int mDataActivity = TelephonyManager.DATA_ACTIVITY_NONE;
     ServiceState mServiceState;
     int mSignalAsu = -1;
@@ -250,6 +256,7 @@
     private StatusBarPolicy(Context context, StatusBarService service) {
         mContext = context;
         mService = service;
+        mBatteryStats = BatteryStatsService.getService();
 
         // clock
         mCalendar = Calendar.getInstance(TimeZone.getDefault());
@@ -711,8 +718,8 @@
     }
 
     private final void updateDataNetType() {
-        int net = mPhone.getNetworkType();
-        switch (net) {
+        mDataNetType = mPhone.getNetworkType();
+        switch (mDataNetType) {
             case TelephonyManager.NETWORK_TYPE_EDGE:
                 mDataIconList = sDataNetType_e;
                 break;
@@ -766,6 +773,13 @@
             mDataData.iconId = com.android.internal.R.drawable.stat_sys_no_sim;
             mService.updateIcon(mDataIcon, mDataData, null);
         }
+        long ident = Binder.clearCallingIdentity();
+        try {
+            mBatteryStats.notePhoneDataConnectionState(mDataNetType, visible);
+        } catch (RemoteException e) {
+        } finally {
+            Binder.restoreCallingIdentity(ident);
+        }
         if (mDataIconVisible != visible) {
             mService.setIconVisibility(mDataIcon, visible);
             mDataIconVisible = visible;