diff options
13 files changed, 44 insertions, 37 deletions
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/packages/SystemUI/src/com/android/keyguard/LatencyTracker.java b/core/java/com/android/internal/util/LatencyTracker.java index cee0afcd37d6..72cd24888dcc 100644 --- a/packages/SystemUI/src/com/android/keyguard/LatencyTracker.java +++ b/core/java/com/android/internal/util/LatencyTracker.java @@ -1,20 +1,18 @@ /* - * Copyright (C) 2016 The Android Open Source Project + * 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 + * 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 + * 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; +package com.android.internal.util; import android.content.BroadcastReceiver; import android.content.Context; @@ -28,7 +26,7 @@ import android.util.EventLog; import android.util.Log; import android.util.SparseLongArray; -import com.android.systemui.EventLogTags; +import com.android.internal.logging.EventLogTags; /** * Class to track various latencies in SystemUI. It then outputs the latency to logcat so these @@ -76,13 +74,19 @@ public class LatencyTracker { */ 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" }; + "turn on screen", + "rotate the screen"}; private static LatencyTracker sLatencyTracker; 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/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, |