diff options
| author | 2016-10-05 15:47:28 -0700 | |
|---|---|---|
| committer | 2016-10-11 16:26:11 -0700 | |
| commit | 4fb372fe169c6abd463a620b56dd6b05b5ff1e7a (patch) | |
| tree | 0cc2fce3457707ffa63cdd63b047f78a7876b231 | |
| parent | cbb03d1ad375fb5252a5da47f5438667134ab848 (diff) | |
Switch on android.telecom.Log in Telecom
Move over the Runnable Class into android.telecom and turn on the
framework's usage in Telecom.
Test: All Telecom unit tests pass. Manual Log testing has also been
confirmed to be working as it did before.
Bug: 26571395
Change-Id: If7e2036c746c5a953f3a77e2d625a423ce5bf8f3
| -rw-r--r-- | telecomm/java/android/telecom/Log.java | 9 | ||||
| -rw-r--r-- | telecomm/java/android/telecom/Logging/EventManager.java | 2 | ||||
| -rw-r--r-- | telecomm/java/android/telecom/Logging/Runnable.java | 88 |
3 files changed, 96 insertions, 3 deletions
diff --git a/telecomm/java/android/telecom/Log.java b/telecomm/java/android/telecom/Log.java index ecda3cd45f73..140cce6b4ee2 100644 --- a/telecomm/java/android/telecom/Log.java +++ b/telecomm/java/android/telecom/Log.java @@ -16,6 +16,7 @@ package android.telecom; +import android.content.Context; import android.net.Uri; import android.os.AsyncTask; import android.telecom.Logging.EventManager; @@ -175,6 +176,10 @@ public class Log { * loggers. */ + public static void setSessionContext(Context context) { + getSessionManager().setContext(context); + } + public static void startSession(String shortMethodName) { getSessionManager().startSession(shortMethodName, null); } @@ -300,7 +305,7 @@ public class Log { private static MessageDigest sMessageDigest; - static void initMd5Sum() { + public static void initMd5Sum() { new AsyncTask<Void, Void, Void>() { @Override public Void doInBackground(Void... args) { @@ -426,7 +431,7 @@ public class Log { msg = (args == null || args.length == 0) ? format : String.format(Locale.US, format, args); } catch (IllegalFormatException ife) { - e("Log", ife, "IllegalFormatException: formatString='%s' numArgs=%d", format, + e(TAG, ife, "Log: IllegalFormatException: formatString='%s' numArgs=%d", format, args.length); msg = format + " (An error occurred while formatting the message.)"; } diff --git a/telecomm/java/android/telecom/Logging/EventManager.java b/telecomm/java/android/telecom/Logging/EventManager.java index 8e7a393cb436..58ace2844bb1 100644 --- a/telecomm/java/android/telecom/Logging/EventManager.java +++ b/telecomm/java/android/telecom/Logging/EventManager.java @@ -289,7 +289,7 @@ public class EventManager { msg = (args == null || args.length == 0) ? format : String.format(Locale.US, format, args); } catch (IllegalFormatException ife) { - Log.e("Log", ife, "IllegalFormatException: formatString='%s' numArgs=%d", format, + Log.e(this, ife, "IllegalFormatException: formatString='%s' numArgs=%d", format, args.length); msg = format + " (An error occurred while formatting the message.)"; } diff --git a/telecomm/java/android/telecom/Logging/Runnable.java b/telecomm/java/android/telecom/Logging/Runnable.java new file mode 100644 index 000000000000..56c52bfde3b3 --- /dev/null +++ b/telecomm/java/android/telecom/Logging/Runnable.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package android.telecom.Logging; + +import android.telecom.Log; + +/** + * Encapsulates session logging in a Runnable to reduce code duplication when continuing subsessions + * in a handler/thread. + * @hide + */ +public abstract class Runnable { + + private Session mSubsession; + private final String mSubsessionName; + private final Object mLock = new Object(); + private final java.lang.Runnable mRunnable = new java.lang.Runnable() { + @Override + public void run() { + synchronized (mLock) { + try { + Log.continueSession(mSubsession, mSubsessionName); + loggedRun(); + } finally { + if (mSubsession != null) { + Log.endSession(); + mSubsession = null; + } + } + } + } + }; + + public Runnable(String subsessionName) { + mSubsessionName = subsessionName; + } + + /** + * Return the runnable that will be canceled in the handler queue. + * @return Runnable object to cancel. + */ + public final java.lang.Runnable getRunnableToCancel() { + return mRunnable; + } + + /** + * Creates a Runnable and a logging subsession that can be used in a handler/thread. Be sure to + * call cancel() if this session is never going to be run (removed from a handler queue, for + * for example). + * @return A Java Runnable that can be used in a handler queue or thread. + */ + public java.lang.Runnable prepare() { + cancel(); + mSubsession = Log.createSubsession(); + return mRunnable; + } + + /** + * This method is used to clean up the active session if the Runnable gets removed from a + * handler and is never run. + */ + public void cancel() { + synchronized (mLock) { + Log.cancelSubsession(mSubsession); + mSubsession = null; + } + } + + /** + * The method that will be run in the handler/thread. + */ + abstract public void loggedRun(); + +} |