// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.olio.data.object.analytics; import android.content.Context; import android.os.Environment; import com.olio.util.ALog; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Set; // Referenced classes of package com.olio.data.object.analytics: // KernelWakeLock public class KernelWakeLockUtils { public static final String KERNEL_WAKE_LOCK_LAST_OBJECT_FILE_NAME = "wakeup_sources_last_object"; public static final String KERNEL_WAKE_LOCK_TOTAL_COUNT_OBJECT_FILE_NAME = "wakeup_sources_total_count"; public static final String WAKE_LOCK_LOG_FILE_NAME = "wakeup_sources"; private static final String WAKE_LOCK_LOG_LOCATION = "/sys/kernel/debug/"; private static KernelWakeLockUtils mInstance = null; private HashMap mKernelWakeLocksLast; private HashMap mKernelWakeLocksTotal; private Context mMockContext; private KernelWakeLockUtils() { } public static KernelWakeLockUtils getInstance() { if (mInstance == null) { mInstance = new KernelWakeLockUtils(); } return mInstance; } private FileInputStream inputStreamForTests(String s, FileInputStream fileinputstream) { FileInputStream fileinputstream1; try { fileinputstream1 = mMockContext.openFileInput(s); } catch (FileNotFoundException filenotfoundexception) { try { mMockContext.openFileOutput(s, 0).flush(); } catch (Exception exception) { ALog.e("File doesn't exist.", exception, new Object[0]); } try { s = mMockContext.openFileInput(s); } // Misplaced declaration of an exception variable catch (String s) { return fileinputstream; } return s; } return fileinputstream1; } private HashMap loadSavedKernelWakeLockFrom(String s) { Object obj; Object obj1; BufferedReader bufferedreader; Object obj2; HashMap hashmap; hashmap = new HashMap(); obj2 = null; bufferedreader = null; obj1 = bufferedreader; obj = obj2; if (mMockContext == null) goto _L2; else goto _L1 _L1: obj1 = bufferedreader; obj = obj2; s = inputStreamForTests(s, null); _L8: obj1 = s; obj = s; bufferedreader = new BufferedReader(new InputStreamReader(s)); _L4: obj1 = s; obj = s; obj2 = bufferedreader.readLine(); if (obj2 == null) { break; /* Loop/switch isn't completed */ } obj1 = s; obj = s; obj2 = new KernelWakeLock(((String) (obj2))); obj1 = s; obj = s; hashmap.put(((KernelWakeLock) (obj2)).name, obj2); continue; /* Loop/switch isn't completed */ obj2; obj1 = s; obj = s; ALog.e("KernelWakeLockUtils attempted to parse a bad line", ((Throwable) (obj2)), new Object[0]); if (true) goto _L4; else goto _L3 _L6: ALog.e("Error opening saved kernel wake locks", s, new Object[0]); if (obj1 != null) { try { ((FileInputStream) (obj1)).close(); } // Misplaced declaration of an exception variable catch (String s) { s.printStackTrace(); return hashmap; } } return hashmap; _L2: obj1 = bufferedreader; obj = obj2; s = new File(String.format("%s%s%s", new Object[] { Environment.getExternalStorageDirectory(), File.separator, s })); obj1 = bufferedreader; obj = obj2; if (!s.exists()) { break MISSING_BLOCK_LABEL_227; } obj1 = bufferedreader; obj = obj2; try { s = new FileInputStream(s); continue; /* Loop/switch isn't completed */ } // Misplaced declaration of an exception variable catch (String s) { obj = obj1; } finally { if (obj != null) { try { ((FileInputStream) (obj)).close(); } catch (IOException ioexception) { ioexception.printStackTrace(); } } throw s; } if (true) goto _L6; else goto _L5 _L5: obj1 = bufferedreader; obj = obj2; s.createNewFile(); if (false) { try { throw new NullPointerException(); } // Misplaced declaration of an exception variable catch (String s) { s.printStackTrace(); } return hashmap; } else { break MISSING_BLOCK_LABEL_154; } _L3: if (s != null) { try { s.close(); } // Misplaced declaration of an exception variable catch (String s) { s.printStackTrace(); return hashmap; } return hashmap; } else { break MISSING_BLOCK_LABEL_154; } if (true) goto _L8; else goto _L7 _L7: } private HashMap readCurrentKernelWakeLocks() { Object obj; Object obj1; Object obj2; BufferedReader bufferedreader; HashMap hashmap; hashmap = new HashMap(); bufferedreader = null; obj = null; obj2 = obj; obj1 = bufferedreader; if (mMockContext == null) goto _L2; else goto _L1 _L1: obj2 = obj; obj1 = bufferedreader; obj = mMockContext.openFileInput("wakeup_sources"); _L10: obj2 = obj; obj1 = obj; bufferedreader = new BufferedReader(new InputStreamReader(((java.io.InputStream) (obj)))); boolean flag = true; _L7: obj2 = obj; obj1 = obj; Object obj3 = bufferedreader.readLine(); if (obj3 == null) goto _L4; else goto _L3 _L3: if (!flag) goto _L6; else goto _L5 _L5: flag = false; goto _L7 _L2: obj2 = obj; obj1 = bufferedreader; IOException ioexception; ArrayIndexOutOfBoundsException arrayindexoutofboundsexception; try { obj = new FileInputStream(new File(String.format("%s%s", new Object[] { "/sys/kernel/debug/", "wakeup_sources" }))); continue; /* Loop/switch isn't completed */ } // Misplaced declaration of an exception variable catch (Object obj) { obj1 = obj2; } finally { if (obj1 != null) { try { ((FileInputStream) (obj1)).close(); } catch (IOException ioexception1) { ioexception1.printStackTrace(); } } throw exception; } goto _L8 _L6: obj2 = obj; obj1 = obj; obj3 = new KernelWakeLock(((String) (obj3))); obj2 = obj; obj1 = obj; hashmap.put(((KernelWakeLock) (obj3)).name, obj3); goto _L7 arrayindexoutofboundsexception; obj2 = obj; obj1 = obj; ALog.e("KernelWakeLockUtils parsed bad wake lock line", arrayindexoutofboundsexception, new Object[0]); goto _L7 _L8: ALog.e("Error opening the wakeup_sources file", ((Throwable) (obj)), new Object[0]); if (obj2 != null) { try { ((FileInputStream) (obj2)).close(); } // Misplaced declaration of an exception variable catch (IOException ioexception) { ioexception.printStackTrace(); return hashmap; } } return hashmap; _L4: if (obj != null) { try { ((FileInputStream) (obj)).close(); } // Misplaced declaration of an exception variable catch (IOException ioexception) { ioexception.printStackTrace(); return hashmap; } return hashmap; } else { break MISSING_BLOCK_LABEL_210; } if (true) goto _L10; else goto _L9 _L9: } private void saveKernelWakeLocksCache(HashMap hashmap, String s) { String s1; String s2; Object obj; Object obj1; obj1 = null; obj = null; s1 = obj; s2 = obj1; if (mMockContext == null) goto _L2; else goto _L1 _L1: s1 = obj; s2 = obj1; s = mMockContext.openFileOutput(s, 0); _L8: s1 = s; s2 = s; hashmap = hashmap.entrySet().iterator(); _L4: s1 = s; s2 = s; if (!hashmap.hasNext()) { break; /* Loop/switch isn't completed */ } s1 = s; s2 = s; s.write(((KernelWakeLock)((java.util.Map.Entry)hashmap.next()).getValue()).toCacheFormat().getBytes()); if (true) goto _L4; else goto _L3 _L5: ALog.e("Error writing on saved kernel wake locks", new Object[0]); if (s1 == null) { break MISSING_BLOCK_LABEL_122; } s1.close(); _L6: return; _L2: s1 = obj; s2 = obj1; try { s = new FileOutputStream(new File(String.format("%s%s%s", new Object[] { Environment.getExternalStorageDirectory(), File.separator, s }))); continue; /* Loop/switch isn't completed */ } // Misplaced declaration of an exception variable catch (HashMap hashmap) { s2 = s1; } finally { if (s2 != null) { try { s2.close(); } // Misplaced declaration of an exception variable catch (String s) { s.printStackTrace(); } } throw hashmap; } goto _L5 _L3: s1 = s; s2 = s; s.flush(); if (s != null) { try { s.close(); return; } // Misplaced declaration of an exception variable catch (HashMap hashmap) { hashmap.printStackTrace(); } return; } goto _L6 hashmap; hashmap.printStackTrace(); return; if (true) goto _L8; else goto _L7 _L7: } private void updateSavedKernelWakeLockWithValuesFrom(KernelWakeLock kernelwakelock) { KernelWakeLock kernelwakelock1 = (KernelWakeLock)mKernelWakeLocksLast.get(kernelwakelock.name); KernelWakeLock kernelwakelock2 = (KernelWakeLock)mKernelWakeLocksTotal.get(kernelwakelock.name); if (kernelwakelock1.activeCount <= kernelwakelock.activeCount) { kernelwakelock2.activeCount = kernelwakelock2.activeCount + (kernelwakelock.activeCount - kernelwakelock1.activeCount); } else { kernelwakelock2.activeCount = kernelwakelock2.activeCount + kernelwakelock.activeCount; } if (kernelwakelock1.eventCount <= kernelwakelock.eventCount) { kernelwakelock2.eventCount = kernelwakelock2.eventCount + (kernelwakelock.eventCount - kernelwakelock1.eventCount); } else { kernelwakelock2.eventCount = kernelwakelock2.eventCount + kernelwakelock.eventCount; } if (kernelwakelock1.wakeupCount <= kernelwakelock.wakeupCount) { kernelwakelock2.wakeupCount = kernelwakelock2.wakeupCount + (kernelwakelock.wakeupCount - kernelwakelock1.wakeupCount); } else { kernelwakelock2.wakeupCount = kernelwakelock2.wakeupCount + kernelwakelock.wakeupCount; } if (kernelwakelock1.expireCount <= kernelwakelock.expireCount) { kernelwakelock2.expireCount = kernelwakelock2.expireCount + (kernelwakelock.expireCount - kernelwakelock1.expireCount); } else { kernelwakelock2.expireCount = kernelwakelock2.expireCount + kernelwakelock.expireCount; } if (kernelwakelock1.activeSince <= kernelwakelock.activeSince) { kernelwakelock2.activeSince = kernelwakelock2.activeSince + (kernelwakelock.activeSince - kernelwakelock1.activeSince); } else { kernelwakelock2.activeSince = kernelwakelock2.activeSince + kernelwakelock.activeSince; } if (kernelwakelock1.totalTime <= kernelwakelock.totalTime) { kernelwakelock2.totalTime = kernelwakelock2.totalTime + (kernelwakelock.totalTime - kernelwakelock1.totalTime); } else { kernelwakelock2.totalTime = kernelwakelock2.totalTime + kernelwakelock.totalTime; } if (kernelwakelock1.maxTime <= kernelwakelock.maxTime) { kernelwakelock2.maxTime = kernelwakelock2.maxTime + (kernelwakelock.maxTime - kernelwakelock1.maxTime); } else { kernelwakelock2.maxTime = kernelwakelock2.maxTime + kernelwakelock.maxTime; } if (kernelwakelock1.lastChange <= kernelwakelock.lastChange) { kernelwakelock2.lastChange = kernelwakelock2.lastChange + (kernelwakelock.lastChange - kernelwakelock1.lastChange); } else { kernelwakelock2.lastChange = kernelwakelock2.lastChange + kernelwakelock.lastChange; } if (kernelwakelock1.preventSuspendTime <= kernelwakelock.preventSuspendTime) { kernelwakelock2.preventSuspendTime = kernelwakelock2.preventSuspendTime + (kernelwakelock.preventSuspendTime - kernelwakelock1.preventSuspendTime); return; } else { kernelwakelock2.preventSuspendTime = kernelwakelock2.preventSuspendTime + kernelwakelock.preventSuspendTime; return; } } public HashMap getKernelWakeTotal() { HashMap hashmap = readCurrentKernelWakeLocks(); if (mKernelWakeLocksTotal == null) { mKernelWakeLocksTotal = loadSavedKernelWakeLockFrom("wakeup_sources_total_count"); } if (mKernelWakeLocksLast == null) { mKernelWakeLocksLast = loadSavedKernelWakeLockFrom("wakeup_sources_last_object"); } KernelWakeLock kernelwakelock; for (Iterator iterator = hashmap.entrySet().iterator(); iterator.hasNext(); updateSavedKernelWakeLockWithValuesFrom(kernelwakelock)) { kernelwakelock = (KernelWakeLock)((java.util.Map.Entry)iterator.next()).getValue(); KernelWakeLock kernelwakelock3 = (KernelWakeLock)mKernelWakeLocksLast.get(kernelwakelock.name); KernelWakeLock kernelwakelock1 = (KernelWakeLock)mKernelWakeLocksTotal.get(kernelwakelock.name); if (kernelwakelock3 == null) { KernelWakeLock kernelwakelock4 = new KernelWakeLock(); kernelwakelock4.name = kernelwakelock.name; mKernelWakeLocksLast.put(kernelwakelock.name, kernelwakelock4); } if (kernelwakelock1 == null) { KernelWakeLock kernelwakelock2 = new KernelWakeLock(); kernelwakelock2.name = kernelwakelock.name; mKernelWakeLocksTotal.put(kernelwakelock.name, kernelwakelock2); } } mKernelWakeLocksLast = hashmap; saveKernelWakeLocksCache(mKernelWakeLocksLast, "wakeup_sources_last_object"); saveKernelWakeLocksCache(mKernelWakeLocksTotal, "wakeup_sources_total_count"); return mKernelWakeLocksTotal; } public void resetKernelWakeLocks() { if (mMockContext != null) { mMockContext.deleteFile("wakeup_sources_total_count"); return; } File file = new File(String.format("%s%s%s", new Object[] { Environment.getExternalStorageDirectory(), File.separator, "wakeup_sources_total_count" })); if (mKernelWakeLocksTotal != null) { mKernelWakeLocksTotal.clear(); } file.delete(); } public void setMockContext(Context context) { mMockContext = context; } }