From c857f90590e7d7fcffa89511982eb33afd34805f Mon Sep 17 00:00:00 2001 From: Eric Erfanian Date: Mon, 15 May 2017 14:05:33 -0700 Subject: Update Dialer to v10 RC32 This release was created following the instructions at: go/dialer-aosp-release Subsequent dialer releases will follow as O bugs are fixed, until we reach our final RC. Version: 10 Candidate: RC32 Branch: dialer-android_release_branch/153304843.1 dialer-android_20170416.00/dialer-android_20170416.00_RC32 This release contains the following bug fixes since RC17: Bug: 33176679 33272455 3646510 36773894 37297649 37413780 37513689 37640315 37680595 37698062 37873639 37901752 37919295 37953423 38062852 38069600 38137349 38173549 38180252 38191514 Test: make, on device Change-Id: I4e4bb630082758e418ff24892b7db3142c6eb09a --- .../persistentlog/PersistentLogFileHandler.java | 24 ++++++++++++++++++---- .../dialer/persistentlog/PersistentLogger.java | 4 ++++ 2 files changed, 24 insertions(+), 4 deletions(-) (limited to 'java/com/android/dialer/persistentlog') diff --git a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java index 4ba5a72ec..5c7a28c5b 100644 --- a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java +++ b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java @@ -26,6 +26,7 @@ import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.WorkerThread; +import android.support.v4.os.UserManagerCompat; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -65,6 +66,7 @@ final class PersistentLogFileHandler { private SharedPreferences sharedPreferences; private File outputFile; + private Context context; @MainThread PersistentLogFileHandler(String subfolder, int fileSizeLimit, int fileCountLimit) { @@ -76,8 +78,18 @@ final class PersistentLogFileHandler { /** Must be called right after the logger thread is created. */ @WorkerThread void initialize(Context context) { + this.context = context; logDirectory = new File(new File(context.getCacheDir(), LOG_DIRECTORY), subfolder); - sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); + initializeSharedPreference(context); + } + + @WorkerThread + private boolean initializeSharedPreference(Context context) { + if (sharedPreferences == null && UserManagerCompat.isUserUnlocked(context)) { + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); + return true; + } + return sharedPreferences != null; } /** @@ -117,10 +129,10 @@ final class PersistentLogFileHandler { return byteBuffer.array(); } - private static final int getTotalSize(File[] files) { + private static int getTotalSize(File[] files) { int sum = 0; for (File file : files) { - sum += file.length(); + sum += (int) file.length(); } return sum; } @@ -195,7 +207,11 @@ final class PersistentLogFileHandler { } @WorkerThread - private int getAndIncrementNextFileIndex() { + private int getAndIncrementNextFileIndex() throws IOException { + if (!initializeSharedPreference(context)) { + throw new IOException("Shared preference is not available"); + } + int index = sharedPreferences.getInt(getNextFileKey(), 0); sharedPreferences.edit().putInt(getNextFileKey(), index + 1).commit(); return index; diff --git a/java/com/android/dialer/persistentlog/PersistentLogger.java b/java/com/android/dialer/persistentlog/PersistentLogger.java index 049eb9687..cf43b8ca8 100644 --- a/java/com/android/dialer/persistentlog/PersistentLogger.java +++ b/java/com/android/dialer/persistentlog/PersistentLogger.java @@ -23,6 +23,7 @@ import android.support.annotation.AnyThread; import android.support.annotation.NonNull; import android.support.annotation.VisibleForTesting; import android.support.annotation.WorkerThread; +import android.support.v4.os.UserManagerCompat; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import java.io.IOException; @@ -79,6 +80,9 @@ public final class PersistentLogger { loggerThreadHandler.removeMessages(MESSAGE_FLUSH); List messages = new ArrayList<>(); messageQueue.drainTo(messages); + if (!UserManagerCompat.isUserUnlocked(context)) { + return true; + } try { fileHandler.writeLogs(messages); } catch (IOException e) { -- cgit v1.2.3