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
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user