From ea03be1056d44328b96559702791bdac2a466002 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Mon, 4 Dec 2017 11:08:41 -0500 Subject: Add latency logging for rotation Move LatencyTracker and sysui_latency to make this possible Fixes: 67862696 Test: atest platform_testing/tests/perf/PerfTransitionTest/src/com/android/apptransition/tests/LatencyTests.java#testRotationLatency Change-Id: I42e3218355c162d4ba04b0f2c49e031156b5a357 --- .../android/internal/logging/EventLogTags.logtags | 5 + .../com/android/internal/util/LatencyTracker.java | 154 +++++++++++++++++++++ .../android/keyguard/KeyguardAbsKeyInputView.java | 5 +- .../com/android/keyguard/KeyguardPatternView.java | 5 +- .../src/com/android/keyguard/LatencyTracker.java | 150 -------------------- .../src/com/android/systemui/EventLogTags.logtags | 5 - .../src/com/android/systemui/LatencyTester.java | 2 +- .../systemui/keyguard/KeyguardViewMediator.java | 9 +- .../android/systemui/recents/RecentsActivity.java | 2 +- .../phone/FingerprintUnlockController.java | 2 +- .../statusbar/phone/NavigationBarFragment.java | 2 +- .../systemui/statusbar/phone/PanelView.java | 5 +- .../phone/StatusBarKeyguardViewManager.java | 2 +- .../android/server/wm/WindowManagerService.java | 9 ++ 14 files changed, 182 insertions(+), 175 deletions(-) create mode 100644 core/java/com/android/internal/util/LatencyTracker.java delete mode 100644 packages/SystemUI/src/com/android/keyguard/LatencyTracker.java diff --git a/core/java/com/android/internal/logging/EventLogTags.logtags b/core/java/com/android/internal/logging/EventLogTags.logtags index 93d5a0373d2d..a440ee402294 100644 --- a/core/java/com/android/internal/logging/EventLogTags.logtags +++ b/core/java/com/android/internal/logging/EventLogTags.logtags @@ -8,3 +8,8 @@ option java_package com.android.internal.logging; 524292 sysui_multi_action (content|4) 524290 sysui_count (name|3),(increment|1) 524291 sysui_histogram (name|3),(bucket|1) + +# --------------------------- +# LatencyTracker.java +# --------------------------- +36070 sysui_latency (action|1|6),(latency|1|3) diff --git a/core/java/com/android/internal/util/LatencyTracker.java b/core/java/com/android/internal/util/LatencyTracker.java new file mode 100644 index 000000000000..72cd24888dcc --- /dev/null +++ b/core/java/com/android/internal/util/LatencyTracker.java @@ -0,0 +1,154 @@ +/* + * Copyright (C) 2017 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 com.android.internal.util; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Build; +import android.os.SystemClock; +import android.os.SystemProperties; +import android.os.Trace; +import android.util.EventLog; +import android.util.Log; +import android.util.SparseLongArray; + +import com.android.internal.logging.EventLogTags; + +/** + * Class to track various latencies in SystemUI. It then outputs the latency to logcat so these + * latencies can be captured by tests and then used for dashboards. + *

+ * This is currently only in Keyguard so it can be shared between SystemUI and Keyguard, but + * eventually we'd want to merge these two packages together so Keyguard can use common classes + * that are shared with SystemUI. + */ +public class LatencyTracker { + + private static final String ACTION_RELOAD_PROPERTY = + "com.android.systemui.RELOAD_LATENCY_TRACKER_PROPERTY"; + + private static final String TAG = "LatencyTracker"; + + /** + * Time it takes until the first frame of the notification panel to be displayed while expanding + */ + public static final int ACTION_EXPAND_PANEL = 0; + + /** + * Time it takes until the first frame of recents is drawn after invoking it with the button. + */ + public static final int ACTION_TOGGLE_RECENTS = 1; + + /** + * Time between we get a fingerprint acquired signal until we start with the unlock animation + */ + public static final int ACTION_FINGERPRINT_WAKE_AND_UNLOCK = 2; + + /** + * Time it takes to check PIN/Pattern/Password. + */ + public static final int ACTION_CHECK_CREDENTIAL = 3; + + /** + * Time it takes to check fully PIN/Pattern/Password, i.e. that's the time spent including the + * actions to unlock a user. + */ + public static final int ACTION_CHECK_CREDENTIAL_UNLOCKED = 4; + + /** + * Time it takes to turn on the screen. + */ + public static final int ACTION_TURN_ON_SCREEN = 5; + + /** + * Time it takes to rotate the screen. + */ + public static final int ACTION_ROTATE_SCREEN = 6; + + private static final String[] NAMES = new String[] { + "expand panel", + "toggle recents", + "fingerprint wake-and-unlock", + "check credential", + "check credential unlocked", + "turn on screen", + "rotate the screen"}; + + private static LatencyTracker sLatencyTracker; + + private final SparseLongArray mStartRtc = new SparseLongArray(); + private boolean mEnabled; + + public static LatencyTracker getInstance(Context context) { + if (sLatencyTracker == null) { + sLatencyTracker = new LatencyTracker(context); + } + return sLatencyTracker; + } + + private LatencyTracker(Context context) { + context.registerReceiver(new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + reloadProperty(); + } + }, new IntentFilter(ACTION_RELOAD_PROPERTY)); + reloadProperty(); + } + + private void reloadProperty() { + mEnabled = SystemProperties.getBoolean("debug.systemui.latency_tracking", false); + } + + public static boolean isEnabled(Context ctx) { + return Build.IS_DEBUGGABLE && getInstance(ctx).mEnabled; + } + + /** + * Notifies that an action is starting. This needs to be called from the main thread. + * + * @param action The action to start. One of the ACTION_* values. + */ + public void onActionStart(int action) { + if (!mEnabled) { + return; + } + Trace.asyncTraceBegin(Trace.TRACE_TAG_APP, NAMES[action], 0); + mStartRtc.put(action, SystemClock.elapsedRealtime()); + } + + /** + * Notifies that an action has ended. This needs to be called from the main thread. + * + * @param action The action to end. One of the ACTION_* values. + */ + public void onActionEnd(int action) { + if (!mEnabled) { + return; + } + long endRtc = SystemClock.elapsedRealtime(); + long startRtc = mStartRtc.get(action, -1); + if (startRtc == -1) { + return; + } + mStartRtc.delete(action); + Trace.asyncTraceEnd(Trace.TRACE_TAG_APP, NAMES[action], 0); + long duration = endRtc - startRtc; + Log.i(TAG, "action=" + action + " latency=" + duration); + EventLog.writeEvent(EventLogTags.SYSUI_LATENCY, action, (int) duration); + } +} diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java index 775b9e8a4d3b..a980413922ed 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java @@ -16,8 +16,8 @@ package com.android.keyguard; -import static com.android.keyguard.LatencyTracker.ACTION_CHECK_CREDENTIAL; -import static com.android.keyguard.LatencyTracker.ACTION_CHECK_CREDENTIAL_UNLOCKED; +import static com.android.internal.util.LatencyTracker.ACTION_CHECK_CREDENTIAL; +import static com.android.internal.util.LatencyTracker.ACTION_CHECK_CREDENTIAL_UNLOCKED; import android.content.Context; import android.os.AsyncTask; @@ -29,6 +29,7 @@ import android.view.KeyEvent; import android.view.View; import android.widget.LinearLayout; +import com.android.internal.util.LatencyTracker; import com.android.internal.widget.LockPatternChecker; import com.android.internal.widget.LockPatternUtils; diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java index ec5f356a1a55..d636316dfe96 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java @@ -15,8 +15,8 @@ */ package com.android.keyguard; -import static com.android.keyguard.LatencyTracker.ACTION_CHECK_CREDENTIAL; -import static com.android.keyguard.LatencyTracker.ACTION_CHECK_CREDENTIAL_UNLOCKED; +import static com.android.internal.util.LatencyTracker.ACTION_CHECK_CREDENTIAL; +import static com.android.internal.util.LatencyTracker.ACTION_CHECK_CREDENTIAL_UNLOCKED; import android.content.Context; import android.graphics.Rect; @@ -33,6 +33,7 @@ import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; import android.widget.LinearLayout; +import com.android.internal.util.LatencyTracker; import com.android.internal.widget.LockPatternChecker; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternView; diff --git a/packages/SystemUI/src/com/android/keyguard/LatencyTracker.java b/packages/SystemUI/src/com/android/keyguard/LatencyTracker.java deleted file mode 100644 index cee0afcd37d6..000000000000 --- a/packages/SystemUI/src/com/android/keyguard/LatencyTracker.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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 com.android.keyguard; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.os.Build; -import android.os.SystemClock; -import android.os.SystemProperties; -import android.os.Trace; -import android.util.EventLog; -import android.util.Log; -import android.util.SparseLongArray; - -import com.android.systemui.EventLogTags; - -/** - * Class to track various latencies in SystemUI. It then outputs the latency to logcat so these - * latencies can be captured by tests and then used for dashboards. - *

- * This is currently only in Keyguard so it can be shared between SystemUI and Keyguard, but - * eventually we'd want to merge these two packages together so Keyguard can use common classes - * that are shared with SystemUI. - */ -public class LatencyTracker { - - private static final String ACTION_RELOAD_PROPERTY = - "com.android.systemui.RELOAD_LATENCY_TRACKER_PROPERTY"; - - private static final String TAG = "LatencyTracker"; - - /** - * Time it takes until the first frame of the notification panel to be displayed while expanding - */ - public static final int ACTION_EXPAND_PANEL = 0; - - /** - * Time it takes until the first frame of recents is drawn after invoking it with the button. - */ - public static final int ACTION_TOGGLE_RECENTS = 1; - - /** - * Time between we get a fingerprint acquired signal until we start with the unlock animation - */ - public static final int ACTION_FINGERPRINT_WAKE_AND_UNLOCK = 2; - - /** - * Time it takes to check PIN/Pattern/Password. - */ - public static final int ACTION_CHECK_CREDENTIAL = 3; - - /** - * Time it takes to check fully PIN/Pattern/Password, i.e. that's the time spent including the - * actions to unlock a user. - */ - public static final int ACTION_CHECK_CREDENTIAL_UNLOCKED = 4; - - /** - * Time it takes to turn on the screen. - */ - public static final int ACTION_TURN_ON_SCREEN = 5; - - private static final String[] NAMES = new String[] { - "expand panel", - "toggle recents", - "fingerprint wake-and-unlock", - "check credential", - "check credential unlocked", - "turn on screen" }; - - private static LatencyTracker sLatencyTracker; - - private final SparseLongArray mStartRtc = new SparseLongArray(); - private boolean mEnabled; - - public static LatencyTracker getInstance(Context context) { - if (sLatencyTracker == null) { - sLatencyTracker = new LatencyTracker(context); - } - return sLatencyTracker; - } - - private LatencyTracker(Context context) { - context.registerReceiver(new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - reloadProperty(); - } - }, new IntentFilter(ACTION_RELOAD_PROPERTY)); - reloadProperty(); - } - - private void reloadProperty() { - mEnabled = SystemProperties.getBoolean("debug.systemui.latency_tracking", false); - } - - public static boolean isEnabled(Context ctx) { - return Build.IS_DEBUGGABLE && getInstance(ctx).mEnabled; - } - - /** - * Notifies that an action is starting. This needs to be called from the main thread. - * - * @param action The action to start. One of the ACTION_* values. - */ - public void onActionStart(int action) { - if (!mEnabled) { - return; - } - Trace.asyncTraceBegin(Trace.TRACE_TAG_APP, NAMES[action], 0); - mStartRtc.put(action, SystemClock.elapsedRealtime()); - } - - /** - * Notifies that an action has ended. This needs to be called from the main thread. - * - * @param action The action to end. One of the ACTION_* values. - */ - public void onActionEnd(int action) { - if (!mEnabled) { - return; - } - long endRtc = SystemClock.elapsedRealtime(); - long startRtc = mStartRtc.get(action, -1); - if (startRtc == -1) { - return; - } - mStartRtc.delete(action); - Trace.asyncTraceEnd(Trace.TRACE_TAG_APP, NAMES[action], 0); - long duration = endRtc - startRtc; - Log.i(TAG, "action=" + action + " latency=" + duration); - EventLog.writeEvent(EventLogTags.SYSUI_LATENCY, action, (int) duration); - } -} diff --git a/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags b/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags index d4149ea6d68f..9c847be75fab 100644 --- a/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags +++ b/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags @@ -61,8 +61,3 @@ option java_package com.android.systemui; ## 4: SYSTEM_REGISTER_USER System sysui registers user's callbacks ## 5: SYSTEM_UNREGISTER_USER System sysui unregisters user's callbacks (after death) 36060 sysui_recents_connection (type|1),(user|1) - -# --------------------------- -# LatencyTracker.java -# --------------------------- -36070 sysui_latency (action|1|5),(latency|1|3) diff --git a/packages/SystemUI/src/com/android/systemui/LatencyTester.java b/packages/SystemUI/src/com/android/systemui/LatencyTester.java index 1d55ee5ac0d6..cbb69ee98a03 100644 --- a/packages/SystemUI/src/com/android/systemui/LatencyTester.java +++ b/packages/SystemUI/src/com/android/systemui/LatencyTester.java @@ -25,7 +25,7 @@ import android.os.PowerManager; import android.os.SystemClock; import com.android.keyguard.KeyguardUpdateMonitor; -import com.android.keyguard.LatencyTracker; +import com.android.internal.util.LatencyTracker; import com.android.systemui.statusbar.phone.FingerprintUnlockController; import com.android.systemui.statusbar.phone.StatusBar; diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index c92acd068745..1faf981f8a83 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -25,7 +25,7 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT; -import android.app.Activity; + import android.app.ActivityManager; import android.app.AlarmManager; import android.app.NotificationManager; @@ -53,7 +53,6 @@ import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; -import android.provider.Settings.System; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.EventLog; @@ -77,20 +76,16 @@ import com.android.keyguard.KeyguardDisplayManager; import com.android.keyguard.KeyguardSecurityView; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; -import com.android.keyguard.LatencyTracker; +import com.android.internal.util.LatencyTracker; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.Dependency; import com.android.systemui.SystemUI; import com.android.systemui.SystemUIFactory; import com.android.systemui.UiOffloadThread; import com.android.systemui.classifier.FalsingManager; -import com.android.systemui.recents.Recents; -import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.statusbar.phone.FingerprintUnlockController; import com.android.systemui.statusbar.phone.StatusBar; -import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; -import com.android.systemui.statusbar.phone.StatusBarWindowManager; import java.io.FileDescriptor; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index 9aecc686d8aa..ca9a5533db28 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -46,7 +46,7 @@ import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.content.PackageMonitor; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.keyguard.LatencyTracker; +import com.android.internal.util.LatencyTracker; import com.android.systemui.DejankUtils; import com.android.systemui.Dependency; import com.android.systemui.Interpolators; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java index 80d4061b3864..9a4e616a9797 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java @@ -26,7 +26,7 @@ import android.util.Log; import com.android.keyguard.KeyguardConstants; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; -import com.android.keyguard.LatencyTracker; +import com.android.internal.util.LatencyTracker; import com.android.systemui.Dependency; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.ScreenLifecycle; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java index 6d3bc1df00a2..61b007f42551 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java @@ -67,7 +67,7 @@ import android.view.accessibility.AccessibilityManager.AccessibilityServicesStat import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.keyguard.LatencyTracker; +import com.android.internal.util.LatencyTracker; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index afe5c917a856..83125c24e7cb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -27,10 +27,8 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.os.AsyncTask; import android.os.SystemClock; -import android.os.UserHandle; import android.os.VibrationEffect; import android.os.Vibrator; -import android.provider.Settings; import android.util.AttributeSet; import android.util.Log; import android.view.InputDevice; @@ -42,7 +40,7 @@ import android.view.animation.Interpolator; import android.widget.FrameLayout; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.keyguard.LatencyTracker; +import com.android.internal.util.LatencyTracker; import com.android.systemui.DejankUtils; import com.android.systemui.Interpolators; import com.android.systemui.R; @@ -50,7 +48,6 @@ import com.android.systemui.classifier.FalsingManager; import com.android.systemui.doze.DozeLog; import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.StatusBarState; -import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.policy.HeadsUpManager; import java.io.FileDescriptor; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index ef05bbb4fe3d..dacd3d935d0a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -33,7 +33,7 @@ import android.view.WindowManagerGlobal; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; -import com.android.keyguard.LatencyTracker; +import com.android.internal.util.LatencyTracker; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.DejankUtils; import com.android.systemui.Dependency; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 82f842c0fd85..2a249689c2b9 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -65,6 +65,8 @@ import static android.view.WindowManager.LayoutParams.TYPE_VOICE_INTERACTION; import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER; import static android.view.WindowManagerGlobal.RELAYOUT_DEFER_SURFACE_DESTROY; import static android.view.WindowManagerGlobal.RELAYOUT_RES_SURFACE_CHANGED; + +import static com.android.internal.util.LatencyTracker.ACTION_ROTATE_SCREEN; import static com.android.server.LockGuard.INDEX_WINDOW; import static com.android.server.LockGuard.installLock; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT; @@ -229,6 +231,7 @@ import com.android.internal.policy.IKeyguardDismissCallback; import com.android.internal.policy.IShortcutService; import com.android.internal.util.DumpUtils; import com.android.internal.util.FastPrintWriter; +import com.android.internal.util.LatencyTracker; import com.android.internal.view.IInputContext; import com.android.internal.view.IInputMethodClient; import com.android.internal.view.IInputMethodManager; @@ -771,6 +774,8 @@ public class WindowManagerService extends IWindowManager.Stub private WindowContentFrameStats mTempWindowRenderStats; + private final LatencyTracker mLatencyTracker; + /** * Whether the UI is currently running in touch mode (not showing * navigational focus because the user is directly pressing the screen). @@ -1070,6 +1075,8 @@ public class WindowManagerService extends IWindowManager.Stub filter.addAction(Intent.ACTION_USER_REMOVED); mContext.registerReceiver(mBroadcastReceiver, filter); + mLatencyTracker = LatencyTracker.getInstance(context); + mSettingsObserver = new SettingsObserver(); mHoldingScreenWakeLock = mPowerManager.newWakeLock( @@ -5863,6 +5870,7 @@ public class WindowManagerService extends IWindowManager.Stub Debug.startMethodTracing(file.toString(), 8 * 1024 * 1024); } + mLatencyTracker.onActionStart(ACTION_ROTATE_SCREEN); // TODO(multidisplay): rotation on non-default displays if (CUSTOM_SCREEN_ROTATION && displayContent.isDefaultDisplay) { mExitAnimId = exitAnim; @@ -5987,6 +5995,7 @@ public class WindowManagerService extends IWindowManager.Stub if (configChanged) { mH.obtainMessage(H.SEND_NEW_CONFIGURATION, displayId).sendToTarget(); } + mLatencyTracker.onActionEnd(ACTION_ROTATE_SCREEN); } static int getPropertyInt(String[] tokens, int index, int defUnits, int defDps, -- cgit v1.2.3-59-g8ed1b