OmniGears: user BatteryStatsHelper in wakelock fragement

and while we are here remove showing some wrong
confusing data

Change-Id: I51370ecef3145a396ffdca33080f3f65668f7577
diff --git a/res/layout/wakelocks.xml b/res/layout/wakelocks.xml
index 1c08b7c..1b9947f 100644
--- a/res/layout/wakelocks.xml
+++ b/res/layout/wakelocks.xml
@@ -26,7 +26,8 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="horizontal" >
+        android:orientation="horizontal"
+        android:paddingTop="10dp" >
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -34,46 +35,15 @@
             android:text="@string/spinner_type_title"/>
         <Spinner
             android:id="@+id/list_type_select"
-            android:layout_width="match_parent"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
+            android:layout_weight="1"
             android:gravity="center_vertical" />
-    </LinearLayout>
-    <LinearLayout
-        android:id="@+id/state_time_select_group"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:visibility="gone">
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:text="@string/spinner_state_time_title"/>
-        <Spinner
-            android:id="@+id/state_time_select"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:gravity="center_vertical" />
-    </LinearLayout>
-    <LinearLayout
-        android:id="@+id/ui_state_time"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingBottom="10dp"
-        android:paddingTop="10dp"
-        android:paddingEnd="10dp" >
         <TextView
             android:id="@+id/ui_total_state_time"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical" />
-        <Space
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1" />
-        <TextView
-            android:id="@+id/ui_total_wakelock_time"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:paddingStart="10dp"
             android:layout_gravity="center_vertical" />
     </LinearLayout>
 
diff --git a/src/org/omnirom/omnigears/system/Wakelocks.java b/src/org/omnirom/omnigears/system/Wakelocks.java
index 10893ac..17715a8 100644
--- a/src/org/omnirom/omnigears/system/Wakelocks.java
+++ b/src/org/omnirom/omnigears/system/Wakelocks.java
@@ -77,7 +77,7 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 
-import com.android.internal.app.IBatteryStats;
+import com.android.internal.os.BatteryStatsHelper;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.internal.os.BatteryStatsImpl;
 
@@ -88,19 +88,15 @@
 public class Wakelocks extends SettingsPreferenceFragment {
     private static final String TAG = "Wakelocks";
     private static String sRefFilename = "wakelockdata.ref";
-    private static String sUnplugFilename = "wakelockdata.unplug";
     private static final int MAX_KERNEL_LIST_ITEMS = 10;
     private static final int MAX_USER_LIST_ITEMS = 7;
-    private static final int TIME_PERIOD_RESET = 43;
     private LinearLayout mStatesView;
-    private LinearLayout mTimeView;
-    private LinearLayout mStateTimeView;
     private TextView mTotalStateTime;
-    private TextView mTotalWakelockTime;
     private TextView mKernelWakelockWarning;
     private boolean mUpdatingData;
     private Context mContext;
-    private static BatteryStats sBatteryStats;
+    private BatteryStats mBatteryStats;
+    private BatteryStatsHelper mStatsHelper;
     private long rawUptime;
     private long rawRealtime;
     private long sleepTime;
@@ -110,27 +106,20 @@
     private ArrayList<WakelockStats> mUserWakelocks = new ArrayList<WakelockStats>();
     private static ArrayList<WakelockStats> sRefKernelWakelocks = new ArrayList<WakelockStats>();
     private static ArrayList<WakelockStats> sRefUserWakelocks = new ArrayList<WakelockStats>();
-    private static ArrayList<WakelockStats> sUnplugKernelWakelocks = new ArrayList<WakelockStats>();
     private static long sRefRealTimestamp = 0;
     private static long sRefUpTimestamp = 0;
-    private static int sWhich = TIME_PERIOD_RESET;
     private static int sRefBatteryLevel = -1;
-    private static int sRefUnplugBatteryLevel = -1;
     private int mListType;
     private Spinner mListTypeSelect;
     private static boolean sKernelWakelockData = false;
     private boolean mShowAll;
     private StringBuffer mShareData;
-    private int mStateTimeMode;
-    private Spinner mStateTimeSelect;
     private PopupMenu mPopup;
     private long mUnplugBatteryUptime;
     private long mUnplugBatteryRealtime;
     private int mUnplugBatteryLevel;
     private boolean mIsOnBattery;
     private List<WakelockAppStats> mAppWakelockList = new ArrayList<WakelockAppStats>();
-    private static boolean sHasRefData;
-    private boolean mErrorLoadingStats;
     private Intent mShareIntent;
 
     private static final int MENU_REFRESH = Menu.FIRST;
@@ -294,18 +283,17 @@
         super.onCreate(savedInstanceState);
         mContext = getActivity();
         mListType = getPrefs().getInt("listType", 0);
-        mStateTimeMode = getPrefs().getInt("stateTime", 0);
 
         if (savedInstanceState != null) {
             mUpdatingData = savedInstanceState.getBoolean("updatingData");
             mListType = savedInstanceState.getInt("listType");
-            mStateTimeMode = savedInstanceState.getInt("stateTime");
         }
 
+        mStatsHelper = new BatteryStatsHelper(mContext, false);
+        mStatsHelper.create(savedInstanceState);
         setHasOptionsMenu(true);
 
         loadWakelockRef();
-        loadWakelockUnplug();
     }
 
     @Override
@@ -321,15 +309,9 @@
         View view = inflater.inflate(R.layout.wakelocks, root, false);
 
         mStatesView = (LinearLayout) view.findViewById(R.id.ui_states_view);
-        mTimeView = (LinearLayout) view.findViewById(R.id.ui_state_time);
-        mStateTimeView = (LinearLayout) view
-                .findViewById(R.id.state_time_select_group);
         mTotalStateTime = (TextView) view
                 .findViewById(R.id.ui_total_state_time);
-
-        mTotalWakelockTime = (TextView) view
-                .findViewById(R.id.ui_total_wakelock_time);
-        sWhich = TIME_PERIOD_RESET;
+        mTotalStateTime.setVisibility(View.GONE);
 
         mListTypeSelect = (Spinner) view.findViewById(R.id.list_type_select);
         ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
@@ -341,27 +323,6 @@
                     public void onItemSelected(AdapterView<?> parent,
                             View view, int position, long id) {
                         mListType = position;
-                        mStateTimeView.setVisibility(mListType == 0 ? View.GONE
-                                : View.VISIBLE);
-                        refreshData();
-                    }
-
-                    @Override
-                    public void onNothingSelected(AdapterView<?> arg0) {
-                    }
-                });
-
-        mStateTimeSelect = (Spinner) view.findViewById(R.id.state_time_select);
-        ArrayAdapter<CharSequence> adapter2 = ArrayAdapter
-                .createFromResource(mContext, R.array.state_time_entries,
-                        R.layout.spinner_item);
-        mStateTimeSelect.setAdapter(adapter2);
-        mStateTimeSelect
-                .setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
-                    @Override
-                    public void onItemSelected(AdapterView<?> parent,
-                            View view, int position, long id) {
-                        mStateTimeMode = position;
                         refreshData();
                     }
 
@@ -371,7 +332,6 @@
                 });
 
         mListTypeSelect.setSelection(mListType);
-        mStateTimeSelect.setSelection(mStateTimeMode);
 
         mKernelWakelockWarning = (TextView) view
                 .findViewById(R.id.ui_kernel_wakelock_warning);
@@ -385,7 +345,6 @@
         super.onSaveInstanceState(outState);
         outState.putBoolean("updatingData", mUpdatingData);
         outState.putInt("listType", mListType);
-        outState.putInt("stateTime", mStateTimeMode);
     }
 
     @Override
@@ -400,7 +359,6 @@
             mPopup.dismiss();
         }
         getPrefs().edit().putInt("listType", mListType).commit();
-        getPrefs().edit().putInt("stateTime", mStateTimeMode).commit();
         super.onPause();
     }
 
@@ -451,8 +409,6 @@
     }
 
     private void updateView() {
-        // Log.d(TAG, "updateView " + sKernelWakelockData + " " +
-        // mUpdatingData);
         if (mUpdatingData) {
             return;
         }
@@ -465,87 +421,44 @@
             mStatesView.setVisibility(View.VISIBLE);
             long totalTimeInSecs = 0;
             long totalUptimeInSecs = 0;
-            String batteryLevelText = null;
             boolean showStats = false;
-            mTotalWakelockTime.setText("");
-            mTotalStateTime.setText(getResources().getString(
-                    R.string.total_time) + " " + toString(totalTimeInSecs));
-            if (sWhich == TIME_PERIOD_RESET) {
-                if (mIsOnBattery) {
-                    if (sHasRefData) {
-                        totalTimeInSecs = Math.max(
-                                (rawRealtime - sRefRealTimestamp) / 1000, 0);
-                        totalUptimeInSecs = Math.max(
-                                (rawUptime - sRefUpTimestamp) / 1000, 0);
-                        if (sRefBatteryLevel != -1) {
-                            int batteryLevelDiff = mBatteryLevel
-                                    - sRefBatteryLevel;
-                            if (batteryLevelDiff != 0) {
-                                float hours = (float) totalTimeInSecs / 3600;
-                                batteryLevelText = String
-                                        .valueOf(batteryLevelDiff)
-                                        + "% "
-                                        + String.format("%.2f",
-                                                (float) batteryLevelDiff
-                                                        / hours) + "%/h";
-                            } else {
-                                batteryLevelText = "0% 0.00%/h";
-                            }
-                        }
-                        mKernelWakelockWarning.setVisibility(View.GONE);
-                        mTotalStateTime.setText(getResources().getString(
-                                R.string.total_time)
-                                + " " + toString(totalTimeInSecs));
-                        showStats = true;
-                    } else {
-                        mKernelWakelockWarning.setText(getResources().getString(
-                                R.string.no_stat_because_reset_wakelock));
-                        mKernelWakelockWarning.setVisibility(View.VISIBLE);
-                    }
-                } else {
+            mTotalStateTime.setText(toString(totalTimeInSecs));
+
+            if (mIsOnBattery) {
+                long now = System.currentTimeMillis();
+                long bootTime = now - rawRealtime;
+                long refDumpTime = getRefDataDumpTime();
+                if (refDumpTime == -1 || bootTime > refDumpTime) {
+                    // ref data was dumped before a reboot or no ref data at all
+                    // makes no sense to use require user to create new refpint
                     mKernelWakelockWarning.setText(getResources().getString(
-                            R.string.no_stat_because_plugged));
+                            R.string.no_stat_because_reset_wakelock));
                     mKernelWakelockWarning.setVisibility(View.VISIBLE);
+                } else {
+                    totalTimeInSecs = Math.max(
+                            (rawRealtime - sRefRealTimestamp) / 1000, 0);
+                    totalUptimeInSecs = Math.max(
+                            (rawUptime - sRefUpTimestamp) / 1000, 0);
+                    mKernelWakelockWarning.setVisibility(View.GONE);
+                    mTotalStateTime.setText(toString(totalTimeInSecs));
+                    showStats = true;
                 }
+            } else {
+                mKernelWakelockWarning.setText(getResources().getString(
+                        R.string.no_stat_because_plugged));
+                mKernelWakelockWarning.setVisibility(View.VISIBLE);
             }
+
             sleepTime = Math.max(totalTimeInSecs - totalUptimeInSecs, 0);
 
-            long kernelWakelockTime = getKernelWakelockSummaryTime();
-            long userWakelockTime = getUserWakelockSummaryTime();
-
-            long kernelWakelockTimeInSecs = kernelWakelockTime > 0 ? kernelWakelockTime / 1000
-                    : 0;
-            long userWakelockTimeInSecs = userWakelockTime > 0 ? userWakelockTime / 1000
-                    : 0;
-
             if (mListType == 0 && showStats) {
                 generateTimeRow(getResources().getString(R.string.awake_time),
                         totalUptimeInSecs, totalTimeInSecs, mStatesView);
                 generateTimeRow(
                         getResources().getString(R.string.deep_sleep_time),
                         sleepTime, totalTimeInSecs, mStatesView);
-                generateTimeRow(
-                        getResources().getString(R.string.kernel_wakelock_time),
-                        kernelWakelockTimeInSecs, totalTimeInSecs, mStatesView);
-                generateTimeRow(
-                        getResources().getString(R.string.user_wakelock_time),
-                        userWakelockTimeInSecs, totalTimeInSecs, mStatesView);
-
-                if (batteryLevelText != null) {
-                    generateTextRow(
-                            getResources().getString(R.string.battery_change),
-                            batteryLevelText, mStatesView);
-                }
-                mTotalWakelockTime.setText(getResources().getString(
-                        R.string.wakelock_time)
-                        + " "
-                        + toString(kernelWakelockTimeInSecs
-                                + userWakelockTimeInSecs));
             } else if (mListType == 1 && showStats) {
                 int i = 0;
-                if (mStateTimeMode == 1) {
-                    totalTimeInSecs = kernelWakelockTimeInSecs;
-                }
                 Iterator<WakelockStats> nextWakelock = mKernelWakelocks
                         .iterator();
                 while (nextWakelock.hasNext()) {
@@ -567,14 +480,8 @@
                         break;
                     }
                 }
-                mTotalWakelockTime.setText(getResources().getString(
-                        R.string.wakelock_time)
-                        + " " + toString(kernelWakelockTimeInSecs));
             } else if (mListType == 2 && showStats) {
                 int i = 0;
-                if (mStateTimeMode == 1) {
-                    totalTimeInSecs = userWakelockTimeInSecs;
-                }
                 Iterator<WakelockStats> nextWakelock = mUserWakelocks
                         .iterator();
                 while (nextWakelock.hasNext()) {
@@ -596,15 +503,9 @@
                         break;
                     }
                 }
-                mTotalWakelockTime.setText(getResources().getString(
-                        R.string.wakelock_time)
-                        + " " + toString(userWakelockTimeInSecs));
             } else if (mListType == 3 && showStats) {
                 boolean moreAdded = false;
                 int j = 0;
-                if (mStateTimeMode == 1) {
-                    totalTimeInSecs = userWakelockTimeInSecs;
-                }
                 Iterator<WakelockAppStats> nextWakelock = mAppWakelockList
                         .iterator();
                 while (nextWakelock.hasNext()) {
@@ -640,13 +541,8 @@
                         break;
                     }
                 }
-                mTotalWakelockTime.setText(getResources().getString(
-                        R.string.wakelock_time)
-                        + " " + toString(userWakelockTimeInSecs));
-
             }
         }
-        // Log.d(TAG, "updateView " + mShareData.length());
         updateShareIntent(mShareData.toString());
     }
 
@@ -1055,16 +951,11 @@
         }
     }
 
-    public static void clearStatus(Context context) {
-        Log.d(TAG, "clearStatus");
+    private void clearRefData() {
+        Log.d(TAG, "clearRefData");
         sRefKernelWakelocks.clear();
         sRefUserWakelocks.clear();
-        sUnplugKernelWakelocks.clear();
-        File file = new File(context.getFilesDir(), sRefFilename);
-        if (file.exists()) {
-            file.delete();
-        }
-        file = new File(context.getFilesDir(), sUnplugFilename);
+        File file = new File(mContext.getFilesDir(), sRefFilename);
         if (file.exists()) {
             file.delete();
         }
@@ -1072,29 +963,6 @@
         sRefRealTimestamp = 0;
         sRefUpTimestamp = 0;
         sRefBatteryLevel = -1;
-        sHasRefData = false;
-    }
-
-    public static void powerUnplugged(Context context) {
-        Log.d(TAG, "powerUnplugged");
-        PowerManager pm = (PowerManager) context
-                .getSystemService(Context.POWER_SERVICE);
-        PowerManager.WakeLock wl = pm.newWakeLock(
-                PowerManager.PARTIAL_WAKE_LOCK,
-                "PerformanceControl.powerUnplugged");
-        wl.acquire();
-
-        clearStatus(context);
-
-        readKernelWakelockStats(sUnplugKernelWakelocks);
-        saveUnplugWakelockData(context, sUnplugFilename, sUnplugKernelWakelocks);
-
-        wl.release();
-    }
-
-    public static void powerPlugged(Context context) {
-        Log.d(TAG, "powerPlugged");
-        sUnplugKernelWakelocks.clear();
     }
 
     private static void saveWakelockList(BufferedWriter buf,
@@ -1124,8 +992,6 @@
             saveWakelockList(buf, kernelData);
             saveWakelockList(buf, userData);
 
-            sHasRefData = true;
-
             buf.flush();
             buf.close();
         } catch (java.io.IOException e) {
@@ -1133,30 +999,23 @@
         }
     }
 
-    private static void saveUnplugWakelockData(Context context,
-            String fileName, ArrayList<WakelockStats> kernelData) {
-        try {
-            File file = new File(context.getFilesDir(), fileName);
-            BufferedWriter buf = new BufferedWriter(new FileWriter(file));
-
-            saveWakelockList(buf, kernelData);
-
-            buf.flush();
-            buf.close();
-        } catch (java.io.IOException e) {
-            Log.e(TAG, "saveUnplugWakelockData:", e);
+    private long getRefDataDumpTime() {
+        File file = new File(mContext.getFilesDir(), sRefFilename);
+        if (file.exists()) {
+            return file.lastModified();
         }
+        return -1;
     }
 
     private void saveWakelockRef(Context context) {
         sRefKernelWakelocks.clear();
         sRefUserWakelocks.clear();
         readKernelWakelockStats(sRefKernelWakelocks);
-        readUserWakelockStats(sBatteryStats, sRefUserWakelocks);
+        readUserWakelockStats(mBatteryStats, sRefUserWakelocks);
 
         sRefRealTimestamp = SystemClock.elapsedRealtime();
         sRefUpTimestamp = SystemClock.uptimeMillis();
-        sRefBatteryLevel = sBatteryStats.getDischargeCurrentLevel();
+        sRefBatteryLevel = mBatteryStats.getDischargeCurrentLevel();
         saveRefWakelockData(context, sRefFilename, sRefKernelWakelocks,
                 sRefUserWakelocks);
     }
@@ -1188,36 +1047,12 @@
                     }
                 }
             }
-            sHasRefData = true;
             buf.close();
         } catch (Exception e) {
             Log.e(TAG, "loadRefWakelockData:", e);
         }
     }
 
-    private void loadUnplugWakelockData(String fileName,
-            ArrayList<WakelockStats> kernelData) {
-        try {
-            File file = new File(mContext.getFilesDir(), fileName);
-            if (!file.exists()) {
-                return;
-            }
-            BufferedReader buf = new BufferedReader(new FileReader(file));
-            String line = null;
-            while ((line = buf.readLine()) != null) {
-                WakelockStats wl = fromString(line);
-                if (wl != null) {
-                    if (wl.mType == 0) {
-                        kernelData.add(wl);
-                    }
-                }
-            }
-            buf.close();
-        } catch (Exception e) {
-            Log.e(TAG, "loadUnplugWakelockData:", e);
-        }
-    }
-
     private void loadWakelockRef() {
         sRefKernelWakelocks.clear();
         sRefUserWakelocks.clear();
@@ -1225,11 +1060,6 @@
                 sRefUserWakelocks);
     }
 
-    private void loadWakelockUnplug() {
-        sUnplugKernelWakelocks.clear();
-        loadUnplugWakelockData(sUnplugFilename, sUnplugKernelWakelocks);
-    }
-
     private ArrayList<WakelockStats> diffToWakelockStatus(
             ArrayList<WakelockStats> refList, ArrayList<WakelockStats> list) {
         if (refList == null || refList.size() == 0) {
@@ -1286,9 +1116,9 @@
                     if (partialWakeTimer != null) {
                         long totalTimeMillis = computeWakeLock(
                                 partialWakeTimer, rawRealtime * 1000,
-                                BatteryStats.STATS_SINCE_UNPLUGGED);
+                                BatteryStats.STATS_SINCE_CHARGED);
                         int count = partialWakeTimer
-                                .getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED);
+                                .getCountLocked(BatteryStats.STATS_SINCE_CHARGED);
                         if (totalTimeMillis > 0 && count > 0) {
                             WakelockStats foundEntry = indexList.get(ent
                                     .getKey());
@@ -1321,9 +1151,9 @@
                 BatteryStats.Timer wl = ent.getValue();
 
                 long totalTimeMillis = microToMillis(wl.getTotalTimeLocked(
-                        rawRealtime * 1000, BatteryStats.STATS_SINCE_UNPLUGGED));
+                        rawRealtime * 1000, BatteryStats.STATS_SINCE_CHARGED));
                 int count = wl
-                        .getCountLocked(BatteryStats.STATS_SINCE_UNPLUGGED);
+                        .getCountLocked(BatteryStats.STATS_SINCE_CHARGED);
 
                 if (totalTimeMillis > 0 && count > 0) {
                     WakelockStats entry = new WakelockStats(0, ent.getKey(),
@@ -1340,82 +1170,51 @@
     }
 
     private void load() {
-        // Log.d(TAG, "load");
-        mErrorLoadingStats = false;
-        try {
-            mShowAll = false;
-            mShareData = new StringBuffer();
-            IBatteryStats stats = IBatteryStats.Stub.asInterface(ServiceManager
-                    .getService(BatteryStats.SERVICE_NAME));
-            byte[] data = stats.getStatistics();
-            Parcel parcel = Parcel.obtain();
-            parcel.unmarshall(data, 0, data.length);
-            parcel.setDataPosition(0);
-            sBatteryStats = com.android.internal.os.BatteryStatsImpl.CREATOR
-                    .createFromParcel(parcel);
+        mShowAll = false;
+        mShareData = new StringBuffer();
+        mStatsHelper.clearStats();
+        mBatteryStats = mStatsHelper.getStats();
 
-            rawUptime = SystemClock.uptimeMillis();
-            rawRealtime = SystemClock.elapsedRealtime();
-            mBatteryLevel = sBatteryStats.getDischargeCurrentLevel();
-            mUnplugBatteryLevel = sBatteryStats.getDischargeStartLevel();
+        rawUptime = SystemClock.uptimeMillis();
+        rawRealtime = SystemClock.elapsedRealtime();
+        mBatteryLevel = mBatteryStats.getDischargeCurrentLevel();
+        mUnplugBatteryLevel = mBatteryStats.getDischargeStartLevel();
 
-            mUnplugBatteryUptime = sBatteryStats.computeBatteryUptime(
-                    rawUptime * 1000, BatteryStats.STATS_SINCE_UNPLUGGED);
-            mUnplugBatteryRealtime = sBatteryStats.computeBatteryRealtime(
-                    rawRealtime * 1000, BatteryStats.STATS_SINCE_UNPLUGGED);
-            mIsOnBattery = sBatteryStats.getIsOnBattery();
+        mUnplugBatteryUptime = mBatteryStats.computeBatteryUptime(
+                rawUptime * 1000, BatteryStats.STATS_SINCE_CHARGED);
+        mUnplugBatteryRealtime = mBatteryStats.computeBatteryRealtime(
+                rawRealtime * 1000, BatteryStats.STATS_SINCE_CHARGED);
+        mIsOnBattery = mBatteryStats.getIsOnBattery();
 
-            mShareData.append("\n================\n");
-            mShareData.append("Kernel wakelocks\n");
-            mShareData.append("================\n");
-            ArrayList<WakelockStats> allKernelWakelocks = new ArrayList<WakelockStats>();
-            readKernelWakelockStats(/* sBatteryStats, */allKernelWakelocks);
+        mShareData.append("\n================\n");
+        mShareData.append("Kernel wakelocks\n");
+        mShareData.append("================\n");
+        ArrayList<WakelockStats> allKernelWakelocks = new ArrayList<WakelockStats>();
+        readKernelWakelockStats(/* mBatteryStats, */allKernelWakelocks);
 
-            // init ref data after unplug
-            if (sRefBatteryLevel == -1) {
-                sRefRealTimestamp = rawRealtime;
-                sRefUpTimestamp = rawUptime;
-                sRefBatteryLevel = mUnplugBatteryLevel;
-                sRefKernelWakelocks.addAll(allKernelWakelocks);
-            }
-
-            mKernelWakelocks.clear();
-            if (sWhich == TIME_PERIOD_RESET) {
-                if (mIsOnBattery) {
-                    mKernelWakelocks.addAll(diffToWakelockStatus(
-                            sRefKernelWakelocks, allKernelWakelocks));
-                }
-            } else {
-                mKernelWakelocks.addAll(allKernelWakelocks);
-            }
-            Collections.sort(mKernelWakelocks, sWakelockStatsComparator);
-            mShareData.append(mKernelWakelocks.toString());
-
-            mShareData.append("\n================\n");
-            mShareData.append("Wakelocks\n");
-            mShareData.append("================\n");
-            ArrayList<WakelockStats> allUserWakelocks = new ArrayList<WakelockStats>();
-            readUserWakelockStats(sBatteryStats, allUserWakelocks);
-
-            mUserWakelocks.clear();
-            if (sWhich == TIME_PERIOD_RESET) {
-                if (mIsOnBattery) {
-                    mUserWakelocks.addAll(diffToWakelockStatus(
-                            sRefUserWakelocks, allUserWakelocks));
-                }
-            } else {
-                mUserWakelocks.addAll(allUserWakelocks);
-            }
-            Collections.sort(mUserWakelocks, sWakelockStatsComparator);
-            mShareData.append(mUserWakelocks.toString());
-
-            buildAppWakelockList();
-            Collections.sort(mAppWakelockList, sAppWakelockStatsComparator);
-
-        } catch (RemoteException e) {
-            Log.e(TAG, "RemoteException:", e);
-            mErrorLoadingStats = true;
+        mKernelWakelocks.clear();
+        if (mIsOnBattery) {
+            mKernelWakelocks.addAll(diffToWakelockStatus(
+                    sRefKernelWakelocks, allKernelWakelocks));
         }
+        Collections.sort(mKernelWakelocks, sWakelockStatsComparator);
+        mShareData.append(mKernelWakelocks.toString());
+        mShareData.append("\n================\n");
+        mShareData.append("Wakelocks\n");
+        mShareData.append("================\n");
+        ArrayList<WakelockStats> allUserWakelocks = new ArrayList<WakelockStats>();
+        readUserWakelockStats(mBatteryStats, allUserWakelocks);
+
+        mUserWakelocks.clear();
+        if (mIsOnBattery) {
+            mUserWakelocks.addAll(diffToWakelockStatus(
+                    sRefUserWakelocks, allUserWakelocks));
+        }
+        Collections.sort(mUserWakelocks, sWakelockStatsComparator);
+        mShareData.append(mUserWakelocks.toString());
+
+        buildAppWakelockList();
+        Collections.sort(mAppWakelockList, sAppWakelockStatsComparator);
     }
 
     private void buildAppWakelockList() {
@@ -1435,28 +1234,6 @@
         }
     }
 
-    private long getKernelWakelockSummaryTime() {
-        long totalTime = 0;
-        Iterator<WakelockStats> nextWakelock = mKernelWakelocks.iterator();
-        while (nextWakelock.hasNext()) {
-            WakelockStats entry = nextWakelock.next();
-            long mSecs = entry.mPreventSuspendTime;
-            totalTime += mSecs;
-        }
-        return totalTime;
-    }
-
-    private long getUserWakelockSummaryTime() {
-        long totalTime = 0;
-        Iterator<WakelockStats> nextWakelock = mUserWakelocks.iterator();
-        while (nextWakelock.hasNext()) {
-            WakelockStats entry = nextWakelock.next();
-            long mSecs = entry.mPreventSuspendTime;
-            totalTime += mSecs;
-        }
-        return totalTime;
-    }
-
     private void handleLongPress(final WakelockStats entry, View view) {
         final PopupMenu popup = new PopupMenu(mContext, view);
         mPopup = popup;