diff options
Diffstat (limited to 'services')
304 files changed, 21779 insertions, 11636 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java index 7324b82351f6..c60647fada09 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java @@ -417,7 +417,8 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo final boolean triggerable = (mEnabledFeatures & FLAG_FEATURE_TRIGGERED_SCREEN_MAGNIFIER) != 0; mMagnificationGestureHandler = new MagnificationGestureHandler( - mContext, mAms, detectControlGestures, triggerable); + mContext, mAms.getMagnificationController(), + detectControlGestures, triggerable); addFirstEventHandler(mMagnificationGestureHandler); } diff --git a/services/accessibility/java/com/android/server/accessibility/GestureUtils.java b/services/accessibility/java/com/android/server/accessibility/GestureUtils.java index bc761914caf2..abfdb683c04c 100644 --- a/services/accessibility/java/com/android/server/accessibility/GestureUtils.java +++ b/services/accessibility/java/com/android/server/accessibility/GestureUtils.java @@ -12,32 +12,27 @@ final class GestureUtils { /* cannot be instantiated */ } - public static boolean isTap(MotionEvent down, MotionEvent up, int tapTimeSlop, - int tapDistanceSlop, int actionIndex) { - return eventsWithinTimeAndDistanceSlop(down, up, tapTimeSlop, tapDistanceSlop, actionIndex); - } - public static boolean isMultiTap(MotionEvent firstUp, MotionEvent secondUp, - int multiTapTimeSlop, int multiTapDistanceSlop, int actionIndex) { + int multiTapTimeSlop, int multiTapDistanceSlop) { + if (firstUp == null || secondUp == null) return false; return eventsWithinTimeAndDistanceSlop(firstUp, secondUp, multiTapTimeSlop, - multiTapDistanceSlop, actionIndex); + multiTapDistanceSlop); } private static boolean eventsWithinTimeAndDistanceSlop(MotionEvent first, MotionEvent second, - int timeout, int distance, int actionIndex) { + int timeout, int distance) { if (isTimedOut(first, second, timeout)) { return false; } - final double deltaMove = computeDistance(first, second, actionIndex); + final double deltaMove = distance(first, second); if (deltaMove >= distance) { return false; } return true; } - public static double computeDistance(MotionEvent first, MotionEvent second, int pointerIndex) { - return MathUtils.dist(first.getX(pointerIndex), first.getY(pointerIndex), - second.getX(pointerIndex), second.getY(pointerIndex)); + public static double distance(MotionEvent first, MotionEvent second) { + return MathUtils.dist(first.getX(), first.getY(), second.getX(), second.getY()); } public static boolean isTimedOut(MotionEvent firstUp, MotionEvent secondUp, int timeout) { @@ -54,7 +49,6 @@ final class GestureUtils { /** * Determines whether a two pointer gesture is a dragging one. * - * @param event The event with the pointer data. * @return True if the gesture is a dragging one. */ public static boolean isDraggingGesture(float firstPtrDownX, float firstPtrDownY, diff --git a/services/accessibility/java/com/android/server/accessibility/MagnificationController.java b/services/accessibility/java/com/android/server/accessibility/MagnificationController.java index caa74b9512d1..98b8e6b723ac 100644 --- a/services/accessibility/java/com/android/server/accessibility/MagnificationController.java +++ b/services/accessibility/java/com/android/server/accessibility/MagnificationController.java @@ -16,11 +16,6 @@ package com.android.server.accessibility; -import com.android.internal.R; -import com.android.internal.annotations.GuardedBy; -import com.android.internal.os.SomeArgs; -import com.android.server.LocalServices; - import android.animation.ValueAnimator; import android.annotation.NonNull; import android.content.BroadcastReceiver; @@ -42,6 +37,12 @@ import android.view.View; import android.view.WindowManagerInternal; import android.view.animation.DecelerateInterpolator; +import com.android.internal.R; +import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.os.SomeArgs; +import com.android.server.LocalServices; + import java.util.Locale; /** @@ -138,7 +139,7 @@ class MagnificationController implements Handler.Callback { private final WindowManagerInternal mWindowManager; // Flag indicating that we are registered with window manager. - private boolean mRegistered; + @VisibleForTesting boolean mRegistered; private boolean mUnregisterPending; @@ -148,9 +149,14 @@ class MagnificationController implements Handler.Callback { mHandler = new Handler(context.getMainLooper(), this); } - public MagnificationController(Context context, AccessibilityManagerService ams, Object lock, - Handler handler, WindowManagerInternal windowManagerInternal, - ValueAnimator valueAnimator, SettingsBridge settingsBridge) { + public MagnificationController( + Context context, + AccessibilityManagerService ams, + Object lock, + Handler handler, + WindowManagerInternal windowManagerInternal, + ValueAnimator valueAnimator, + SettingsBridge settingsBridge) { mHandler = handler; mWindowManager = windowManagerInternal; mMainThreadId = context.getMainLooper().getThread().getId(); @@ -672,8 +678,7 @@ class MagnificationController implements Handler.Callback { * Resets magnification if magnification and auto-update are both enabled. * * @param animate whether the animate the transition - * @return {@code true} if magnification was reset to the disabled state, - * {@code false} if magnification is still active + * @return whether was {@link #isMagnifying magnifying} */ boolean resetIfNeeded(boolean animate) { synchronized (mLock) { @@ -790,6 +795,19 @@ class MagnificationController implements Handler.Callback { return true; } + @Override + public String toString() { + return "MagnificationController{" + + "mCurrentMagnificationSpec=" + mCurrentMagnificationSpec + + ", mMagnificationRegion=" + mMagnificationRegion + + ", mMagnificationBounds=" + mMagnificationBounds + + ", mUserId=" + mUserId + + ", mIdOfLastServiceToMagnify=" + mIdOfLastServiceToMagnify + + ", mRegistered=" + mRegistered + + ", mUnregisterPending=" + mUnregisterPending + + '}'; + } + /** * Class responsible for animating spec on the main thread and sending spec * updates to the window manager. diff --git a/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java b/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java index 7e82edaae3e5..d6452f87d155 100644 --- a/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java +++ b/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java @@ -16,6 +16,21 @@ package com.android.server.accessibility; +import static android.view.InputDevice.SOURCE_TOUCHSCREEN; +import static android.view.MotionEvent.ACTION_DOWN; +import static android.view.MotionEvent.ACTION_MOVE; +import static android.view.MotionEvent.ACTION_POINTER_DOWN; +import static android.view.MotionEvent.ACTION_POINTER_UP; +import static android.view.MotionEvent.ACTION_UP; + +import static com.android.server.accessibility.GestureUtils.distance; + +import static java.lang.Math.abs; +import static java.util.Arrays.asList; +import static java.util.Arrays.copyOfRange; + +import android.annotation.NonNull; +import android.annotation.Nullable; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -27,7 +42,6 @@ import android.util.Slog; import android.util.TypedValue; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; -import android.view.InputDevice; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.MotionEvent.PointerCoords; @@ -37,6 +51,8 @@ import android.view.ScaleGestureDetector.OnScaleGestureListener; import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityEvent; +import com.android.internal.annotations.VisibleForTesting; + /** * This class handles magnification in response to touch events. * @@ -85,91 +101,109 @@ import android.view.accessibility.AccessibilityEvent; * * 7. The magnification scale will be persisted in settings and in the cloud. */ +@SuppressWarnings("WeakerAccess") class MagnificationGestureHandler implements EventStreamTransformation { private static final String LOG_TAG = "MagnificationEventHandler"; - private static final boolean DEBUG_STATE_TRANSITIONS = false; - private static final boolean DEBUG_DETECTING = false; - private static final boolean DEBUG_PANNING = false; + private static final boolean DEBUG_ALL = false; + private static final boolean DEBUG_STATE_TRANSITIONS = false || DEBUG_ALL; + private static final boolean DEBUG_DETECTING = false || DEBUG_ALL; + private static final boolean DEBUG_PANNING = false || DEBUG_ALL; - private static final int STATE_DELEGATING = 1; - private static final int STATE_DETECTING = 2; - private static final int STATE_VIEWPORT_DRAGGING = 3; - private static final int STATE_MAGNIFIED_INTERACTION = 4; + /** @see #handleMotionEventStateDelegating */ + @VisibleForTesting static final int STATE_DELEGATING = 1; + /** @see DetectingStateHandler */ + @VisibleForTesting static final int STATE_DETECTING = 2; + /** @see ViewportDraggingStateHandler */ + @VisibleForTesting static final int STATE_VIEWPORT_DRAGGING = 3; + /** @see PanningScalingStateHandler */ + @VisibleForTesting static final int STATE_PANNING_SCALING = 4; private static final float MIN_SCALE = 2.0f; private static final float MAX_SCALE = 5.0f; - private final MagnificationController mMagnificationController; - private final DetectingStateHandler mDetectingStateHandler; - private final MagnifiedContentInteractionStateHandler mMagnifiedContentInteractionStateHandler; - private final StateViewportDraggingHandler mStateViewportDraggingHandler; + @VisibleForTesting final MagnificationController mMagnificationController; + + @VisibleForTesting final DetectingStateHandler mDetectingStateHandler; + @VisibleForTesting final PanningScalingStateHandler mPanningScalingStateHandler; + @VisibleForTesting final ViewportDraggingStateHandler mViewportDraggingStateHandler; private final ScreenStateReceiver mScreenStateReceiver; - private final boolean mDetectTripleTap; - private final boolean mTriggerable; + /** + * {@code true} if this detector should detect and respond to triple-tap + * gestures for engaging and disengaging magnification, + * {@code false} if it should ignore such gestures + */ + final boolean mDetectTripleTap; + + /** + * Whether {@link #mShortcutTriggered shortcut} is enabled + */ + final boolean mDetectShortcutTrigger; - private EventStreamTransformation mNext; + EventStreamTransformation mNext; - private int mCurrentState; - private int mPreviousState; + @VisibleForTesting int mCurrentState; + @VisibleForTesting int mPreviousState; - private boolean mTranslationEnabledBeforePan; + @VisibleForTesting boolean mShortcutTriggered; - private boolean mShortcutTriggered; + /** + * Time of last {@link MotionEvent#ACTION_DOWN} while in {@link #STATE_DELEGATING} + */ + long mDelegatingStateDownTime; private PointerCoords[] mTempPointerCoords; private PointerProperties[] mTempPointerProperties; - private long mDelegatingStateDownTime; - /** * @param context Context for resolving various magnification-related resources - * @param ams AccessibilityManagerService used to obtain a {@link MagnificationController} + * @param magnificationController the {@link MagnificationController} + * * @param detectTripleTap {@code true} if this detector should detect and respond to triple-tap - * gestures for engaging and disengaging magnification, - * {@code false} if it should ignore such gestures - * @param triggerable {@code true} if this detector should be "triggerable" by some external - * shortcut invoking {@link #notifyShortcutTriggered}, {@code - * false} if it should ignore such triggers. + * gestures for engaging and disengaging magnification, + * {@code false} if it should ignore such gestures + * @param detectShortcutTrigger {@code true} if this detector should be "triggerable" by some + * external shortcut invoking {@link #notifyShortcutTriggered}, + * {@code false} if it should ignore such triggers. */ - public MagnificationGestureHandler(Context context, AccessibilityManagerService ams, - boolean detectTripleTap, boolean triggerable) { - mMagnificationController = ams.getMagnificationController(); + public MagnificationGestureHandler(Context context, + MagnificationController magnificationController, + boolean detectTripleTap, + boolean detectShortcutTrigger) { + mMagnificationController = magnificationController; + mDetectingStateHandler = new DetectingStateHandler(context); - mStateViewportDraggingHandler = new StateViewportDraggingHandler(); - mMagnifiedContentInteractionStateHandler = - new MagnifiedContentInteractionStateHandler(context); + mViewportDraggingStateHandler = new ViewportDraggingStateHandler(); + mPanningScalingStateHandler = + new PanningScalingStateHandler(context); + mDetectTripleTap = detectTripleTap; - mTriggerable = triggerable; + mDetectShortcutTrigger = detectShortcutTrigger; - if (triggerable) { + if (mDetectShortcutTrigger) { mScreenStateReceiver = new ScreenStateReceiver(context, this); mScreenStateReceiver.register(); } else { mScreenStateReceiver = null; } - transitionToState(STATE_DETECTING); + transitionTo(STATE_DETECTING); } @Override public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { - if (!event.isFromSource(InputDevice.SOURCE_TOUCHSCREEN)) { - if (mNext != null) { - mNext.onMotionEvent(event, rawEvent, policyFlags); - } - return; - } - if (!mDetectTripleTap && !mTriggerable) { - if (mNext != null) { - dispatchTransformedEvent(event, rawEvent, policyFlags); - } + if ((!mDetectTripleTap && !mDetectShortcutTrigger) + || !event.isFromSource(SOURCE_TOUCHSCREEN)) { + dispatchTransformedEvent(event, rawEvent, policyFlags); return; } - mMagnifiedContentInteractionStateHandler.onMotionEvent(event, rawEvent, policyFlags); - switch (mCurrentState) { + // Local copy to avoid dispatching the same event to more than one state handler + // in case mPanningScalingStateHandler changes mCurrentState + int currentState = mCurrentState; + mPanningScalingStateHandler.onMotionEvent(event, rawEvent, policyFlags); + switch (currentState) { case STATE_DELEGATING: { handleMotionEventStateDelegating(event, rawEvent, policyFlags); } @@ -179,17 +213,17 @@ class MagnificationGestureHandler implements EventStreamTransformation { } break; case STATE_VIEWPORT_DRAGGING: { - mStateViewportDraggingHandler.onMotionEvent(event, rawEvent, policyFlags); + mViewportDraggingStateHandler.onMotionEvent(event, rawEvent, policyFlags); } break; - case STATE_MAGNIFIED_INTERACTION: { - // mMagnifiedContentInteractionStateHandler handles events only + case STATE_PANNING_SCALING: { + // mPanningScalingStateHandler handles events only // if this is the current state since it uses ScaleGestureDetector // and a GestureDetector which need well formed event stream. } break; default: { - throw new IllegalStateException("Unknown state: " + mCurrentState); + throw new IllegalStateException("Unknown state: " + currentState); } } } @@ -215,8 +249,8 @@ class MagnificationGestureHandler implements EventStreamTransformation { @Override public void clearEvents(int inputSource) { - if (inputSource == InputDevice.SOURCE_TOUCHSCREEN) { - clear(); + if (inputSource == SOURCE_TOUCHSCREEN) { + clearAndTransitionToStateDetecting(); } if (mNext != null) { @@ -229,20 +263,25 @@ class MagnificationGestureHandler implements EventStreamTransformation { if (mScreenStateReceiver != null) { mScreenStateReceiver.unregister(); } - clear(); + clearAndTransitionToStateDetecting(); } void notifyShortcutTriggered() { - if (mTriggerable) { - if (mMagnificationController.resetIfNeeded(true)) { - clear(); + if (mDetectShortcutTrigger) { + boolean wasMagnifying = mMagnificationController.resetIfNeeded(/* animate */ true); + if (wasMagnifying) { + clearAndTransitionToStateDetecting(); } else { - setMagnificationShortcutTriggered(!mShortcutTriggered); + toggleShortcutTriggered(); } } } - private void setMagnificationShortcutTriggered(boolean state) { + private void toggleShortcutTriggered() { + setShortcutTriggered(!mShortcutTriggered); + } + + private void setShortcutTriggered(boolean state) { if (mShortcutTriggered == state) { return; } @@ -251,27 +290,25 @@ class MagnificationGestureHandler implements EventStreamTransformation { mMagnificationController.setForceShowMagnifiableBounds(state); } - private void clear() { + void clearAndTransitionToStateDetecting() { + setShortcutTriggered(false); mCurrentState = STATE_DETECTING; - setMagnificationShortcutTriggered(false); mDetectingStateHandler.clear(); - mStateViewportDraggingHandler.clear(); - mMagnifiedContentInteractionStateHandler.clear(); + mViewportDraggingStateHandler.clear(); + mPanningScalingStateHandler.clear(); } private void handleMotionEventStateDelegating(MotionEvent event, MotionEvent rawEvent, int policyFlags) { - switch (event.getActionMasked()) { - case MotionEvent.ACTION_DOWN: { - mDelegatingStateDownTime = event.getDownTime(); - } - break; - case MotionEvent.ACTION_UP: { - if (mDetectingStateHandler.mDelayedEventQueue == null) { - transitionToState(STATE_DETECTING); - } - } - break; + if (event.getActionMasked() == ACTION_UP) { + transitionTo(STATE_DETECTING); + } + delegateEvent(event, rawEvent, policyFlags); + } + + void delegateEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { + if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { + mDelegatingStateDownTime = event.getDownTime(); } if (mNext != null) { // We cache some events to see if the user wants to trigger magnification. @@ -287,13 +324,15 @@ class MagnificationGestureHandler implements EventStreamTransformation { private void dispatchTransformedEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { - // If the event is within the magnified portion of the screen we have + if (mNext == null) return; // Nowhere to dispatch to + + // If the touchscreen event is within the magnified portion of the screen we have // to change its location to be where the user thinks he is poking the // UI which may have been magnified and panned. - final float eventX = event.getX(); - final float eventY = event.getY(); if (mMagnificationController.isMagnifying() - && mMagnificationController.magnificationRegionContains(eventX, eventY)) { + && event.isFromSource(SOURCE_TOUCHSCREEN) + && mMagnificationController.magnificationRegionContains( + event.getX(), event.getY())) { final float scale = mMagnificationController.getScale(); final float scaledOffsetX = mMagnificationController.getOffsetX(); final float scaledOffsetY = mMagnificationController.getOffsetY(); @@ -347,34 +386,27 @@ class MagnificationGestureHandler implements EventStreamTransformation { return mTempPointerProperties; } - private void transitionToState(int state) { + private void transitionTo(int state) { if (DEBUG_STATE_TRANSITIONS) { - switch (state) { - case STATE_DELEGATING: { - Slog.i(LOG_TAG, "mCurrentState: STATE_DELEGATING"); - } - break; - case STATE_DETECTING: { - Slog.i(LOG_TAG, "mCurrentState: STATE_DETECTING"); - } - break; - case STATE_VIEWPORT_DRAGGING: { - Slog.i(LOG_TAG, "mCurrentState: STATE_VIEWPORT_DRAGGING"); - } - break; - case STATE_MAGNIFIED_INTERACTION: { - Slog.i(LOG_TAG, "mCurrentState: STATE_MAGNIFIED_INTERACTION"); - } - break; - default: { - throw new IllegalArgumentException("Unknown state: " + state); - } - } + Slog.i(LOG_TAG, (stateToString(mCurrentState) + " -> " + stateToString(state) + + " at " + asList(copyOfRange(new RuntimeException().getStackTrace(), 1, 5))) + .replace(getClass().getName(), "")); } mPreviousState = mCurrentState; mCurrentState = state; } + private static String stateToString(int state) { + switch (state) { + case STATE_DELEGATING: return "STATE_DELEGATING"; + case STATE_DETECTING: return "STATE_DETECTING"; + case STATE_VIEWPORT_DRAGGING: return "STATE_VIEWPORT_DRAGGING"; + case STATE_PANNING_SCALING: return "STATE_PANNING_SCALING"; + case 0: return "0"; + default: throw new IllegalArgumentException("Unknown state: " + state); + } + } + private interface MotionEventHandler { void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags); @@ -384,21 +416,20 @@ class MagnificationGestureHandler implements EventStreamTransformation { /** * This class determines if the user is performing a scale or pan gesture. + * + * @see #STATE_PANNING_SCALING */ - private final class MagnifiedContentInteractionStateHandler extends SimpleOnGestureListener + final class PanningScalingStateHandler extends SimpleOnGestureListener implements OnScaleGestureListener, MotionEventHandler { private final ScaleGestureDetector mScaleGestureDetector; - private final GestureDetector mGestureDetector; + final float mScalingThreshold; - private final float mScalingThreshold; + float mInitialScaleFactor = -1; + boolean mScaling; - private float mInitialScaleFactor = -1; - - private boolean mScaling; - - public MagnifiedContentInteractionStateHandler(Context context) { + public PanningScalingStateHandler(Context context) { final TypedValue scaleValue = new TypedValue(); context.getResources().getValue( com.android.internal.R.dimen.config_screen_magnification_scaling_threshold, @@ -411,26 +442,39 @@ class MagnificationGestureHandler implements EventStreamTransformation { @Override public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { + // Dispatches #onScaleBegin, #onScale, #onScaleEnd mScaleGestureDetector.onTouchEvent(event); + // Dispatches #onScroll mGestureDetector.onTouchEvent(event); - if (mCurrentState != STATE_MAGNIFIED_INTERACTION) { + + if (mCurrentState != STATE_PANNING_SCALING) { return; } - if (event.getActionMasked() == MotionEvent.ACTION_UP) { - clear(); - mMagnificationController.persistScale(); - if (mPreviousState == STATE_VIEWPORT_DRAGGING) { - transitionToState(STATE_VIEWPORT_DRAGGING); - } else { - transitionToState(STATE_DETECTING); - } + + int action = event.getActionMasked(); + if (action == ACTION_POINTER_UP + && event.getPointerCount() == 2 // includes the pointer currently being released + && mPreviousState == STATE_VIEWPORT_DRAGGING) { + + persistScaleAndTransitionTo(STATE_VIEWPORT_DRAGGING); + + } else if (action == ACTION_UP) { + + persistScaleAndTransitionTo(STATE_DETECTING); + } } + public void persistScaleAndTransitionTo(int state) { + mMagnificationController.persistScale(); + clear(); + transitionTo(state); + } + @Override - public boolean onScroll(MotionEvent first, MotionEvent second, float distanceX, - float distanceY) { - if (mCurrentState != STATE_MAGNIFIED_INTERACTION) { + public boolean onScroll(MotionEvent first, MotionEvent second, + float distanceX, float distanceY) { + if (mCurrentState != STATE_PANNING_SCALING) { return true; } if (DEBUG_PANNING) { @@ -447,14 +491,15 @@ class MagnificationGestureHandler implements EventStreamTransformation { if (!mScaling) { if (mInitialScaleFactor < 0) { mInitialScaleFactor = detector.getScaleFactor(); + return false; + } + final float deltaScale = detector.getScaleFactor() - mInitialScaleFactor; + if (abs(deltaScale) > mScalingThreshold) { + mScaling = true; + return true; } else { - final float deltaScale = detector.getScaleFactor() - mInitialScaleFactor; - if (Math.abs(deltaScale) > mScalingThreshold) { - mScaling = true; - return true; - } + return false; } - return false; } final float initialScale = mMagnificationController.getScale(); @@ -485,7 +530,7 @@ class MagnificationGestureHandler implements EventStreamTransformation { @Override public boolean onScaleBegin(ScaleGestureDetector detector) { - return (mCurrentState == STATE_MAGNIFIED_INTERACTION); + return (mCurrentState == STATE_PANNING_SCALING); } @Override @@ -498,60 +543,65 @@ class MagnificationGestureHandler implements EventStreamTransformation { mInitialScaleFactor = -1; mScaling = false; } + + @Override + public String toString() { + return "MagnifiedContentInteractionStateHandler{" + + "mInitialScaleFactor=" + mInitialScaleFactor + + ", mScaling=" + mScaling + + '}'; + } } /** * This class handles motion events when the event dispatcher has * determined that the user is performing a single-finger drag of the * magnification viewport. + * + * @see #STATE_VIEWPORT_DRAGGING */ - private final class StateViewportDraggingHandler implements MotionEventHandler { + final class ViewportDraggingStateHandler implements MotionEventHandler { + /** Whether to disable zoom after dragging ends */ + boolean mZoomedInBeforeDrag; private boolean mLastMoveOutsideMagnifiedRegion; @Override public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { final int action = event.getActionMasked(); switch (action) { - case MotionEvent.ACTION_DOWN: { - throw new IllegalArgumentException("Unexpected event type: ACTION_DOWN"); - } - case MotionEvent.ACTION_POINTER_DOWN: { + case ACTION_POINTER_DOWN: { clear(); - transitionToState(STATE_MAGNIFIED_INTERACTION); + transitionTo(STATE_PANNING_SCALING); } break; - case MotionEvent.ACTION_MOVE: { + case ACTION_MOVE: { if (event.getPointerCount() != 1) { throw new IllegalStateException("Should have one pointer down."); } final float eventX = event.getX(); final float eventY = event.getY(); if (mMagnificationController.magnificationRegionContains(eventX, eventY)) { - if (mLastMoveOutsideMagnifiedRegion) { - mLastMoveOutsideMagnifiedRegion = false; - mMagnificationController.setCenter(eventX, eventY, true, - AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID); - } else { - mMagnificationController.setCenter(eventX, eventY, false, - AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID); - } + mMagnificationController.setCenter(eventX, eventY, + /* animate */ mLastMoveOutsideMagnifiedRegion, + AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID); + mLastMoveOutsideMagnifiedRegion = false; } else { mLastMoveOutsideMagnifiedRegion = true; } } break; - case MotionEvent.ACTION_UP: { - if (!mTranslationEnabledBeforePan) { - mMagnificationController.reset(true); - } + case ACTION_UP: { + if (!mZoomedInBeforeDrag) zoomOff(); clear(); - transitionToState(STATE_DETECTING); + transitionTo(STATE_DETECTING); } break; - case MotionEvent.ACTION_POINTER_UP: { + + case ACTION_DOWN: + case ACTION_POINTER_UP: { throw new IllegalArgumentException( - "Unexpected event type: ACTION_POINTER_UP"); + "Unexpected event type: " + MotionEvent.actionToString(action)); } } } @@ -560,211 +610,224 @@ class MagnificationGestureHandler implements EventStreamTransformation { public void clear() { mLastMoveOutsideMagnifiedRegion = false; } + + @Override + public String toString() { + return "ViewportDraggingStateHandler{" + + "mZoomedInBeforeDrag=" + mZoomedInBeforeDrag + + ", mLastMoveOutsideMagnifiedRegion=" + mLastMoveOutsideMagnifiedRegion + + '}'; + } } /** * This class handles motion events when the event dispatch has not yet * determined what the user is doing. It watches for various tap events. + * + * @see #STATE_DETECTING */ - private final class DetectingStateHandler implements MotionEventHandler { - - private static final int MESSAGE_ON_ACTION_TAP_AND_HOLD = 1; + final class DetectingStateHandler implements MotionEventHandler, Handler.Callback { + private static final int MESSAGE_ON_TRIPLE_TAP_AND_HOLD = 1; private static final int MESSAGE_TRANSITION_TO_DELEGATING_STATE = 2; - private static final int ACTION_TAP_COUNT = 3; - - private final int mTapTimeSlop = ViewConfiguration.getJumpTapTimeout(); - - private final int mMultiTapTimeSlop; - - private final int mTapDistanceSlop; - - private final int mMultiTapDistanceSlop; + final int mLongTapMinDelay = ViewConfiguration.getJumpTapTimeout(); + final int mSwipeMinDistance; + final int mMultiTapMaxDelay; + final int mMultiTapMaxDistance; private MotionEventInfo mDelayedEventQueue; + MotionEvent mLastDown; + private MotionEvent mPreLastDown; + private MotionEvent mLastUp; + private MotionEvent mPreLastUp; - private MotionEvent mLastDownEvent; - - private MotionEvent mLastTapUpEvent; - - private int mTapCount; + Handler mHandler = new Handler(this); public DetectingStateHandler(Context context) { - mMultiTapTimeSlop = ViewConfiguration.getDoubleTapTimeout() + mMultiTapMaxDelay = ViewConfiguration.getDoubleTapTimeout() + context.getResources().getInteger( com.android.internal.R.integer.config_screen_magnification_multi_tap_adjustment); - mTapDistanceSlop = ViewConfiguration.get(context).getScaledTouchSlop(); - mMultiTapDistanceSlop = ViewConfiguration.get(context).getScaledDoubleTapSlop(); - } - - private final Handler mHandler = new Handler() { - @Override - public void handleMessage(Message message) { - final int type = message.what; - switch (type) { - case MESSAGE_ON_ACTION_TAP_AND_HOLD: { - MotionEvent event = (MotionEvent) message.obj; - final int policyFlags = message.arg1; - onActionTapAndHold(event, policyFlags); - } - break; - case MESSAGE_TRANSITION_TO_DELEGATING_STATE: { - transitionToState(STATE_DELEGATING); - sendDelayedMotionEvents(); - clear(); - } - break; - default: { - throw new IllegalArgumentException("Unknown message type: " + type); - } + mSwipeMinDistance = ViewConfiguration.get(context).getScaledTouchSlop(); + mMultiTapMaxDistance = ViewConfiguration.get(context).getScaledDoubleTapSlop(); + } + + @Override + public boolean handleMessage(Message message) { + final int type = message.what; + switch (type) { + case MESSAGE_ON_TRIPLE_TAP_AND_HOLD: { + onTripleTapAndHold(/* down */ (MotionEvent) message.obj); + } + break; + case MESSAGE_TRANSITION_TO_DELEGATING_STATE: { + transitionToDelegatingState(/* andClear */ true); + } + break; + default: { + throw new IllegalArgumentException("Unknown message type: " + type); } } - }; + return true; + } @Override public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { cacheDelayedMotionEvent(event, rawEvent, policyFlags); - final int action = event.getActionMasked(); - switch (action) { + switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: { + mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE); + if (!mMagnificationController.magnificationRegionContains( event.getX(), event.getY())) { - transitionToDelegatingState(!mShortcutTriggered); - return; - } - if (mShortcutTriggered) { - Message message = mHandler.obtainMessage(MESSAGE_ON_ACTION_TAP_AND_HOLD, - policyFlags, 0, event); - mHandler.sendMessageDelayed(message, - ViewConfiguration.getLongPressTimeout()); - return; - } - if (mDetectTripleTap) { - if ((mTapCount == ACTION_TAP_COUNT - 1) && (mLastDownEvent != null) - && GestureUtils.isMultiTap(mLastDownEvent, event, mMultiTapTimeSlop, - mMultiTapDistanceSlop, 0)) { - Message message = mHandler.obtainMessage(MESSAGE_ON_ACTION_TAP_AND_HOLD, - policyFlags, 0, event); - mHandler.sendMessageDelayed(message, - ViewConfiguration.getLongPressTimeout()); - } else if (mTapCount < ACTION_TAP_COUNT) { - Message message = mHandler.obtainMessage( - MESSAGE_TRANSITION_TO_DELEGATING_STATE); - mHandler.sendMessageDelayed(message, mMultiTapTimeSlop); - } - clearLastDownEvent(); - mLastDownEvent = MotionEvent.obtain(event); - } else if (mMagnificationController.isMagnifying()) { - // If magnified, consume an ACTION_DOWN until mMultiTapTimeSlop or - // mTapDistanceSlop is reached to ensure MAGNIFIED_INTERACTION is reachable. - Message message = mHandler.obtainMessage( - MESSAGE_TRANSITION_TO_DELEGATING_STATE); - mHandler.sendMessageDelayed(message, mMultiTapTimeSlop); - return; + + transitionToDelegatingState(/* andClear */ !mShortcutTriggered); + + } else if (isMultiTapTriggered(2 /* taps */)) { + + // 3tap and hold + delayedTransitionToDraggingState(event); + + } else if (mDetectTripleTap + // If magnified, delay an ACTION_DOWN for mMultiTapMaxDelay + // to ensure reachability of + // STATE_PANNING_SCALING(triggerable with ACTION_POINTER_DOWN) + || mMagnificationController.isMagnifying()) { + + delayedTransitionToDelegatingState(); + } else { - transitionToDelegatingState(true); - return; + + // Delegate pending events without delay + transitionToDelegatingState(/* andClear */ true); } } break; - case MotionEvent.ACTION_POINTER_DOWN: { + case ACTION_POINTER_DOWN: { if (mMagnificationController.isMagnifying()) { - mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE); - transitionToState(STATE_MAGNIFIED_INTERACTION); + transitionTo(STATE_PANNING_SCALING); clear(); } else { - transitionToDelegatingState(true); + transitionToDelegatingState(/* andClear */ true); } } break; - case MotionEvent.ACTION_MOVE: { - if (mLastDownEvent != null && mTapCount < ACTION_TAP_COUNT - 1) { - final double distance = GestureUtils.computeDistance(mLastDownEvent, - event, 0); - if (Math.abs(distance) > mTapDistanceSlop) { - transitionToDelegatingState(true); - } + case ACTION_MOVE: { + if (isFingerDown() + && distance(mLastDown, /* move */ event) > mSwipeMinDistance + // For convenience, viewport dragging on 3tap&hold takes precedence + // over insta-delegating on 3tap&swipe + // (which is a rare combo to be used aside from magnification) + && !isMultiTapTriggered(2 /* taps */)) { + + // Swipe detected - delegate skipping timeout + transitionToDelegatingState(/* andClear */ true); } } break; - case MotionEvent.ACTION_UP: { + case ACTION_UP: { + + mHandler.removeMessages(MESSAGE_ON_TRIPLE_TAP_AND_HOLD); + if (!mMagnificationController.magnificationRegionContains( event.getX(), event.getY())) { - transitionToDelegatingState(!mShortcutTriggered); - return; - } - if (mShortcutTriggered) { - clear(); - onActionTap(event, policyFlags); - return; - } - if (mLastDownEvent == null) { - return; - } - mHandler.removeMessages(MESSAGE_ON_ACTION_TAP_AND_HOLD); - if (!GestureUtils.isTap(mLastDownEvent, event, mTapTimeSlop, - mTapDistanceSlop, 0)) { - transitionToDelegatingState(true); - return; - } - if (mLastTapUpEvent != null && !GestureUtils.isMultiTap( - mLastTapUpEvent, event, mMultiTapTimeSlop, mMultiTapDistanceSlop, 0)) { - transitionToDelegatingState(true); - return; - } - mTapCount++; - if (DEBUG_DETECTING) { - Slog.i(LOG_TAG, "Tap count:" + mTapCount); - } - if (mTapCount == ACTION_TAP_COUNT) { - clear(); - onActionTap(event, policyFlags); - return; + + transitionToDelegatingState(/* andClear */ !mShortcutTriggered); + + } else if (isMultiTapTriggered(3 /* taps */)) { + + onTripleTap(/* up */ event); + + } else if ( + // Possible to be false on: 3tap&drag -> scale -> PTR_UP -> UP + isFingerDown() + //TODO long tap should never happen here + && (timeBetween(mLastDown, /* mLastUp */ event) >= mLongTapMinDelay) + || distance(mLastDown, /* mLastUp */ event) + >= mSwipeMinDistance) { + + transitionToDelegatingState(/* andClear */ true); + } - clearLastTapUpEvent(); - mLastTapUpEvent = MotionEvent.obtain(event); - } - break; - case MotionEvent.ACTION_POINTER_UP: { - /* do nothing */ } break; } } - @Override - public void clear() { - setMagnificationShortcutTriggered(false); - mHandler.removeMessages(MESSAGE_ON_ACTION_TAP_AND_HOLD); - mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE); - clearTapDetectionState(); - clearDelayedMotionEvents(); + public boolean isMultiTapTriggered(int numTaps) { + + // Shortcut acts as the 2 initial taps + if (mShortcutTriggered) return tapCount() + 2 >= numTaps; + + return mDetectTripleTap + && tapCount() >= numTaps + && isMultiTap(mPreLastDown, mLastDown) + && isMultiTap(mPreLastUp, mLastUp); } - private void clearTapDetectionState() { - mTapCount = 0; - clearLastTapUpEvent(); - clearLastDownEvent(); + private boolean isMultiTap(MotionEvent first, MotionEvent second) { + return GestureUtils.isMultiTap(first, second, mMultiTapMaxDelay, mMultiTapMaxDistance); } - private void clearLastTapUpEvent() { - if (mLastTapUpEvent != null) { - mLastTapUpEvent.recycle(); - mLastTapUpEvent = null; - } + public boolean isFingerDown() { + return mLastDown != null; } - private void clearLastDownEvent() { - if (mLastDownEvent != null) { - mLastDownEvent.recycle(); - mLastDownEvent = null; - } + private long timeBetween(@Nullable MotionEvent a, @Nullable MotionEvent b) { + if (a == null && b == null) return 0; + return abs(timeOf(a) - timeOf(b)); + } + + /** + * Nullsafe {@link MotionEvent#getEventTime} that interprets null event as something that + * has happened long enough ago to be gone from the event queue. + * Thus the time for a null event is a small number, that is below any other non-null + * event's time. + * + * @return {@link MotionEvent#getEventTime}, or {@link Long#MIN_VALUE} if the event is null + */ + private long timeOf(@Nullable MotionEvent event) { + return event != null ? event.getEventTime() : Long.MIN_VALUE; + } + + public int tapCount() { + return MotionEventInfo.countOf(mDelayedEventQueue, ACTION_UP); } + /** -> {@link #STATE_DELEGATING} */ + public void delayedTransitionToDelegatingState() { + mHandler.sendEmptyMessageDelayed( + MESSAGE_TRANSITION_TO_DELEGATING_STATE, + mMultiTapMaxDelay); + } + + /** -> {@link #STATE_VIEWPORT_DRAGGING} */ + public void delayedTransitionToDraggingState(MotionEvent event) { + mHandler.sendMessageDelayed( + mHandler.obtainMessage(MESSAGE_ON_TRIPLE_TAP_AND_HOLD, event), + ViewConfiguration.getLongPressTimeout()); + } + + @Override + public void clear() { + setShortcutTriggered(false); + mHandler.removeMessages(MESSAGE_ON_TRIPLE_TAP_AND_HOLD); + mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE); + clearDelayedMotionEvents(); + } + + private void cacheDelayedMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { + if (event.getActionMasked() == ACTION_DOWN) { + mPreLastDown = mLastDown; + mLastDown = event; + } else if (event.getActionMasked() == ACTION_UP) { + mPreLastUp = mLastUp; + mLastUp = event; + } + MotionEventInfo info = MotionEventInfo.obtain(event, rawEvent, policyFlags); if (mDelayedEventQueue == null) { @@ -782,8 +845,13 @@ class MagnificationGestureHandler implements EventStreamTransformation { while (mDelayedEventQueue != null) { MotionEventInfo info = mDelayedEventQueue; mDelayedEventQueue = info.mNext; - MagnificationGestureHandler.this.onMotionEvent(info.mEvent, info.mRawEvent, - info.mPolicyFlags); + + // Because MagnifiedInteractionStateHandler requires well-formed event stream + mPanningScalingStateHandler.onMotionEvent( + info.event, info.rawEvent, info.policyFlags); + + delegateEvent(info.event, info.rawEvent, info.policyFlags); + info.recycle(); } } @@ -794,91 +862,136 @@ class MagnificationGestureHandler implements EventStreamTransformation { mDelayedEventQueue = info.mNext; info.recycle(); } + mPreLastDown = null; + mPreLastUp = null; + mLastDown = null; + mLastUp = null; } - private void transitionToDelegatingState(boolean andClear) { - transitionToState(STATE_DELEGATING); + void transitionToDelegatingState(boolean andClear) { + transitionTo(STATE_DELEGATING); sendDelayedMotionEvents(); - if (andClear) { - clear(); - } + if (andClear) clear(); } - private void onActionTap(MotionEvent up, int policyFlags) { + private void onTripleTap(MotionEvent up) { + if (DEBUG_DETECTING) { - Slog.i(LOG_TAG, "onActionTap()"); + Slog.i(LOG_TAG, "onTripleTap(); delayed: " + + MotionEventInfo.toString(mDelayedEventQueue)); } + clear(); - if (!mMagnificationController.isMagnifying()) { - final float targetScale = mMagnificationController.getPersistedScale(); - final float scale = MathUtils.constrain(targetScale, MIN_SCALE, MAX_SCALE); - mMagnificationController.setScaleAndCenter(scale, up.getX(), up.getY(), true, - AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID); + // Toggle zoom + if (mMagnificationController.isMagnifying()) { + zoomOff(); } else { - mMagnificationController.reset(true); + zoomOn(up.getX(), up.getY()); } } - private void onActionTapAndHold(MotionEvent down, int policyFlags) { - if (DEBUG_DETECTING) { - Slog.i(LOG_TAG, "onActionTapAndHold()"); - } + void onTripleTapAndHold(MotionEvent down) { + if (DEBUG_DETECTING) Slog.i(LOG_TAG, "onTripleTapAndHold()"); clear(); - mTranslationEnabledBeforePan = mMagnificationController.isMagnifying(); - final float targetScale = mMagnificationController.getPersistedScale(); - final float scale = MathUtils.constrain(targetScale, MIN_SCALE, MAX_SCALE); - mMagnificationController.setScaleAndCenter(scale, down.getX(), down.getY(), true, - AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID); + mViewportDraggingStateHandler.mZoomedInBeforeDrag = + mMagnificationController.isMagnifying(); + + zoomOn(down.getX(), down.getY()); - transitionToState(STATE_VIEWPORT_DRAGGING); + transitionTo(STATE_VIEWPORT_DRAGGING); + } + + @Override + public String toString() { + return "DetectingStateHandler{" + + "tapCount()=" + tapCount() + + ", mDelayedEventQueue=" + MotionEventInfo.toString(mDelayedEventQueue) + + '}'; } } + private void zoomOn(float centerX, float centerY) { + final float scale = MathUtils.constrain( + mMagnificationController.getPersistedScale(), + MIN_SCALE, MAX_SCALE); + mMagnificationController.setScaleAndCenter( + scale, centerX, centerY, + /* animate */ true, + AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID); + } + + private void zoomOff() { + mMagnificationController.reset(/* animate */ true); + } + + private static MotionEvent recycleAndNullify(@Nullable MotionEvent event) { + if (event != null) { + event.recycle(); + } + return null; + } + + @Override + public String toString() { + return "MagnificationGestureHandler{" + + "mDetectingStateHandler=" + mDetectingStateHandler + + ", mMagnifiedInteractionStateHandler=" + mPanningScalingStateHandler + + ", mViewportDraggingStateHandler=" + mViewportDraggingStateHandler + + ", mDetectTripleTap=" + mDetectTripleTap + + ", mDetectShortcutTrigger=" + mDetectShortcutTrigger + + ", mCurrentState=" + stateToString(mCurrentState) + + ", mPreviousState=" + stateToString(mPreviousState) + + ", mShortcutTriggered=" + mShortcutTriggered + + ", mDelegatingStateDownTime=" + mDelegatingStateDownTime + + ", mMagnificationController=" + mMagnificationController + + '}'; + } + private static final class MotionEventInfo { private static final int MAX_POOL_SIZE = 10; - private static final Object sLock = new Object(); - private static MotionEventInfo sPool; - private static int sPoolSize; private MotionEventInfo mNext; - private boolean mInPool; - public MotionEvent mEvent; - - public MotionEvent mRawEvent; - - public int mPolicyFlags; + public MotionEvent event; + public MotionEvent rawEvent; + public int policyFlags; public static MotionEventInfo obtain(MotionEvent event, MotionEvent rawEvent, int policyFlags) { synchronized (sLock) { - MotionEventInfo info; - if (sPoolSize > 0) { - sPoolSize--; - info = sPool; - sPool = info.mNext; - info.mNext = null; - info.mInPool = false; - } else { - info = new MotionEventInfo(); - } + MotionEventInfo info = obtainInternal(); info.initialize(event, rawEvent, policyFlags); return info; } } + @NonNull + private static MotionEventInfo obtainInternal() { + MotionEventInfo info; + if (sPoolSize > 0) { + sPoolSize--; + info = sPool; + sPool = info.mNext; + info.mNext = null; + info.mInPool = false; + } else { + info = new MotionEventInfo(); + } + return info; + } + private void initialize(MotionEvent event, MotionEvent rawEvent, int policyFlags) { - mEvent = MotionEvent.obtain(event); - mRawEvent = MotionEvent.obtain(rawEvent); - mPolicyFlags = policyFlags; + this.event = MotionEvent.obtain(event); + this.rawEvent = MotionEvent.obtain(rawEvent); + this.policyFlags = policyFlags; } public void recycle() { @@ -897,11 +1010,22 @@ class MagnificationGestureHandler implements EventStreamTransformation { } private void clear() { - mEvent.recycle(); - mEvent = null; - mRawEvent.recycle(); - mRawEvent = null; - mPolicyFlags = 0; + event = recycleAndNullify(event); + rawEvent = recycleAndNullify(rawEvent); + policyFlags = 0; + } + + static int countOf(MotionEventInfo info, int eventType) { + if (info == null) return 0; + return (info.event.getAction() == eventType ? 1 : 0) + + countOf(info.mNext, eventType); + } + + public static String toString(MotionEventInfo info) { + return info == null + ? "" + : MotionEvent.actionToString(info.event.getAction()).replace("ACTION_", "") + + " " + MotionEventInfo.toString(info.mNext); } } @@ -927,7 +1051,7 @@ class MagnificationGestureHandler implements EventStreamTransformation { @Override public void onReceive(Context context, Intent intent) { - mGestureHandler.setMagnificationShortcutTriggered(false); + mGestureHandler.setShortcutTriggered(false); } } } diff --git a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java index 3a1de98e739a..a6b81ffff1c1 100644 --- a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java +++ b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java @@ -47,7 +47,7 @@ class UiAutomationManager { private int mUiAutomationFlags; private IBinder mUiAutomationServiceOwner; - private final DeathRecipient mUiAutomationSerivceOwnerDeathRecipient = + private final DeathRecipient mUiAutomationServiceOwnerDeathRecipient = new DeathRecipient() { @Override public void binderDied() { @@ -85,7 +85,7 @@ class UiAutomationManager { } try { - owner.linkToDeath(mUiAutomationSerivceOwnerDeathRecipient, 0); + owner.linkToDeath(mUiAutomationServiceOwnerDeathRecipient, 0); } catch (RemoteException re) { Slog.e(LOG_TAG, "Couldn't register for the death of a UiTestAutomationService!", re); return; @@ -165,12 +165,14 @@ class UiAutomationManager { mUiAutomationService = null; mUiAutomationFlags = 0; if (mUiAutomationServiceOwner != null) { - mUiAutomationServiceOwner.unlinkToDeath(mUiAutomationSerivceOwnerDeathRecipient, 0); + mUiAutomationServiceOwner.unlinkToDeath(mUiAutomationServiceOwnerDeathRecipient, 0); mUiAutomationServiceOwner = null; } } private class UiAutomationService extends AccessibilityClientConnection { + private final Handler mMainHandler; + UiAutomationService(Context context, AccessibilityServiceInfo accessibilityServiceInfo, int id, Handler mainHandler, Object lock, AccessibilityManagerService.SecurityPolicy securityPolicy, @@ -178,15 +180,26 @@ class UiAutomationManager { GlobalActionPerformer globalActionPerfomer) { super(context, COMPONENT_NAME, accessibilityServiceInfo, id, mainHandler, lock, securityPolicy, systemSupport, windowManagerInternal, globalActionPerfomer); + mMainHandler = mainHandler; } void connectServiceUnknownThread() { // This needs to be done on the main thread - mEventDispatchHandler.post(() -> { + mMainHandler.post(() -> { try { - mService = mServiceInterface.asBinder(); - mService.linkToDeath(this, 0); - mServiceInterface.init(this, mId, mOverlayWindowToken); + final IAccessibilityServiceClient serviceInterface; + final IBinder service; + synchronized (mLock) { + serviceInterface = mServiceInterface; + mService = (serviceInterface == null) ? null : mServiceInterface.asBinder(); + service = mService; + } + // If the serviceInterface is null, the UiAutomation has been shut down on + // another thread. + if (serviceInterface != null) { + service.linkToDeath(this, 0); + serviceInterface.init(this, mId, mOverlayWindowToken); + } } catch (RemoteException re) { Slog.w(LOG_TAG, "Error initialized connection", re); destroyUiAutomationService(); diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 80b54770e4b7..a6aaaa673013 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -2427,14 +2427,14 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku out.attribute(null, "p", Integer.toHexString(widget.provider.tag)); } if (widget.options != null) { - out.attribute(null, "min_width", Integer.toHexString(widget.options.getInt( - AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH))); - out.attribute(null, "min_height", Integer.toHexString(widget.options.getInt( - AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT))); - out.attribute(null, "max_width", Integer.toHexString(widget.options.getInt( - AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH))); - out.attribute(null, "max_height", Integer.toHexString(widget.options.getInt( - AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT))); + int minWidth = widget.options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH); + int minHeight = widget.options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT); + int maxWidth = widget.options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH); + int maxHeight = widget.options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT); + out.attribute(null, "min_width", Integer.toHexString((minWidth > 0) ? minWidth : 0)); + out.attribute(null, "min_height", Integer.toHexString((minHeight > 0) ? minHeight : 0)); + out.attribute(null, "max_width", Integer.toHexString((maxWidth > 0) ? maxWidth : 0)); + out.attribute(null, "max_height", Integer.toHexString((maxHeight > 0) ? maxHeight : 0)); out.attribute(null, "host_category", Integer.toHexString(widget.options.getInt( AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY))); } diff --git a/services/art-profile b/services/art-profile index 28762a8932db..ae5c909eec59 100644 --- a/services/art-profile +++ b/services/art-profile @@ -34,6 +34,28 @@ HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCall HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->ping()V HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->setHALInstrumentation()V HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasHDRDisplay()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasSyncFramework()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasWideColorDisplay()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->maxFrameBufferAcquiredBuffers()Landroid/hardware/configstore/V1_0/OptionalInt64; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->maxVirtualDisplaySize()Landroid/hardware/configstore/V1_0/OptionalUInt64; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->notifySyspropsChanged()V +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->ping()V +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->presentTimeOffsetFromVSyncNs()Landroid/hardware/configstore/V1_0/OptionalInt64; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->setHALInstrumentation()V +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->startGraphicsAllocatorService()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useContextPriority()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useHwcForRGBtoYUV()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useVrFlinger()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->vsyncEventPhaseOffsetNs()Landroid/hardware/configstore/V1_0/OptionalInt64; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->vsyncSfEventPhaseOffsetNs()Landroid/hardware/configstore/V1_0/OptionalInt64; HPLandroid/hardware/usb/V1_0/IUsb;->asBinder()Landroid/os/IHwBinder; HPLandroid/hardware/usb/V1_0/IUsb;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; HPLandroid/hardware/usb/V1_0/IUsb;->getHashChain()Ljava/util/ArrayList; @@ -70,6 +92,9 @@ HPLandroid/hardware/usb/V1_1/IUsbCallback;->notifySyspropsChanged()V HPLandroid/hardware/usb/V1_1/IUsbCallback;->ping()V HPLandroid/hardware/usb/V1_1/IUsbCallback;->setHALInstrumentation()V HPLandroid/hardware/usb/V1_1/IUsbCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChip(ILandroid/hardware/wifi/V1_0/IWifi$getChipCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChipIds(Landroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->isStarted()Z HPLandroid/hardware/wifi/V1_0/IWifi$getChipCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V HPLandroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V HPLandroid/hardware/wifi/V1_0/IWifi;->asBinder()Landroid/os/IHwBinder; @@ -88,10 +113,26 @@ HPLandroid/hardware/wifi/V1_0/IWifi;->setHALInstrumentation()V HPLandroid/hardware/wifi/V1_0/IWifi;->start()Landroid/hardware/wifi/V1_0/WifiStatus; HPLandroid/hardware/wifi/V1_0/IWifi;->stop()Landroid/hardware/wifi/V1_0/WifiStatus; HPLandroid/hardware/wifi/V1_0/IWifi;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;-><init>()V +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getApIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getAvailableModes(Landroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiChip$getCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getMode(Landroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getNanIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getP2pIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getP2pIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->interfaceChain()Ljava/util/ArrayList; HPLandroid/hardware/wifi/V1_0/IWifiChip$createRttControllerCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V HPLandroid/hardware/wifi/V1_0/IWifiChip$createStaIfaceCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V HPLandroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V HPLandroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getDebugHostWakeReasonStatsCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V HPLandroid/hardware/wifi/V1_0/IWifiChip$getDebugRingBuffersStatusCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V HPLandroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V HPLandroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V @@ -100,6 +141,7 @@ HPLandroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;->onValues(Landroid/ HPLandroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V HPLandroid/hardware/wifi/V1_0/IWifiChip$requestChipDebugInfoCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V HPLandroid/hardware/wifi/V1_0/IWifiChip;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiChip; HPLandroid/hardware/wifi/V1_0/IWifiChip;->configureChip(I)Landroid/hardware/wifi/V1_0/WifiStatus; HPLandroid/hardware/wifi/V1_0/IWifiChip;->createApIface(Landroid/hardware/wifi/V1_0/IWifiChip$createApIfaceCallback;)V HPLandroid/hardware/wifi/V1_0/IWifiChip;->createNanIface(Landroid/hardware/wifi/V1_0/IWifiChip$createNanIfaceCallback;)V @@ -215,7 +257,11 @@ HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->onResults(ILjava HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->ping()V HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->setHALInstrumentation()V HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;)V HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getLinkLayerStats(Landroid/hardware/wifi/V1_0/IWifiStaIface$getLinkLayerStatsCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getValidFrequenciesForBand(ILandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->installApfPacketFilter(ILjava/util/ArrayList;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->interfaceChain()Ljava/util/ArrayList; HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getApfPacketFilterCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getBackgroundScanCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V @@ -225,6 +271,7 @@ HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getLinkLayerStatsCallback;->onValues HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getRoamingCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiStaIface; HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->configureRoaming(Landroid/hardware/wifi/V1_0/StaRoamingConfig;)Landroid/hardware/wifi/V1_0/WifiStatus; HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->disableLinkLayerStatsCollection()Landroid/hardware/wifi/V1_0/WifiStatus; HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->enableLinkLayerStatsCollection(Z)Landroid/hardware/wifi/V1_0/WifiStatus; @@ -271,14 +318,25 @@ HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->onRssiThresholdBreach HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->ping()V HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->setHALInstrumentation()V HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfacePacketStats;-><init>()V HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfacePacketStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;-><init>()V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerRadioStats;-><init>()V HPLandroid/hardware/wifi/V1_0/StaLinkLayerRadioStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;-><init>()V HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->readFromParcel(Landroid/os/HwParcel;)V +HPLandroid/hardware/wifi/V1_0/WifiDebugPacketFateFrameInfo;-><init>()V HPLandroid/hardware/wifi/V1_0/WifiDebugPacketFateFrameInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;-><init>()V HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readFromParcel(Landroid/os/HwParcel;)V +HPLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/WifiStatus;-><init>()V HPLandroid/hardware/wifi/V1_0/WifiStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/WifiStatus;->readFromParcel(Landroid/os/HwParcel;)V HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->asBinder()Landroid/os/IHwBinder; HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getDebugLevel()I @@ -376,6 +434,7 @@ HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onStaDeau HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->ping()V HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->setHALInstrumentation()V HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setPowerSave(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$getMacAddressCallback;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->addExtRadioWork(Ljava/lang/String;IILandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$addExtRadioWorkCallback;)V HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->addRxFilter(B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; @@ -534,20 +593,150 @@ HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->onNetwo HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->ping()V HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->setHALInstrumentation()V HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;-><init>()V +HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readFromParcel(Landroid/os/HwParcel;)V +HPLandroid/net/apf/ApfFilter$Ra;->generateFilterLocked(Landroid/net/apf/ApfGenerator;)J HPLandroid/net/apf/ApfFilter$Ra;->matches([BI)Z +HPLandroid/net/apf/ApfFilter$Ra;->minLifetime([BI)J +HPLandroid/net/apf/ApfFilter;->beginProgramLocked()Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfFilter;->currentTimeSeconds()J +HPLandroid/net/apf/ApfFilter;->generateArpFilterLocked(Landroid/net/apf/ApfGenerator;)V +HPLandroid/net/apf/ApfFilter;->generateIPv4FilterLocked(Landroid/net/apf/ApfGenerator;)V +HPLandroid/net/apf/ApfFilter;->generateIPv6FilterLocked(Landroid/net/apf/ApfGenerator;)V +HPLandroid/net/apf/ApfFilter;->installNewProgramLocked()V +HPLandroid/net/apf/ApfGenerator$Instruction;-><init>(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;)V +HPLandroid/net/apf/ApfGenerator$Instruction;-><init>(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;Landroid/net/apf/ApfGenerator$Register;)V +HPLandroid/net/apf/ApfGenerator$Instruction;->calculateImmSize(IZ)B HPLandroid/net/apf/ApfGenerator$Instruction;->calculateTargetLabelOffset()I +HPLandroid/net/apf/ApfGenerator$Instruction;->generate([B)V +HPLandroid/net/apf/ApfGenerator$Instruction;->generateImmSizeField()B +HPLandroid/net/apf/ApfGenerator$Instruction;->generateInstructionByte()B HPLandroid/net/apf/ApfGenerator$Instruction;->generatedImmSize()B +HPLandroid/net/apf/ApfGenerator$Instruction;->setCompareBytes([B)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setImm(IZ)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setLabel(Ljava/lang/String;)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setSignedImm(I)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setTargetLabel(Ljava/lang/String;)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setUnsignedImm(I)V HPLandroid/net/apf/ApfGenerator$Instruction;->shrink()Z HPLandroid/net/apf/ApfGenerator$Instruction;->size()I +HPLandroid/net/apf/ApfGenerator$Instruction;->writeValue(I[BI)I +HPLandroid/net/apf/ApfGenerator;->-get0(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction; +HPLandroid/net/apf/ApfGenerator;->-get1(Landroid/net/apf/ApfGenerator;)Ljava/util/HashMap; +HPLandroid/net/apf/ApfGenerator;->-get2(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction; +HPLandroid/net/apf/ApfGenerator;-><init>()V +HPLandroid/net/apf/ApfGenerator;->addInstruction(Landroid/net/apf/ApfGenerator$Instruction;)V +HPLandroid/net/apf/ApfGenerator;->addJump(Ljava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfBytesNotEqual(Landroid/net/apf/ApfGenerator$Register;[BLjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfR0Equals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfR0GreaterThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfR0LessThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfR0NotEquals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoad16(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoad32(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoad8(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoadFromMemory(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoadImmediate(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->defineLabel(Ljava/lang/String;)Landroid/net/apf/ApfGenerator; HPLandroid/net/apf/ApfGenerator;->generate()[B HPLandroid/net/apf/ApfGenerator;->updateInstructionOffsets()I +HPLandroid/net/dhcp/DhcpAckPacket;->toString()Ljava/lang/String; +HPLandroid/net/dhcp/DhcpPacket;->checksum(Ljava/nio/ByteBuffer;III)I +HPLandroid/net/dhcp/DhcpPacket;->decodeFullPacket(Ljava/nio/ByteBuffer;I)Landroid/net/dhcp/DhcpPacket; +HPLandroid/net/dhcp/DhcpPacket;->fillInPacket(ILjava/net/Inet4Address;Ljava/net/Inet4Address;SSLjava/nio/ByteBuffer;BZ)V +HPLandroid/net/dhcp/DhcpPacket;->intAbs(S)I +HPLandroid/net/dhcp/DhcpPacket;->macToString([B)Ljava/lang/String; +HPLandroid/net/dhcp/DhcpPacket;->readIpAddress(Ljava/nio/ByteBuffer;)Ljava/net/Inet4Address; +HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->$m$0()V +HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V +HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->run()V +HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->addLogEntry(Ljava/lang/String;)V +HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->handlePacket([BI)V +HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->lambda$-android_net_ip_ConnectivityPacketTracker$PacketListener_4824(Ljava/lang/String;)V +HPLandroid/net/ip/ConnectivityPacketTracker;->-get0(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/os/Handler; +HPLandroid/net/ip/ConnectivityPacketTracker;->-get1(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/util/LocalLog; +HPLandroid/net/ip/IpManager$LoggingCallbackWrapper;->log(Ljava/lang/String;)V +HPLandroid/net/ip/IpManager$RunningState;->processMessage(Landroid/os/Message;)Z +HPLandroid/net/ip/IpManager;->addAllReachableDnsServers(Landroid/net/LinkProperties;Ljava/lang/Iterable;)V +HPLandroid/net/ip/IpManager;->assembleLinkProperties()Landroid/net/LinkProperties; +HPLandroid/net/ip/IpManager;->getLogRecString(Landroid/os/Message;)Ljava/lang/String; +HPLandroid/net/ip/IpManager;->getWhatToString(I)Ljava/lang/String; HPLandroid/net/ip/IpReachabilityMonitor$Callback;->notifyLost(Ljava/net/InetAddress;Ljava/lang/String;)V +HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->evaluateRtNetlinkNeighborMessage(Landroid/net/netlink/RtNetlinkNeighborMessage;J)V +HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->parseNetlinkMessageBuffer(Ljava/nio/ByteBuffer;J)V +HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->recvKernelReply()Ljava/nio/ByteBuffer; +HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->run()V +HPLandroid/net/ip/IpReachabilityMonitor;->-get0(Landroid/net/ip/IpReachabilityMonitor;)I +HPLandroid/net/ip/IpReachabilityMonitor;->-get1(Landroid/net/ip/IpReachabilityMonitor;)Ljava/util/Map; +HPLandroid/net/ip/IpReachabilityMonitor;->-get2(Landroid/net/ip/IpReachabilityMonitor;)Ljava/lang/Object; +HPLandroid/net/ip/IpReachabilityMonitor;->-get3(Landroid/net/ip/IpReachabilityMonitor;)Z +HPLandroid/net/ip/IpReachabilityMonitor;->-wrap0(Landroid/net/ip/IpReachabilityMonitor;Ljava/net/InetAddress;)Z +HPLandroid/net/ip/IpReachabilityMonitor;->isOnLink(Ljava/util/List;Ljava/net/InetAddress;)Z +HPLandroid/net/ip/IpReachabilityMonitor;->isWatching(Ljava/net/InetAddress;)Z +HPLandroid/net/ip/IpReachabilityMonitor;->updateLinkProperties(Landroid/net/LinkProperties;)V +HPLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/net/metrics/INetdEventListener;->onConnectEvent(IIILjava/lang/String;II)V HPLandroid/net/metrics/INetdEventListener;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V HPLandroid/net/metrics/INetdEventListener;->onWakeupEvent(Ljava/lang/String;IIJ)V +HPLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(I)I +HPLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(S)I +HPLandroid/net/netlink/NetlinkConstants;->hexify([B)Ljava/lang/String; +HPLandroid/net/netlink/NetlinkConstants;->stringForNlMsgType(S)Ljava/lang/String; +HPLandroid/net/netlink/NetlinkMessage;-><init>(Landroid/net/netlink/StructNlMsgHdr;)V +HPLandroid/net/netlink/NetlinkMessage;->getHeader()Landroid/net/netlink/StructNlMsgHdr; +HPLandroid/net/netlink/NetlinkMessage;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/NetlinkMessage; +HPLandroid/net/netlink/NetlinkSocket;->checkTimeout(J)V +HPLandroid/net/netlink/NetlinkSocket;->recvMessage(IJ)Ljava/nio/ByteBuffer; +HPLandroid/net/netlink/NetlinkSocket;->recvMessage(J)Ljava/nio/ByteBuffer; +HPLandroid/net/netlink/RtNetlinkNeighborMessage;-><init>(Landroid/net/netlink/StructNlMsgHdr;)V +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->findNextAttrOfType(SLjava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr; +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getDestination()Ljava/net/InetAddress; +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getLinkLayerAddress()[B +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getNdHeader()Landroid/net/netlink/StructNdMsg; +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->parse(Landroid/net/netlink/StructNlMsgHdr;Ljava/nio/ByteBuffer;)Landroid/net/netlink/RtNetlinkNeighborMessage; +HPLandroid/net/netlink/StructNdMsg;-><init>()V +HPLandroid/net/netlink/StructNdMsg;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z +HPLandroid/net/netlink/StructNdMsg;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdMsg; +HPLandroid/net/netlink/StructNdMsg;->stringForNudState(S)Ljava/lang/String; +HPLandroid/net/netlink/StructNdaCacheInfo;-><init>()V +HPLandroid/net/netlink/StructNdaCacheInfo;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z +HPLandroid/net/netlink/StructNdaCacheInfo;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdaCacheInfo; +HPLandroid/net/netlink/StructNlAttr;-><init>()V +HPLandroid/net/netlink/StructNlAttr;->getAlignedLength()I +HPLandroid/net/netlink/StructNlAttr;->getValueAsByteBuffer()Ljava/nio/ByteBuffer; +HPLandroid/net/netlink/StructNlAttr;->getValueAsInetAddress()Ljava/net/InetAddress; +HPLandroid/net/netlink/StructNlAttr;->getValueAsInt(I)I +HPLandroid/net/netlink/StructNlAttr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr; HPLandroid/net/netlink/StructNlAttr;->peek(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr; +HPLandroid/net/netlink/StructNlMsgHdr;-><init>()V +HPLandroid/net/netlink/StructNlMsgHdr;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z +HPLandroid/net/netlink/StructNlMsgHdr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlMsgHdr; HPLandroid/net/util/BlockingSocketReader;->createSocket()Ljava/io/FileDescriptor; +HPLandroid/net/util/BlockingSocketReader;->isRunning()Z +HPLandroid/net/util/BlockingSocketReader;->mainLoop()V +HPLandroid/net/util/ConnectivityPacketSummary;-><init>([B[BI)V +HPLandroid/net/util/ConnectivityPacketSummary;->getIPv4AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->getIPv6AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->getIpAddressString(Ljava/nio/ByteBuffer;I)Ljava/lang/String; HPLandroid/net/util/ConnectivityPacketSummary;->getMacAddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->parseARP(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseEther(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborDiscoveryOptions(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborMessage(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseIPv4(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseIPv6(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseUDP(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->summarize([B[BI)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->toString()Ljava/lang/String; +HPLandroid/net/util/NetworkConstants;->asUint(B)I +HPLandroid/net/util/NetworkConstants;->asUint(S)I +HPLandroid/net/util/SharedLog;->isRootLogInstance()Z +HPLandroid/net/util/SharedLog;->log(Ljava/lang/String;)V +HPLandroid/net/util/SharedLog;->logLine(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/net/util/SharedLog;->record(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/net/wifi/IClientInterface$Stub$Proxy;->signalPoll()[I HPLandroid/net/wifi/IClientInterface;->disableSupplicant()Z HPLandroid/net/wifi/IClientInterface;->enableSupplicant()Z HPLandroid/net/wifi/IClientInterface;->getInterfaceName()Ljava/lang/String; @@ -556,18 +745,20 @@ HPLandroid/net/wifi/IClientInterface;->getPacketCounters()[I HPLandroid/net/wifi/IClientInterface;->getWifiScannerImpl()Landroid/net/wifi/IWifiScannerImpl; HPLandroid/net/wifi/IClientInterface;->requestANQP([BLandroid/net/wifi/IANQPDoneCallback;)Z HPLandroid/net/wifi/IClientInterface;->signalPoll()[I -HPLandroid/net/wifi/IInterfaceEventCallback;->OnApInterfaceReady(Landroid/net/wifi/IApInterface;)V -HPLandroid/net/wifi/IInterfaceEventCallback;->OnApTorndownEvent(Landroid/net/wifi/IApInterface;)V -HPLandroid/net/wifi/IInterfaceEventCallback;->OnClientInterfaceReady(Landroid/net/wifi/IClientInterface;)V -HPLandroid/net/wifi/IInterfaceEventCallback;->OnClientTorndownEvent(Landroid/net/wifi/IClientInterface;)V HPLandroid/net/wifi/IPnoScanEvent;->OnPnoNetworkFound()V HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanFailed()V +HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanOverOffloadFailed(I)V +HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanOverOffloadStarted()V +HPLandroid/net/wifi/IScanEvent$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/net/wifi/IScanEvent;->OnScanFailed()V HPLandroid/net/wifi/IScanEvent;->OnScanResultReady()V +HPLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->getScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult; +HPLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->scan(Lcom/android/server/wifi/wificond/SingleScanSettings;)Z HPLandroid/net/wifi/IWifiScannerImpl;->abortScan()V HPLandroid/net/wifi/IWifiScannerImpl;->getAvailable2gChannels()[I HPLandroid/net/wifi/IWifiScannerImpl;->getAvailable5gNonDFSChannels()[I HPLandroid/net/wifi/IWifiScannerImpl;->getAvailableDFSChannels()[I +HPLandroid/net/wifi/IWifiScannerImpl;->getPnoScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult; HPLandroid/net/wifi/IWifiScannerImpl;->getScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult; HPLandroid/net/wifi/IWifiScannerImpl;->scan(Lcom/android/server/wifi/wificond/SingleScanSettings;)Z HPLandroid/net/wifi/IWifiScannerImpl;->startPnoScan(Lcom/android/server/wifi/wificond/PnoSettings;)Z @@ -582,247 +773,1359 @@ HPLandroid/net/wifi/IWificond;->RegisterCallback(Landroid/net/wifi/IInterfaceEve HPLandroid/net/wifi/IWificond;->UnregisterCallback(Landroid/net/wifi/IInterfaceEventCallback;)V HPLandroid/net/wifi/IWificond;->createApInterface()Landroid/net/wifi/IApInterface; HPLandroid/net/wifi/IWificond;->createClientInterface()Landroid/net/wifi/IClientInterface; -HPLandroid/net/wifi/IWificond;->registerRttClient(Landroid/net/wifi/IRttClient;)Landroid/net/wifi/IRttController; HPLandroid/net/wifi/IWificond;->tearDownInterfaces()V -HPLandroid/net/wifi/IWificond;->unregisterRttClient(Landroid/net/wifi/IRttClient;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$1(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$2(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->$m$0(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;-><init>(ZIJ)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/AlarmManagerService$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/AlarmManagerService$2;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo; +HPLcom/android/server/AlarmManagerService$2;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V HPLcom/android/server/AlarmManagerService$2;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V +HPLcom/android/server/AlarmManagerService$Alarm;-><init>(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V +HPLcom/android/server/AlarmManagerService$Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String; HPLcom/android/server/AlarmManagerService$Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z +HPLcom/android/server/AlarmManagerService$Alarm;->matches(Ljava/lang/String;)Z +HPLcom/android/server/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/AlarmManagerService$AlarmThread;->run()V HPLcom/android/server/AlarmManagerService$Batch;-><init>(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;)V HPLcom/android/server/AlarmManagerService$Batch;->add(Lcom/android/server/AlarmManagerService$Alarm;)Z HPLcom/android/server/AlarmManagerService$Batch;->canHold(JJ)Z HPLcom/android/server/AlarmManagerService$Batch;->get(I)Lcom/android/server/AlarmManagerService$Alarm; +HPLcom/android/server/AlarmManagerService$Batch;->hasWakeups()Z HPLcom/android/server/AlarmManagerService$Batch;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z +HPLcom/android/server/AlarmManagerService$Batch;->remove(Ljava/lang/String;)Z HPLcom/android/server/AlarmManagerService$Batch;->size()I HPLcom/android/server/AlarmManagerService$BatchTimeOrder;->compare(Lcom/android/server/AlarmManagerService$Batch;Lcom/android/server/AlarmManagerService$Batch;)I HPLcom/android/server/AlarmManagerService$BatchTimeOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/AlarmManagerService$ClockReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/AlarmManagerService$InFlight; +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/AlarmManagerService$InFlight; +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/AlarmManagerService$InFlight;)V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/AlarmManagerService$InFlight;)V +HPLcom/android/server/AlarmManagerService$InFlight;-><init>(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Landroid/os/WorkSource;ILjava/lang/String;ILjava/lang/String;J)V HPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I HPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/AlarmManagerService$UninstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/AlarmManagerService;->-get0(Lcom/android/server/AlarmManagerService;)Landroid/content/Intent; +HPLcom/android/server/AlarmManagerService;->-get3(Lcom/android/server/AlarmManagerService;)I +HPLcom/android/server/AlarmManagerService;->-get4(Lcom/android/server/AlarmManagerService;)I +HPLcom/android/server/AlarmManagerService;->-set0(Lcom/android/server/AlarmManagerService;J)J +HPLcom/android/server/AlarmManagerService;->-set4(Lcom/android/server/AlarmManagerService;I)I +HPLcom/android/server/AlarmManagerService;->-set5(Lcom/android/server/AlarmManagerService;I)I +HPLcom/android/server/AlarmManagerService;->-wrap0(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats; +HPLcom/android/server/AlarmManagerService;->-wrap4(Lcom/android/server/AlarmManagerService;J)I +HPLcom/android/server/AlarmManagerService;->-wrap5(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V +HPLcom/android/server/AlarmManagerService;->-wrap7(Lcom/android/server/AlarmManagerService;)V HPLcom/android/server/AlarmManagerService;->addBatchLocked(Ljava/util/ArrayList;Lcom/android/server/AlarmManagerService$Batch;)Z HPLcom/android/server/AlarmManagerService;->attemptCoalesceLocked(JJ)I +HPLcom/android/server/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V HPLcom/android/server/AlarmManagerService;->convertToElapsed(JI)J +HPLcom/android/server/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V +HPLcom/android/server/AlarmManagerService;->findFirstWakeupBatchLocked()Lcom/android/server/AlarmManagerService$Batch; +HPLcom/android/server/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats; +HPLcom/android/server/AlarmManagerService;->getStatsLocked(Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats; +HPLcom/android/server/AlarmManagerService;->maxTriggerTime(JJJ)J HPLcom/android/server/AlarmManagerService;->reAddAlarmLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V HPLcom/android/server/AlarmManagerService;->rebatchAllAlarmsLocked(Z)V HPLcom/android/server/AlarmManagerService;->removeLocked(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V +HPLcom/android/server/AlarmManagerService;->removeLocked(Ljava/lang/String;)V HPLcom/android/server/AlarmManagerService;->rescheduleKernelAlarmsLocked()V HPLcom/android/server/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V +HPLcom/android/server/AlarmManagerService;->setImplLocked(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;IZLandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V HPLcom/android/server/AlarmManagerService;->setImplLocked(Lcom/android/server/AlarmManagerService$Alarm;ZZ)V +HPLcom/android/server/AlarmManagerService;->setLocked(IJ)V +HPLcom/android/server/AlarmManagerService;->setWakelockWorkSource(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;IZ)V +HPLcom/android/server/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;JJ)Z +HPLcom/android/server/AlarmManagerService;->updateNextAlarmClockLocked()V HPLcom/android/server/AnyMotionDetector$DeviceIdleCallback;->onAnyMotionResult(I)V +HPLcom/android/server/AppOpsService$3;->getMountMode(ILjava/lang/String;)I +HPLcom/android/server/AppOpsService$3;->hasExternalStorage(ILjava/lang/String;)Z +HPLcom/android/server/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->checkOperation(IILjava/lang/String;)I HPLcom/android/server/AppOpsService;->checkPackage(ILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->checkRestrictionLocked(IIILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->collectOps(Lcom/android/server/AppOpsService$Ops;[I)Ljava/util/ArrayList; +HPLcom/android/server/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V HPLcom/android/server/AppOpsService;->finishOperationLocked(Lcom/android/server/AppOpsService$Op;)V +HPLcom/android/server/AppOpsService;->getOpLocked(IILjava/lang/String;Z)Lcom/android/server/AppOpsService$Op; HPLcom/android/server/AppOpsService;->getOpLocked(Lcom/android/server/AppOpsService$Ops;IZ)Lcom/android/server/AppOpsService$Op; HPLcom/android/server/AppOpsService;->getOpsRawLocked(ILjava/lang/String;Z)Lcom/android/server/AppOpsService$Ops; HPLcom/android/server/AppOpsService;->getPackagesForOps([I)Ljava/util/List; HPLcom/android/server/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;)Z +HPLcom/android/server/AppOpsService;->isOperationActive(IILjava/lang/String;)Z +HPLcom/android/server/AppOpsService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z HPLcom/android/server/AppOpsService;->noteOperation(IILjava/lang/String;)I HPLcom/android/server/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;ILjava/lang/String;)I HPLcom/android/server/AppOpsService;->noteProxyOperation(ILjava/lang/String;ILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->notifyWatchersOfChange(I)V +HPLcom/android/server/AppOpsService;->resolvePackageName(ILjava/lang/String;)Ljava/lang/String; +HPLcom/android/server/AppOpsService;->scheduleWriteLocked()V +HPLcom/android/server/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V +HPLcom/android/server/AppOpsService;->setUidMode(III)V +HPLcom/android/server/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;I[Ljava/lang/String;)V +HPLcom/android/server/AppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V HPLcom/android/server/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V +HPLcom/android/server/AppOpsService;->systemReady()V +HPLcom/android/server/AppOpsService;->verifyIncomingOp(I)V HPLcom/android/server/AppOpsService;->verifyIncomingUid(I)V HPLcom/android/server/AppOpsService;->writeState()V +HPLcom/android/server/AttributeCache$Package;->-get0(Lcom/android/server/AttributeCache$Package;)Landroid/util/SparseArray; +HPLcom/android/server/AttributeCache;->get(Ljava/lang/String;I[II)Lcom/android/server/AttributeCache$Entry; +HPLcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache; +HPLcom/android/server/BatteryService$9;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V +HPLcom/android/server/BatteryService$9;->run()V +HPLcom/android/server/BatteryService$BatteryListener;->batteryPropertiesChanged(Landroid/os/BatteryProperties;)V +HPLcom/android/server/BatteryService$Led;->updateLightsLocked()V +HPLcom/android/server/BatteryService$LocalService;->getBatteryLevel()I +HPLcom/android/server/BatteryService$LocalService;->getBatteryLevelLow()Z +HPLcom/android/server/BatteryService$LocalService;->getPlugType()I +HPLcom/android/server/BatteryService$LocalService;->isPowered(I)Z +HPLcom/android/server/BatteryService;->-get3(Lcom/android/server/BatteryService;)Landroid/os/BatteryProperties; +HPLcom/android/server/BatteryService;->-get6(Lcom/android/server/BatteryService;)Ljava/lang/Object; +HPLcom/android/server/BatteryService;->-wrap0(Lcom/android/server/BatteryService;I)Z +HPLcom/android/server/BatteryService;->-wrap4(Lcom/android/server/BatteryService;Landroid/os/BatteryProperties;)V +HPLcom/android/server/BatteryService;->getIconLocked(I)I +HPLcom/android/server/BatteryService;->isPoweredLocked(I)Z +HPLcom/android/server/BatteryService;->processValuesLocked(Z)V +HPLcom/android/server/BatteryService;->sendIntentLocked()V +HPLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z +HPLcom/android/server/BatteryService;->update(Landroid/os/BatteryProperties;)V +HPLcom/android/server/BluetoothManagerService$BluetoothHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/BluetoothManagerService;->isAirplaneModeOn()Z +HPLcom/android/server/BluetoothManagerService;->isBleScanAlwaysAvailable()Z +HPLcom/android/server/ConnectivityService$1;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V +HPLcom/android/server/ConnectivityService$InternalHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->getNetworkForType(I)Lcom/android/server/connectivity/NetworkAgentInfo; +HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->isTypeSupported(I)Z +HPLcom/android/server/ConnectivityService$NetworkRequestInfo;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;Landroid/net/NetworkRequest;Landroid/os/IBinder;)V +HPLcom/android/server/ConnectivityService$NetworkRequestInfo;->toString()Ljava/lang/String; +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleAsyncChannelMessage(Landroid/os/Message;)Z +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentInfoMessage(Landroid/os/Message;)Z +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentMessage(Landroid/os/Message;)V +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkMonitorMessage(Landroid/os/Message;)Z +HPLcom/android/server/ConnectivityService;->-get4(Lcom/android/server/ConnectivityService;)Ljava/util/HashMap; +HPLcom/android/server/ConnectivityService;->-getcom-android-server-ConnectivityService$UnneededForSwitchesValues()[I +HPLcom/android/server/ConnectivityService;->-wrap32(Lcom/android/server/ConnectivityService;IZJ)V +HPLcom/android/server/ConnectivityService;->-wrap39(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;I)V +HPLcom/android/server/ConnectivityService;->callCallbackForRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;II)V +HPLcom/android/server/ConnectivityService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/ConnectivityService;->enforceAccessPermission()V +HPLcom/android/server/ConnectivityService;->enforceConnectivityInternalPermission()V HPLcom/android/server/ConnectivityService;->filterNetworkStateForUid(Landroid/net/NetworkState;IZ)V +HPLcom/android/server/ConnectivityService;->getActiveNetwork()Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->getActiveNetworkForUid(IZ)Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->getActiveNetworkForUidInternal(IZ)Landroid/net/Network; HPLcom/android/server/ConnectivityService;->getActiveNetworkInfo()Landroid/net/NetworkInfo; HPLcom/android/server/ConnectivityService;->getActiveNetworkInfoForUid(IZ)Landroid/net/NetworkInfo; +HPLcom/android/server/ConnectivityService;->getAllNetworks()[Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo; HPLcom/android/server/ConnectivityService;->getDefaultNetwork()Lcom/android/server/connectivity/NetworkAgentInfo; +HPLcom/android/server/ConnectivityService;->getFilteredNetworkState(IIZ)Landroid/net/NetworkState; +HPLcom/android/server/ConnectivityService;->getNetworkAgentInfoForNetwork(Landroid/net/Network;)Lcom/android/server/connectivity/NetworkAgentInfo; +HPLcom/android/server/ConnectivityService;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities; +HPLcom/android/server/ConnectivityService;->getNetworkCapabilitiesInternal(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/NetworkCapabilities; +HPLcom/android/server/ConnectivityService;->getNetworkInfo(I)Landroid/net/NetworkInfo; +HPLcom/android/server/ConnectivityService;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo; +HPLcom/android/server/ConnectivityService;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo; HPLcom/android/server/ConnectivityService;->getUnfilteredActiveNetworkState(I)Landroid/net/NetworkState; HPLcom/android/server/ConnectivityService;->getVpnUnderlyingNetworks(I)[Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->handleRegisterNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V +HPLcom/android/server/ConnectivityService;->handleRemoveNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V +HPLcom/android/server/ConnectivityService;->isActiveNetworkMetered()Z HPLcom/android/server/ConnectivityService;->isNetworkWithLinkPropertiesBlocked(Landroid/net/LinkProperties;IZ)Z +HPLcom/android/server/ConnectivityService;->isSystem(I)Z +HPLcom/android/server/ConnectivityService;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest; HPLcom/android/server/ConnectivityService;->maybeLogBlockedNetworkInfo(Landroid/net/NetworkInfo;I)V +HPLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;II)V HPLcom/android/server/ConnectivityService;->processListenRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Z)V +HPLcom/android/server/ConnectivityService;->putParcelable(Landroid/os/Bundle;Landroid/os/Parcelable;)V +HPLcom/android/server/ConnectivityService;->rematchAllNetworksAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;I)V +HPLcom/android/server/ConnectivityService;->rematchNetworkAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;J)V +HPLcom/android/server/ConnectivityService;->sendDataActivityBroadcast(IZJ)V +HPLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Landroid/net/NetworkRequest;I)V +HPLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Lcom/android/server/connectivity/NetworkAgentInfo;)V +HPLcom/android/server/ConnectivityService;->unneeded(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$UnneededFor;)Z +HPLcom/android/server/ConnectivityService;->updateLingerState(Lcom/android/server/connectivity/NetworkAgentInfo;J)V +HPLcom/android/server/ConnectivityService;->updateNetworkScore(Lcom/android/server/connectivity/NetworkAgentInfo;I)V +HPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistExceptIdleApp(Ljava/lang/String;)Z +HPLcom/android/server/DeviceIdleController$LocalService;->setAlarmsActive(Z)V +HPLcom/android/server/DeviceIdleController$LocalService;->setJobsActive(Z)V +HPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/DeviceIdleController;->-get7(Lcom/android/server/DeviceIdleController;)Landroid/os/RemoteCallbackList; +HPLcom/android/server/DeviceIdleController;->exitMaintenanceEarlyIfNeededLocked()V +HPLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistExceptIdleAppInternal(Ljava/lang/String;)Z +HPLcom/android/server/DeviceIdleController;->reportMaintenanceActivityIfNeededLocked()V +HPLcom/android/server/DeviceIdleController;->setAlarmsActive(Z)V +HPLcom/android/server/DeviceIdleController;->setJobsActive(Z)V +HPLcom/android/server/DeviceIdleController;->updateChargingLocked(Z)V +HPLcom/android/server/DropBoxManagerService$2;->add(Landroid/os/DropBoxManager$Entry;)V +HPLcom/android/server/DropBoxManagerService$2;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; +HPLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z +HPLcom/android/server/DropBoxManagerService$3;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(J)V HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;I)V +HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I +HPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String; +HPLcom/android/server/DropBoxManagerService$EntryFile;->getFile(Ljava/io/File;)Ljava/io/File; +HPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String; +HPLcom/android/server/DropBoxManagerService$EntryFile;->hasFile()Z HPLcom/android/server/DropBoxManagerService;->add(Landroid/os/DropBoxManager$Entry;)V +HPLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J +HPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; HPLcom/android/server/DropBoxManagerService;->init()V HPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z +HPLcom/android/server/DropBoxManagerService;->trimToFit()J +HPLcom/android/server/EventLogTags;->writeNetstatsMobileSample(JJJJJJJJJJJJJ)V +HPLcom/android/server/EventLogTags;->writeNetstatsWifiSample(JJJJJJJJJJJJJ)V +HPLcom/android/server/EventLogTags;->writeNotificationCancelAll(IILjava/lang/String;IIIILjava/lang/String;)V +HPLcom/android/server/GraphicsStatsService$ActiveBuffer;-><init>(Lcom/android/server/GraphicsStatsService;Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)V +HPLcom/android/server/GraphicsStatsService;->fetchActiveBuffersLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)Lcom/android/server/GraphicsStatsService$ActiveBuffer; +HPLcom/android/server/GraphicsStatsService;->normalizeDate(J)Ljava/util/Calendar; +HPLcom/android/server/GraphicsStatsService;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor; +HPLcom/android/server/InputMethodManagerService$ClientState;->toString()Ljava/lang/String; +HPLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +HPLcom/android/server/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V +HPLcom/android/server/InputMethodManagerService$StartInputHistory;->addEntry(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V +HPLcom/android/server/InputMethodManagerService$StartInputInfo;-><init>(Landroid/os/IBinder;Ljava/lang/String;IZLandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V +HPLcom/android/server/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->buildInputMethodListLocked(Z)V +HPLcom/android/server/InputMethodManagerService;->calledFromValidUser()Z +HPLcom/android/server/InputMethodManagerService;->calledWithValidToken(Landroid/os/IBinder;)Z +HPLcom/android/server/InputMethodManagerService;->executeOrSendMessage(Landroid/os/IInterface;Landroid/os/Message;)V +HPLcom/android/server/InputMethodManagerService;->getCurrentInputMethodSubtypeLocked()Landroid/view/inputmethod/InputMethodSubtype; +HPLcom/android/server/InputMethodManagerService;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List; +HPLcom/android/server/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/InputMethodManagerService;->hideCurrentInputLocked(ILandroid/os/ResultReceiver;)Z +HPLcom/android/server/InputMethodManagerService;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z +HPLcom/android/server/InputMethodManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V +HPLcom/android/server/InputMethodManagerService;->setEnabledSessionInMainThread(Lcom/android/server/InputMethodManagerService$SessionState;)V +HPLcom/android/server/InputMethodManagerService;->setImeWindowStatus(Landroid/os/IBinder;Landroid/os/IBinder;II)V +HPLcom/android/server/InputMethodManagerService;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z +HPLcom/android/server/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z +HPLcom/android/server/InputMethodManagerService;->startInput(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->startInputLocked(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;II)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->unbindCurrentClientLocked(I)V +HPLcom/android/server/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V +HPLcom/android/server/InputMethodManagerService;->updateSystemUiLocked(Landroid/os/IBinder;II)V +HPLcom/android/server/InputMethodManagerService;->windowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult; HPLcom/android/server/IntentResolver$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -HPLcom/android/server/IntentResolver;->addFilter(Landroid/content/IntentFilter;)V -HPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Landroid/content/IntentFilter;)V -HPLcom/android/server/IntentResolver;->buildResolveList(Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Landroid/content/IntentFilter;Ljava/util/List;I)V -HPLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V -HPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet; -HPLcom/android/server/IntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List; +HPLcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Z +HPLcom/android/server/IntentResolver;->dumpMap(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Ljava/lang/String;ZZ)Z +HPLcom/android/server/IntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z +HPLcom/android/server/IntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; HPLcom/android/server/IntentResolver;->queryIntentFromList(Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;I)Ljava/util/List; -HPLcom/android/server/IntentResolver;->register_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I -HPLcom/android/server/IntentResolver;->register_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I +HPLcom/android/server/IntentResolver;->removeFilter(Landroid/content/IntentFilter;)V +HPLcom/android/server/IntentResolver;->removeFilterInternal(Landroid/content/IntentFilter;)V HPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V +HPLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V +HPLcom/android/server/IntentResolver;->unregister_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I +HPLcom/android/server/IntentResolver;->unregister_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I +HPLcom/android/server/LocationManagerService$1;->onPackageDisappeared(Ljava/lang/String;I)V +HPLcom/android/server/LocationManagerService$5$1;-><init>(Lcom/android/server/LocationManagerService$5;II)V +HPLcom/android/server/LocationManagerService$5$1;->run()V HPLcom/android/server/LocationManagerService$5;->onUidImportance(II)V +HPLcom/android/server/LocationManagerService$LocationWorkerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/LocationManagerService$Receiver;->-wrap0(Lcom/android/server/LocationManagerService$Receiver;)V +HPLcom/android/server/LocationManagerService$Receiver;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)V +HPLcom/android/server/LocationManagerService$Receiver;->callLocationChangedLocked(Landroid/location/Location;)Z +HPLcom/android/server/LocationManagerService$Receiver;->decrementPendingBroadcastsLocked()V +HPLcom/android/server/LocationManagerService$Receiver;->incrementPendingBroadcastsLocked()V +HPLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(Z)V +HPLcom/android/server/LocationManagerService$UpdateRecord;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;)V +HPLcom/android/server/LocationManagerService;->-get4(Lcom/android/server/LocationManagerService;)Lcom/android/server/LocationManagerService$LocationWorkerHandler; +HPLcom/android/server/LocationManagerService;->-wrap6(Lcom/android/server/LocationManagerService;II)V +HPLcom/android/server/LocationManagerService;->applyRequirementsLocked(Ljava/lang/String;)V +HPLcom/android/server/LocationManagerService;->checkCallerIsProvider()V +HPLcom/android/server/LocationManagerService;->checkLocationAccess(IILjava/lang/String;I)Z +HPLcom/android/server/LocationManagerService;->checkPackageName(Ljava/lang/String;)V +HPLcom/android/server/LocationManagerService;->checkResolutionLevelIsSufficientForProviderUse(ILjava/lang/String;)V +HPLcom/android/server/LocationManagerService;->doesUidHavePackage(ILjava/lang/String;)Z +HPLcom/android/server/LocationManagerService;->getAllProviders()Ljava/util/List; +HPLcom/android/server/LocationManagerService;->getAllowedResolutionLevel(II)I +HPLcom/android/server/LocationManagerService;->getCallerAllowedResolutionLevel()I +HPLcom/android/server/LocationManagerService;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location; +HPLcom/android/server/LocationManagerService;->getMinimumResolutionLevelForProviderUse(Ljava/lang/String;)I +HPLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/location/ILocationListener;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver; +HPLcom/android/server/LocationManagerService;->handleLocationChanged(Landroid/location/Location;Z)V +HPLcom/android/server/LocationManagerService;->handleLocationChangedLocked(Landroid/location/Location;Z)V +HPLcom/android/server/LocationManagerService;->isAllowedByCurrentUserSettingsLocked(Ljava/lang/String;)Z +HPLcom/android/server/LocationManagerService;->isAllowedByUserSettingsLocked(Ljava/lang/String;I)Z +HPLcom/android/server/LocationManagerService;->isCurrentProfile(I)Z +HPLcom/android/server/LocationManagerService;->isImportanceForeground(I)Z +HPLcom/android/server/LocationManagerService;->isProviderEnabled(Ljava/lang/String;)Z +HPLcom/android/server/LocationManagerService;->isThrottlingExemptLocked(Lcom/android/server/LocationManagerService$Identity;)Z +HPLcom/android/server/LocationManagerService;->locationCallbackFinished(Landroid/location/ILocationListener;)V +HPLcom/android/server/LocationManagerService;->onUidImportanceChanged(II)V +HPLcom/android/server/LocationManagerService;->removeUpdatesLocked(Lcom/android/server/LocationManagerService$Receiver;)V +HPLcom/android/server/LocationManagerService;->reportLocation(Landroid/location/Location;Z)V +HPLcom/android/server/LocationManagerService;->reportLocationAccessNoThrow(IILjava/lang/String;I)Z +HPLcom/android/server/LocationManagerService;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V +HPLcom/android/server/LocationManagerService;->resolutionLevelToOp(I)I +HPLcom/android/server/LocationManagerService;->shouldBroadcastSafe(Landroid/location/Location;Landroid/location/Location;Lcom/android/server/LocationManagerService$UpdateRecord;J)Z +HPLcom/android/server/NativeDaemonConnector$ResponseQueue$PendingCmd;-><init>(ILjava/lang/String;)V +HPLcom/android/server/NativeDaemonConnector$ResponseQueue;->add(ILcom/android/server/NativeDaemonEvent;)V +HPLcom/android/server/NativeDaemonConnector$ResponseQueue;->remove(IJLjava/lang/String;)Lcom/android/server/NativeDaemonEvent; HPLcom/android/server/NativeDaemonConnector;->appendEscaped(Ljava/lang/StringBuilder;Ljava/lang/String;)V HPLcom/android/server/NativeDaemonConnector;->executeForList(JLjava/lang/String;[Ljava/lang/Object;)[Lcom/android/server/NativeDaemonEvent; +HPLcom/android/server/NativeDaemonConnector;->handleMessage(Landroid/os/Message;)Z HPLcom/android/server/NativeDaemonConnector;->listenToSocket()V +HPLcom/android/server/NativeDaemonConnector;->log(Ljava/lang/String;)V HPLcom/android/server/NativeDaemonConnector;->makeCommand(Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;ILjava/lang/String;[Ljava/lang/Object;)V HPLcom/android/server/NativeDaemonConnector;->uptimeMillisInt()I +HPLcom/android/server/NativeDaemonEvent;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/io/FileDescriptor;)V +HPLcom/android/server/NativeDaemonEvent;->getCode()I +HPLcom/android/server/NativeDaemonEvent;->isClassUnsolicited()Z +HPLcom/android/server/NativeDaemonEvent;->isClassUnsolicited(I)Z HPLcom/android/server/NativeDaemonEvent;->parseRawEvent(Ljava/lang/String;[Ljava/io/FileDescriptor;)Lcom/android/server/NativeDaemonEvent; +HPLcom/android/server/NativeDaemonEvent;->toString()Ljava/lang/String; HPLcom/android/server/NativeDaemonEvent;->unescapeArgs(Ljava/lang/String;)[Ljava/lang/String; HPLcom/android/server/NetworkManagementInternal;->isNetworkRestrictedForUid(I)Z HPLcom/android/server/NetworkManagementService$LocalService;->isNetworkRestrictedForUid(I)Z -HPLcom/android/server/NetworkManagementService;->-get2(Lcom/android/server/NetworkManagementService;)Z -HPLcom/android/server/NetworkManagementService;->-get4(Lcom/android/server/NetworkManagementService;)Ljava/lang/Object; -HPLcom/android/server/NetworkManagementService;->-get9(Lcom/android/server/NetworkManagementService;)Landroid/util/SparseBooleanArray; +HPLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onCheckHoldWakeLock(I)Z +HPLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onEvent(ILjava/lang/String;[Ljava/lang/String;)Z +HPLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats; HPLcom/android/server/NetworkManagementService;->-wrap1(Lcom/android/server/NetworkManagementService;I)Z +HPLcom/android/server/NetworkManagementService;->-wrap6(Lcom/android/server/NetworkManagementService;IIJIZ)V +HPLcom/android/server/NetworkManagementService;->enforceSystemUid()V HPLcom/android/server/NetworkManagementService;->getFirewallChainState(I)Z +HPLcom/android/server/NetworkManagementService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats; +HPLcom/android/server/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray; HPLcom/android/server/NetworkManagementService;->invokeForAllObservers(Lcom/android/server/NetworkManagementService$NetworkManagementEventCallback;)V +HPLcom/android/server/NetworkManagementService;->isNetworkRestrictedInternal(I)Z +HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18910(Ljava/lang/String;Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_21126(IZJLandroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29429(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/NetworkManagementService;->monitor()V +HPLcom/android/server/NetworkManagementService;->notifyInterfaceClassActivity(IIJIZ)V +HPLcom/android/server/NetworkManagementService;->setFirewallUidRule(III)V +HPLcom/android/server/NetworkManagementService;->setFirewallUidRuleLocked(III)V +HPLcom/android/server/NetworkManagementService;->setPermission(Ljava/lang/String;[I)V +HPLcom/android/server/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V +HPLcom/android/server/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z +HPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getAppData()Landroid/net/NetworkScorerAppData; +HPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getPackageName()Ljava/lang/String; +HPLcom/android/server/NetworkScoreService;->canCallerRequestScores()Z +HPLcom/android/server/NetworkScoreService;->canCallerScoreNetworks()Z +HPLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String; +HPLcom/android/server/NetworkScoreService;->isCallerActiveScorer(I)Z +HPLcom/android/server/NetworkScoreService;->requestScores([Landroid/net/NetworkKey;)Z +HPLcom/android/server/NetworkScoreService;->sendCacheUpdateCallback(Ljava/util/function/BiConsumer;Ljava/util/Collection;)V +HPLcom/android/server/NetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z HPLcom/android/server/NsdService$DaemonConnectionSupplier;->get(Lcom/android/server/NsdService$NativeCallbackReceiver;)Lcom/android/server/NsdService$DaemonConnection; HPLcom/android/server/NsdService$NsdSettings;->isEnabled()Z HPLcom/android/server/NsdService$NsdSettings;->putEnabledStatus(Z)V HPLcom/android/server/NsdService$NsdSettings;->registerContentObserver(Landroid/net/Uri;Landroid/database/ContentObserver;)V HPLcom/android/server/PersistentDataBlockManagerInternal;->getFrpCredentialHandle()[B HPLcom/android/server/PersistentDataBlockManagerInternal;->setFrpCredentialHandle([B)V +HPLcom/android/server/PersistentDataBlockService;->computeDigestLocked([B)[B +HPLcom/android/server/ServiceWatcher$1;->onPackageUpdateFinished(Ljava/lang/String;I)V +HPLcom/android/server/ServiceWatcher;->bindBestPackageLocked(Ljava/lang/String;Z)Z +HPLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;Ljava/util/List;)Z +HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorage(ILjava/lang/String;)Z +HPLcom/android/server/StorageManagerService;->adjustAllocateFlags(IILjava/lang/String;)I +HPLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J HPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume; HPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo; +HPLcom/android/server/StorageManagerService;->isUserKeyUnlocked(I)Z +HPLcom/android/server/SystemServer;->startOtherServices()V +HPLcom/android/server/SystemServiceManager;->startUser(I)V +HPLcom/android/server/SystemServiceManager;->unlockUser(I)V +HPLcom/android/server/TelephonyRegistry$Record;->matchPhoneStateListenerEvent(I)Z +HPLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V +HPLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ZI)V +HPLcom/android/server/TelephonyRegistry;->broadcastPreciseDataConnectionStateChanged(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Ljava/lang/String;)V +HPLcom/android/server/TelephonyRegistry;->listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZI)V +HPLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V +HPLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V +HPLcom/android/server/TelephonyRegistry;->notifySimActivationStateChangedForPhoneId(IIII)V +HPLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V +HPLcom/android/server/TextServicesManagerService;->buildSpellCheckerMapLocked(Landroid/content/Context;Ljava/util/ArrayList;Ljava/util/HashMap;Lcom/android/server/TextServicesManagerService$TextServicesSettings;)V +HPLcom/android/server/TextServicesManagerService;->calledFromValidUser()Z +HPLcom/android/server/TextServicesManagerService;->getCurrentSpellCheckerSubtype(Ljava/lang/String;Z)Landroid/view/textservice/SpellCheckerSubtype; HPLcom/android/server/ThreadPriorityBooster;->boost()V HPLcom/android/server/ThreadPriorityBooster;->reset()V +HPLcom/android/server/ThreadPriorityBooster;->setBoostToPriority(I)V +HPLcom/android/server/UiModeManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/UiModeManagerService;->isDeskDockState(I)Z +HPLcom/android/server/UiModeManagerService;->sendConfigurationAndStartDreamOrDockAppLocked(Ljava/lang/String;)V +HPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V +HPLcom/android/server/UiModeManagerService;->updateLocked(II)V +HPLcom/android/server/VibratorService$Vibration;->-get0(Lcom/android/server/VibratorService$Vibration;)Landroid/os/VibrationEffect; +HPLcom/android/server/VibratorService$Vibration;->-get4(Lcom/android/server/VibratorService$Vibration;)I +HPLcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V +HPLcom/android/server/VibratorService;->doCancelVibrateLocked()V +HPLcom/android/server/VibratorService;->doVibratorOff()V +HPLcom/android/server/VibratorService;->doVibratorPrebakedEffectLocked(Lcom/android/server/VibratorService$Vibration;)J +HPLcom/android/server/VibratorService;->getAppOpMode(Lcom/android/server/VibratorService$Vibration;)I +HPLcom/android/server/VibratorService;->reportFinishVibrationLocked()V +HPLcom/android/server/VibratorService;->startVibrationInnerLocked(Lcom/android/server/VibratorService$Vibration;)V +HPLcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V +HPLcom/android/server/VibratorService;->verifyIncomingUid(I)V +HPLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILandroid/os/IBinder;)V +HPLcom/android/server/Watchdog$BinderThreadMonitor;->monitor()V +HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I +HPLcom/android/server/Watchdog$HandlerChecker;->run()V +HPLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked()V +HPLcom/android/server/Watchdog$OpenFdMonitor;->monitor()Z +HPLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I +HPLcom/android/server/Watchdog;->run()V +HPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;->-get0(Lcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;)Landroid/view/accessibility/IAccessibilityInteractionConnection; +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap1(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap3(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Landroid/view/accessibility/AccessibilityEvent;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canDispatchAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canGetAccessibilityNodeInfoLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;I)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canRetrieveWindowContentLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->findA11yWindowInfoById(I)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->getActiveWindowId()I +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isCallerInteractingAcrossUsers(I)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isRetrievalAllowingWindow(I)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->notifyWindowsChanged()V +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveProfileParentLocked(I)I +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateActiveAndAccessibilityFocusedWindowLocked(IJII)V +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateEventSourceLocked(Landroid/view/accessibility/AccessibilityEvent;)V +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateWindowsLocked(Ljava/util/List;)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service$1;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->-wrap3(Lcom/android/server/accessibility/AccessibilityManagerService$Service;ILandroid/view/accessibility/AccessibilityEvent;Z)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->canReceiveEventsLocked()Z +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->getConnectionLocked(I)Landroid/view/accessibility/IAccessibilityInteractionConnection; +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->getWindows()Ljava/util/List; +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->isCalledForCurrentUserLocked()Z +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;Z)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->notifyAccessibilityEventInternal(ILandroid/view/accessibility/AccessibilityEvent;Z)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->performAccessibilityAction(IJILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->replaceCallbackIfNeeded(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIIJ)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->resolveAccessibilityWindowIdLocked(I)I +HPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isHandlingAccessibilityEvents()Z +HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;Landroid/view/WindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->getTypeForWindowManagerWindowType(I)I +HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->onWindowsForAccessibilityChanged(Ljava/util/List;)V +HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->populateReportedWindow(Landroid/view/WindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get14(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get16(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/graphics/Rect; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get2(Lcom/android/server/accessibility/AccessibilityManagerService;)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get20(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get5(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/util/SparseArray; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get9(Lcom/android/server/accessibility/AccessibilityManagerService;)Ljava/lang/Object; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService;I)Landroid/view/MagnificationSpec; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap12(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap15(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/IBinder;)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;I)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J +HPLcom/android/server/accessibility/AccessibilityManagerService;->doesServiceWantEventLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/view/accessibility/AccessibilityEvent;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService;->findWindowIdLocked(Landroid/os/IBinder;)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->getCompatibleMagnificationSpecLocked(I)Landroid/view/MagnificationSpec; +HPLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserStateLocked()Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +HPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List; +HPLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +HPLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityServicesDelayedLocked(Landroid/view/accessibility/AccessibilityEvent;Z)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnectionInternalLocked(Landroid/os/IBinder;Landroid/util/SparseArray;Landroid/util/SparseArray;)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->isCapturingFingerprintGestures()Z HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->onFingerprintGesture(I)V HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->onFingerprintGestureDetectionActiveChanged(Z)V HPLcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;->onKeyEvent(Landroid/view/KeyEvent;I)Z +HPLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo; +HPLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/accounts/AuthenticatorDescription; +HPLcom/android/server/accounts/AccountManagerService$8;->onResult(Landroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V +HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V +HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V +HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;Z)V +HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V +HPLcom/android/server/accounts/AccountManagerService$Session;->bind()V +HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z +HPLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V +HPLcom/android/server/accounts/AccountManagerService$Session;->close()V +HPLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse; +HPLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLcom/android/server/accounts/AccountManagerService$Session;->unbind()V +HPLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->onResult(Landroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get10(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get8(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get9(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I +HPLcom/android/server/accounts/AccountManagerService;->-get5(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/LinkedHashMap; +HPLcom/android/server/accounts/AccountManagerService;->-wrap4(Lcom/android/server/accounts/AccountManagerService;I)Z +HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z +HPLcom/android/server/accounts/AccountManagerService;->accountTypeManagesContacts(Ljava/lang/String;I)Z +HPLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;)[B +HPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Landroid/os/UserHandle;)V HPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I HPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I +HPLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account; HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; HPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account; HPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypesInternal(I)[Landroid/accounts/AuthenticatorDescription; +HPLcom/android/server/accounts/AccountManagerService;->getCredentialPermissionNotificationId(Landroid/accounts/Account;Ljava/lang/String;I)Lcom/android/server/accounts/AccountManagerService$NotificationId; +HPLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId; HPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List; +HPLcom/android/server/accounts/AccountManagerService;->getTypesManagedByCaller(II)Ljava/util/List; +HPLcom/android/server/accounts/AccountManagerService;->getTypesVisibleToCaller(IILjava/lang/String;)Ljava/util/List; +HPLcom/android/server/accounts/AccountManagerService;->getUidsOfInstalledOrUpdatedPackagesAsUser(I)Landroid/util/SparseBooleanArray; +HPLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts; HPLcom/android/server/accounts/AccountManagerService;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager; +HPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;I)Z +HPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z +HPLcom/android/server/accounts/AccountManagerService;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z +HPLcom/android/server/accounts/AccountManagerService;->isLocalUnlockedUser(I)Z HPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;II[Ljava/lang/String;)Z HPLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z +HPLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z +HPLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z +HPLcom/android/server/accounts/AccountManagerService;->onAccountAccessed(Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z +HPLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->readCachedTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V HPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer; +HPLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-get0(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)Z +HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J +HPLcom/android/server/accounts/AccountsDb;->findUserExtrasForAccount(Landroid/accounts/Account;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z HPLcom/android/server/accounts/IAccountAuthenticatorCache;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;I)V HPLcom/android/server/accounts/IAccountAuthenticatorCache;->getAllServices(I)Ljava/util/Collection; HPLcom/android/server/accounts/IAccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo; HPLcom/android/server/accounts/IAccountAuthenticatorCache;->invalidateCache(I)V HPLcom/android/server/accounts/IAccountAuthenticatorCache;->setListener(Landroid/content/pm/RegisteredServicesCacheListener;Landroid/os/Handler;)V HPLcom/android/server/accounts/IAccountAuthenticatorCache;->updateServices(I)V +HPLcom/android/server/accounts/TokenCache$Key;->hashCode()I +HPLcom/android/server/accounts/TokenCache;->get(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String; +HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->$m$1()V +HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;-><init>(BIIIIIIIILjava/lang/Object;)V +HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->run()V +HPLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +HPLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->$m$0(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +HPLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +HPLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V HPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V +HPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;)V +HPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$ServiceRestarter;)V +HPLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z HPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I +HPLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZZ)Z +HPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)V HPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;)V HPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZ)Ljava/lang/String; HPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;)V +HPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;Landroid/content/ComponentName;Landroid/content/Intent;)V +HPLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZZLandroid/util/ArrayMap;)Z +HPLcom/android/server/am/ActiveServices;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Lcom/android/server/am/ServiceRecord; +HPLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V +HPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List; +HPLcom/android/server/am/ActiveServices;->getServiceByNameLocked(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord; HPLcom/android/server/am/ActiveServices;->getServiceMapLocked(I)Lcom/android/server/am/ActiveServices$ServiceMap; +HPLcom/android/server/am/ActiveServices;->hasBackgroundServicesLocked(I)Z +HPLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z +HPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V +HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo; +HPLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V HPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V HPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Z)V HPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZ)Z +HPLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;Z)V HPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IIIZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult; +HPLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z HPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V HPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;III)V HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZ)V HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZ)Landroid/content/ComponentName; HPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;I)Landroid/content/ComponentName; +HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V +HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I +HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z +HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V HPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z +HPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z +HPLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V HPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;Z)Z +HPLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessRecord;)V HPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessRecord;Z)V +HPLcom/android/server/am/ActivityManagerService$1;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z HPLcom/android/server/am/ActivityManagerService$1;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z HPLcom/android/server/am/ActivityManagerService$1;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z HPLcom/android/server/am/ActivityManagerService$1;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/am/BroadcastFilter;)Z +HPLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Landroid/content/IntentFilter; +HPLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Lcom/android/server/am/BroadcastFilter; +HPLcom/android/server/am/ActivityManagerService$1;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; +HPLcom/android/server/am/ActivityManagerService$1;->newResult(Lcom/android/server/am/BroadcastFilter;II)Lcom/android/server/am/BroadcastFilter; +HPLcom/android/server/am/ActivityManagerService$20;->run()V +HPLcom/android/server/am/ActivityManagerService$24;->compare(Lcom/android/server/am/ActivityManagerService$MemItem;Lcom/android/server/am/ActivityManagerService$MemItem;)I +HPLcom/android/server/am/ActivityManagerService$24;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HPLcom/android/server/am/ActivityManagerService$2;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityManagerService$2;->lambda$-com_android_server_am_ActivityManagerService$2_102488(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V +HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V +HPLcom/android/server/am/ActivityManagerService$AppTaskImpl;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; +HPLcom/android/server/am/ActivityManagerService$GrantUri;-><init>(ILandroid/net/Uri;Z)V +HPLcom/android/server/am/ActivityManagerService$GrantUri;->resolve(ILandroid/net/Uri;)Lcom/android/server/am/ActivityManagerService$GrantUri; +HPLcom/android/server/am/ActivityManagerService$GraphicsBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V HPLcom/android/server/am/ActivityManagerService$Injector;->ensureHasNetworkManagementInternal()Z HPLcom/android/server/am/ActivityManagerService$Injector;->isNetworkRestrictedForUid(I)Z +HPLcom/android/server/am/ActivityManagerService$KillHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionFinished()V +HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionStarting(Landroid/util/SparseIntArray;J)V +HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V +HPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityManagerService$MemBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJI)V +HPLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJIZ)V +HPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityManagerService;->-get5(Lcom/android/server/am/ActivityManagerService;)Ljava/lang/StringBuilder; +HPLcom/android/server/am/ActivityManagerService;->-wrap2(Lcom/android/server/am/ActivityManagerService;II)V +HPLcom/android/server/am/ActivityManagerService;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V +HPLcom/android/server/am/ActivityManagerService;->activityPaused(Landroid/os/IBinder;)V +HPLcom/android/server/am/ActivityManagerService;->activityResumed(Landroid/os/IBinder;)V +HPLcom/android/server/am/ActivityManagerService;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V +HPLcom/android/server/am/ActivityManagerService;->addBackgroundCheckViolationLocked(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V +HPLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;Z)V +HPLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLocked(ILjava/lang/String;I)I +HPLcom/android/server/am/ActivityManagerService;->appServicesRestrictedInBackgroundLocked(ILjava/lang/String;I)I HPLcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V HPLcom/android/server/am/ActivityManagerService;->applyOomAdjLocked(Lcom/android/server/am/ProcessRecord;ZJJ)Z +HPLcom/android/server/am/ActivityManagerService;->applyUpdateLockStateLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;)V HPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;I)Z +HPLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V +HPLcom/android/server/am/ActivityManagerService;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I HPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V HPLcom/android/server/am/ActivityManagerService;->broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I +HPLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZI)I HPLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIII)I +HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue; +HPLcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V HPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I HPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I HPLcom/android/server/am/ActivityManagerService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String; HPLcom/android/server/am/ActivityManagerService;->checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;IZ)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked()V +HPLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;I)Lcom/android/server/am/ActivityManagerService$NeededUriGrants; +HPLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;II)I HPLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I +HPLcom/android/server/am/ActivityManagerService;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I HPLcom/android/server/am/ActivityManagerService;->checkTime(JLjava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZIZ)Z +HPLcom/android/server/am/ActivityManagerService;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z +HPLcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;IZ[Ljava/lang/String;)Ljava/util/ArrayList; HPLcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;I[I)Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo; HPLcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJ)I HPLcom/android/server/am/ActivityManagerService;->createRecentTaskInfoFromTaskRecord(Lcom/android/server/am/TaskRecord;)Landroid/app/ActivityManager$RecentTaskInfo; HPLcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z +HPLcom/android/server/am/ActivityManagerService;->dispatchProcessDied(II)V +HPLcom/android/server/am/ActivityManagerService;->dispatchProcessesChanged()V HPLcom/android/server/am/ActivityManagerService;->dispatchUidsChanged()V HPLcom/android/server/am/ActivityManagerService;->dispatchUidsChangedForObserver(Landroid/app/IUidObserver;Lcom/android/server/am/ActivityManagerService$UidObserverRegistration;I)V +HPLcom/android/server/am/ActivityManagerService;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;ZLjava/io/PrintWriter;)V +HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsageHeader(Ljava/io/PrintWriter;JJZZ)V +HPLcom/android/server/am/ActivityManagerService;->dumpGraphicsHardwareUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;ZZZ)V +HPLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V HPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V HPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V +HPLcom/android/server/am/ActivityManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/am/ActivityRecord;I)Z +HPLcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V HPLcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z HPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V +HPLcom/android/server/am/ActivityManagerService;->forceStopPackage(Ljava/lang/String;I)V +HPLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZILjava/lang/String;)Z +HPLcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle; HPLcom/android/server/am/ActivityManagerService;->getAppStartModeLocked(ILjava/lang/String;IIZZ)I +HPLcom/android/server/am/ActivityManagerService;->getAppTasks(Ljava/lang/String;)Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet; +HPLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder; HPLcom/android/server/am/ActivityManagerService;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ZI)Landroid/app/ContentProviderHolder; +HPLcom/android/server/am/ActivityManagerService;->getCurrentUser()Landroid/content/pm/UserInfo; +HPLcom/android/server/am/ActivityManagerService;->getFocusedStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityManagerService;->getFocusedStackId()I +HPLcom/android/server/am/ActivityManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/am/ActivityManagerService;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent; HPLcom/android/server/am/ActivityManagerService;->getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender; HPLcom/android/server/am/ActivityManagerService;->getIntentSenderLocked(ILjava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender; HPLcom/android/server/am/ActivityManagerService;->getLRURecordIndexForAppLocked(Landroid/app/IApplicationThread;)I +HPLcom/android/server/am/ActivityManagerService;->getLastResumedActivityUserId()I +HPLcom/android/server/am/ActivityManagerService;->getLockTaskModeState()I +HPLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V +HPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I +HPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V +HPLcom/android/server/am/ActivityManagerService;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal; +HPLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I +HPLcom/android/server/am/ActivityManagerService;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; +HPLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;IZ)Lcom/android/server/am/ProcessRecord; HPLcom/android/server/am/ActivityManagerService;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice; HPLcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord; HPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo; +HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot; +HPLcom/android/server/am/ActivityManagerService;->getTasks(II)Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->getUidForIntentSender(Landroid/content/IIntentSender;)I HPLcom/android/server/am/ActivityManagerService;->grantEphemeralAccessLocked(ILandroid/content/Intent;II)V +HPLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V HPLcom/android/server/am/ActivityManagerService;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V +HPLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I +HPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z +HPLcom/android/server/am/ActivityManagerService;->idleUids()V HPLcom/android/server/am/ActivityManagerService;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection; HPLcom/android/server/am/ActivityManagerService;->incrementProcStateSeqAndNotifyAppsLocked()V +HPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z +HPLcom/android/server/am/ActivityManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z +HPLcom/android/server/am/ActivityManagerService;->isInMultiWindowMode(Landroid/os/IBinder;)Z HPLcom/android/server/am/ActivityManagerService;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z +HPLcom/android/server/am/ActivityManagerService;->isOnDeviceIdleWhitelistLocked(I)Z +HPLcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z HPLcom/android/server/am/ActivityManagerService;->isProcessAliveLocked(Lcom/android/server/am/ProcessRecord;)Z HPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;Landroid/util/ArraySet;)Z +HPLcom/android/server/am/ActivityManagerService;->isShuttingDownLocked()Z +HPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z HPLcom/android/server/am/ActivityManagerService;->isSleepingLocked()Z +HPLcom/android/server/am/ActivityManagerService;->isTopOfTask(Landroid/os/IBinder;)Z +HPLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z +HPLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z +HPLcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZLjava/lang/String;)Z +HPLcom/android/server/am/ActivityManagerService;->killProcessGroup(II)V HPLcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V HPLcom/android/server/am/ActivityManagerService;->maybeUpdateProviderUsageStatsLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V HPLcom/android/server/am/ActivityManagerService;->maybeUpdateUsageStatsLocked(Lcom/android/server/am/ProcessRecord;J)V +HPLcom/android/server/am/ActivityManagerService;->monitor()V +HPLcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZI)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;ILjava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;ILjava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(II)V +HPLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;ILjava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->notifyActivityDrawn(Landroid/os/IBinder;)V +HPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V HPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/am/ActivityManagerService;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I HPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V +HPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V +HPLcom/android/server/am/ActivityManagerService;->recordPssSampleLocked(Lcom/android/server/am/ProcessRecord;IJJJJ)V HPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z HPLcom/android/server/am/ActivityManagerService;->registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent; HPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V +HPLcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z +HPLcom/android/server/am/ActivityManagerService;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V +HPLcom/android/server/am/ActivityManagerService;->requestPssLocked(Lcom/android/server/am/ProcessRecord;I)V HPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V HPLcom/android/server/am/ActivityManagerService;->resumedAppLocked()Lcom/android/server/am/ActivityRecord; HPLcom/android/server/am/ActivityManagerService;->rotateBroadcastStatsIfNeededLocked()V +HPLcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V +HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I +HPLcom/android/server/am/ActivityManagerService;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V +HPLcom/android/server/am/ActivityManagerService;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z HPLcom/android/server/am/ActivityManagerService;->serviceDoneExecuting(Landroid/os/IBinder;III)V +HPLcom/android/server/am/ActivityManagerService;->setAppIdTempWhitelistStateLocked(IZ)V +HPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLocked(Lcom/android/server/am/ProcessRecord;IJ)V +HPLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V +HPLcom/android/server/am/ActivityManagerService;->setRequestedOrientation(Landroid/os/IBinder;I)V +HPLcom/android/server/am/ActivityManagerService;->setResumedActivityUncheckLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/am/ActivityManagerService;->showAskCompatModeDialogLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I +HPLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IILandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association; HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZIZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZZ)Lcom/android/server/am/ProcessRecord; HPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName; +HPLcom/android/server/am/ActivityManagerService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName; +HPLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;ILandroid/content/ComponentName;)V +HPLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I +HPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z +HPLcom/android/server/am/ActivityManagerService;->stringifyKBSize(J)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->stringifySize(JI)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->trimApplications()V +HPLcom/android/server/am/ActivityManagerService;->uidOnBackgroundWhitelist(I)Z +HPLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z +HPLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V HPLcom/android/server/am/ActivityManagerService;->updateCpuStats()V +HPLcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V +HPLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZILcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)Z +HPLcom/android/server/am/ActivityManagerService;->updateGlobalConfiguration(Landroid/content/res/Configuration;ZZIZ)I HPLcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;JILjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I HPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJ)Z HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;Z)Z +HPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZZ)V +HPLcom/android/server/am/ActivityManagerService;->updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V +HPLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent; +HPLcom/android/server/am/ActivityManagerShellCommand;->runStartActivity(Ljava/io/PrintWriter;)I +HPLcom/android/server/am/ActivityMetricsLogger;->allStacksWindowsDrawn()Z +HPLcom/android/server/am/ActivityMetricsLogger;->isAnyTransitionActive()Z +HPLcom/android/server/am/ActivityMetricsLogger;->logAppTransitionMultiEvents()V +HPLcom/android/server/am/ActivityMetricsLogger;->logWindowState()V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;ZZ)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyBindApplication(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyStartingWindowDrawn(IJ)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/SparseIntArray;J)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyVisibilityChanged(Lcom/android/server/am/ActivityRecord;Z)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyWindowsDrawn(IJ)V +HPLcom/android/server/am/ActivityRecord$Token;->-wrap0(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityRecord$Token;->toString()Ljava/lang/String; +HPLcom/android/server/am/ActivityRecord$Token;->tokenToActivityRecordLocked(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/am/ActivityStackSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityRecord;->activityStoppedLocked(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V +HPLcom/android/server/am/ActivityRecord;->applyOptionsLocked()V +HPLcom/android/server/am/ActivityRecord;->canShowWhenLocked()Z +HPLcom/android/server/am/ActivityRecord;->canTurnScreenOn()Z +HPLcom/android/server/am/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;Z)Z +HPLcom/android/server/am/ActivityRecord;->completeResumeLocked()V +HPLcom/android/server/am/ActivityRecord;->computeBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/am/ActivityRecord;->continueLaunchTickingLocked()Z +HPLcom/android/server/am/ActivityRecord;->createWindowContainer()V +HPLcom/android/server/am/ActivityRecord;->ensureActivityConfigurationLocked(IZ)Z +HPLcom/android/server/am/ActivityRecord;->finishLaunchTickingLocked()V +HPLcom/android/server/am/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityRecord;->getDisplayId()I +HPLcom/android/server/am/ActivityRecord;->getParent()Lcom/android/server/am/ConfigurationContainer; HPLcom/android/server/am/ActivityRecord;->getStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityRecord;->getStackId()I +HPLcom/android/server/am/ActivityRecord;->getStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityRecord;->getTask()Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/ActivityRecord;->handleAlreadyVisible()Z +HPLcom/android/server/am/ActivityRecord;->hasDismissKeyguardWindows()Z +HPLcom/android/server/am/ActivityRecord;->isAssistantActivity()Z +HPLcom/android/server/am/ActivityRecord;->isConfigurationCompatible(Landroid/content/res/Configuration;)Z +HPLcom/android/server/am/ActivityRecord;->isFocusable()Z +HPLcom/android/server/am/ActivityRecord;->isHomeActivity()Z +HPLcom/android/server/am/ActivityRecord;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityRecord;->isPersistable()Z +HPLcom/android/server/am/ActivityRecord;->isRecentsActivity()Z +HPLcom/android/server/am/ActivityRecord;->isResolverActivity()Z HPLcom/android/server/am/ActivityRecord;->okToShowLocked()Z +HPLcom/android/server/am/ActivityRecord;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/server/am/ActivityRecord;->onStartingWindowDrawn(J)V +HPLcom/android/server/am/ActivityRecord;->onWindowsDrawn(J)V +HPLcom/android/server/am/ActivityRecord;->onWindowsVisible()V +HPLcom/android/server/am/ActivityRecord;->removeOrphanedStartingWindow(Z)V +HPLcom/android/server/am/ActivityRecord;->reportLaunchTimeLocked(J)V +HPLcom/android/server/am/ActivityRecord;->resumeKeyDispatchingLocked()V +HPLcom/android/server/am/ActivityRecord;->setActivityType(ZILandroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;Z)V +HPLcom/android/server/am/ActivityRecord;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/am/ActivityRecord;->setVisibility(Z)V +HPLcom/android/server/am/ActivityRecord;->setVisible(Z)V +HPLcom/android/server/am/ActivityRecord;->shouldBeVisibleIgnoringKeyguard(Z)Z +HPLcom/android/server/am/ActivityRecord;->showStartingWindow(Lcom/android/server/am/ActivityRecord;ZZZ)V +HPLcom/android/server/am/ActivityRecord;->startLaunchTickingLocked()V +HPLcom/android/server/am/ActivityRecord;->stopFreezingScreenLocked(Z)V +HPLcom/android/server/am/ActivityRecord;->supportsPictureInPicture()Z +HPLcom/android/server/am/ActivityRecord;->toString()Ljava/lang/String; +HPLcom/android/server/am/ActivityRecord;->updateOverrideConfiguration()V +HPLcom/android/server/am/ActivityStack$ActivityStackHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityStack;->activityDestroyedLocked(Landroid/os/IBinder;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->activityPausedLocked(Landroid/os/IBinder;Z)V +HPLcom/android/server/am/ActivityStack;->addTask(Lcom/android/server/am/TaskRecord;IZLjava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->addToStopping(Lcom/android/server/am/ActivityRecord;ZZ)V +HPLcom/android/server/am/ActivityStack;->adjustFocusedActivityStackLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->canShowWithInsecureKeyguard()Z +HPLcom/android/server/am/ActivityStack;->cancelInitializingActivities()V HPLcom/android/server/am/ActivityStack;->checkKeyguardVisibility(Lcom/android/server/am/ActivityRecord;ZZ)Z +HPLcom/android/server/am/ActivityStack;->checkReadyForSleep()V +HPLcom/android/server/am/ActivityStack;->checkTranslucentActivityWaiting(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->cleanUpActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V +HPLcom/android/server/am/ActivityStack;->closeSystemDialogsLocked()V +HPLcom/android/server/am/ActivityStack;->completePauseLocked(ZLcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->destroyActivityLocked(Lcom/android/server/am/ActivityRecord;ZLjava/lang/String;)Z HPLcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;IZ)V +HPLcom/android/server/am/ActivityStack;->executeAppTransition(Landroid/app/ActivityOptions;)V +HPLcom/android/server/am/ActivityStack;->findStackInsertIndex(Z)I +HPLcom/android/server/am/ActivityStack;->findTaskLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStackSupervisor$FindTaskResult;)V +HPLcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;ZZ)Z +HPLcom/android/server/am/ActivityStack;->finishCurrentActivityLocked(Lcom/android/server/am/ActivityRecord;IZ)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z +HPLcom/android/server/am/ActivityStack;->getAdjustedPositionForTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityRecord;)I +HPLcom/android/server/am/ActivityStack;->getAllRunningVisibleActivitiesLocked(Ljava/util/ArrayList;)V +HPLcom/android/server/am/ActivityStack;->getAllTasks()Ljava/util/ArrayList; +HPLcom/android/server/am/ActivityStack;->getDisplay()Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; +HPLcom/android/server/am/ActivityStack;->getStackId()I +HPLcom/android/server/am/ActivityStack;->getTasksLocked(Ljava/util/List;IZ)V +HPLcom/android/server/am/ActivityStack;->getTopDismissingKeyguardActivity()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->getTopStackOnDisplay()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStack;->getWindowContainerBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/am/ActivityStack;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityStack;->insertTaskAtTop(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->isAssistantStack()Z +HPLcom/android/server/am/ActivityStack;->isAttached()Z +HPLcom/android/server/am/ActivityStack;->isDockedStack()Z +HPLcom/android/server/am/ActivityStack;->isFocusable()Z +HPLcom/android/server/am/ActivityStack;->isHomeOrRecentsStack()Z +HPLcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->isInStackLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->isPinnedStack()Z +HPLcom/android/server/am/ActivityStack;->isStackTranslucent(Lcom/android/server/am/ActivityRecord;I)Z +HPLcom/android/server/am/ActivityStack;->logStartActivity(ILcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/ActivityStack;->makeInvisible(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->moveToFront(Ljava/lang/String;Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/ActivityStack;->numActivities()I +HPLcom/android/server/am/ActivityStack;->rankTaskLayers(I)I +HPLcom/android/server/am/ActivityStack;->removeActivityFromHistoryLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Ljava/util/ArrayList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->removeTask(Lcom/android/server/am/TaskRecord;Ljava/lang/String;I)V +HPLcom/android/server/am/ActivityStack;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->resetAffinityTaskIfNeededLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/TaskRecord;ZZI)I +HPLcom/android/server/am/ActivityStack;->resetTaskIfNeededLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->resumeTopActivityInnerLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z +HPLcom/android/server/am/ActivityStack;->resumeTopActivityUncheckedLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z +HPLcom/android/server/am/ActivityStack;->schedulePauseTimeout(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->setLaunchTime(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->setResumedActivityLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V HPLcom/android/server/am/ActivityStack;->shouldBeVisible(Lcom/android/server/am/ActivityRecord;)I +HPLcom/android/server/am/ActivityStack;->shouldSleepActivities()Z +HPLcom/android/server/am/ActivityStack;->shouldSleepOrShutDownActivities()Z +HPLcom/android/server/am/ActivityStack;->startActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;ZZLandroid/app/ActivityOptions;)V +HPLcom/android/server/am/ActivityStack;->startLaunchTraces(Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->startPausingLocked(ZZLcom/android/server/am/ActivityRecord;Z)Z +HPLcom/android/server/am/ActivityStack;->stopActivityLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/ActivityStack;->topActivity()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->topActivityOccludesKeyguard()Z HPLcom/android/server/am/ActivityStack;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord; HPLcom/android/server/am/ActivityStack;->topRunningActivityLocked(Z)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->topRunningNonDelayedActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->topTask()Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/ActivityStack;->updateActivityApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V +HPLcom/android/server/am/ActivityStack;->updateBehindFullscreen(ZZLcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)Z +HPLcom/android/server/am/ActivityStack;->updateTaskMovement(Lcom/android/server/am/TaskRecord;Z)V +HPLcom/android/server/am/ActivityStack;->updateTaskReturnToForTopInsertion(Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->isPrivate()Z +HPLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->isSleeping()Z +HPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->activityIdleInternal(Lcom/android/server/am/ActivityRecord;Z)V +HPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityStackSupervisor;->acquireLaunchWakelock()V +HPLcom/android/server/am/ActivityStackSupervisor;->activityIdleInternalLocked(Landroid/os/IBinder;ZZLandroid/content/res/Configuration;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->allPausedActivitiesComplete()Z +HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesComplete()Z +HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesIdle()Z +HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesVisible()Z +HPLcom/android/server/am/ActivityStackSupervisor;->anyTaskForIdLocked(III)Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->cancelInitializingActivities()V +HPLcom/android/server/am/ActivityStackSupervisor;->checkActivityBelongsInStack(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;ZLcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;Landroid/app/ActivityOptions;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->continueUpdateBounds(I)V +HPLcom/android/server/am/ActivityStackSupervisor;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;IZ)V +HPLcom/android/server/am/ActivityStackSupervisor;->findTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z +HPLcom/android/server/am/ActivityStackSupervisor;->getActivityDisplay(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; +HPLcom/android/server/am/ActivityStackSupervisor;->getActivityDisplayOrCreateLocked(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; +HPLcom/android/server/am/ActivityStackSupervisor;->getDisplayOverrideConfiguration(I)Landroid/content/res/Configuration; +HPLcom/android/server/am/ActivityStackSupervisor;->getFocusedStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStackSupervisor;->getLastStack()Lcom/android/server/am/ActivityStack; HPLcom/android/server/am/ActivityStackSupervisor;->getResumedActivityLocked()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->getStack(I)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStackSupervisor;->getStack(IZZ)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(I)Landroid/app/ActivityManager$StackInfo; +HPLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(Lcom/android/server/am/ActivityStack;)Landroid/app/ActivityManager$StackInfo; +HPLcom/android/server/am/ActivityStackSupervisor;->getStacksOnDefaultDisplay()Ljava/util/ArrayList; +HPLcom/android/server/am/ActivityStackSupervisor;->getTasksLocked(ILjava/util/List;IZ)V +HPLcom/android/server/am/ActivityStackSupervisor;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/am/TaskRecord;IIIZ)V +HPLcom/android/server/am/ActivityStackSupervisor;->isCurrentProfileLocked(I)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isFocusedStack(Lcom/android/server/am/ActivityStack;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isFrontOfStackList(Lcom/android/server/am/ActivityStack;Ljava/util/List;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isFrontStackOnDisplay(Lcom/android/server/am/ActivityStack;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isInAnyStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->isStackDockedInEffect(I)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isStoppingNoHistoryActivity()Z +HPLcom/android/server/am/ActivityStackSupervisor;->moveFocusableActivityStackToFrontLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->notifyAppTransitionDone()V +HPLcom/android/server/am/ActivityStackSupervisor;->pauseBackStacks(ZLcom/android/server/am/ActivityRecord;Z)Z +HPLcom/android/server/am/ActivityStackSupervisor;->processStoppingActivitiesLocked(Lcom/android/server/am/ActivityRecord;ZZ)Ljava/util/ArrayList; +HPLcom/android/server/am/ActivityStackSupervisor;->rankTaskLayersIfNeeded()V +HPLcom/android/server/am/ActivityStackSupervisor;->readyToResume()Z +HPLcom/android/server/am/ActivityStackSupervisor;->realStartActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ProcessRecord;ZZ)Z +HPLcom/android/server/am/ActivityStackSupervisor;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor;->reportResumedActivityLocked(Lcom/android/server/am/ActivityRecord;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/am/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/am/ActivityStackSupervisor;->resumeFocusedStackTopActivityLocked(Lcom/android/server/am/ActivityStack;Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleLocked()V +HPLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleTimeoutLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor;->sendWaitingVisibleReportLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor;->setFocusStackUnchecked(Ljava/lang/String;Lcom/android/server/am/ActivityStack;)V +HPLcom/android/server/am/ActivityStackSupervisor;->setLaunchSource(I)V +HPLcom/android/server/am/ActivityStackSupervisor;->startSpecificActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V +HPLcom/android/server/am/ActivityStackSupervisor;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->updatePreviousProcessLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor;->updateUIDsPresentOnDisplay()V +HPLcom/android/server/am/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/am/TaskRecord;IILandroid/app/ActivityOptions;)V +HPLcom/android/server/am/ActivityStarter;->computeStackFocus(Lcom/android/server/am/ActivityRecord;ZLandroid/graphics/Rect;ILandroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStarter;->getLaunchStack(Lcom/android/server/am/ActivityRecord;ILcom/android/server/am/TaskRecord;Landroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStarter;->postStartActivityProcessing(Lcom/android/server/am/ActivityRecord;IILcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)V +HPLcom/android/server/am/ActivityStarter;->sendPowerHintForLaunchStartIfNeeded(ZLcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStarter;->setInitialState(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;ZILcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V +HPLcom/android/server/am/ActivityStarter;->setTargetStackAndMoveToFrontIfNeeded(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStarter;->setTaskFromReuseOrCreateNewTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityStack;)I +HPLcom/android/server/am/ActivityStarter;->startActivity(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILandroid/app/ActivityOptions;ZZ[Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;)I +HPLcom/android/server/am/ActivityStarter;->startActivity(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I +HPLcom/android/server/am/ActivityStarter;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILandroid/app/ActivityOptions;ZZ[Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;Ljava/lang/String;)I +HPLcom/android/server/am/ActivityStarter;->startActivityMayWait(Landroid/app/IApplicationThread;ILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/app/WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;ZILcom/android/server/am/TaskRecord;Ljava/lang/String;)I +HPLcom/android/server/am/ActivityStarter;->startActivityUnchecked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I +HPLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/AppErrors;->isBadProcessLocked(Landroid/content/pm/ApplicationInfo;)Z +HPLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(Landroid/content/pm/ApplicationInfo;)V +HPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleRunnable(Ljava/lang/Runnable;)V HPLcom/android/server/am/BatteryStatsService;->enforceCallingPermission()V +HPLcom/android/server/am/BatteryStatsService;->getService()Lcom/android/internal/app/IBatteryStats; +HPLcom/android/server/am/BatteryStatsService;->isOnBattery()Z +HPLcom/android/server/am/BatteryStatsService;->lambda$-com_android_server_am_BatteryStatsService_31479(IIIIIIII)V +HPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +HPLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteFullWifiLockAcquiredFromSource(Landroid/os/WorkSource;)V +HPLcom/android/server/am/BatteryStatsService;->noteFullWifiLockReleasedFromSource(Landroid/os/WorkSource;)V +HPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;II)V +HPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteNetworkInterfaceType(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteProcessStart(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V +HPLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V HPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V +HPLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +HPLcom/android/server/am/BatteryStatsService;->noteStopAudio(I)V +HPLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V HPLcom/android/server/am/BatteryStatsService;->noteStopWakelock(IILjava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V +HPLcom/android/server/am/BatteryStatsService;->noteUserActivity(II)V +HPLcom/android/server/am/BatteryStatsService;->noteWifiRadioPowerState(IJI)V +HPLcom/android/server/am/BatteryStatsService;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V +HPLcom/android/server/am/BatteryStatsService;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V +HPLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIII)V +HPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;IIZZ)V +HPLcom/android/server/am/BroadcastQueue$BroadcastHandler;->handleMessage(Landroid/os/Message;)V HPLcom/android/server/am/BroadcastQueue;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V +HPLcom/android/server/am/BroadcastQueue;->backgroundServicesFinishedLocked(I)V +HPLcom/android/server/am/BroadcastQueue;->cancelBroadcastTimeoutLocked()V +HPLcom/android/server/am/BroadcastQueue;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z HPLcom/android/server/am/BroadcastQueue;->deliverToRegisteredReceiverLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;ZI)V HPLcom/android/server/am/BroadcastQueue;->enqueueBroadcastHelper(Lcom/android/server/am/BroadcastRecord;)V +HPLcom/android/server/am/BroadcastQueue;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V +HPLcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V HPLcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z +HPLcom/android/server/am/BroadcastQueue;->getMatchingOrderedReceiver(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord; +HPLcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z +HPLcom/android/server/am/BroadcastQueue;->performReceiveLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V HPLcom/android/server/am/BroadcastQueue;->processCurBroadcastLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/ProcessRecord;)V HPLcom/android/server/am/BroadcastQueue;->processNextBroadcast(Z)V +HPLcom/android/server/am/BroadcastQueue;->replaceBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord; +HPLcom/android/server/am/BroadcastQueue;->replaceParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord; +HPLcom/android/server/am/BroadcastQueue;->ringAdvance(III)I +HPLcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V +HPLcom/android/server/am/BroadcastQueue;->setBroadcastTimeoutLocked(J)V +HPLcom/android/server/am/BroadcastQueue;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZI)V +HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V HPLcom/android/server/am/BroadcastRecord;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z +HPLcom/android/server/am/BroadcastRecord;->maybeStripForHistory()Lcom/android/server/am/BroadcastRecord; +HPLcom/android/server/am/BroadcastStats$ActionEntry;-><init>(Ljava/lang/String;)V +HPLcom/android/server/am/BroadcastStats$PackageEntry;-><init>()V +HPLcom/android/server/am/BroadcastStats;->addBackgroundCheckViolation(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V HPLcom/android/server/am/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo; +HPLcom/android/server/am/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I +HPLcom/android/server/am/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/am/ConfigurationContainer;->getOverrideConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/am/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V +HPLcom/android/server/am/ConfigurationContainer;->onParentChanged()V +HPLcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/IServiceConnection;IILandroid/app/PendingIntent;)V HPLcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V +HPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z HPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z +HPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/ContentProviderHolder; +HPLcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle; +HPLcom/android/server/am/EventLogTags;->writeAmFocusedStack(IIILjava/lang/String;)V +HPLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJ)V +HPLcom/android/server/am/EventLogTags;->writeAmSetResumedActivity(ILjava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/EventLogTags;->writeAmStopActivity(IILjava/lang/String;)V +HPLcom/android/server/am/EventLogTags;->writeAmUidActive(I)V +HPLcom/android/server/am/EventLogTags;->writeAmUidRunning(I)V +HPLcom/android/server/am/EventLogTags;->writeAmUidStopped(I)V +HPLcom/android/server/am/IntentBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V +HPLcom/android/server/am/KeyguardController;->beginActivityVisibilityUpdate()V +HPLcom/android/server/am/KeyguardController;->endActivityVisibilityUpdate()V +HPLcom/android/server/am/KeyguardController;->isKeyguardLocked()Z +HPLcom/android/server/am/KeyguardController;->isKeyguardShowing()Z +HPLcom/android/server/am/KeyguardController;->visibilitiesUpdated()V +HPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)V +HPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I +HPLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/PendingIntentRecord$Key;I)V +HPLcom/android/server/am/PendingIntentRecord;->completeFinalize()V +HPLcom/android/server/am/PendingIntentRecord;->finalize()V +HPLcom/android/server/am/PendingIntentRecord;->sendInner(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I +HPLcom/android/server/am/PendingIntentRecord;->sendWithResult(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I +HPLcom/android/server/am/ProcessList;->computeNextPssTime(IZZZJ)J HPLcom/android/server/am/ProcessList;->procStatesDifferForMem(II)Z +HPLcom/android/server/am/ProcessList;->remove(I)V HPLcom/android/server/am/ProcessList;->setOomAdj(III)V HPLcom/android/server/am/ProcessList;->writeLmkd(Ljava/nio/ByteBuffer;)V +HPLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)V +HPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;ILcom/android/server/am/ProcessStatsService;)Z +HPLcom/android/server/am/ProcessRecord;->forceProcessStateUpTo(I)V HPLcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String; +HPLcom/android/server/am/ProcessRecord;->getSetAdjWithServices()I +HPLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;Z)V +HPLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V +HPLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V HPLcom/android/server/am/ProcessRecord;->modifyRawOomAdj(I)I +HPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V +HPLcom/android/server/am/ProcessRecord;->setPid(I)V +HPLcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String; +HPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V +HPLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V HPLcom/android/server/am/ProcessStatsService;->getMemFactorLocked()I +HPLcom/android/server/am/ProcessStatsService;->getProcessStateLocked(Ljava/lang/String;IILjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState; +HPLcom/android/server/am/ProcessStatsService;->getServiceStateLocked(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState; HPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IZJ)Z +HPLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z +HPLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z +HPLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord; +HPLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord; +HPLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap; +HPLcom/android/server/am/ProviderMap;->getProvidersByName(I)Ljava/util/HashMap; +HPLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V +HPLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V +HPLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V +HPLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V +HPLcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V +HPLcom/android/server/am/ReceiverList;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/am/ReceiverList;->hashCode()I +HPLcom/android/server/am/RecentTasks;->addLocked(Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/am/TaskRecord;Z)V +HPLcom/android/server/am/RecentTasks;->shouldPersistTaskLocked(Lcom/android/server/am/TaskRecord;)Z +HPLcom/android/server/am/RecentTasks;->syncPersistentTaskIdsLocked()V +HPLcom/android/server/am/RecentTasks;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/RecentTasks;->trimForTaskLocked(Lcom/android/server/am/TaskRecord;Z)I +HPLcom/android/server/am/RecentTasks;->usersWithRecentsLoadedLocked()[I +HPLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/am/ActivityManagerService$NeededUriGrants;I)V +HPLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V HPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;Landroid/content/ComponentName;Landroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;)V +HPLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V HPLcom/android/server/am/ServiceRecord;->findDeliveredStart(IZ)Lcom/android/server/am/ServiceRecord$StartItem; +HPLcom/android/server/am/ServiceRecord;->getLastStartId()I +HPLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState; HPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z +HPLcom/android/server/am/ServiceRecord;->makeNextStartId()I +HPLcom/android/server/am/ServiceRecord;->postNotification()V +HPLcom/android/server/am/ServiceRecord;->resetRestartCounter()V HPLcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord; +HPLcom/android/server/am/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/TaskChangeNotificationController;->-wrap0(Lcom/android/server/am/TaskChangeNotificationController;Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V +HPLcom/android/server/am/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V +HPLcom/android/server/am/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V +HPLcom/android/server/am/TaskChangeNotificationController;->notifyTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/am/TaskChangeNotificationController;->notifyTaskStackChanged()V +HPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->processNextItem()V +HPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->run()V +HPLcom/android/server/am/TaskPersister;->-get0(Lcom/android/server/am/TaskPersister;)J +HPLcom/android/server/am/TaskPersister;->-get1(Lcom/android/server/am/TaskPersister;)Lcom/android/server/am/RecentTasks; +HPLcom/android/server/am/TaskPersister;->getUserImagesDir(I)Ljava/io/File; +HPLcom/android/server/am/TaskPersister;->getUserTasksDir(I)Ljava/io/File; +HPLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V +HPLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[Ljava/io/File;)V +HPLcom/android/server/am/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List; +HPLcom/android/server/am/TaskPersister;->saveToXml(Lcom/android/server/am/TaskRecord;)Ljava/io/StringWriter; +HPLcom/android/server/am/TaskPersister;->wakeup(Lcom/android/server/am/TaskRecord;Z)V +HPLcom/android/server/am/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V +HPLcom/android/server/am/TaskPersister;->writeTaskIdsFiles()V +HPLcom/android/server/am/TaskRecord;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;I)V +HPLcom/android/server/am/TaskRecord;->addActivityAtIndex(ILcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/TaskRecord;->addActivityToTop(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/TaskRecord;->createWindowContainer(ZZ)V +HPLcom/android/server/am/TaskRecord;->findEffectiveRootIndex()I +HPLcom/android/server/am/TaskRecord;->freeLastThumbnail()V +HPLcom/android/server/am/TaskRecord;->getAllRunningVisibleActivitiesLocked(Ljava/util/ArrayList;)V +HPLcom/android/server/am/TaskRecord;->getBaseIntent()Landroid/content/Intent; +HPLcom/android/server/am/TaskRecord;->getLaunchBounds()Landroid/graphics/Rect; HPLcom/android/server/am/TaskRecord;->getStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/TaskRecord;->getStackId()I +HPLcom/android/server/am/TaskRecord;->getTaskToReturnTo()I +HPLcom/android/server/am/TaskRecord;->getTopActivity()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/TaskRecord;->getWindowContainerBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/am/TaskRecord;->isHomeTask()Z +HPLcom/android/server/am/TaskRecord;->isOverHomeStack()Z +HPLcom/android/server/am/TaskRecord;->isResizeable()Z +HPLcom/android/server/am/TaskRecord;->isResizeable(Z)Z +HPLcom/android/server/am/TaskRecord;->performClearTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord; HPLcom/android/server/am/TaskRecord;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/am/ActivityStackSupervisor;)Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/TaskRecord;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/am/TaskRecord;->setFrontOfTask()V +HPLcom/android/server/am/TaskRecord;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V +HPLcom/android/server/am/TaskRecord;->supportsSplitScreen()Z HPLcom/android/server/am/TaskRecord;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/TaskRecord;->touchActiveTime()V +HPLcom/android/server/am/TaskRecord;->updateEffectiveIntent()V +HPLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;)Z +HPLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLcom/android/server/am/TaskRecord;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect; +HPLcom/android/server/am/TaskRecord;->updateTaskDescription()V +HPLcom/android/server/am/UidRecord;-><init>(I)V HPLcom/android/server/am/UidRecord;->reset()V +HPLcom/android/server/am/UidRecord;->updateHasInternetPermission()V +HPLcom/android/server/am/UidRecord;->updateLastDispatchedProcStateSeq(I)V +HPLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I +HPLcom/android/server/am/UserController$Injector;->checkComponentPermission(Ljava/lang/String;IIIZ)I +HPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService; +HPLcom/android/server/am/UserController;->exists(I)Z +HPLcom/android/server/am/UserController;->getCurrentUser()Landroid/content/pm/UserInfo; +HPLcom/android/server/am/UserController;->getCurrentUserIdLocked()I +HPLcom/android/server/am/UserController;->getProfileIds(I)Ljava/util/Set; +HPLcom/android/server/am/UserController;->getStartedUserArrayLocked()[I HPLcom/android/server/am/UserController;->getStartedUserStateLocked(I)Lcom/android/server/am/UserState; +HPLcom/android/server/am/UserController;->getUserInfo(I)Landroid/content/pm/UserInfo; HPLcom/android/server/am/UserController;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I -HPLcom/android/server/am/UserController;->isUserStoppingOrShuttingDownLocked(I)Z +HPLcom/android/server/am/UserController;->hasStartedUserState(I)Z +HPLcom/android/server/am/UserController;->isSameProfileGroup(II)Z +HPLcom/android/server/am/UserController;->isUserRunningLocked(II)Z +HPLcom/android/server/am/UserController;->unsafeConvertIncomingUserLocked(I)I +HPLcom/android/server/am/VrController;->onTopProcChangedLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/VrController;->onVrModeChanged(Lcom/android/server/am/ActivityRecord;)Z +HPLcom/android/server/am/VrController;->setVrRenderThreadLocked(IIZ)I +HPLcom/android/server/appwidget/AppWidgetServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->getUserId()I +HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceCallFromPackage(Ljava/lang/String;)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I +HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getGroupParent(I)I +HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->-get10(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/os/UserManager; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->-get9(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(I)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isBoundWidgetPackage(Ljava/lang/String;I)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isUserRunningAndUnlocked(I)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->onPackageBroadcastReceived(Landroid/content/Intent;I)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseProviderInfoXml(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ResolveInfo;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedState(I)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateProvidersForPackageLocked(Ljava/lang/String;ILjava/util/Set;)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->writeProfileStateToFileLocked(Ljava/io/FileOutputStream;I)Z +HPLcom/android/server/audio/AudioEventLogger$Event;-><init>()V +HPLcom/android/server/audio/AudioEventLogger;->log(Lcom/android/server/audio/AudioEventLogger$Event;)V +HPLcom/android/server/audio/AudioService$2;->disableAudioForUid(ZI)V +HPLcom/android/server/audio/AudioService$2;->onUidCachedChanged(IZ)V +HPLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/audio/AudioService$AudioHandler;->onLoadSoundEffects()Z +HPLcom/android/server/audio/AudioService$AudioHandler;->onPlaySoundEffect(II)V +HPLcom/android/server/audio/AudioService$AudioHandler;->setAllVolumes(Lcom/android/server/audio/AudioService$VolumeStreamState;)V +HPLcom/android/server/audio/AudioService$VolumeStreamState;->applyAllVolumes()V +HPLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I +HPLcom/android/server/audio/AudioService$VolumeStreamState;->getMaxIndex()I +HPLcom/android/server/audio/AudioService$VolumeStreamState;->getSettingNameForDevice(I)Ljava/lang/String; +HPLcom/android/server/audio/AudioService$VolumeStreamState;->hasValidSettingsName()Z +HPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)I +HPLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V +HPLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V +HPLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(IILjava/lang/String;)Z +HPLcom/android/server/audio/AudioService;->-get17(Lcom/android/server/audio/AudioService;)Landroid/content/ContentResolver; +HPLcom/android/server/audio/AudioService;->-get27(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/PlaybackActivityMonitor; +HPLcom/android/server/audio/AudioService;->-get35(Lcom/android/server/audio/AudioService;)Landroid/media/SoundPool; +HPLcom/android/server/audio/AudioService;->-get39(Lcom/android/server/audio/AudioService;)[Lcom/android/server/audio/AudioService$VolumeStreamState; +HPLcom/android/server/audio/AudioService;->-get8(Lcom/android/server/audio/AudioService;)Landroid/os/PowerManager$WakeLock; +HPLcom/android/server/audio/AudioService;->-get9(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$AudioHandler; +HPLcom/android/server/audio/AudioService;->-wrap32(Lcom/android/server/audio/AudioService;Landroid/os/Handler;IIILjava/lang/Object;I)V +HPLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V +HPLcom/android/server/audio/AudioService;->getDeviceForStream(I)I +HPLcom/android/server/audio/AudioService;->getDevicesForStream(I)I +HPLcom/android/server/audio/AudioService;->getDevicesForStream(IZ)I +HPLcom/android/server/audio/AudioService;->playerEvent(II)V +HPLcom/android/server/audio/AudioService;->queueMsgUnderWakeLock(Landroid/os/Handler;IIILjava/lang/Object;I)V +HPLcom/android/server/audio/AudioService;->rescaleIndex(III)I +HPLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;)V +HPLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V +HPLcom/android/server/audio/PlaybackActivityMonitor;->checkBanPlayer(Landroid/media/AudioPlaybackConfiguration;I)Z +HPLcom/android/server/audio/PlaybackActivityMonitor;->disableAudioForUid(ZI)V +HPLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange()V +HPLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(III)V +HPLcom/android/server/audio/PlaybackActivityMonitor;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I +HPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V +HPLcom/android/server/autofill/AutofillManagerService;->getServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl; +HPLcom/android/server/autofill/AutofillManagerService;->peekServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl; +HPLcom/android/server/autofill/AutofillManagerServiceImpl;->updateSessionLocked(IILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)Z HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onFillRequestFailure(Ljava/lang/CharSequence;Ljava/lang/String;)V HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onFillRequestSuccess(ILandroid/service/autofill/FillResponse;ILjava/lang/String;)V HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onSaveRequestFailure(Ljava/lang/CharSequence;Ljava/lang/String;)V HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onSaveRequestSuccess(Ljava/lang/String;)V HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onServiceDied(Lcom/android/server/autofill/RemoteFillService;)V -HPLcom/android/server/autofill/RemoteFillService$PendingRequest;->fail(Lcom/android/server/autofill/RemoteFillService;)V +HPLcom/android/server/autofill/RemoteFillService$PendingRequest;->onTimeout(Lcom/android/server/autofill/RemoteFillService;)V HPLcom/android/server/autofill/ViewState$Listener;->onFillReady(Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;)V HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->authenticate(IILandroid/content/IntentSender;Landroid/os/Bundle;)V HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->cancelSave()V @@ -831,7 +2134,23 @@ HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->requestHideFil HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->requestShowFillUi(Landroid/view/autofill/AutofillId;IILandroid/view/autofill/IAutofillWindowPresenter;)V HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->save()V HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->startIntentSender(Landroid/content/IntentSender;)V +HPLcom/android/server/backup/BackupManagerService$1;->run()V +HPLcom/android/server/backup/BackupManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/backup/BackupManagerService$7;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V +HPLcom/android/server/backup/BackupManagerService$7;->run()V +HPLcom/android/server/backup/BackupManagerService$BackupRequest;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerService;->-wrap18(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V +HPLcom/android/server/backup/BackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V +HPLcom/android/server/backup/BackupManagerService;->allAgentPackages()Ljava/util/List; +HPLcom/android/server/backup/BackupManagerService;->appIsDisabled(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z +HPLcom/android/server/backup/BackupManagerService;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z +HPLcom/android/server/backup/BackupManagerService;->dataChanged(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V HPLcom/android/server/backup/BackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet; +HPLcom/android/server/backup/BackupManagerService;->dequeueFullBackupLocked(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList; +HPLcom/android/server/backup/BackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V HPLcom/android/server/backup/BackupManagerServiceInterface;->acknowledgeAdbBackupOrRestore(IZLjava/lang/String;Ljava/lang/String;Landroid/app/backup/IFullBackupRestoreObserver;)V HPLcom/android/server/backup/BackupManagerServiceInterface;->adbBackup(Landroid/os/ParcelFileDescriptor;ZZZZZZZZ[Ljava/lang/String;)V HPLcom/android/server/backup/BackupManagerServiceInterface;->adbRestore(Landroid/os/ParcelFileDescriptor;)V @@ -857,6 +2176,7 @@ HPLcom/android/server/backup/BackupManagerServiceInterface;->getDataManagementLa HPLcom/android/server/backup/BackupManagerServiceInterface;->getDestinationString(Ljava/lang/String;)Ljava/lang/String; HPLcom/android/server/backup/BackupManagerServiceInterface;->getTransportWhitelist()[Ljava/lang/String; HPLcom/android/server/backup/BackupManagerServiceInterface;->hasBackupPassword()Z +HPLcom/android/server/backup/BackupManagerServiceInterface;->initializeTransports([Ljava/lang/String;Landroid/app/backup/IBackupObserver;)V HPLcom/android/server/backup/BackupManagerServiceInterface;->isAppEligibleForBackup(Ljava/lang/String;)Z HPLcom/android/server/backup/BackupManagerServiceInterface;->isBackupEnabled()Z HPLcom/android/server/backup/BackupManagerServiceInterface;->listAllTransportComponents()[Landroid/content/ComponentName; @@ -874,55 +2194,278 @@ HPLcom/android/server/backup/BackupManagerServiceInterface;->setBackupPassword(L HPLcom/android/server/backup/BackupManagerServiceInterface;->setBackupProvisioned(Z)V HPLcom/android/server/backup/BackupManagerServiceInterface;->tearDownAgentAndKill(Landroid/content/pm/ApplicationInfo;)V HPLcom/android/server/backup/BackupManagerServiceInterface;->waitUntilOperationComplete(I)Z +HPLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;)V +HPLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;J)V +HPLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;)Ljava/util/List; +HPLcom/android/server/backup/Trampoline;->dataChanged(Ljava/lang/String;)V HPLcom/android/server/backup/TransportManager$TransportBoundListener;->onTransportBound(Lcom/android/internal/backup/IBackupTransport;)Z +HPLcom/android/server/backup/TransportManager;->onPackageRemoved(Ljava/lang/String;)V +HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->hasPrimaryClip(Ljava/lang/String;)Z +HPLcom/android/server/clipboard/ClipboardService;->clipboardAccessAllowed(ILjava/lang/String;I)Z +HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCallerIsSystemOr(Ljava/lang/String;I)V +HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkUsesFeature(Ljava/lang/String;I)V +HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List; +HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap3()Z +HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap4()I +HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap6(Lcom/android/server/companion/CompanionDeviceManagerService;ILjava/lang/String;)Ljava/util/Set; HPLcom/android/server/companion/CompanionDeviceManagerService;->getCallingUserId()I +HPLcom/android/server/companion/CompanionDeviceManagerService;->getStorageFileForUser(I)Landroid/util/AtomicFile; +HPLcom/android/server/companion/CompanionDeviceManagerService;->isCallerSystem()Z +HPLcom/android/server/companion/CompanionDeviceManagerService;->readAllAssociations(ILjava/lang/String;)Ljava/util/Set; +HPLcom/android/server/connectivity/NetdEventListenerService;->maybeVerboseLog(Ljava/lang/String;[Ljava/lang/Object;)V +HPLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V +HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V +HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore()I +HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore(Z)I HPLcom/android/server/connectivity/NetworkAgentInfo;->getNetworkState()Landroid/net/NetworkState; +HPLcom/android/server/connectivity/NetworkAgentInfo;->isBackgroundNetwork()Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->isLingering()Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->isSatisfyingRequest(I)Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->isVPN()Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->numForegroundNetworkRequests()I +HPLcom/android/server/connectivity/NetworkAgentInfo;->numNetworkRequests()I +HPLcom/android/server/connectivity/NetworkAgentInfo;->numRequestNetworkRequests()I +HPLcom/android/server/connectivity/NetworkAgentInfo;->requestAt(I)Landroid/net/NetworkRequest; +HPLcom/android/server/connectivity/NetworkAgentInfo;->satisfies(Landroid/net/NetworkRequest;)Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->setCurrentScore(I)V +HPLcom/android/server/connectivity/NetworkAgentInfo;->updateLingerTimer()V +HPLcom/android/server/connectivity/PermissionMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/connectivity/PermissionMonitor;->hasNetworkPermission(Landroid/content/pm/PackageInfo;)Z HPLcom/android/server/connectivity/PermissionMonitor;->hasPermission(Landroid/content/pm/PackageInfo;Ljava/lang/String;)Z +HPLcom/android/server/connectivity/PermissionMonitor;->startMonitoring()V +HPLcom/android/server/connectivity/PermissionMonitor;->toIntArray(Ljava/util/List;)[I +HPLcom/android/server/connectivity/PermissionMonitor;->update(Ljava/util/Set;Ljava/util/Map;Z)V HPLcom/android/server/connectivity/Vpn;->appliesToUid(I)Z +HPLcom/android/server/connectivity/Vpn;->isBlockingUid(I)Z +HPLcom/android/server/connectivity/Vpn;->isRunningLocked()Z +HPLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats; +HPLcom/android/server/content/ContentService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/content/ContentService$ObserverCall;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZI)V +HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->-get0(Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;)I HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V +HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V +HPLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V +HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V HPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(ZLandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V HPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V HPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I HPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String; HPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z +HPLcom/android/server/content/ContentService;->enforceCrossUserPermission(ILjava/lang/String;)V +HPLcom/android/server/content/ContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I +HPLcom/android/server/content/ContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I +HPLcom/android/server/content/ContentService;->getMasterSyncAutomatically()Z +HPLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z +HPLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;)Ljava/lang/String; +HPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; +HPLcom/android/server/content/ContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z +HPLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z +HPLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager; +HPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I +HPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V +HPLcom/android/server/content/ContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z +HPLcom/android/server/content/ContentService;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z HPLcom/android/server/content/ContentService;->notifyChange(Landroid/net/Uri;Landroid/database/IContentObserver;ZIII)V +HPLcom/android/server/content/ContentService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V +HPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V +HPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z +HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->closeCurrentLogLocked()V +HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String; +HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->log([Ljava/lang/Object;)V +HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V +HPLcom/android/server/content/SyncManager$7;->run()V +HPLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z +HPLcom/android/server/content/SyncManager$ActiveSyncContext;->toString()Ljava/lang/String; +HPLcom/android/server/content/SyncManager$ActiveSyncContext;->toString(Ljava/lang/StringBuilder;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I +HPLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z +HPLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->tryEnqueueMessageUntilReadyToRun(Landroid/os/Message;)Z +HPLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V +HPLcom/android/server/content/SyncManager;->-get15(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager$WakeLock; +HPLcom/android/server/content/SyncManager;->-wrap5(Lcom/android/server/content/SyncManager;)Z +HPLcom/android/server/content/SyncManager;->canAccessAccount(Landroid/accounts/Account;Ljava/lang/String;I)Z +HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;Z)I +HPLcom/android/server/content/SyncManager;->formatDurationHMS(Ljava/lang/StringBuilder;J)Ljava/lang/StringBuilder; +HPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List; +HPLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I +HPLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; +HPLcom/android/server/content/SyncManager;->getSyncAdapterTypes(I)[Landroid/content/SyncAdapterType; +HPLcom/android/server/content/SyncManager;->getSyncStorageEngine()Lcom/android/server/content/SyncStorageEngine; +HPLcom/android/server/content/SyncManager;->isJobIdInUseLockedH(ILjava/util/List;)Z +HPLcom/android/server/content/SyncManager;->printTwoDigitNumber(Ljava/lang/StringBuilder;JCZ)Z +HPLcom/android/server/content/SyncManager;->readDataConnectionState()Z +HPLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V +HPLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;)V HPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJ)V +HPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V +HPLcom/android/server/content/SyncManager;->setAuthorityPendingState(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V +HPLcom/android/server/content/SyncManager;->verifyJobScheduler()V +HPLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJ)V +HPLcom/android/server/content/SyncOperation;->dump(Landroid/content/pm/PackageManager;Z)Ljava/lang/String; +HPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V HPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation; +HPLcom/android/server/content/SyncOperation;->reasonToString(Landroid/content/pm/PackageManager;I)Ljava/lang/String; +HPLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle; HPLcom/android/server/content/SyncOperation;->toKey()Ljava/lang/String; +HPLcom/android/server/content/SyncOperation;->toString()Ljava/lang/String; +HPLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String; +HPLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V +HPLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +HPLcom/android/server/content/SyncStorageEngine$EndPoint;->toString()Ljava/lang/String; HPLcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener;->onAuthorityRemoved(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V HPLcom/android/server/content/SyncStorageEngine$OnSyncRequestListener;->onSyncRequest(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILandroid/os/Bundle;)V HPLcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;->onPeriodicSyncAdded(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;JJ)V +HPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +HPLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair; +HPLcom/android/server/content/SyncStorageEngine;->getCurrentSyncs(I)Ljava/util/List; +HPLcom/android/server/content/SyncStorageEngine;->getCurrentSyncsLocked(I)Ljava/util/List; +HPLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I +HPLcom/android/server/content/SyncStorageEngine;->getMasterSyncAutomatically(I)Z +HPLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +HPLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;)Z +HPLcom/android/server/content/SyncStorageEngine;->isSyncActive(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +HPLcom/android/server/content/SyncStorageEngine;->isSyncPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +HPLcom/android/server/content/SyncStorageEngine;->parseAuthority(Lorg/xmlpull/v1/XmlPullParser;ILcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +HPLcom/android/server/content/SyncStorageEngine;->readAccountInfoLocked()V +HPLcom/android/server/content/SyncStorageEngine;->reportChange(I)V +HPLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJ)V +HPLcom/android/server/content/SyncStorageEngine;->writeAccountInfoLocked()V +HPLcom/android/server/content/SyncStorageEngine;->writeStatusLocked()V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUid()I +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->userHandleGetCallingUserId()I +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveAdminWithPolicy(II)Z +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap3(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceFullCrossUsersPermission(I)V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceSystemUserOrPermissionIfCrossUser(ILjava/lang/String;)V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminWithPolicyForUidLocked(Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(IZ)Ljava/util/List; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwner(I)Landroid/content/ComponentName; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData; HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z +HPLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName; +HPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z HPLcom/android/server/display/AutomaticBrightnessController$1;->onSensorChanged(Landroid/hardware/SensorEvent;)V HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getLux(I)F HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getTime(I)J HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->offsetOf(I)I +HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V +HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->size()I +HPLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->handleMessage(Landroid/os/Message;)V HPLcom/android/server/display/AutomaticBrightnessController$Callbacks;->updateBrightness()V -HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(J)F +HPLcom/android/server/display/AutomaticBrightnessController;->-get0(Lcom/android/server/display/AutomaticBrightnessController;)Z +HPLcom/android/server/display/AutomaticBrightnessController;->-wrap1(Lcom/android/server/display/AutomaticBrightnessController;JF)V +HPLcom/android/server/display/AutomaticBrightnessController;->-wrap2(Lcom/android/server/display/AutomaticBrightnessController;)V +HPLcom/android/server/display/AutomaticBrightnessController;->applyLightSensorMeasurement(JF)V +HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F HPLcom/android/server/display/AutomaticBrightnessController;->calculateWeight(JJ)F +HPLcom/android/server/display/AutomaticBrightnessController;->configure(ZFZZ)V HPLcom/android/server/display/AutomaticBrightnessController;->handleLightSensorEvent(JF)V HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightBrighteningTransition(J)J HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J +HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux()V HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V HPLcom/android/server/display/AutomaticBrightnessController;->weightIntegral(J)F HPLcom/android/server/display/DisplayBlanker;->requestDisplayState(II)V +HPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds()[I +HPLcom/android/server/display/DisplayManagerService$CallbackRecord;->binderDied()V +HPLcom/android/server/display/DisplayManagerService$LocalService$1;->requestDisplayState(II)V +HPLcom/android/server/display/DisplayManagerService$LocalService;->performTraversalInTransactionFromWindowManager()V HPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z +HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V +HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V +HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIZ)V +HPLcom/android/server/display/DisplayManagerService;->-get2(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayPowerController; +HPLcom/android/server/display/DisplayManagerService;->-wrap16(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V +HPLcom/android/server/display/DisplayManagerService;->-wrap25(Lcom/android/server/display/DisplayManagerService;II)V +HPLcom/android/server/display/DisplayManagerService;->-wrap29(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V +HPLcom/android/server/display/DisplayManagerService;->-wrap30(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V +HPLcom/android/server/display/DisplayManagerService;->-wrap32(Lcom/android/server/display/DisplayManagerService;IZFIZ)V +HPLcom/android/server/display/DisplayManagerService;->-wrap5(Lcom/android/server/display/DisplayManagerService;I)[I +HPLcom/android/server/display/DisplayManagerService;->applyGlobalDisplayStateLocked(Ljava/util/List;)V +HPLcom/android/server/display/DisplayManagerService;->getDisplayIdsInternal(I)[I +HPLcom/android/server/display/DisplayManagerService;->onCallbackDied(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V +HPLcom/android/server/display/DisplayManagerService;->performTraversalInTransactionFromWindowManagerInternal()V +HPLcom/android/server/display/DisplayManagerService;->requestGlobalDisplayStateInternal(II)V +HPLcom/android/server/display/DisplayManagerService;->setDisplayAccessUIDsInternal(Landroid/util/SparseArray;)V +HPLcom/android/server/display/DisplayManagerService;->setDisplayInfoOverrideFromWindowManagerInternal(ILandroid/view/DisplayInfo;)V +HPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIZ)V +HPLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(II)V +HPLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IZ)V HPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z +HPLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V +HPLcom/android/server/display/DisplayPowerController;->setScreenState(IZ)Z +HPLcom/android/server/display/DisplayPowerController;->updatePowerState()V +HPLcom/android/server/display/DisplayPowerState$2;->setValue(Lcom/android/server/display/DisplayPowerState;I)V +HPLcom/android/server/display/DisplayPowerState$2;->setValue(Ljava/lang/Object;I)V +HPLcom/android/server/display/DisplayPowerState$3;->run()V +HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V +HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(II)Z +HPLcom/android/server/display/DisplayPowerState;->-get1()Z +HPLcom/android/server/display/DisplayPowerState;->-get2(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayBlanker; +HPLcom/android/server/display/DisplayPowerState;->-get4(Lcom/android/server/display/DisplayPowerState;)F +HPLcom/android/server/display/DisplayPowerState;->-get6(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayPowerState$PhotonicModulator; +HPLcom/android/server/display/DisplayPowerState;->-get7(Lcom/android/server/display/DisplayPowerState;)I +HPLcom/android/server/display/DisplayPowerState;->-get8(Lcom/android/server/display/DisplayPowerState;)I +HPLcom/android/server/display/DisplayPowerState;->-set2(Lcom/android/server/display/DisplayPowerState;Z)Z +HPLcom/android/server/display/DisplayPowerState;->-set3(Lcom/android/server/display/DisplayPowerState;Z)Z +HPLcom/android/server/display/DisplayPowerState;->-wrap0(Lcom/android/server/display/DisplayPowerState;)V +HPLcom/android/server/display/DisplayPowerState;->-wrap1(Lcom/android/server/display/DisplayPowerState;)V +HPLcom/android/server/display/DisplayPowerState;->dismissColorFade()V +HPLcom/android/server/display/DisplayPowerState;->getScreenState()I +HPLcom/android/server/display/DisplayPowerState;->invokeCleanListenerIfNeeded()V +HPLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V +HPLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V +HPLcom/android/server/display/DisplayPowerState;->setScreenBrightness(I)V +HPLcom/android/server/display/DisplayTransformManager;->setColorMatrix(I[F)V +HPLcom/android/server/display/LogicalDisplay;->getRequestedModeIdLocked()I +HPLcom/android/server/display/LogicalDisplay;->hasContentLocked()Z +HPLcom/android/server/display/LogicalDisplay;->setDisplayInfoOverrideFromWindowManagerLocked(Landroid/view/DisplayInfo;)Z +HPLcom/android/server/display/NightDisplayService$3;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V +HPLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HPLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->evaluate(F[F[F)[F +HPLcom/android/server/display/RampAnimator$1;->run()V HPLcom/android/server/display/RampAnimator$Listener;->onAnimationEnd()V -HPLcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;->createDisplay(Ljava/lang/String;Z)Landroid/os/IBinder; +HPLcom/android/server/display/RampAnimator;->-get0(Lcom/android/server/display/RampAnimator;)F +HPLcom/android/server/display/RampAnimator;->-get1(Lcom/android/server/display/RampAnimator;)Landroid/view/Choreographer; +HPLcom/android/server/display/RampAnimator;->-get2(Lcom/android/server/display/RampAnimator;)I +HPLcom/android/server/display/RampAnimator;->-get3(Lcom/android/server/display/RampAnimator;)J +HPLcom/android/server/display/RampAnimator;->-get5(Lcom/android/server/display/RampAnimator;)Ljava/lang/Object; +HPLcom/android/server/display/RampAnimator;->-get6(Lcom/android/server/display/RampAnimator;)Landroid/util/IntProperty; +HPLcom/android/server/display/RampAnimator;->-get7(Lcom/android/server/display/RampAnimator;)I +HPLcom/android/server/display/RampAnimator;->-get8(Lcom/android/server/display/RampAnimator;)I +HPLcom/android/server/display/RampAnimator;->-set0(Lcom/android/server/display/RampAnimator;F)F +HPLcom/android/server/display/RampAnimator;->-set2(Lcom/android/server/display/RampAnimator;I)I +HPLcom/android/server/display/RampAnimator;->-set3(Lcom/android/server/display/RampAnimator;J)J +HPLcom/android/server/display/RampAnimator;->-wrap0(Lcom/android/server/display/RampAnimator;)V +HPLcom/android/server/display/RampAnimator;->animateTo(II)Z +HPLcom/android/server/display/RampAnimator;->postAnimationCallback()V HPLcom/android/server/dreams/DreamController$Listener;->onDreamStopped(Landroid/os/Binder;)V +HPLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z HPLcom/android/server/dreams/DreamManagerService;->-wrap3(Lcom/android/server/dreams/DreamManagerService;)Z HPLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->queryByComponent(Landroid/content/ComponentName;Ljava/util/List;)V +HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V HPLcom/android/server/firewall/IntentFirewall;->checkBroadcast(Landroid/content/Intent;IILjava/lang/String;I)Z HPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z +HPLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z +HPLcom/android/server/input/InputManagerService$5;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V +HPLcom/android/server/input/InputManagerService$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HPLcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->getPointerLayer()I @@ -936,48 +2479,186 @@ HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyI HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyLidSwitchChanged(JZ)V HPLcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;->notifyWiredAccessoryChanged(JII)V HPLcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;->systemReady()V +HPLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V +HPLcom/android/server/input/InputManagerService;->getCurrentKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String; +HPLcom/android/server/input/InputManagerService;->getExcludedDeviceNames()[Ljava/lang/String; +HPLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/InputDevice; +HPLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I +HPLcom/android/server/input/InputManagerService;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String; +HPLcom/android/server/input/InputManagerService;->getLayoutDescriptor(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String; +HPLcom/android/server/input/InputManagerService;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList; +HPLcom/android/server/input/InputManagerService;->getSwitchState(III)I +HPLcom/android/server/input/InputManagerService;->injectInputEvent(Landroid/view/InputEvent;I)Z +HPLcom/android/server/input/InputManagerService;->injectInputEventInternal(Landroid/view/InputEvent;II)Z +HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J +HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I +HPLcom/android/server/input/InputManagerService;->monitor()V +HPLcom/android/server/input/InputManagerService;->registerInputChannel(Landroid/view/InputChannel;Lcom/android/server/input/InputWindowHandle;)V HPLcom/android/server/input/InputManagerService;->setInputWindows([Lcom/android/server/input/InputWindowHandle;Lcom/android/server/input/InputWindowHandle;)V +HPLcom/android/server/input/InputManagerService;->setSystemUiVisibility(I)V +HPLcom/android/server/input/InputManagerService;->updateKeyboardLayouts()V +HPLcom/android/server/input/InputManagerService;->visitAllKeyboardLayouts(Lcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V HPLcom/android/server/input/InputManagerService;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V +HPLcom/android/server/input/InputWindowHandle;-><init>(Lcom/android/server/input/InputApplicationHandle;Ljava/lang/Object;Landroid/view/IWindow;I)V +HPLcom/android/server/input/InputWindowHandle;->finalize()V +HPLcom/android/server/input/PersistentDataStore;->getCurrentKeyboardLayout(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/input/PersistentDataStore;->getInputDeviceState(Ljava/lang/String;Z)Lcom/android/server/input/PersistentDataStore$InputDeviceState; +HPLcom/android/server/input/PersistentDataStore;->loadIfNeeded()V HPLcom/android/server/job/JobCompletedListener;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;JI)V +HPLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V +HPLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry; +HPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry; +HPLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J +HPLcom/android/server/job/JobPackageTracker$DataSet;->incPending(ILjava/lang/String;J)V +HPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;II)V +HPLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F +HPLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobPackageTracker;->noteConcurrency(II)V +HPLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;I)V +HPLcom/android/server/job/JobPackageTracker;->noteNonpending(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V HPLcom/android/server/job/JobSchedulerInternal;->addBackingUpUid(I)V HPLcom/android/server/job/JobSchedulerInternal;->clearAllBackingUpUids()V +HPLcom/android/server/job/JobSchedulerInternal;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats; HPLcom/android/server/job/JobSchedulerInternal;->getSystemScheduledPendingJobs()Ljava/util/List; HPLcom/android/server/job/JobSchedulerInternal;->removeBackingUpUid(I)V -HPLcom/android/server/job/JobSchedulerService$3;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService$2;->onUidStateChanged(IIJ)V +HPLcom/android/server/job/JobSchedulerService$4;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(I)V +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(ILandroid/app/job/JobInfo;)V +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(I)Landroid/app/job/JobInfo; +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Landroid/app/job/JobInfo;)I +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I +HPLcom/android/server/job/JobSchedulerService$LocalService$1;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService$LocalService;->getSystemScheduledPendingJobs()Ljava/util/List; HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->process(Lcom/android/server/job/controllers/JobStatus;)V HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService;->-wrap0(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)Z HPLcom/android/server/job/JobSchedulerService;->-wrap1(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobSchedulerService;->-wrap5(Lcom/android/server/job/JobSchedulerService;)V +HPLcom/android/server/job/JobSchedulerService;->-wrap6(Lcom/android/server/job/JobSchedulerService;)V +HPLcom/android/server/job/JobSchedulerService;->addOrderedItem(Ljava/util/ArrayList;Ljava/lang/Object;Ljava/util/Comparator;)V +HPLcom/android/server/job/JobSchedulerService;->adjustJobPriority(ILcom/android/server/job/controllers/JobStatus;)I HPLcom/android/server/job/JobSchedulerService;->assignJobsToContextsLocked()V +HPLcom/android/server/job/JobSchedulerService;->cancelJob(II)V +HPLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Ljava/lang/String;)V +HPLcom/android/server/job/JobSchedulerService;->evaluateJobPriorityLocked(Lcom/android/server/job/controllers/JobStatus;)I +HPLcom/android/server/job/JobSchedulerService;->findJobContextIdFromMap(Lcom/android/server/job/controllers/JobStatus;[Lcom/android/server/job/controllers/JobStatus;)I +HPLcom/android/server/job/JobSchedulerService;->getPendingJob(II)Landroid/app/job/JobInfo; +HPLcom/android/server/job/JobSchedulerService;->getPendingJobs(I)Ljava/util/List; +HPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus; HPLcom/android/server/job/JobSchedulerService;->isCurrentlyActiveLocked(Lcom/android/server/job/controllers/JobStatus;)Z HPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V +HPLcom/android/server/job/JobSchedulerService;->noteJobsNonpending(Ljava/util/List;)V +HPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V HPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V +HPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;)I HPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)Z HPLcom/android/server/job/JobSchedulerService;->stopNonReadyActiveJobsLocked()V +HPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z +HPLcom/android/server/job/JobSchedulerService;->updateUidState(II)V +HPLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V +HPLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V +HPLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V +HPLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->clearPreferredUid()V +HPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->doAcknowledgeStartMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V +HPLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->doCompleteWork(Lcom/android/server/job/JobServiceContext$JobCallback;II)Z +HPLcom/android/server/job/JobServiceContext;->doDequeueWork(Lcom/android/server/job/JobServiceContext$JobCallback;I)Landroid/app/job/JobWorkItem; +HPLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V +HPLcom/android/server/job/JobServiceContext;->doServiceBoundLocked()V +HPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobServiceContext;->getPreferredUid()I HPLcom/android/server/job/JobServiceContext;->getRunningJobLocked()Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V +HPLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V +HPLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLcom/android/server/job/JobServiceContext;->removeOpTimeOutLocked()V +HPLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V +HPLcom/android/server/job/JobServiceContext;->verifyCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z +HPLcom/android/server/job/JobStore$1$1;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobStore$1;->addAttributesToJobTag(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobStore$1;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle; +HPLcom/android/server/job/JobStore$1;->run()V +HPLcom/android/server/job/JobStore$1;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/job/JobStore$1;->writeConstraintsToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobStore$1;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobStore$1;->writeJobsMapImpl(Ljava/util/List;)V +HPLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I +HPLcom/android/server/job/JobStore$JobSet;->forEachJob(ILcom/android/server/job/JobStore$JobStatusFunctor;)V HPLcom/android/server/job/JobStore$JobSet;->forEachJob(Lcom/android/server/job/JobStore$JobStatusFunctor;)V -HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildExecutionTimesFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/Pair; -HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/job/controllers/JobStatus; -HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable$1;->process(Lcom/android/server/job/controllers/JobStatus;)V -HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->addAttributesToJobTag(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V -HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle; -HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V -HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->writeConstraintsToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V -HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V -HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->writeJobsMapImpl(Ljava/util/List;)V +HPLcom/android/server/job/JobStore$JobSet;->get(II)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobStore$JobSet;->getJobsByUid(I)Ljava/util/List; +HPLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildBuilderFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/job/JobInfo$Builder; +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildRtcExecutionTimesFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/Pair; +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(Ljava/io/FileInputStream;Z)Ljava/util/List; +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(ZLorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V +HPLcom/android/server/job/JobStore;->-get1(Lcom/android/server/job/JobStore;)Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats; +HPLcom/android/server/job/JobStore;->-wrap1(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore;->containsJob(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore;->convertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair; +HPLcom/android/server/job/JobStore;->countJobsForUid(I)I +HPLcom/android/server/job/JobStore;->forEachJob(Lcom/android/server/job/JobStore$JobStatusFunctor;)V +HPLcom/android/server/job/JobStore;->getJobByUidAndJobId(II)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobStore;->isSyncJob(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V +HPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z HPLcom/android/server/job/StateChangedListener;->onControllerStateChanged()V HPLcom/android/server/job/StateChangedListener;->onDeviceIdleStateChanged(Z)V HPLcom/android/server/job/StateChangedListener;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V +HPLcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc;-><init>(ILjava/lang/String;Z)V HPLcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc;->process(Lcom/android/server/job/controllers/JobStatus;)V -HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/NetworkCapabilities;)Z -HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobs(ILandroid/net/NetworkCapabilities;)V -HPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;IJJ)V +HPLcom/android/server/job/controllers/AppIdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/BatteryController;->maybeReportNewChargingStateLocked()V +HPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobs(I)V +HPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;IJJJJ)V HPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z +HPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem; +HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/IActivityManager;Landroid/app/job/JobWorkItem;)V +HPLcom/android/server/job/controllers/JobStatus;->getBatteryName()Ljava/lang/String; HPLcom/android/server/job/controllers/JobStatus;->getEarliestRunTime()J HPLcom/android/server/job/controllers/JobStatus;->getFlags()I HPLcom/android/server/job/controllers/JobStatus;->getJob()Landroid/app/job/JobInfo; HPLcom/android/server/job/controllers/JobStatus;->getJobId()I +HPLcom/android/server/job/controllers/JobStatus;->getLastFailedRunTime()J +HPLcom/android/server/job/controllers/JobStatus;->getLastSuccessfulRunTime()J HPLcom/android/server/job/controllers/JobStatus;->getLatestRunTimeElapsed()J HPLcom/android/server/job/controllers/JobStatus;->getNumFailures()I +HPLcom/android/server/job/controllers/JobStatus;->getPersistedUtcTimes()Landroid/util/Pair; HPLcom/android/server/job/controllers/JobStatus;->getPriority()I HPLcom/android/server/job/controllers/JobStatus;->getServiceComponent()Landroid/content/ComponentName; HPLcom/android/server/job/controllers/JobStatus;->getSourcePackageName()Ljava/lang/String; @@ -985,23 +2666,54 @@ HPLcom/android/server/job/controllers/JobStatus;->getSourceTag()Ljava/lang/Strin HPLcom/android/server/job/controllers/JobStatus;->getSourceUid()I HPLcom/android/server/job/controllers/JobStatus;->getSourceUserId()I HPLcom/android/server/job/controllers/JobStatus;->getUid()I +HPLcom/android/server/job/controllers/JobStatus;->getUserId()I HPLcom/android/server/job/controllers/JobStatus;->hasBatteryNotLowConstraint()Z HPLcom/android/server/job/controllers/JobStatus;->hasChargingConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasConnectivityConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasContentTriggerConstraint()Z HPLcom/android/server/job/controllers/JobStatus;->hasDeadlineConstraint()Z HPLcom/android/server/job/controllers/JobStatus;->hasIdleConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasPowerConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasStorageNotLowConstraint()Z HPLcom/android/server/job/controllers/JobStatus;->hasTimingDelayConstraint()Z HPLcom/android/server/job/controllers/JobStatus;->isConstraintSatisfied(I)Z HPLcom/android/server/job/controllers/JobStatus;->isConstraintsSatisfied()Z HPLcom/android/server/job/controllers/JobStatus;->isPersisted()Z HPLcom/android/server/job/controllers/JobStatus;->isReady()Z +HPLcom/android/server/job/controllers/JobStatus;->matches(II)Z HPLcom/android/server/job/controllers/JobStatus;->needsAnyConnectivity()Z HPLcom/android/server/job/controllers/JobStatus;->needsMeteredConnectivity()Z HPLcom/android/server/job/controllers/JobStatus;->needsNonRoamingConnectivity()Z HPLcom/android/server/job/controllers/JobStatus;->needsUnmeteredConnectivity()Z +HPLcom/android/server/job/controllers/JobStatus;->prepareLocked(Landroid/app/IActivityManager;)V +HPLcom/android/server/job/controllers/JobStatus;->setAppNotIdleConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setConnectivityConstraintSatisfied(Z)Z HPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IZ)Z +HPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(ZZ)Z +HPLcom/android/server/job/controllers/JobStatus;->setMeteredConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setNotRoamingConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setTimingDelayConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setTrackingController(I)V +HPLcom/android/server/job/controllers/JobStatus;->setUnmeteredConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Landroid/app/IActivityManager;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/JobStatus;->ungrantWorkList(Landroid/app/IActivityManager;Ljava/util/ArrayList;)V +HPLcom/android/server/job/controllers/JobStatus;->unprepareLocked(Landroid/app/IActivityManager;)V +HPLcom/android/server/job/controllers/StateController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V HPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V +HPLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z HPLcom/android/server/job/controllers/TimeController;->evaluateTimingDelayConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z +HPLcom/android/server/job/controllers/TimeController;->maybeAdjustAlarmTime(J)J HPLcom/android/server/job/controllers/TimeController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JI)V +HPLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;JI)V +HPLcom/android/server/lights/LightsService$LightImpl;->setColor(I)V +HPLcom/android/server/location/ContextHubService;->addAppInstance(IIJI)I +HPLcom/android/server/location/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I +HPLcom/android/server/location/ContextHubService;->onMessageReceipt([I[B)I HPLcom/android/server/location/CountryDetectorBase;->detectCountry()Landroid/location/Country; HPLcom/android/server/location/CountryDetectorBase;->stop()V HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->flush()V @@ -1010,33 +2722,127 @@ HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->start HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->stop()Z HPLcom/android/server/location/GnssLocationProvider$GnssMetricsProvider;->getGnssMetricsAsProtoString()Ljava/lang/String; HPLcom/android/server/location/GnssLocationProvider$GnssSystemInfoProvider;->getGnssYearOfHardware()I +HPLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleMessage(Landroid/os/Message;)V HPLcom/android/server/location/GnssLocationProvider$SetCarrierProperty;->set(I)Z +HPLcom/android/server/location/GnssLocationProvider;->handleUpdateLocation(Landroid/location/Location;)V +HPLcom/android/server/location/GnssLocationProvider;->reportNmea(J)V +HPLcom/android/server/location/GnssLocationProvider;->reportSvStatus()V +HPLcom/android/server/location/GnssLocationProvider;->sendMessage(IILjava/lang/Object;)V +HPLcom/android/server/location/GnssLocationProvider;->updateRequirements()V +HPLcom/android/server/location/GnssLocationProvider;->updateStatus(IIII)V +HPLcom/android/server/location/GnssStatusListenerHelper$4;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;I[I[F[F[F[F)V +HPLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/location/IGnssStatusListener;)V +HPLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/os/IInterface;)V +HPLcom/android/server/location/GnssStatusListenerHelper$5;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;JLjava/lang/String;)V +HPLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/location/IGnssStatusListener;)V +HPLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/os/IInterface;)V +HPLcom/android/server/location/GnssStatusListenerHelper;->onNmeaReceived(JLjava/lang/String;)V +HPLcom/android/server/location/GnssStatusListenerHelper;->onSvStatusChanged(I[I[F[F[F[F)V +HPLcom/android/server/location/LocationBlacklist;->isBlacklisted(Ljava/lang/String;)Z +HPLcom/android/server/location/LocationFudger;->getOrCreate(Landroid/location/Location;)Landroid/location/Location; +HPLcom/android/server/location/LocationProviderProxy;->getName()Ljava/lang/String; +HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;-><init>(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V +HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;->run()V +HPLcom/android/server/location/RemoteListenerHelper$LinkedListener;->getUnderlyingListener()Landroid/os/IInterface; HPLcom/android/server/location/RemoteListenerHelper$ListenerOperation;->execute(Landroid/os/IInterface;)V +HPLcom/android/server/location/RemoteListenerHelper;->foreach(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V +HPLcom/android/server/location/RemoteListenerHelper;->foreachUnsafe(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V +HPLcom/android/server/location/RemoteListenerHelper;->post(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V +HPLcom/android/server/locksettings/LockSettingsService;->checkReadPermission(Ljava/lang/String;I)V +HPLcom/android/server/locksettings/LockSettingsService;->getLong(Ljava/lang/String;JI)J +HPLcom/android/server/locksettings/LockSettingsService;->getStringUnchecked(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I +HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->set(ILjava/lang/String;I)Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey; +HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z +HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasKeyValue(Ljava/lang/String;I)Z +HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object; +HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; HPLcom/android/server/locksettings/LockSettingsStorage$Callback;->initialize(Landroid/database/sqlite/SQLiteDatabase;)V +HPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; HPLcom/android/server/media/AudioPlaybackMonitor$OnAudioPlaybackStartedListener;->onAudioPlaybackStarted(I)V +HPLcom/android/server/media/AudioPlaybackMonitor$OnAudioPlayerActiveStateChangedListener;->onAudioPlayerActiveStateChanged(IZ)V +HPLcom/android/server/media/AudioPlaybackMonitor;->dispatchPlaybackConfigChange(Ljava/util/List;)V +HPLcom/android/server/media/AudioPlaybackMonitor;->isActiveState(Ljava/lang/Integer;)Z +HPLcom/android/server/media/MediaSessionRecord;->getStateWithUpdatedPosition()Landroid/media/session/PlaybackState; +HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List; +HPLcom/android/server/media/MediaSessionService;->getActiveSessionsLocked(I)Ljava/util/List; +HPLcom/android/server/media/MediaSessionService;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionService$FullUserRecord; +HPLcom/android/server/media/MediaSessionService;->pushSessionsChanged(I)V HPLcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord;)V +HPLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/ArrayList; HPLcom/android/server/media/RemoteDisplayProviderProxy$Callback;->onDisplayStateChanged(Lcom/android/server/media/RemoteDisplayProviderProxy;Landroid/media/RemoteDisplayState;)V +HPLcom/android/server/media/RemoteDisplayProviderProxy;->hasComponentName(Ljava/lang/String;Ljava/lang/String;)Z HPLcom/android/server/media/RemoteDisplayProviderWatcher$Callback;->addProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;)V HPLcom/android/server/media/RemoteDisplayProviderWatcher$Callback;->removeProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;)V +HPLcom/android/server/media/RemoteDisplayProviderWatcher;->scanPackages()V +HPLcom/android/server/midi/MidiService;->addPackageDeviceServer(Landroid/content/pm/ServiceInfo;)V +HPLcom/android/server/midi/MidiService;->addPackageDeviceServers(Ljava/lang/String;)V +HPLcom/android/server/net/NetworkIdentitySet;-><init>(Ljava/io/DataInputStream;)V HPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberMetered()Z HPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberRoaming()Z +HPLcom/android/server/net/NetworkIdentitySet;->readOptionalString(Ljava/io/DataInputStream;)Ljava/lang/String; +HPLcom/android/server/net/NetworkIdentitySet;->writeOptionalString(Ljava/io/DataOutputStream;Ljava/lang/String;)V HPLcom/android/server/net/NetworkIdentitySet;->writeToStream(Ljava/io/DataOutputStream;)V HPLcom/android/server/net/NetworkPolicyManagerInternal;->isUidNetworkingBlocked(ILjava/lang/String;)Z HPLcom/android/server/net/NetworkPolicyManagerInternal;->isUidRestrictedOnMeteredNetworks(I)Z HPLcom/android/server/net/NetworkPolicyManagerInternal;->resetUserState(I)V +HPLcom/android/server/net/NetworkPolicyManagerService$14;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/net/NetworkPolicyManagerService$1;->onUidGone(IZ)V +HPLcom/android/server/net/NetworkPolicyManagerService$1;->onUidStateChanged(IIJ)V +HPLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->isUidNetworkingBlocked(ILjava/lang/String;)Z -HPLcom/android/server/net/NetworkPolicyManagerService;->findPolicyForNetworkNL(Landroid/net/NetworkIdentity;)Landroid/net/NetworkPolicy; +HPLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->addProcStateSeqUL(IJ)V +HPLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->increaseNext(II)I +HPLcom/android/server/net/NetworkPolicyManagerService;->-get2(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/ArraySet; +HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap20(Lcom/android/server/net/NetworkPolicyManagerService;I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap3(Lcom/android/server/net/NetworkPolicyManagerService;IZ)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap9(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;II)V +HPLcom/android/server/net/NetworkPolicyManagerService;->dispatchUidRulesChanged(Landroid/net/INetworkPolicyListener;II)V HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidChanged(IIJ)V -HPLcom/android/server/net/NetworkPolicyManagerService;->isNetworkMetered(Landroid/net/NetworkState;)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidGone(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissions(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->hasRule(II)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidNetworkingBlockedInternal(IZ)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidStateForegroundUL(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForBlacklistRules(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForWhitelistRules(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isWhitelistedBatterySaverUL(IZ)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRule(III)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundRulesOnUidStatusChangedUL(III)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllAppsUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleParoleUL()V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IIZ)I +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IIZ)I +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempWhitelistChangeUL()V HPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(II)V +HPLcom/android/server/net/NetworkStatsAccess;->isAccessibleToUser(III)Z HPLcom/android/server/net/NetworkStatsCollection$Key;-><init>(Lcom/android/server/net/NetworkIdentitySet;III)V +HPLcom/android/server/net/NetworkStatsCollection$Key;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/net/NetworkStatsCollection$Key;->hashCode()I HPLcom/android/server/net/NetworkStatsCollection;->findOrCreateHistory(Lcom/android/server/net/NetworkIdentitySet;III)Landroid/net/NetworkStatsHistory; -HPLcom/android/server/net/NetworkStatsCollection;->getSummary(Landroid/net/NetworkTemplate;JJI)Landroid/net/NetworkStats; HPLcom/android/server/net/NetworkStatsCollection;->getSummary(Landroid/net/NetworkTemplate;JJII)Landroid/net/NetworkStats; +HPLcom/android/server/net/NetworkStatsCollection;->noteRecordedHistory(JJJ)V +HPLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/DataInputStream;)V HPLcom/android/server/net/NetworkStatsCollection;->recordData(Lcom/android/server/net/NetworkIdentitySet;IIIJJLandroid/net/NetworkStats$Entry;)V +HPLcom/android/server/net/NetworkStatsCollection;->recordHistory(Lcom/android/server/net/NetworkStatsCollection$Key;Landroid/net/NetworkStatsHistory;)V HPLcom/android/server/net/NetworkStatsCollection;->templateMatches(Landroid/net/NetworkTemplate;Lcom/android/server/net/NetworkIdentitySet;)Z HPLcom/android/server/net/NetworkStatsCollection;->write(Ljava/io/DataOutputStream;)V +HPLcom/android/server/net/NetworkStatsRecorder;->forcePersistLocked(J)V +HPLcom/android/server/net/NetworkStatsRecorder;->getTotalSinceBootLocked(Landroid/net/NetworkTemplate;)Landroid/net/NetworkStats$Entry; +HPLcom/android/server/net/NetworkStatsRecorder;->maybePersistLocked(J)V HPLcom/android/server/net/NetworkStatsRecorder;->recordSnapshotLocked(Landroid/net/NetworkStats;Ljava/util/Map;[Lcom/android/internal/net/VpnInfo;J)V +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getAugmentEnabled()Z HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getDevConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getDevPersistBytes(J)J HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getGlobalAlertBytes(J)J @@ -1049,17 +2855,50 @@ HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getUidTagCo HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getUidTagPersistBytes(J)J HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getXtConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getXtPersistBytes(J)J +HPLcom/android/server/net/NetworkStatsService;->performPollLocked(I)V +HPLcom/android/server/net/NetworkStatsService;->performSampleLocked()V +HPLcom/android/server/net/NetworkStatsService;->recordSnapshotLocked(J)V +HPLcom/android/server/net/NetworkStatsService;->setUidForeground(IZ)V +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->$m$0()V +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;-><init>(BILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->run()V +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;->$m$0(I)Z +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;->apply(I)Z +HPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; HPLcom/android/server/notification/CalendarTracker$Callback;->onChanged()V HPLcom/android/server/notification/ConditionProviders$Callback;->onBootComplete()V HPLcom/android/server/notification/ConditionProviders$Callback;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V HPLcom/android/server/notification/ConditionProviders$Callback;->onServiceAdded(Landroid/content/ComponentName;)V HPLcom/android/server/notification/ConditionProviders$Callback;->onUserSwitched()V +HPLcom/android/server/notification/ConditionProviders;->getConfig()Lcom/android/server/notification/ManagedServices$Config; +HPLcom/android/server/notification/ConditionProviders;->getRecordLocked(Landroid/net/Uri;Landroid/content/ComponentName;Z)Lcom/android/server/notification/ConditionProviders$ConditionRecord; HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I +HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HPLcom/android/server/notification/GroupHelper$Callback;->addAutoGroup(Ljava/lang/String;)V HPLcom/android/server/notification/GroupHelper$Callback;->addAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;)V HPLcom/android/server/notification/GroupHelper$Callback;->removeAutoGroup(Ljava/lang/String;)V HPLcom/android/server/notification/GroupHelper$Callback;->removeAutoGroupSummary(ILjava/lang/String;)V +HPLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/ManagedServices$Config;-><init>()V +HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z +HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z +HPLcom/android/server/notification/ManagedServices;->-get0(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet; +HPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +HPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List; +HPLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;[I)V +HPLcom/android/server/notification/ManagedServices;->rebindServices(Z)V +HPLcom/android/server/notification/ManagedServices;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/notification/NotificationAdjustmentExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; HPLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I +HPLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/notification/NotificationComparator;->isCall(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isMediaNotification(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isOngoing(Lcom/android/server/notification/NotificationRecord;)Z HPLcom/android/server/notification/NotificationDelegate;->clearEffects()V HPLcom/android/server/notification/NotificationDelegate;->onClearAll(III)V HPLcom/android/server/notification/NotificationDelegate;->onNotificationActionClick(IILjava/lang/String;I)V @@ -1071,18 +2910,111 @@ HPLcom/android/server/notification/NotificationDelegate;->onNotificationVisibili HPLcom/android/server/notification/NotificationDelegate;->onPanelHidden()V HPLcom/android/server/notification/NotificationDelegate;->onPanelRevealed(ZI)V HPLcom/android/server/notification/NotificationDelegate;->onSetDisabled(I)V +HPLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; HPLcom/android/server/notification/NotificationManagerInternal;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V HPLcom/android/server/notification/NotificationManagerInternal;->removeForegroundServiceFlagFromNotification(Ljava/lang/String;II)V -HPLcom/android/server/notification/NotificationManagerService$5;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V +HPLcom/android/server/notification/NotificationManagerService$14;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;ILjava/lang/String;IIIIZ)V +HPLcom/android/server/notification/NotificationManagerService$14;->run()V +HPLcom/android/server/notification/NotificationManagerService$15;->run()V +HPLcom/android/server/notification/NotificationManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/notification/NotificationManagerService$7;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V +HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V +HPLcom/android/server/notification/NotificationManagerService$7;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannel(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel; +HPLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->run()V HPLcom/android/server/notification/NotificationManagerService$FlagChecker;->apply(I)Z +HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getConfig()Lcom/android/server/notification/ManagedServices$Config; +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getConfig()Lcom/android/server/notification/ManagedServices$Config; +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$-com_android_server_notification_NotificationManagerService$NotificationListeners_242777(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;)V +HPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->run()V +HPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestSort()V +HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/notification/NotificationManagerService;->-get18(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners; +HPLcom/android/server/notification/NotificationManagerService;->-get25(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/RankingHelper; +HPLcom/android/server/notification/NotificationManagerService;->-get27(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper; +HPLcom/android/server/notification/NotificationManagerService;->-wrap18(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationManagerService;->-wrap3(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +HPLcom/android/server/notification/NotificationManagerService;->-wrap32(Lcom/android/server/notification/NotificationManagerService;)V +HPLcom/android/server/notification/NotificationManagerService;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsByListLocked(Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V +HPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;Z)Z +HPLcom/android/server/notification/NotificationManagerService;->clamp(III)I +HPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V +HPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord; +HPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord; +HPLcom/android/server/notification/NotificationManagerService;->getNotificationCountLocked(Ljava/lang/String;IILjava/lang/String;)I +HPLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V +HPLcom/android/server/notification/NotificationManagerService;->handleSavePolicyFile()V HPLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +HPLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I HPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z +HPLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z +HPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z +HPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z HPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate; +HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;I)Z +HPLcom/android/server/notification/NotificationManagerService;->savePolicyFile()V +HPLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;Z)V +HPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V +HPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V +HPLcom/android/server/notification/NotificationRecord;->applyUserImportance()V +HPLcom/android/server/notification/NotificationRecord;->calculateImportance()I +HPLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light; +HPLcom/android/server/notification/NotificationRecord;->canShowBadge()Z +HPLcom/android/server/notification/NotificationRecord;->getAuthoritativeRank()I +HPLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel; +HPLcom/android/server/notification/NotificationRecord;->getContactAffinity()F +HPLcom/android/server/notification/NotificationRecord;->getFlags()I +HPLcom/android/server/notification/NotificationRecord;->getFreshnessMs(J)I HPLcom/android/server/notification/NotificationRecord;->getGlobalSortKey()Ljava/lang/String; +HPLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String; HPLcom/android/server/notification/NotificationRecord;->getImportance()I +HPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence; +HPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String; +HPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker; HPLcom/android/server/notification/NotificationRecord;->getNotification()Landroid/app/Notification; +HPLcom/android/server/notification/NotificationRecord;->getPackagePriority()I +HPLcom/android/server/notification/NotificationRecord;->getPackageVisibilityOverride()I +HPLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList; +HPLcom/android/server/notification/NotificationRecord;->getRankingTimeMs()J +HPLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList; +HPLcom/android/server/notification/NotificationRecord;->getSuppressedVisualEffects()I +HPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle; +HPLcom/android/server/notification/NotificationRecord;->getUserExplanation()Ljava/lang/String; +HPLcom/android/server/notification/NotificationRecord;->getUserId()I +HPLcom/android/server/notification/NotificationRecord;->isIntercepted()Z +HPLcom/android/server/notification/NotificationRecord;->isRecentlyIntrusive()Z +HPLcom/android/server/notification/NotificationRecord;->setAuthoritativeRank(I)V +HPLcom/android/server/notification/NotificationRecord;->setGlobalSortKey(Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationRecord;->setPackagePriority(I)V +HPLcom/android/server/notification/NotificationRecord;->setPackageVisibilityOverride(I)V +HPLcom/android/server/notification/NotificationRecord;->setShowBadge(Z)V +HPLcom/android/server/notification/NotificationRecord;->setUserImportance(I)V +HPLcom/android/server/notification/NotificationRecord;->setVisibility(ZI)V +HPLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V +HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><init>(Landroid/content/Context;Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->increment(I)V +HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationDetails(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V +HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->writeEvent(JILcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Lcom/android/server/notification/NotificationRecord;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; +HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; HPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; +HPLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V +HPLcom/android/server/notification/NotificationUsageStats;->registerUpdatedByApp(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V +HPLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; HPLcom/android/server/notification/RankingConfig;->badgingEnabled(Landroid/os/UserHandle;)Z HPLcom/android/server/notification/RankingConfig;->canShowBadge(Ljava/lang/String;I)Z HPLcom/android/server/notification/RankingConfig;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V @@ -1099,34 +3031,148 @@ HPLcom/android/server/notification/RankingConfig;->setImportance(Ljava/lang/Stri HPLcom/android/server/notification/RankingConfig;->setShowBadge(Ljava/lang/String;IZ)V HPLcom/android/server/notification/RankingConfig;->updateNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;)V HPLcom/android/server/notification/RankingHandler;->requestReconsideration(Lcom/android/server/notification/RankingReconsideration;)V -HPLcom/android/server/notification/RankingHandler;->requestSort(Z)V +HPLcom/android/server/notification/RankingHandler;->requestSort()V +HPLcom/android/server/notification/RankingHelper;->badgingEnabled(Landroid/os/UserHandle;)Z +HPLcom/android/server/notification/RankingHelper;->canShowBadge(Ljava/lang/String;I)Z +HPLcom/android/server/notification/RankingHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V +HPLcom/android/server/notification/RankingHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;Z)V +HPLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/RankingHelper;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel; +HPLcom/android/server/notification/RankingHelper;->getOrCreateRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record; HPLcom/android/server/notification/RankingHelper;->getOrCreateRecord(Ljava/lang/String;IIIIZ)Lcom/android/server/notification/RankingHelper$Record; +HPLcom/android/server/notification/RankingHelper;->getRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record; +HPLcom/android/server/notification/RankingHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)V HPLcom/android/server/notification/RankingHelper;->readXml(Lorg/xmlpull/v1/XmlPullParser;Z)V HPLcom/android/server/notification/RankingHelper;->recordKey(Ljava/lang/String;I)Ljava/lang/String; -HPLcom/android/server/notification/RankingHelper;->safeInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I HPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V -HPLcom/android/server/notification/RankingHelper;->tryParseInt(Ljava/lang/String;I)I +HPLcom/android/server/notification/RankingHelper;->updateConfig()V HPLcom/android/server/notification/RankingHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V -HPLcom/android/server/notification/RankingReconsideration;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V -HPLcom/android/server/notification/RankingReconsideration;->work()V HPLcom/android/server/notification/SnoozeHelper$Callback;->repost(ILcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z +HPLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context; +HPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String; +HPLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[F)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration; +HPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Z)V +HPLcom/android/server/notification/ZenModeHelper;->applyRestrictions()V +HPLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZI)V +HPLcom/android/server/notification/ZenModeHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;-><init>(Ljava/lang/Object;)V +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->test(Ljava/lang/Object;)Z +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;-><init>(I)V +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->test(Ljava/lang/Object;)Z +HPLcom/android/server/om/OverlayManagerService$1;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; +HPLcom/android/server/om/OverlayManagerService$1;->handleIncomingUser(ILjava/lang/String;)I +HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/om/OverlayManagerService;->updateOverlayPaths(ILjava/util/List;)V HPLcom/android/server/om/OverlayManagerServiceImpl$OverlayChangeListener;->onOverlaysChanged(Ljava/lang/String;I)V HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->getOverlayPackages(I)Ljava/util/List; HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->signaturesMatching(Ljava/lang/String;Ljava/lang/String;I)Z +HPLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPackageNames(Ljava/lang/String;I)Ljava/util/List; +HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; +HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get7(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I +HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap9(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; +HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetPackageName()Ljava/lang/String; +HPLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; +HPLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(Ljava/lang/String;I)Ljava/util/List; +HPLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19551(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z +HPLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19778(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z +HPLcom/android/server/om/OverlayManagerSettings;->select(Ljava/lang/String;I)I +HPLcom/android/server/om/OverlayManagerSettings;->selectWhereTarget(Ljava/lang/String;I)Ljava/util/stream/Stream; +HPLcom/android/server/om/OverlayManagerSettings;->selectWhereUser(I)Ljava/util/stream/Stream; +HPLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->$m$1(Ljava/lang/Object;)V +HPLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->accept(Ljava/lang/Object;)V +HPLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->test(Ljava/lang/Object;)Z HPLcom/android/server/pm/AbstractStatsBase;->maybeWriteAsync(Ljava/lang/Object;)Z -HPLcom/android/server/pm/BasePermission;->isRuntimeOnly()Z +HPLcom/android/server/pm/BackgroundDexOptService;->getBatteryLevel()I +HPLcom/android/server/pm/BackgroundDexOptService;->postBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V +HPLcom/android/server/pm/CompilerStats$PackageStats;-><init>(Ljava/lang/String;)V +HPLcom/android/server/pm/CompilerStats;->createPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; +HPLcom/android/server/pm/CompilerStats;->getOrCreatePackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; +HPLcom/android/server/pm/CompilerStats;->maybeWriteAsync()Z +HPLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1;->sendResult(Landroid/os/Bundle;)V +HPLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->getEphemeralResolveInfoList(Landroid/app/IInstantAppResolver;[ILjava/lang/String;)Ljava/util/List; +HPLcom/android/server/pm/EphemeralResolverConnection;->getInstantAppResolveInfoList([ILjava/lang/String;)Ljava/util/List; +HPLcom/android/server/pm/EphemeralResolverConnection;->getRemoteInstanceLazy(Ljava/lang/String;)Landroid/app/IInstantAppResolver; +HPLcom/android/server/pm/EphemeralResolverConnection;->throwIfCalledOnMainThread()V +HPLcom/android/server/pm/InstantAppRegistry;->grantInstantAccessLPw(ILandroid/content/Intent;II)V +HPLcom/android/server/pm/InstantAppResolver;->doInstantAppResolutionPhaseOne(Landroid/content/Context;Lcom/android/server/pm/EphemeralResolverConnection;Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/AuxiliaryResolveInfo; +HPLcom/android/server/pm/InstructionSets;->getAllDexCodeInstructionSets()[Ljava/lang/String; +HPLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Landroid/content/pm/ApplicationInfo;)[Ljava/lang/String; +HPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSets([Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/server/pm/KeySetManagerService;->dumpLPr(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$DumpState;)V +HPLcom/android/server/pm/KeySetManagerService;->encodePublicKey(Ljava/security/PublicKey;)Ljava/lang/String; +HPLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/pm/KeySetManagerService;->writeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/pm/KeySetManagerService;->writePublicKeysLPr(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;ILjava/lang/String;)Z +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;)Z +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectCallingUserId()I +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(I)Z +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(Landroid/os/UserHandle;)Z +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageDexOptimizer;->acquireWakeLockLI(I)J +HPLcom/android/server/pm/PackageDexOptimizer;->canOptimizePackage(Landroid/content/pm/PackageParser$Package;)Z +HPLcom/android/server/pm/PackageDexOptimizer;->dexOptPath(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;IILcom/android/server/pm/CompilerStats$PackageStats;Z)I +HPLcom/android/server/pm/PackageDexOptimizer;->dumpDexoptState(Lcom/android/internal/util/IndentingPrintWriter;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V +HPLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)I +HPLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Z)I +HPLcom/android/server/pm/PackageDexOptimizer;->getDexoptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I +HPLcom/android/server/pm/PackageDexOptimizer;->getRealCompilerFilter(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Ljava/lang/String; +HPLcom/android/server/pm/PackageDexOptimizer;->performDexOpt(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageDexOptimizer;->performDexOptLI(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageDexOptimizer;->releaseWakeLockLI(J)V +HPLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap3(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIF)V +HPLcom/android/server/pm/PackageInstallerService$Callbacks;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/pm/PackageInstallerService$Callbacks;->invokeCallback(Landroid/content/pm/IPackageInstallerCallback;Landroid/os/Message;)V +HPLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionProgressChanged(IIF)V +HPLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionProgressChanged(Lcom/android/server/pm/PackageInstallerSession;F)V +HPLcom/android/server/pm/PackageInstallerService;->-get0(Lcom/android/server/pm/PackageInstallerService;)Lcom/android/server/pm/PackageInstallerService$Callbacks; +HPLcom/android/server/pm/PackageInstallerService;->createSessionInternal(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I +HPLcom/android/server/pm/PackageInstallerService;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo; +HPLcom/android/server/pm/PackageInstallerService;->writeSessionsLocked()V +HPLcom/android/server/pm/PackageInstallerSession;->addClientProgress(F)V +HPLcom/android/server/pm/PackageInstallerSession;->assertCallerIsOwnerOrRootLocked()V +HPLcom/android/server/pm/PackageInstallerSession;->buildAppIconFile(ILjava/io/File;)Ljava/io/File; +HPLcom/android/server/pm/PackageInstallerSession;->computeProgressLocked(Z)V +HPLcom/android/server/pm/PackageInstallerSession;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;)V +HPLcom/android/server/pm/PackageInstallerSession;->generateInfo()Landroid/content/pm/PackageInstaller$SessionInfo; +HPLcom/android/server/pm/PackageInstallerSession;->generateInfo(Z)Landroid/content/pm/PackageInstaller$SessionInfo; +HPLcom/android/server/pm/PackageInstallerSession;->openWriteInternal(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor; +HPLcom/android/server/pm/PackageInstallerSession;->setClientProgress(F)V +HPLcom/android/server/pm/PackageInstallerSession;->validateInstallLocked(Landroid/content/pm/PackageInfo;)V +HPLcom/android/server/pm/PackageInstallerSession;->write(Lorg/xmlpull/v1/XmlSerializer;Ljava/io/File;)V +HPLcom/android/server/pm/PackageManagerService$20;->getMountMode(ILjava/lang/String;)I +HPLcom/android/server/pm/PackageManagerService$20;->hasExternalStorage(ILjava/lang/String;)Z HPLcom/android/server/pm/PackageManagerService$2;->compare(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I HPLcom/android/server/pm/PackageManagerService$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->addActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V -HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z -HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;Ljava/util/List;)Z +HPLcom/android/server/pm/PackageManagerService$3;->compare(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I +HPLcom/android/server/pm/PackageManagerService$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/pm/PackageManagerService$6;->run()V +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)Landroid/util/ArrayMap; +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/pm/PackageParser$ActivityIntentInfo;)V HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isFilterStopped(Landroid/content/pm/PackageParser$ActivityIntentInfo;I)Z HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z -HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;II)Landroid/content/pm/ResolveInfo; HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/ArrayList;I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->removeActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService$DumpState;->isDumping(I)Z +HPLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleReturnCode()V HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleServiceError()V HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleStartCopy()V @@ -1138,154 +3184,421 @@ HPLcom/android/server/pm/PackageManagerService$InstallArgs;->doPreInstall(I)I HPLcom/android/server/pm/PackageManagerService$InstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z HPLcom/android/server/pm/PackageManagerService$InstallArgs;->getCodePath()Ljava/lang/String; HPLcom/android/server/pm/PackageManagerService$InstallArgs;->getResourcePath()Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService$InstallParams;->handleStartCopy()V HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->addOneIntentFilterVerification(IIILandroid/content/IntentFilter;Ljava/lang/String;)Z HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->receiveVerificationResponse(I)V HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->startVerifications(I)V +HPLcom/android/server/pm/PackageManagerService$PackageHandler;->doHandleMessage(Landroid/os/Message;)V +HPLcom/android/server/pm/PackageManagerService$PackageHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canAccessInstantApps(II)Z +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getActivityInfo(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getOverlayPackages(I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getTargetPackageNames(I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getUidTargetSdkVersion(I)I HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->grantEphemeralAccess(ILandroid/content/Intent;II)V -HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->addService(Landroid/content/pm/PackageParser$Service;)V +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageEphemeral(ILjava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackagePersistent(Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILjava/lang/String;Ljava/util/List;)Z +HPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getNamesForUids([I)[Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z +HPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ProviderIntentInfo;)Z +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)Landroid/util/ArrayMap; HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ServiceIntentInfo;Ljava/util/List;)Z +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/pm/PackageParser$ServiceIntentInfo;)V HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ServiceIntentInfo;)Z HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newResult(Landroid/content/pm/PackageParser$ServiceIntentInfo;II)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/ArrayList;I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->removeService(Landroid/content/pm/PackageParser$Service;)V +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->sortResults(Ljava/util/List;)V +HPLcom/android/server/pm/PackageManagerService;->-get7(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/InstantAppRegistry; +HPLcom/android/server/pm/PackageManagerService;->-wrap1(Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageManagerService;->-wrap18(Lcom/android/server/pm/PackageManagerService;I)I +HPLcom/android/server/pm/PackageManagerService;->-wrap6(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->-wrap7(Lcom/android/server/pm/PackageManagerService;II)Z +HPLcom/android/server/pm/PackageManagerService;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->canViewInstantApps(II)Z +HPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Ljava/lang/String;I)V HPLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I +HPLcom/android/server/pm/PackageManagerService;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I HPLcom/android/server/pm/PackageManagerService;->checkUidPermission(Ljava/lang/String;I)I HPLcom/android/server/pm/PackageManagerService;->checkUidSignatures(II)I -HPLcom/android/server/pm/PackageManagerService;->commitPackageSettings(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;IZ)V -HPLcom/android/server/pm/PackageManagerService;->compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I -HPLcom/android/server/pm/PackageManagerService;->enforceCrossUserPermission(IIZZLjava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->chooseBestActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->cleanPackageDataStructuresLILPw(Landroid/content/pm/PackageParser$Package;Z)V +HPLcom/android/server/pm/PackageManagerService;->collectAbsoluteCodePaths()Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->dumpCompilerStatsLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->dumpDexoptStateLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->enforceShellRestriction(Ljava/lang/String;II)V HPLcom/android/server/pm/PackageManagerService;->filterAppAccessLPr(Lcom/android/server/pm/PackageSetting;II)Z HPLcom/android/server/pm/PackageManagerService;->filterAppAccessLPr(Lcom/android/server/pm/PackageSetting;ILandroid/content/ComponentName;II)Z +HPLcom/android/server/pm/PackageManagerService;->filterCandidatesWithDomainPreferredActivitiesLPr(Landroid/content/Intent;ILjava/util/List;Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;I)Ljava/util/List; HPLcom/android/server/pm/PackageManagerService;->filterSharedLibPackageLPr(Lcom/android/server/pm/PackageSetting;III)Z -HPLcom/android/server/pm/PackageManagerService;->findPermissionTreeLP(Ljava/lang/String;)Lcom/android/server/pm/BasePermission; -HPLcom/android/server/pm/PackageManagerService;->fixProcessName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibraries(Landroid/content/pm/PackageParser$Package;)Ljava/util/List; HPLcom/android/server/pm/PackageManagerService;->generatePackageInfo(Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo; +HPLcom/android/server/pm/PackageManagerService;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageManagerService;->getActivityInfoInternal(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; HPLcom/android/server/pm/PackageManagerService;->getApplicationEnabledSetting(Ljava/lang/String;I)I HPLcom/android/server/pm/PackageManagerService;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo; HPLcom/android/server/pm/PackageManagerService;->getApplicationInfoInternal(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo; +HPLcom/android/server/pm/PackageManagerService;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I HPLcom/android/server/pm/PackageManagerService;->getInstalledApplications(II)Landroid/content/pm/ParceledListSlice; HPLcom/android/server/pm/PackageManagerService;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice; -HPLcom/android/server/pm/PackageManagerService;->getInstantAppPackageName(I)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getNameForUid(I)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getNamesForUids([I)[Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getOptimizablePackages()Landroid/util/ArraySet; +HPLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/CompilerStats$PackageStats; +HPLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; +HPLcom/android/server/pm/PackageManagerService;->getPackageGids(Ljava/lang/String;II)[I HPLcom/android/server/pm/PackageManagerService;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; HPLcom/android/server/pm/PackageManagerService;->getPackageInfoInternal(Ljava/lang/String;IIII)Landroid/content/pm/PackageInfo; +HPLcom/android/server/pm/PackageManagerService;->getPackageInstaller()Landroid/content/pm/IPackageInstaller; HPLcom/android/server/pm/PackageManagerService;->getPackageUid(Ljava/lang/String;II)I HPLcom/android/server/pm/PackageManagerService;->getPackagesForUid(I)[Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getPersistentApplicationsInternal(I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo; +HPLcom/android/server/pm/PackageManagerService;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; HPLcom/android/server/pm/PackageManagerService;->getServiceInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ServiceInfo; +HPLcom/android/server/pm/PackageManagerService;->getSystemSharedLibraryNames()[Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getUidTargetSdkVersionLockedLPr(I)I HPLcom/android/server/pm/PackageManagerService;->getUserManagerInternal()Landroid/os/UserManagerInternal; -HPLcom/android/server/pm/PackageManagerService;->grantPermissionsLPw(Landroid/content/pm/PackageParser$Package;ZLjava/lang/String;)V -HPLcom/android/server/pm/PackageManagerService;->grantSignaturePermission(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/BasePermission;Lcom/android/server/pm/PermissionsState;)Z +HPLcom/android/server/pm/PackageManagerService;->handlePackagePostInstall(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V +HPLcom/android/server/pm/PackageManagerService;->hasPermission(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z +HPLcom/android/server/pm/PackageManagerService;->installPackageLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V HPLcom/android/server/pm/PackageManagerService;->isCallerSameApp(Ljava/lang/String;I)Z HPLcom/android/server/pm/PackageManagerService;->isInstantApp(Ljava/lang/String;I)Z HPLcom/android/server/pm/PackageManagerService;->isPackageAvailable(Ljava/lang/String;I)Z HPLcom/android/server/pm/PackageManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z -HPLcom/android/server/pm/PackageManagerService;->isSystemApp(Lcom/android/server/pm/PackageSetting;)Z +HPLcom/android/server/pm/PackageManagerService;->isProtectedBroadcast(Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService;->logAppProcessStartIfNeeded(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/pm/PackageManagerService;->maybeAddInstantAppInstaller(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V HPLcom/android/server/pm/PackageManagerService;->notifyPackageUse(Ljava/lang/String;I)V HPLcom/android/server/pm/PackageManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z -HPLcom/android/server/pm/PackageManagerService;->performDexOptInternal(Ljava/lang/String;ZLjava/lang/String;ZZ)I +HPLcom/android/server/pm/PackageManagerService;->performDexOptInternal(Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageManagerService;->performDexOptInternalWithDependenciesLI(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageManagerService;->performDexOptTraced(Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageManagerService;->performDexOptWithStatus(Lcom/android/server/pm/dex/DexoptOptions;)I HPLcom/android/server/pm/PackageManagerService;->queryContentProviders(Ljava/lang/String;IILjava/lang/String;)Landroid/content/pm/ParceledListSlice; -HPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; -HPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZ)Ljava/util/List; -HPLcom/android/server/pm/PackageManagerService;->queryIntentReceiversInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptionsInternal(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->queryIntentContentProvidersInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->queryIntentReceiversInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List; HPLcom/android/server/pm/PackageManagerService;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; HPLcom/android/server/pm/PackageManagerService;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZ)Ljava/util/List; HPLcom/android/server/pm/PackageManagerService;->reconcileApps(Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->replacePackageLIF(Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V +HPLcom/android/server/pm/PackageManagerService;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V HPLcom/android/server/pm/PackageManagerService;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo; HPLcom/android/server/pm/PackageManagerService;->resolveExternalPackageNameLPr(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->resolveIntentInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo; HPLcom/android/server/pm/PackageManagerService;->resolveInternalPackageNameLPr(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; HPLcom/android/server/pm/PackageManagerService;->resolveServiceInternal(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; -HPLcom/android/server/pm/PackageManagerService;->scanPackageDirtyLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HPLcom/android/server/pm/PackageManagerService;->revokeUnusedSharedUserPermissionsLPw(Lcom/android/server/pm/SharedUserSetting;[I)[I +HPLcom/android/server/pm/PackageManagerService;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V HPLcom/android/server/pm/PackageManagerService;->setEnabledSetting(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V HPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Ljava/lang/String;ZI)V -HPLcom/android/server/pm/PackageManagerService;->updateFlags(II)I HPLcom/android/server/pm/PackageManagerService;->updateFlagsForApplication(IILjava/lang/Object;)I -HPLcom/android/server/pm/PackageManagerService;->updateFlagsForComponent(IILjava/lang/Object;)I HPLcom/android/server/pm/PackageManagerService;->updateFlagsForPackage(IILjava/lang/Object;)I HPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZ)I -HPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZZ)I -HPLcom/android/server/pm/PackageManagerService;->updatePermissionsLPw(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Ljava/lang/String;I)V -HPLcom/android/server/pm/PackageManagerService;->userNeedsBadging(I)Z -HPLcom/android/server/pm/PackageSettingBase;->getInstalled(I)Z -HPLcom/android/server/pm/PackageSettingBase;->getInstantApp(I)Z -HPLcom/android/server/pm/PackageSettingBase;->readUserState(I)Landroid/content/pm/PackageUserState; -HPLcom/android/server/pm/PackageSignatures;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V -HPLcom/android/server/pm/PackageUsage;->readToken(Ljava/io/InputStream;Ljava/lang/StringBuffer;C)Ljava/lang/String; -HPLcom/android/server/pm/PermissionsState$PermissionData;-><init>(Lcom/android/server/pm/PermissionsState$PermissionData;)V -HPLcom/android/server/pm/PermissionsState$PermissionData;->getPermissionState(I)Lcom/android/server/pm/PermissionsState$PermissionState; -HPLcom/android/server/pm/PermissionsState$PermissionState;-><init>(Lcom/android/server/pm/PermissionsState$PermissionState;)V -HPLcom/android/server/pm/PermissionsState$PermissionState;->getFlags()I -HPLcom/android/server/pm/PermissionsState$PermissionState;->getName()Ljava/lang/String; -HPLcom/android/server/pm/PermissionsState$PermissionState;->isGranted()Z -HPLcom/android/server/pm/PermissionsState;->copyFrom(Lcom/android/server/pm/PermissionsState;)V -HPLcom/android/server/pm/PermissionsState;->getPermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState; -HPLcom/android/server/pm/PermissionsState;->getPermissionStatesInternal(I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->updateSettingsInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[I[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V +HPLcom/android/server/pm/PackageManagerService;->verifyIntentFiltersIfNeeded(IIZLandroid/content/pm/PackageParser$Package;)V +HPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getCompilerFilterForReason(I)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerServiceUtils;->checkISA(Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerShellCommand$1;->compare(Landroid/content/pm/FeatureInfo;Landroid/content/pm/FeatureInfo;)I +HPLcom/android/server/pm/PackageManagerShellCommand$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/pm/PackageManagerShellCommand;->doWriteSplit(ILjava/lang/String;JLjava/lang/String;Z)I +HPLcom/android/server/pm/PackageManagerShellCommand;->makeInstallParams()Lcom/android/server/pm/PackageManagerShellCommand$InstallParams; +HPLcom/android/server/pm/PackageManagerShellCommand;->runListFeatures()I +HPLcom/android/server/pm/PackageManagerShellCommand;->runListPackages(Z)I +HPLcom/android/server/pm/PackageSetting;->isSystem()Z +HPLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String; +HPLcom/android/server/pm/PackageSettingBase;->enableComponentLPw(Ljava/lang/String;I)Z +HPLcom/android/server/pm/PackageSettingBase;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I +HPLcom/android/server/pm/PackageSettingBase;->getEnabled(I)I +HPLcom/android/server/pm/PackageSettingBase;->getHidden(I)Z +HPLcom/android/server/pm/PackageSettingBase;->getLastDisabledAppCaller(I)Ljava/lang/String; +HPLcom/android/server/pm/PackageSettingBase;->getNotLaunched(I)Z +HPLcom/android/server/pm/PackageSettingBase;->getStopped(I)Z +HPLcom/android/server/pm/PackageSettingBase;->getSuspended(I)Z +HPLcom/android/server/pm/PackageSettingBase;->modifyUserStateComponents(IZZ)Landroid/content/pm/PackageUserState; +HPLcom/android/server/pm/PackageSettingBase;->setCeDataInode(JI)V +HPLcom/android/server/pm/PackageSettingBase;->setOverlayPaths(Ljava/util/List;I)V +HPLcom/android/server/pm/PermissionsState;->computeGids([I)[I HPLcom/android/server/pm/PermissionsState;->getPermissions(I)Ljava/util/Set; -HPLcom/android/server/pm/PermissionsState;->getRuntimePermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState; -HPLcom/android/server/pm/PermissionsState;->hasInstallPermission(Ljava/lang/String;)Z -HPLcom/android/server/pm/PermissionsState;->hasRuntimePermission(Ljava/lang/String;I)Z -HPLcom/android/server/pm/PreferredComponent$Callbacks;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z -HPLcom/android/server/pm/SELinuxMMAC;->assignSeInfoValue(Landroid/content/pm/PackageParser$Package;)V +HPLcom/android/server/pm/PermissionsState;->getRuntimePermissionStates(I)Ljava/util/List; +HPLcom/android/server/pm/PreferredActivity;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/pm/PreferredComponent;->sameSet([Landroid/content/ComponentName;)Z +HPLcom/android/server/pm/PreferredComponent;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V HPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissions(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V -HPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsSync(I)V -HPLcom/android/server/pm/Settings;->getAllUsers(Lcom/android/server/pm/UserManagerService;)Ljava/util/List; -HPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String; -HPLcom/android/server/pm/Settings;->getUserIdLPr(I)Ljava/lang/Object; -HPLcom/android/server/pm/Settings;->isEnabledAndMatchLPr(Landroid/content/pm/ComponentInfo;II)Z -HPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(I)V +HPLcom/android/server/pm/Settings;->dumpInstallPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PermissionsState;)V +HPLcom/android/server/pm/Settings;->dumpPackageLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageSetting;Ljava/text/SimpleDateFormat;Ljava/util/Date;Ljava/util/List;Z)V +HPLcom/android/server/pm/Settings;->dumpPackagesLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;Z)V +HPLcom/android/server/pm/Settings;->dumpPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;)V +HPLcom/android/server/pm/Settings;->dumpRuntimePermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/List;Z)V +HPLcom/android/server/pm/Settings;->dumpSharedUsersLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;Z)V +HPLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I +HPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I +HPLcom/android/server/pm/Settings;->permissionFlagsToString(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/pm/Settings;->printFlags(Ljava/io/PrintWriter;I[Ljava/lang/Object;)V HPLcom/android/server/pm/Settings;->setPackageStoppedStateLPw(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZZII)Z -HPLcom/android/server/pm/Settings;->writeIntToFile(Ljava/io/File;I)V -HPLcom/android/server/pm/Settings;->writeKernelMappingLPr()V -HPLcom/android/server/pm/Settings;->writeKernelMappingLPr(Lcom/android/server/pm/PackageSetting;)V -HPLcom/android/server/pm/Settings;->writeLPr()V -HPLcom/android/server/pm/Settings;->writePackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V +HPLcom/android/server/pm/Settings;->writeAllUsersPackageRestrictionsLPr()V +HPLcom/android/server/pm/Settings;->writeDefaultAppsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V +HPLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V HPLcom/android/server/pm/Settings;->writePackageListLPr(I)V HPLcom/android/server/pm/Settings;->writePackageRestrictionsLPr(I)V -HPLcom/android/server/pm/Settings;->writePermissionLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/BasePermission;)V -HPLcom/android/server/pm/Settings;->writePermissionsLPr(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V -HPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V +HPLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;IZ)V +HPLcom/android/server/pm/ShortcutPackage;->adjustRanks()V +HPLcom/android/server/pm/ShortcutPackage;->areAllActivitiesStillEnabled()Z +HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;I)V +HPLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lorg/xmlpull/v1/XmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage; +HPLcom/android/server/pm/ShortcutPackage;->parseIntent(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent; +HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Landroid/content/pm/ShortcutInfo; +HPLcom/android/server/pm/ShortcutPackage;->publishManifestShortcuts(Ljava/util/List;)Z +HPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/ShortcutInfo;Z)V +HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap; +HPLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z +HPLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V +HPLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo; +HPLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String; +HPLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I +HPLcom/android/server/pm/ShortcutParser;->parseShortcutAttributes(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;Ljava/lang/String;Landroid/content/ComponentName;II)Landroid/content/pm/ShortcutInfo; +HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z +HPLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z +HPLcom/android/server/pm/ShortcutService$3;->onUidStateChanged(IIJ)V +HPLcom/android/server/pm/ShortcutService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;II)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;I)V +HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_86800(JLandroid/util/ArraySet;Landroid/content/ComponentName;ILandroid/content/pm/ShortcutInfo;)Z +HPLcom/android/server/pm/ShortcutService;->-wrap0(Landroid/content/pm/PackageInfo;)Z +HPLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V +HPLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V +HPLcom/android/server/pm/ShortcutService;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HPLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher; +HPLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage; +HPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser; +HPLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V +HPLcom/android/server/pm/ShortcutService;->hasShortcutHostPermissionInner(Ljava/lang/String;I)Z +HPLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HPLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I +HPLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J +HPLcom/android/server/pm/ShortcutService;->injectCurrentTimeMillis()J HPLcom/android/server/pm/ShortcutService;->injectElapsedRealtime()J +HPLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I +HPLcom/android/server/pm/ShortcutService;->injectIsActivityEnabledAndExported(Landroid/content/ComponentName;I)Z +HPLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo; +HPLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V +HPLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ApplicationInfo;)Z +HPLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/PackageInfo;)Z +HPLcom/android/server/pm/ShortcutService;->isProcessStateForeground(I)Z +HPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z +HPLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V +HPLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I +HPLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent; +HPLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J +HPLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J +HPLcom/android/server/pm/ShortcutService;->parseStringAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService;->setReturnedByServer(Ljava/util/List;)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V +HPLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V +HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V +HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/Intent;)V HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V +HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V +HPLcom/android/server/pm/ShortcutService;->writeTagExtra(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/os/PersistableBundle;)V +HPLcom/android/server/pm/ShortcutUser$PackageWithUser;-><init>(ILjava/lang/String;)V +HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->hashCode()I +HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->of(ILjava/lang/String;)Lcom/android/server/pm/ShortcutUser$PackageWithUser; +HPLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V +HPLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher; +HPLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage; +HPLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage; +HPLcom/android/server/pm/ShortcutUser;->lambda$-com_android_server_pm_ShortcutUser_8319(ILjava/lang/String;Ljava/util/function/Consumer;Lcom/android/server/pm/ShortcutPackageItem;)V +HPLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V +HPLcom/android/server/pm/ShortcutUser;->saveShortcutPackageItem(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/ShortcutPackageItem;Z)V +HPLcom/android/server/pm/ShortcutUser;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z +HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlockingOrUnlocked(I)Z HPLcom/android/server/pm/UserManagerService;->-get9(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseIntArray; -HPLcom/android/server/pm/UserManagerService;->exists(I)Z -HPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService; +HPLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermIfCallerInOtherProfileGroup(ILjava/lang/String;)V +HPLcom/android/server/pm/UserManagerService;->checkManageUsersPermission(Ljava/lang/String;)V +HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle; HPLcom/android/server/pm/UserManagerService;->getProfileIds(IZ)[I -HPLcom/android/server/pm/UserManagerService;->getUserIds()[I -HPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo; -HPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo; -HPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo; +HPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(IZ)Landroid/util/IntArray; +HPLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo; +HPLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo; +HPLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List; +HPLcom/android/server/pm/UserManagerService;->getProfilesLU(IZZ)Ljava/util/List; +HPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I +HPLcom/android/server/pm/UserManagerService;->getUserHandle(I)I +HPLcom/android/server/pm/UserManagerService;->getUserRestrictions(I)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I HPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission()Z HPLcom/android/server/pm/UserManagerService;->hasManagedProfile(I)Z +HPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z +HPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z +HPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z +HPLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z +HPLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z +HPLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Landroid/util/AtomicFile;)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Ljava/lang/String;I)Landroid/os/Bundle; +HPLcom/android/server/pm/UserRestrictionsUtils;->clone(Landroid/os/Bundle;)Landroid/os/Bundle; +HPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z +HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->mergeAppDataDirs(Ljava/lang/String;I)V HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->searchDex(Ljava/lang/String;I)I +HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->updateCodeLocation(Ljava/lang/String;[Ljava/lang/String;)V HPLcom/android/server/pm/dex/DexManager;->-get3()I +HPLcom/android/server/pm/dex/DexManager;->-wrap0(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexManager;->cachePackageInfo(Landroid/content/pm/PackageInfo;I)V HPLcom/android/server/pm/dex/DexManager;->getDexPackage(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Lcom/android/server/pm/dex/DexManager$DexSearchResult; +HPLcom/android/server/pm/dex/DexManager;->getPackageUseInfoOrDefault(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; +HPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V +HPLcom/android/server/pm/dex/DexManager;->notifyDexLoadInternal(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexManager;->putIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;II)V +HPLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoader(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoaderChain(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->encodeClasspath(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->encodeClasspath([Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->getClassLoaderContexts(Landroid/content/pm/ApplicationInfo;[Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->processContextForDexLoad(Ljava/util/List;Ljava/util/List;)[Ljava/lang/String; +HPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)V +HPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V +HPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isUsedByOtherApps(Ljava/lang/String;)Z +HPLcom/android/server/pm/dex/PackageDexUsage;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; +HPLcom/android/server/pm/dex/PackageDexUsage;->read(Ljava/io/Reader;)V +HPLcom/android/server/pm/dex/PackageDexUsage;->record(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ZZLjava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/Map;Ljava/util/Map;)V +HPLcom/android/server/pm/dex/PackageDexUsage;->write(Ljava/io/Writer;)V +HPLcom/android/server/policy/AccessibilityShortcutController;->isAccessibilityShortcutAvailable(Z)Z HPLcom/android/server/policy/BarController$OnBarVisibilityChangedListener;->onBarVisibilityChanged(Z)V +HPLcom/android/server/policy/BarController;->adjustSystemUiVisibilityLw(II)V HPLcom/android/server/policy/BarController;->applyTranslucentFlagLw(Landroid/view/WindowManagerPolicy$WindowState;II)I +HPLcom/android/server/policy/BarController;->checkHiddenLw()Z +HPLcom/android/server/policy/BarController;->computeStateLw(ZZLandroid/view/WindowManagerPolicy$WindowState;Z)I +HPLcom/android/server/policy/BarController;->getStatusBarInternal()Lcom/android/server/statusbar/StatusBarManagerInternal; HPLcom/android/server/policy/BarController;->isTransientShowRequested()Z HPLcom/android/server/policy/BarController;->isTransientShowing()Z HPLcom/android/server/policy/BarController;->setBarShowingLw(Z)Z +HPLcom/android/server/policy/BarController;->setShowTransparent(Z)V +HPLcom/android/server/policy/BarController;->skipAnimation()Z +HPLcom/android/server/policy/BarController;->updateStateLw(I)Z HPLcom/android/server/policy/BarController;->updateVisibilityLw(ZII)I +HPLcom/android/server/policy/BarController;->wasRecentlyTranslucent()Z +HPLcom/android/server/policy/GlobalKeyManager;->handleGlobalKey(Landroid/content/Context;ILandroid/view/KeyEvent;)Z +HPLcom/android/server/policy/GlobalKeyManager;->shouldHandleGlobalKey(ILandroid/view/KeyEvent;)Z +HPLcom/android/server/policy/ImmersiveModeConfirmation;->getWindowToken()Landroid/os/IBinder; +HPLcom/android/server/policy/PhoneWindowManager$14;->onDown()V +HPLcom/android/server/policy/PhoneWindowManager$14;->onUpOrCancel()V +HPLcom/android/server/policy/PhoneWindowManager$21;-><init>(Lcom/android/server/policy/PhoneWindowManager;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/WindowManagerPolicy$WindowState;Z)V +HPLcom/android/server/policy/PhoneWindowManager$21;->run()V +HPLcom/android/server/policy/PhoneWindowManager;->addSplashScreen(Landroid/os/IBinder;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;I)Landroid/view/WindowManagerPolicy$StartingSurface; +HPLcom/android/server/policy/PhoneWindowManager;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V +HPLcom/android/server/policy/PhoneWindowManager;->adjustSystemUiVisibilityLw(I)I +HPLcom/android/server/policy/PhoneWindowManager;->adjustWindowParamsLw(Landroid/view/WindowManager$LayoutParams;)V HPLcom/android/server/policy/PhoneWindowManager;->applyKeyguardPolicyLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V HPLcom/android/server/policy/PhoneWindowManager;->applyPostLayoutPolicyLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +HPLcom/android/server/policy/PhoneWindowManager;->applyStableConstraints(IILandroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->areTranslucentBarsAllowed()Z HPLcom/android/server/policy/PhoneWindowManager;->beginLayoutLw(ZIIII)V +HPLcom/android/server/policy/PhoneWindowManager;->beginPostLayoutPolicyLw(II)V +HPLcom/android/server/policy/PhoneWindowManager;->calculateRelevantTaskInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;II)V HPLcom/android/server/policy/PhoneWindowManager;->canBeHiddenByKeyguardLw(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->canHideNavigationBar()Z +HPLcom/android/server/policy/PhoneWindowManager;->canReceiveInput(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->configureNavBarOpacity(IZZZ)I +HPLcom/android/server/policy/PhoneWindowManager;->drawsSystemBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->finishLayoutLw()V HPLcom/android/server/policy/PhoneWindowManager;->finishPostLayoutPolicyLw()I +HPLcom/android/server/policy/PhoneWindowManager;->focusChangedLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I +HPLcom/android/server/policy/PhoneWindowManager;->forcesDrawStatusBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayHeight(IIIII)I +HPLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayWidth(IIIII)I +HPLcom/android/server/policy/PhoneWindowManager;->getContentRectLw(Landroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->getInputMethodWindowVisibleHeightLw()I +HPLcom/android/server/policy/PhoneWindowManager;->getInsetHintLw(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLcom/android/server/policy/PhoneWindowManager;->getNavigationBarHeight(II)I +HPLcom/android/server/policy/PhoneWindowManager;->getNavigationBarWidth(II)I +HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayHeight(IIIII)I +HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayWidth(IIIII)I +HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorInsetsLw(IIILandroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->getStableInsetsLw(IIILandroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal; +HPLcom/android/server/policy/PhoneWindowManager;->getSystemDecorLayerLw()I HPLcom/android/server/policy/PhoneWindowManager;->inKeyguardRestrictedKeyInputMode()Z +HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J +HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I +HPLcom/android/server/policy/PhoneWindowManager;->isImmersiveMode(I)Z HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardLocked()Z HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowingAndNotOccluded()Z +HPLcom/android/server/policy/PhoneWindowManager;->isNavBarForcedShownLw(Landroid/view/WindowManagerPolicy$WindowState;)Z HPLcom/android/server/policy/PhoneWindowManager;->isScreenOn()Z +HPLcom/android/server/policy/PhoneWindowManager;->isShowingDreamLw()Z HPLcom/android/server/policy/PhoneWindowManager;->isStatusBarKeyguard()Z +HPLcom/android/server/policy/PhoneWindowManager;->isValidGlobalKey(I)Z HPLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z +HPLcom/android/server/policy/PhoneWindowManager;->layoutNavigationBar(IIIIIIILandroid/graphics/Rect;ZZZZ)Z +HPLcom/android/server/policy/PhoneWindowManager;->layoutStatusBar(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;IZ)Z +HPLcom/android/server/policy/PhoneWindowManager;->layoutWallpaper(Landroid/view/WindowManagerPolicy$WindowState;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V HPLcom/android/server/policy/PhoneWindowManager;->layoutWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +HPLcom/android/server/policy/PhoneWindowManager;->navigationBarPosition(III)I +HPLcom/android/server/policy/PhoneWindowManager;->offsetInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V +HPLcom/android/server/policy/PhoneWindowManager;->okToAnimate()Z +HPLcom/android/server/policy/PhoneWindowManager;->performHapticFeedbackLw(Landroid/view/WindowManagerPolicy$WindowState;IZ)Z +HPLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V +HPLcom/android/server/policy/PhoneWindowManager;->readLidState()V +HPLcom/android/server/policy/PhoneWindowManager;->selectAnimationLw(Landroid/view/WindowManagerPolicy$WindowState;I)I +HPLcom/android/server/policy/PhoneWindowManager;->setInitialDisplaySize(Landroid/view/Display;III)V HPLcom/android/server/policy/PhoneWindowManager;->shouldBeHiddenByKeyguard(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->shouldUseOutsets(Landroid/view/WindowManager$LayoutParams;I)Z +HPLcom/android/server/policy/PhoneWindowManager;->topAppHidesStatusBar()Z +HPLcom/android/server/policy/PhoneWindowManager;->updateLightNavigationBarLw(ILandroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I HPLcom/android/server/policy/PhoneWindowManager;->updateLightStatusBarLw(ILandroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I +HPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V HPLcom/android/server/policy/PhoneWindowManager;->updateSystemBarsLw(Landroid/view/WindowManagerPolicy$WindowState;II)I HPLcom/android/server/policy/PhoneWindowManager;->updateSystemUiVisibilityLw()I +HPLcom/android/server/policy/PhoneWindowManager;->updateWindowSleepToken()V +HPLcom/android/server/policy/PhoneWindowManager;->userActivity()V HPLcom/android/server/policy/PolicyControl;->getSystemUiVisibility(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I HPLcom/android/server/policy/PolicyControl;->getWindowFlags(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I +HPLcom/android/server/policy/StatusBarController$1$1;-><init>(Lcom/android/server/policy/StatusBarController$1;)V +HPLcom/android/server/policy/StatusBarController$1$1;->run()V +HPLcom/android/server/policy/StatusBarController$1$2;->run()V +HPLcom/android/server/policy/StatusBarController$1$4;-><init>(Lcom/android/server/policy/StatusBarController$1;)V +HPLcom/android/server/policy/StatusBarController$1$4;->run()V +HPLcom/android/server/policy/StatusBarController$1;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V +HPLcom/android/server/policy/StatusBarController$1;->onAppTransitionPendingLocked()V +HPLcom/android/server/policy/StatusBarController;->calculateStatusBarTransitionStartTime(Landroid/view/animation/Animation;Landroid/view/animation/Animation;)J +HPLcom/android/server/policy/StatusBarController;->findAlmostThereFraction(Landroid/view/animation/Interpolator;)F +HPLcom/android/server/policy/StatusBarController;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation; +HPLcom/android/server/policy/StatusBarController;->setTopAppHidesStatusBar(Z)V +HPLcom/android/server/policy/StatusBarController;->skipAnimation()Z HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onDebug()V HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onDown()V HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onFling(I)V @@ -1297,7 +3610,14 @@ HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSw HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSwipeFromRight()V HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSwipeFromTop()V HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onUpOrCancel()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z +HPLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onSingleTapUp(Landroid/view/MotionEvent;)Z +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->-get2(Lcom/android/server/policy/SystemGesturesPointerEventListener;)Landroid/widget/OverScroller; +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->captureDown(Landroid/view/MotionEvent;I)V +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I HPLcom/android/server/policy/SystemGesturesPointerEventListener;->detectSwipe(Landroid/view/MotionEvent;)I +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->findIndex(I)I +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V HPLcom/android/server/policy/WakeGestureListener;->onWakeUp()V HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->getProposedRotationLocked()I @@ -1307,44 +3627,119 @@ HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->onTouc HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->onTouchStartLocked()V HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->resetLocked(Z)V HPLcom/android/server/policy/WindowOrientationListener;->onProposedRotationChanged(I)V +HPLcom/android/server/policy/WindowOrientationListener;->onTouchEnd()V +HPLcom/android/server/policy/WindowOrientationListener;->onTouchStart()V HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;->onDrawn()V HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isShowing()Z HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isInputRestricted()Z HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isShowing()Z HPLcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;->onTrustedChanged()V +HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isInputRestricted()Z +HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z +HPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/power/Notifier;->-wrap3(Lcom/android/server/power/Notifier;)V +HPLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I +HPLcom/android/server/power/Notifier;->onUserActivity(II)V HPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V HPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/Notifier;->sendUserActivity()V +HPLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(I)V +HPLcom/android/server/power/PowerManagerService$BatteryReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V HPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V -HPLcom/android/server/power/PowerManagerService$BinderService;->powerHint(II)V +HPLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z +HPLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z +HPLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z HPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V +HPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUids(Landroid/os/IBinder;[I)V HPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/PowerManagerService$BinderService;->userActivity(JII)V HPLcom/android/server/power/PowerManagerService$LocalService;->finishUidChanges()V +HPLcom/android/server/power/PowerManagerService$LocalService;->powerHint(II)V +HPLcom/android/server/power/PowerManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(I)V +HPLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V HPLcom/android/server/power/PowerManagerService$LocalService;->startUidChanges()V +HPLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V +HPLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V HPLcom/android/server/power/PowerManagerService$PowerManagerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/power/PowerManagerService$UidState;-><init>(I)V +HPLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;)V +HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;II)Z +HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameWorkSource(Landroid/os/WorkSource;)Z +HPLcom/android/server/power/PowerManagerService$WakeLock;->updateWorkSource(Landroid/os/WorkSource;)V HPLcom/android/server/power/PowerManagerService;->-get1(Lcom/android/server/power/PowerManagerService;)Landroid/content/Context; +HPLcom/android/server/power/PowerManagerService;->-wrap0(Landroid/os/WorkSource;)Landroid/os/WorkSource; +HPLcom/android/server/power/PowerManagerService;->-wrap1(Lcom/android/server/power/PowerManagerService;)Z +HPLcom/android/server/power/PowerManagerService;->-wrap13(Lcom/android/server/power/PowerManagerService;)V +HPLcom/android/server/power/PowerManagerService;->-wrap14(Lcom/android/server/power/PowerManagerService;)V +HPLcom/android/server/power/PowerManagerService;->-wrap2(Lcom/android/server/power/PowerManagerService;)Z HPLcom/android/server/power/PowerManagerService;->-wrap22(Lcom/android/server/power/PowerManagerService;II)V +HPLcom/android/server/power/PowerManagerService;->-wrap23(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V +HPLcom/android/server/power/PowerManagerService;->-wrap29(Lcom/android/server/power/PowerManagerService;I)V +HPLcom/android/server/power/PowerManagerService;->-wrap32(Lcom/android/server/power/PowerManagerService;J)V +HPLcom/android/server/power/PowerManagerService;->-wrap36(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V +HPLcom/android/server/power/PowerManagerService;->-wrap7(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V HPLcom/android/server/power/PowerManagerService;->acquireWakeLockInternal(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V +HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V +HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +HPLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V +HPLcom/android/server/power/PowerManagerService;->copyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource; +HPLcom/android/server/power/PowerManagerService;->enqueueNotifyLongMsgLocked(J)V HPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landroid/os/IBinder;)I +HPLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V +HPLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V +HPLcom/android/server/power/PowerManagerService;->getDesiredScreenPolicyLocked()I HPLcom/android/server/power/PowerManagerService;->getScreenDimDurationLocked(I)I HPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(I)I +HPLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked()I +HPLcom/android/server/power/PowerManagerService;->handleBatteryStateChangedLocked()V HPLcom/android/server/power/PowerManagerService;->handleSandman()V +HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked()Z +HPLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z +HPLcom/android/server/power/PowerManagerService;->isInteractiveInternal()Z HPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked()Z +HPLcom/android/server/power/PowerManagerService;->isLowPowerModeInternal()Z +HPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z +HPLcom/android/server/power/PowerManagerService;->isValidAutoBrightnessAdjustment(F)Z HPLcom/android/server/power/PowerManagerService;->isValidBrightness(I)Z HPLcom/android/server/power/PowerManagerService;->needDisplaySuspendBlockerLocked()Z +HPLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +HPLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +HPLcom/android/server/power/PowerManagerService;->notifyWakeLockReleasedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V HPLcom/android/server/power/PowerManagerService;->powerHintInternal(II)V HPLcom/android/server/power/PowerManagerService;->releaseWakeLockInternal(Landroid/os/IBinder;I)V HPLcom/android/server/power/PowerManagerService;->removeWakeLockLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V HPLcom/android/server/power/PowerManagerService;->restartNofifyLongTimerLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V HPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V +HPLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V +HPLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(I)V +HPLcom/android/server/power/PowerManagerService;->setUserActivityTimeoutOverrideFromWindowManagerInternal(J)V +HPLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z +HPLcom/android/server/power/PowerManagerService;->shouldBoostScreenBrightness()Z +HPLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z +HPLcom/android/server/power/PowerManagerService;->startUidChangesInternal()V +HPLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V +HPLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V +HPLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V HPLcom/android/server/power/PowerManagerService;->updateDisplayPowerStateLocked(I)Z HPLcom/android/server/power/PowerManagerService;->updateDreamLocked(IZ)V +HPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V HPLcom/android/server/power/PowerManagerService;->updatePowerRequestFromBatterySaverPolicy(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V HPLcom/android/server/power/PowerManagerService;->updatePowerStateLocked()V +HPLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V +HPLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V HPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V +HPLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V HPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(JI)V HPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V +HPLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V HPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z +HPLcom/android/server/power/PowerManagerService;->userActivityFromNative(JII)V +HPLcom/android/server/power/PowerManagerService;->userActivityInternal(JIII)V +HPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(JIII)Z +HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onCustomPrinterIconLoaded(Landroid/print/PrinterId;Landroid/graphics/drawable/Icon;)V HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onPrintersAdded(Ljava/util/List;)V HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onPrintersRemoved(Ljava/util/List;)V @@ -1353,6 +3748,11 @@ HPLcom/android/server/print/RemotePrintServiceRecommendationService$RemotePrintS HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onAllPrintJobsForServiceHandled(Landroid/content/ComponentName;)V HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V +HPLcom/android/server/print/UserState;->getPrintServices(I)Ljava/util/List; +HPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->updateSearchables()V +HPLcom/android/server/search/Searchables;->findWebSearchActivity(Landroid/content/ComponentName;)Landroid/content/ComponentName; +HPLcom/android/server/search/Searchables;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List; +HPLcom/android/server/search/Searchables;->updateSearchableList()V HPLcom/android/server/soundtrigger/SoundTriggerInternal;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V HPLcom/android/server/soundtrigger/SoundTriggerInternal;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; HPLcom/android/server/soundtrigger/SoundTriggerInternal;->startRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I @@ -1371,47 +3771,178 @@ HPLcom/android/server/statusbar/StatusBarManagerInternal;->setCurrentUser(I)V HPLcom/android/server/statusbar/StatusBarManagerInternal;->setGlobalActionsListener(Lcom/android/server/statusbar/StatusBarManagerInternal$GlobalActionsListener;)V HPLcom/android/server/statusbar/StatusBarManagerInternal;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V HPLcom/android/server/statusbar/StatusBarManagerInternal;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->setTopAppHidesStatusBar(Z)V HPLcom/android/server/statusbar/StatusBarManagerInternal;->setWindowState(II)V HPLcom/android/server/statusbar/StatusBarManagerInternal;->showAssistDisclosure()V HPLcom/android/server/statusbar/StatusBarManagerInternal;->showGlobalActions()V HPLcom/android/server/statusbar/StatusBarManagerInternal;->showPictureInPictureMenu()V HPLcom/android/server/statusbar/StatusBarManagerInternal;->showRecentApps(ZZ)V HPLcom/android/server/statusbar/StatusBarManagerInternal;->showScreenPinningRequest(I)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->showShutdownUi(ZLjava/lang/String;)Z HPLcom/android/server/statusbar/StatusBarManagerInternal;->startAssist(Landroid/os/Bundle;)V HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleKeyboardShortcutsMenu(I)V HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleRecentApps()V HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleSplitScreen()V HPLcom/android/server/statusbar/StatusBarManagerInternal;->topAppWindowChanged(Z)V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionFinished()V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionPending()V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionStarting(JJ)V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->setTopAppHidesStatusBar(Z)V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->topAppWindowChanged(Z)V +HPLcom/android/server/statusbar/StatusBarManagerService$3;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Z)V +HPLcom/android/server/statusbar/StatusBarManagerService$3;->run()V +HPLcom/android/server/statusbar/StatusBarManagerService$4;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Landroid/os/IBinder;IIZ)V +HPLcom/android/server/statusbar/StatusBarManagerService$4;->run()V +HPLcom/android/server/statusbar/StatusBarManagerService$5;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/server/statusbar/StatusBarManagerService$5;->run()V +HPLcom/android/server/statusbar/StatusBarManagerService;->-get0(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/internal/statusbar/IStatusBar; +HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap0(Lcom/android/server/statusbar/StatusBarManagerService;)V +HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap2(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap3(Lcom/android/server/statusbar/StatusBarManagerService;Z)V +HPLcom/android/server/statusbar/StatusBarManagerService;->disableLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V +HPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V +HPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarService()V +HPLcom/android/server/statusbar/StatusBarManagerService;->gatherDisableActionsLocked(II)I +HPLcom/android/server/statusbar/StatusBarManagerService;->manageDisableListLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V +HPLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V +HPLcom/android/server/statusbar/StatusBarManagerService;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HPLcom/android/server/statusbar/StatusBarManagerService;->topAppWindowChanged(Z)V +HPLcom/android/server/statusbar/StatusBarManagerService;->updateUiVisibilityLocked(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List; +HPLcom/android/server/storage/CacheQuotaStrategy;->pushProcessedQuotas(Ljava/util/List;)V HPLcom/android/server/storage/DeviceStorageMonitorInternal;->checkMemory()V HPLcom/android/server/storage/DeviceStorageMonitorInternal;->getMemoryLowThreshold()J HPLcom/android/server/storage/DeviceStorageMonitorInternal;->isMemoryLow()Z +HPLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap0(III)Z +HPLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap1(III)Z +HPLcom/android/server/storage/DeviceStorageMonitorService$State;->isEntering(III)Z +HPLcom/android/server/storage/DeviceStorageMonitorService$State;->isLeaving(III)Z +HPLcom/android/server/storage/DeviceStorageMonitorService;->check()V +HPLcom/android/server/storage/DeviceStorageMonitorService;->isBootImageOnDisk()Z +HPLcom/android/server/storage/DeviceStorageMonitorService;->updateBroadcasts(Landroid/os/storage/VolumeInfo;III)V +HPLcom/android/server/storage/DeviceStorageMonitorService;->updateNotifications(Landroid/os/storage/VolumeInfo;II)V +HPLcom/android/server/timezone/ClockHelper;->currentTimestamp()J +HPLcom/android/server/timezone/ConfigHelper;->getCheckTimeAllowedMillis()I +HPLcom/android/server/timezone/ConfigHelper;->getDataAppPackageName()Ljava/lang/String; +HPLcom/android/server/timezone/ConfigHelper;->getFailedCheckRetryCount()I +HPLcom/android/server/timezone/ConfigHelper;->getUpdateAppPackageName()Ljava/lang/String; +HPLcom/android/server/timezone/ConfigHelper;->isTrackingEnabled()Z +HPLcom/android/server/timezone/IntentHelper$Listener;->triggerUpdateIfNeeded(Z)V +HPLcom/android/server/timezone/IntentHelper;->disableReliabilityTriggering()V +HPLcom/android/server/timezone/IntentHelper;->enableReliabilityTriggering()V +HPLcom/android/server/timezone/IntentHelper;->initialize(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/timezone/IntentHelper$Listener;)V +HPLcom/android/server/timezone/IntentHelper;->sendTriggerUpdateCheck(Lcom/android/server/timezone/CheckToken;)V +HPLcom/android/server/timezone/PackageManagerHelper;->contentProviderRegistered(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/timezone/PackageManagerHelper;->getInstalledPackageVersion(Ljava/lang/String;)I +HPLcom/android/server/timezone/PackageManagerHelper;->isPrivilegedApp(Ljava/lang/String;)Z +HPLcom/android/server/timezone/PackageManagerHelper;->receiverRegistered(Landroid/content/Intent;Ljava/lang/String;)Z +HPLcom/android/server/timezone/PackageManagerHelper;->usesPermission(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/timezone/PermissionHelper;->checkDumpPermission(Ljava/lang/String;Ljava/io/PrintWriter;)Z +HPLcom/android/server/timezone/PermissionHelper;->enforceCallerHasPermission(Ljava/lang/String;)V +HPLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(I)Z +HPLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(I)Z +HPLcom/android/server/trust/TrustManagerService;->-wrap3(Lcom/android/server/trust/TrustManagerService;I)I +HPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V +HPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I HPLcom/android/server/twilight/TwilightListener;->onTwilightStateChanged(Lcom/android/server/twilight/TwilightState;)V HPLcom/android/server/twilight/TwilightManager;->getLastTwilightState()Lcom/android/server/twilight/TwilightState; HPLcom/android/server/twilight/TwilightManager;->registerListener(Lcom/android/server/twilight/TwilightListener;Landroid/os/Handler;)V HPLcom/android/server/twilight/TwilightManager;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V +HPLcom/android/server/twilight/TwilightService$1;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V +HPLcom/android/server/twilight/TwilightService;->-get1(Lcom/android/server/twilight/TwilightService;)Landroid/util/ArrayMap; +HPLcom/android/server/usage/AppIdleHistory$PackageHistory;-><init>()V +HPLcom/android/server/usage/AppIdleHistory$PackageHistory;-><init>(Lcom/android/server/usage/AppIdleHistory$PackageHistory;)V +HPLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;J)Lcom/android/server/usage/AppIdleHistory$PackageHistory; +HPLcom/android/server/usage/AppIdleHistory;->getScreenOnTime(J)J +HPLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap; +HPLcom/android/server/usage/AppIdleHistory;->hasPassedThresholds(Lcom/android/server/usage/AppIdleHistory$PackageHistory;J)Z HPLcom/android/server/usage/AppIdleHistory;->isIdle(Ljava/lang/String;IJ)Z +HPLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V +HPLcom/android/server/usage/AppIdleHistory;->reportUsage(Ljava/lang/String;IJ)V +HPLcom/android/server/usage/AppIdleHistory;->shiftHistoryToNow(Landroid/util/ArrayMap;J)V +HPLcom/android/server/usage/AppIdleHistory;->writeAppIdleTimes(I)V +HPLcom/android/server/usage/IntervalStats;->buildEvent(Ljava/lang/String;Ljava/lang/String;)Landroid/app/usage/UsageEvents$Event; +HPLcom/android/server/usage/IntervalStats;->getCachedStringRef(Ljava/lang/String;)Ljava/lang/String; HPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats; +HPLcom/android/server/usage/IntervalStats;->isStatefulEvent(I)Z HPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;JI)V +HPLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/usage/StorageStatsService;->enforcePermission(ILjava/lang/String;)V +HPLcom/android/server/usage/StorageStatsService;->getAppIds(I)[I +HPLcom/android/server/usage/StorageStatsService;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J +HPLcom/android/server/usage/StorageStatsService;->isCacheQuotaCalculationsEnabled(Landroid/content/ContentResolver;)Z +HPLcom/android/server/usage/StorageStatsService;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/usage/StorageStatsService;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats; +HPLcom/android/server/usage/UnixCalendar;->getTimeInMillis()J HPLcom/android/server/usage/UsageStatsService$2;->onUidStateChanged(IIJ)V +HPLcom/android/server/usage/UsageStatsService$BinderService;->hasPermission(Ljava/lang/String;)Z HPLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;I)Z +HPLcom/android/server/usage/UsageStatsService$BinderService;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents; +HPLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V HPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdle(Ljava/lang/String;II)Z +HPLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;II)V HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Ljava/lang/String;II)V +HPLcom/android/server/usage/UsageStatsService;->-get0()Ljava/io/File; +HPLcom/android/server/usage/UsageStatsService;->-get4(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseIntArray; +HPLcom/android/server/usage/UsageStatsService;->-wrap0(Lcom/android/server/usage/UsageStatsService;Ljava/lang/String;IIJ)Z +HPLcom/android/server/usage/UsageStatsService;->-wrap2(Lcom/android/server/usage/UsageStatsService;II)Z HPLcom/android/server/usage/UsageStatsService;->checkAndGetTimeLocked()J +HPLcom/android/server/usage/UsageStatsService;->checkIdleStates(I)Z +HPLcom/android/server/usage/UsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V +HPLcom/android/server/usage/UsageStatsService;->forceIdleState(Ljava/lang/String;IZ)V +HPLcom/android/server/usage/UsageStatsService;->getAppId(Ljava/lang/String;)I +HPLcom/android/server/usage/UsageStatsService;->getIdleUidsForUser(I)[I +HPLcom/android/server/usage/UsageStatsService;->getUserDataAndInitializeIfNeededLocked(IJ)Lcom/android/server/usage/UserUsageStatsService; +HPLcom/android/server/usage/UsageStatsService;->informListeners(Ljava/lang/String;IZ)V +HPLcom/android/server/usage/UsageStatsService;->isActiveDeviceAdmin(Ljava/lang/String;I)Z HPLcom/android/server/usage/UsageStatsService;->isActiveNetworkScorer(Ljava/lang/String;)Z HPLcom/android/server/usage/UsageStatsService;->isAppIdleFiltered(Ljava/lang/String;IIJ)Z +HPLcom/android/server/usage/UsageStatsService;->isAppIdleFilteredOrParoled(Ljava/lang/String;IJZ)Z +HPLcom/android/server/usage/UsageStatsService;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z HPLcom/android/server/usage/UsageStatsService;->isDeviceProvisioningPackage(Ljava/lang/String;)Z +HPLcom/android/server/usage/UsageStatsService;->isParoledOrCharging()Z +HPLcom/android/server/usage/UsageStatsService;->queryEvents(IJJZ)Landroid/app/usage/UsageEvents; +HPLcom/android/server/usage/UsageStatsService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V +HPLcom/android/server/usage/UsageStatsService;->shouldObfuscateInstantAppsForCaller(II)Z +HPLcom/android/server/usage/UsageStatsXmlV1;->loadEvent(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->loadUsageStats(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V HPLcom/android/server/usage/UsageStatsXmlV1;->read(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->write(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->writeChooserCounts(Lorg/xmlpull/v1/XmlSerializer;Landroid/app/usage/UsageStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->writeConfigStats(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/ConfigurationStats;Z)V +HPLcom/android/server/usage/UsageStatsXmlV1;->writeEvent(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageEvents$Event;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->writeUsageStats(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageStats;)V +HPLcom/android/server/usage/UserUsageStatsService$3;-><init>(Lcom/android/server/usage/UserUsageStatsService;JJZLandroid/util/ArraySet;)V +HPLcom/android/server/usage/UserUsageStatsService$3;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onNewUpdate(I)V HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onStatsReloaded()V HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onStatsUpdated()V +HPLcom/android/server/usage/UserUsageStatsService;->init(J)V +HPLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V +HPLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJZ)Landroid/app/usage/UsageEvents; +HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List; HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V HPLcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;->onOpenInApp(Landroid/hardware/usb/UsbDevice;)V +HPLcom/android/server/usb/UsbAlsaManager$AlsaDevice;->toString()Ljava/lang/String; +HPLcom/android/server/usb/UsbAlsaManager;->alsaFileAdded(Ljava/lang/String;)V +HPLcom/android/server/usb/UsbAlsaManager;->systemReady()V +HPLcom/android/server/usb/UsbDeviceManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(IZ)V +HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V HPLcom/android/server/utils/ManagedApplicationService$BinderChecker;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface; HPLcom/android/server/utils/ManagedApplicationService$BinderChecker;->checkType(Landroid/os/IInterface;)Z HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->onSessionHidden(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->onSessionShown(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->sessionConnectionGone(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V +HPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNames(Landroid/content/pm/PackageManager;ILjava/lang/String;Ljava/lang/String;)Landroid/util/ArraySet; +HPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet; +HPLcom/android/server/vr/EnabledComponentsObserver;->rebuildAll()V +HPLcom/android/server/vr/EnabledComponentsObserver;->sendSettingChanged()V HPLcom/android/server/vr/SettingsObserver$SettingChangeListener;->onSettingChanged()V HPLcom/android/server/vr/SettingsObserver$SettingChangeListener;->onSettingRestored(Ljava/lang/String;Ljava/lang/String;I)V HPLcom/android/server/vr/VrManagerInternal;->addPersistentVrModeStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V @@ -1422,7 +3953,17 @@ HPLcom/android/server/vr/VrManagerInternal;->onScreenStateChanged(Z)V HPLcom/android/server/vr/VrManagerInternal;->onSleepStateChanged(Z)V HPLcom/android/server/vr/VrManagerInternal;->setPersistentVrModeEnabled(Z)V HPLcom/android/server/vr/VrManagerInternal;->setVr2dDisplayProperties(Landroid/app/Vr2dDisplayProperties;)V -HPLcom/android/server/vr/VrManagerInternal;->setVrMode(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V +HPLcom/android/server/vr/VrManagerInternal;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +HPLcom/android/server/vr/VrManagerService$NotificationAccessManager;->update(Ljava/util/Collection;)V +HPLcom/android/server/vr/VrManagerService$VrState;-><init>(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +HPLcom/android/server/vr/VrManagerService;->isDefaultAllowed(Ljava/lang/String;)Z +HPLcom/android/server/vr/VrManagerService;->onEnabledComponentChanged()V +HPLcom/android/server/vr/VrManagerService;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +HPLcom/android/server/vr/VrManagerService;->updateCurrentVrServiceLocked(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)Z +HPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->dataForEvent(ZZ)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData; +HPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->onEvent(ILjava/lang/String;)V +HPLcom/android/server/wallpaper/WallpaperManagerService;->isSetWallpaperAllowed(Ljava/lang/String;)Z +HPLcom/android/server/wallpaper/WallpaperManagerService;->notifyColorListeners(Landroid/app/WallpaperColors;II)V HPLcom/android/server/webkit/SystemInterface;->enableFallbackLogic(Z)V HPLcom/android/server/webkit/SystemInterface;->enablePackageForAllUsers(Landroid/content/Context;Ljava/lang/String;Z)V HPLcom/android/server/webkit/SystemInterface;->enablePackageForUser(Ljava/lang/String;ZI)V @@ -1441,53 +3982,278 @@ HPLcom/android/server/webkit/SystemInterface;->setMultiProcessSetting(Landroid/c HPLcom/android/server/webkit/SystemInterface;->systemIsDebuggable()Z HPLcom/android/server/webkit/SystemInterface;->uninstallAndDisablePackageForAllUsers(Landroid/content/Context;Ljava/lang/String;)V HPLcom/android/server/webkit/SystemInterface;->updateUserSetting(Landroid/content/Context;Ljava/lang/String;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;->$m$0()V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;->run()V +HPLcom/android/server/wifi/AggressiveConnectedScore;->generateScore()I +HPLcom/android/server/wifi/AggressiveConnectedScore;->updateUsingWifiInfo(Landroid/net/wifi/WifiInfo;J)V HPLcom/android/server/wifi/BuildProperties;->isEngBuild()Z HPLcom/android/server/wifi/BuildProperties;->isUserBuild()Z HPLcom/android/server/wifi/BuildProperties;->isUserdebugBuild()Z +HPLcom/android/server/wifi/CarrierNetworkConfig;->isCarrierNetwork(Ljava/lang/String;)Z +HPLcom/android/server/wifi/Clock;->getElapsedSinceBootMillis()J +HPLcom/android/server/wifi/Clock;->getUptimeSinceBootMillis()J +HPLcom/android/server/wifi/Clock;->getWallClockMillis()J +HPLcom/android/server/wifi/ConfigurationMap;->getByScanResultForCurrentUser(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/ConfigurationMap;->getForCurrentUser(I)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/ConfigurationMap;->valuesForCurrentUser()Ljava/util/Collection; +HPLcom/android/server/wifi/ConnectedScore;->getMillis()J +HPLcom/android/server/wifi/DummyLogMessage;->c(J)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/DummyLogMessage;->flush()V +HPLcom/android/server/wifi/FakeWifiLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; HPLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->action()V HPLcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;->onStatusChanged()V +HPLcom/android/server/wifi/HalDeviceManager$Mutable;-><init>()V +HPLcom/android/server/wifi/HalDeviceManager;->getAllChipInfo()[Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo; +HPLcom/android/server/wifi/HalDeviceManager;->getSupportedIfaceTypesInternal(Landroid/hardware/wifi/V1_0/IWifiChip;)Ljava/util/Set; +HPLcom/android/server/wifi/LegacyConnectedScore;->calculateScore(Landroid/net/wifi/WifiInfo;)I +HPLcom/android/server/wifi/LegacyConnectedScore;->generateScore()I +HPLcom/android/server/wifi/LegacyConnectedScore;->isHomeNetwork(Landroid/net/wifi/WifiInfo;)Z +HPLcom/android/server/wifi/LegacyConnectedScore;->multiBandScanResults(Landroid/net/wifi/WifiInfo;)Z +HPLcom/android/server/wifi/LegacyConnectedScore;->updateUsingWifiInfo(Landroid/net/wifi/WifiInfo;J)V HPLcom/android/server/wifi/LogcatLog$RealLogMessage;-><init>(ILjava/lang/String;Ljava/lang/String;)V HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(J)Lcom/android/server/wifi/WifiLog$LogMessage; HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->copyUntilPlaceholder()V HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->flush()V +HPLcom/android/server/wifi/LogcatLog;->-get0()Z +HPLcom/android/server/wifi/LogcatLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; HPLcom/android/server/wifi/LogcatLog;->makeLogMessage(ILjava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/LogcatLog;->tC(Ljava/lang/String;)V HPLcom/android/server/wifi/LogcatLog;->trace(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; HPLcom/android/server/wifi/PropertyService;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HPLcom/android/server/wifi/PropertyService;->getBoolean(Ljava/lang/String;Z)Z HPLcom/android/server/wifi/PropertyService;->set(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/wifi/SavedNetworkEvaluator;->calculateBssidScore(Landroid/net/wifi/ScanResult;Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;Ljava/lang/StringBuffer;)I +HPLcom/android/server/wifi/SavedNetworkEvaluator;->evaluateNetworks(Ljava/util/List;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;ZZLjava/util/List;)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/SavedNetworkEvaluator;->updateSavedNetworkSelectionStatus()V +HPLcom/android/server/wifi/ScanDetail;-><init>(Landroid/net/wifi/ScanResult;Lcom/android/server/wifi/hotspot2/NetworkDetail;)V HPLcom/android/server/wifi/ScanDetail;-><init>(Lcom/android/server/wifi/hotspot2/NetworkDetail;Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;IIJ[Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/List;)V +HPLcom/android/server/wifi/ScanDetail;->getBSSIDString()Ljava/lang/String; +HPLcom/android/server/wifi/ScanDetail;->getNetworkDetail()Lcom/android/server/wifi/hotspot2/NetworkDetail; +HPLcom/android/server/wifi/ScanDetail;->getSSID()Ljava/lang/String; HPLcom/android/server/wifi/ScanDetail;->getScanResult()Landroid/net/wifi/ScanResult; +HPLcom/android/server/wifi/ScanDetail;->getSeen()J +HPLcom/android/server/wifi/ScanDetail;->setSeen()J +HPLcom/android/server/wifi/ScanDetailCache;->getScanDetail(Ljava/lang/String;)Lcom/android/server/wifi/ScanDetail; +HPLcom/android/server/wifi/ScanDetailCache;->getScanResult(Ljava/lang/String;)Landroid/net/wifi/ScanResult; +HPLcom/android/server/wifi/ScanDetailCache;->getVisibility(J)Landroid/net/wifi/WifiConfiguration$Visibility; HPLcom/android/server/wifi/ScanDetailCache;->getVisibilityByRssi(J)Landroid/net/wifi/WifiConfiguration$Visibility; +HPLcom/android/server/wifi/ScanDetailCache;->put(Lcom/android/server/wifi/ScanDetail;)V +HPLcom/android/server/wifi/ScanDetailCache;->values()Ljava/util/Collection; +HPLcom/android/server/wifi/ScanResultMatchInfo;-><init>()V +HPLcom/android/server/wifi/ScanResultMatchInfo;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/wifi/ScanResultMatchInfo;->fromScanResult(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ScanResultMatchInfo; +HPLcom/android/server/wifi/ScanResultMatchInfo;->hashCode()I +HPLcom/android/server/wifi/ScoredNetworkEvaluator;->updateNetworkScoreCache(Ljava/util/List;)V HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkAdded(I)V HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkEnabled(I)V HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkPermanentlyDisabled(I)V HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkRemoved(I)V HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkTemporarilyDisabled(I)V HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkUpdated(I)V +HPLcom/android/server/wifi/WifiConfigManager;->addToChannelSetForNetworkFromScanDetailCache(Ljava/util/Set;Lcom/android/server/wifi/ScanDetailCache;JJI)Z +HPLcom/android/server/wifi/WifiConfigManager;->attemptNetworkLinking(Landroid/net/wifi/WifiConfiguration;)V +HPLcom/android/server/wifi/WifiConfigManager;->clearNetworkCandidateScanResult(I)Z +HPLcom/android/server/wifi/WifiConfigManager;->createExternalWifiConfiguration(Landroid/net/wifi/WifiConfiguration;Z)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetail(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetailAndCache(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworks(ZZ)Ljava/util/List; +HPLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetworks()Ljava/util/Collection; +HPLcom/android/server/wifi/WifiConfigManager;->getLastSelectedNetwork()I +HPLcom/android/server/wifi/WifiConfigManager;->getOrCreateScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ScanDetailCache; +HPLcom/android/server/wifi/WifiConfigManager;->getScanDetailCacheForNetwork(I)Lcom/android/server/wifi/ScanDetailCache; +HPLcom/android/server/wifi/WifiConfigManager;->maskPasswordsInWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)V +HPLcom/android/server/wifi/WifiConfigManager;->retrieveHiddenNetworkList()Ljava/util/List; +HPLcom/android/server/wifi/WifiConfigManager;->saveToScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;Lcom/android/server/wifi/ScanDetail;)V +HPLcom/android/server/wifi/WifiConfigManager;->setNetworkCandidateScanResult(ILandroid/net/wifi/ScanResult;I)Z +HPLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(I)Z +HPLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConfigManager;->updateScanDetailCacheFromWifiInfo(Landroid/net/wifi/WifiInfo;)V +HPLcom/android/server/wifi/WifiConfigStore;->serializeData(Z)[B HPLcom/android/server/wifi/WifiConfigurationUtil$WifiConfigurationComparator;->compareNetworksWithSameStatus(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;)I +HPLcom/android/server/wifi/WifiConfigurationUtil;->hasAnyValidWepKey([Ljava/lang/String;)Z +HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForEapNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForOpenNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForPskNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForWepNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConnectivityHelper;->isFirmwareRoamingSupported()Z +HPLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V +HPLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V +HPLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V +HPLcom/android/server/wifi/WifiConnectivityManager;->-get1(Lcom/android/server/wifi/WifiConnectivityManager;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->-get8(Lcom/android/server/wifi/WifiConnectivityManager;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->-get9(Lcom/android/server/wifi/WifiConnectivityManager;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->buildBssidBlacklist()Ljava/util/HashSet; +HPLcom/android/server/wifi/WifiConnectivityManager;->connectToNetwork(Landroid/net/wifi/WifiConfiguration;)V +HPLcom/android/server/wifi/WifiConnectivityManager;->handleScanResults(Ljava/util/List;Ljava/lang/String;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->localLog(Ljava/lang/String;)V +HPLcom/android/server/wifi/WifiConnectivityManager;->setScanChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->startSingleScan(Z)V +HPLcom/android/server/wifi/WifiController$DefaultState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiController$DeviceActiveState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiController$StaEnabledState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiDiagnostics$1;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V +HPLcom/android/server/wifi/WifiDiagnostics$2;->compare(Lcom/android/server/wifi/WifiNative$FateReport;Lcom/android/server/wifi/WifiNative$FateReport;)I +HPLcom/android/server/wifi/WifiDiagnostics$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/wifi/WifiDiagnostics$BugReport;->toString()Ljava/lang/String; +HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->addLast(Ljava/lang/Object;)V +HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->get(I)Ljava/lang/Object; +HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->size()I +HPLcom/android/server/wifi/WifiDiagnostics;->captureBugreport(IZ)Lcom/android/server/wifi/WifiDiagnostics$BugReport; +HPLcom/android/server/wifi/WifiDiagnostics;->compressToBase64([B)Ljava/lang/String; +HPLcom/android/server/wifi/WifiDiagnostics;->dumpPacketFatesInternal(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V +HPLcom/android/server/wifi/WifiDiagnostics;->getKernelLog(I)Lcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray; +HPLcom/android/server/wifi/WifiDiagnostics;->getLogcat(I)Ljava/util/ArrayList; HPLcom/android/server/wifi/WifiDiagnostics;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V +HPLcom/android/server/wifi/WifiLastResortWatchdog;->updateAvailableNetworks(Ljava/util/List;)V +HPLcom/android/server/wifi/WifiLockManager$WifiLock;-><init>(Lcom/android/server/wifi/WifiLockManager;ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)V +HPLcom/android/server/wifi/WifiLockManager$WifiLock;->unlinkDeathRecipient()V +HPLcom/android/server/wifi/WifiLockManager;->acquireWifiLock(ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)Z +HPLcom/android/server/wifi/WifiLockManager;->addLock(Lcom/android/server/wifi/WifiLockManager$WifiLock;)Z +HPLcom/android/server/wifi/WifiLockManager;->findLockByBinder(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock; +HPLcom/android/server/wifi/WifiLockManager;->releaseLock(Landroid/os/IBinder;)Z +HPLcom/android/server/wifi/WifiLockManager;->releaseWifiLock(Landroid/os/IBinder;)Z +HPLcom/android/server/wifi/WifiLockManager;->removeLock(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock; HPLcom/android/server/wifi/WifiMetrics;->countScanResults(Ljava/util/List;)V +HPLcom/android/server/wifi/WifiMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/wifi/WifiMetrics;->handlePollResult(Landroid/net/wifi/WifiInfo;)V +HPLcom/android/server/wifi/WifiMetrics;->increment(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementAvailableNetworksHistograms(Ljava/util/List;Z)V +HPLcom/android/server/wifi/WifiMetrics;->incrementBssid(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementRssiPollRssiCount(I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementScanReturnEntry(II)V +HPLcom/android/server/wifi/WifiMetrics;->incrementSsid(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementTotalScanResults(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementTotalScanSsids(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementWifiScoreCount(I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementWifiSystemScanStateCount(IZ)V +HPLcom/android/server/wifi/WifiMetrics;->maybeIncrementRssiDeltaCount(I)V +HPLcom/android/server/wifi/WifiMonitor;->isMonitoring(Ljava/lang/String;)Z +HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Landroid/os/Handler;Landroid/os/Message;)V +HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;I)V +HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;Landroid/os/Message;)V HPLcom/android/server/wifi/WifiMulticastLockManager$FilterController;->startFilteringMulticastPackets()V HPLcom/android/server/wifi/WifiMulticastLockManager$FilterController;->stopFilteringMulticastPackets()V +HPLcom/android/server/wifi/WifiNative$FateReport;-><init>(BJB[B)V +HPLcom/android/server/wifi/WifiNative$FateReport;->convertDriverTimestampUSecToWallclockMSec(J)J +HPLcom/android/server/wifi/WifiNative$FateReport;->toTableRowString()Ljava/lang/String; HPLcom/android/server/wifi/WifiNative$PnoEventHandler;->onPnoNetworkFound([Landroid/net/wifi/ScanResult;)V HPLcom/android/server/wifi/WifiNative$PnoEventHandler;->onPnoScanFailed()V +HPLcom/android/server/wifi/WifiNative$RingBufferStatus;-><init>()V HPLcom/android/server/wifi/WifiNative$RttEventHandler;->onRttResults([Landroid/net/wifi/RttManager$RttResult;)V +HPLcom/android/server/wifi/WifiNative$SignalPollResult;-><init>()V HPLcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;->onDeath()V HPLcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V HPLcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;->onWifiAlert(I[B)V HPLcom/android/server/wifi/WifiNative$WifiRssiEventHandler;->onRssiThresholdBreached(B)V +HPLcom/android/server/wifi/WifiNative;->getChannelsForBand(I)[I +HPLcom/android/server/wifi/WifiNative;->getScanResults()Ljava/util/ArrayList; +HPLcom/android/server/wifi/WifiNative;->getWifiLinkLayerStats(Ljava/lang/String;)Landroid/net/wifi/WifiLinkLayerStats; +HPLcom/android/server/wifi/WifiNative;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult; HPLcom/android/server/wifi/WifiNetworkSelector;->filterScanResults(Ljava/util/List;Ljava/util/HashSet;ZLjava/lang/String;)Ljava/util/List; -HPLcom/android/server/wifi/WifiServiceImpl;->getConnectionInfo()Landroid/net/wifi/WifiInfo; -HPLcom/android/server/wifi/WifiStateMachine;->getWiFiInfoForUid(I)Landroid/net/wifi/WifiInfo; -HPLcom/android/server/wifi/WifiStateMachine;->syncRequestConnectionInfo()Landroid/net/wifi/WifiInfo; -HPLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->lambda$-com_android_server_wifi_WifiVendorHal$ChipEventCallback_95009(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiNetworkSelector;->isCurrentNetworkSufficient(Landroid/net/wifi/WifiInfo;Ljava/util/List;)Z +HPLcom/android/server/wifi/WifiNetworkSelector;->isNetworkSelectionNeeded(Ljava/util/List;Landroid/net/wifi/WifiInfo;ZZ)Z +HPLcom/android/server/wifi/WifiNetworkSelector;->isSignalTooWeak(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/WifiNetworkSelector;->localLog(Ljava/lang/String;)V +HPLcom/android/server/wifi/WifiNetworkSelector;->selectNetwork(Ljava/util/List;Ljava/util/HashSet;Landroid/net/wifi/WifiInfo;ZZZ)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiNetworkSelector;->toScanId(Landroid/net/wifi/ScanResult;)Ljava/lang/String; +HPLcom/android/server/wifi/WifiScoreReport;->calculateAndReportScore(Landroid/net/wifi/WifiInfo;Landroid/net/NetworkAgent;ILcom/android/server/wifi/WifiMetrics;)V +HPLcom/android/server/wifi/WifiScoreReport;->logLinkMetrics(Landroid/net/wifi/WifiInfo;II)V +HPLcom/android/server/wifi/WifiServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/wifi/WifiServiceImpl;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z +HPLcom/android/server/wifi/WifiServiceImpl;->enforceAccessPermission()V +HPLcom/android/server/wifi/WifiServiceImpl;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/wifi/WifiServiceImpl;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo; +HPLcom/android/server/wifi/WifiServiceImpl;->getDhcpInfo()Landroid/net/DhcpInfo; +HPLcom/android/server/wifi/WifiServiceImpl;->getScanResults(Ljava/lang/String;)Ljava/util/List; +HPLcom/android/server/wifi/WifiServiceImpl;->getWifiEnabledState()I +HPLcom/android/server/wifi/WifiServiceImpl;->releaseWifiLock(Landroid/os/IBinder;)Z +HPLcom/android/server/wifi/WifiServiceImpl;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo; +HPLcom/android/server/wifi/WifiServiceImpl;->requestActivityInfo(Landroid/os/ResultReceiver;)V +HPLcom/android/server/wifi/WifiSettingsStore;->getLocationModeSetting(Landroid/content/Context;)I +HPLcom/android/server/wifi/WifiStateMachine$4;->onFullResult(Landroid/net/wifi/ScanResult;)V +HPLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine$ConnectedState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine;->-get0(Lcom/android/server/wifi/WifiStateMachine;)I +HPLcom/android/server/wifi/WifiStateMachine;->-get14(Lcom/android/server/wifi/WifiStateMachine;)Z +HPLcom/android/server/wifi/WifiStateMachine;->-get29(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent; +HPLcom/android/server/wifi/WifiStateMachine;->-get41(Lcom/android/server/wifi/WifiStateMachine;)I +HPLcom/android/server/wifi/WifiStateMachine;->-get46(Lcom/android/server/wifi/WifiStateMachine;)I +HPLcom/android/server/wifi/WifiStateMachine;->-get65(Lcom/android/server/wifi/WifiStateMachine;)Z +HPLcom/android/server/wifi/WifiStateMachine;->-get71(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiInfo; +HPLcom/android/server/wifi/WifiStateMachine;->-get74(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMetrics; +HPLcom/android/server/wifi/WifiStateMachine;->-get80(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiScoreReport; +HPLcom/android/server/wifi/WifiStateMachine;->-wrap18(Lcom/android/server/wifi/WifiStateMachine;)V +HPLcom/android/server/wifi/WifiStateMachine;->-wrap30(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;Lcom/android/internal/util/State;)V +HPLcom/android/server/wifi/WifiStateMachine;->fetchRssiLinkSpeedAndFrequencyNative()V +HPLcom/android/server/wifi/WifiStateMachine;->getLogRecString(Landroid/os/Message;)Ljava/lang/String; +HPLcom/android/server/wifi/WifiStateMachine;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats; +HPLcom/android/server/wifi/WifiStateMachine;->isDisconnected()Z +HPLcom/android/server/wifi/WifiStateMachine;->logStateAndMessage(Landroid/os/Message;Lcom/android/internal/util/State;)V +HPLcom/android/server/wifi/WifiStateMachine;->recordLogRec(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine;->setScanResults()V +HPLcom/android/server/wifi/WifiStateMachine;->smToString(I)Ljava/lang/String; +HPLcom/android/server/wifi/WifiStateMachine;->smToString(Landroid/os/Message;)Ljava/lang/String; +HPLcom/android/server/wifi/WifiStateMachine;->syncGetWifiState()I +HPLcom/android/server/wifi/WifiStateMachine;->syncRequestConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo; +HPLcom/android/server/wifi/WifiTrafficPoller$TrafficHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wifi/WifiTrafficPoller;->-get3(Lcom/android/server/wifi/WifiTrafficPoller;)I +HPLcom/android/server/wifi/WifiTrafficPoller;->-wrap1(Lcom/android/server/wifi/WifiTrafficPoller;)V +HPLcom/android/server/wifi/WifiTrafficPoller;->notifyOnDataActivity()V +HPLcom/android/server/wifi/WifiVendorHal$1AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V +HPLcom/android/server/wifi/WifiVendorHal$4AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V +HPLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->lambda$-com_android_server_wifi_WifiVendorHal$ChipEventCallback_98937(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V HPLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->onDebugRingBufferDataAvailable(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal;->-get2(Lcom/android/server/wifi/WifiVendorHal;)Landroid/os/Handler; +HPLcom/android/server/wifi/WifiVendorHal;->-get3(Lcom/android/server/wifi/WifiVendorHal;)Lcom/android/server/wifi/WifiNative$WifiLoggerEventHandler; +HPLcom/android/server/wifi/WifiVendorHal;->-wrap3(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;)Lcom/android/server/wifi/WifiNative$RingBufferStatus; +HPLcom/android/server/wifi/WifiVendorHal;->enter(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; HPLcom/android/server/wifi/WifiVendorHal;->frameworkFromHalLinkLayerStats(Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)Landroid/net/wifi/WifiLinkLayerStats; HPLcom/android/server/wifi/WifiVendorHal;->frameworkRingBufferFlagsFromHal(I)I +HPLcom/android/server/wifi/WifiVendorHal;->getChannelsForBand(I)[I +HPLcom/android/server/wifi/WifiVendorHal;->getSupportedFeatureSet()I +HPLcom/android/server/wifi/WifiVendorHal;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats; +HPLcom/android/server/wifi/WifiVendorHal;->intArrayFromArrayList(Ljava/util/ArrayList;)[I +HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_25531(Lcom/android/server/wifi/WifiVendorHal$1AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V +HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_56256(Lcom/android/server/wifi/WifiVendorHal$4AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_75348([Lcom/android/server/wifi/WifiNative$TxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_77135([Lcom/android/server/wifi/WifiNative$RxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal;->makeWifiBandFromFrameworkBand(I)I +HPLcom/android/server/wifi/WifiVendorHal;->ok(Landroid/hardware/wifi/V1_0/WifiStatus;)Z HPLcom/android/server/wifi/WifiVendorHal;->ringBufferStatus(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;)Lcom/android/server/wifi/WifiNative$RingBufferStatus; -HPLcom/android/server/wifi/WificondControl;->getScanResults()Ljava/util/ArrayList; +HPLcom/android/server/wifi/WifiVendorHal;->wifiFeatureMaskFromStaCapabilities(I)I +HPLcom/android/server/wifi/WificondControl$ScanEventHandler;->OnScanResultReady()V +HPLcom/android/server/wifi/WificondControl;->getScanResults(I)Ljava/util/ArrayList; +HPLcom/android/server/wifi/WificondControl;->scan(Ljava/util/Set;Ljava/util/Set;)Z +HPLcom/android/server/wifi/WificondControl;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult; +HPLcom/android/server/wifi/hotspot2/NetworkDetail$Ant;->values()[Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant; HPLcom/android/server/wifi/hotspot2/NetworkDetail;-><init>(Ljava/lang/String;[Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/List;I)V -HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getTrimmedSSID()Ljava/lang/String; +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getAnqpDomainID()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getBSSIDString()Ljava/lang/String; +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq0()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq1()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getChannelWidth()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getDtimInterval()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getHESSID()J +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getHSRelease()Lcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease; +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getOsuProviders()[B +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getSSID()Ljava/lang/String; +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->is80211McResponderSupport()Z +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isBeaconFrame()Z +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isHiddenBeaconFrame()Z +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isInterworking()Z +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->toMACString(J)Ljava/lang/String; HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->getProviderIndex()J HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->getProviders()Ljava/util/List; HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->setProviderIndex(J)V @@ -1497,8 +4263,16 @@ HPLcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;->onIconResp HPLcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;->onWnmFrameReceived(Lcom/android/server/wifi/hotspot2/WnmData;)V HPLcom/android/server/wifi/hotspot2/Utils;->fromHex(CZ)I HPLcom/android/server/wifi/hotspot2/Utils;->parseMac(Ljava/lang/String;)J +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;-><init>(J)V +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;->test(Ljava/lang/Object;)Z +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;->$m$0(I)Ljava/lang/Object; +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;->apply(I)Ljava/lang/Object; +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;-><init>(Lcom/android/server/wifi/scanner/ChannelHelper;)V HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addBand(I)V HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannel(I)V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Lcom/android/server/wifi/WifiNative$BucketSettings;)V HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->clear()V HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsBand(I)Z HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsChannel(I)Z @@ -1514,27 +4288,110 @@ HPLcom/android/server/wifi/scanner/ChannelHelper;->createChannelCollection()Lcom HPLcom/android/server/wifi/scanner/ChannelHelper;->estimateScanDuration(Landroid/net/wifi/WifiScanner$ScanSettings;)I HPLcom/android/server/wifi/scanner/ChannelHelper;->getAvailableScanChannels(I)[Landroid/net/wifi/WifiScanner$ChannelSpec; HPLcom/android/server/wifi/scanner/ChannelHelper;->settingsContainChannel(Landroid/net/wifi/WifiScanner$ScanSettings;I)Z +HPLcom/android/server/wifi/scanner/HalChannelHelper;->updateChannels()V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;-><init>(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addBand(I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addChannel(I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsBand(I)Z +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsChannel(I)Z +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->fillBucketSettings(Lcom/android/server/wifi/WifiNative$BucketSettings;I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->-wrap0(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;I)I +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->copyChannels([Landroid/net/wifi/WifiScanner$ChannelSpec;I[I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection; +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection; +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getAvailableScanChannels(I)[Landroid/net/wifi/WifiScanner$ChannelSpec; +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getBandFromChannel(I)I +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->isDfsChannel(I)Z +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->setBandChannels([I[I[I)V HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->settingsContainChannel(Landroid/net/wifi/WifiScanner$ScanSettings;I)Z +HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->filterResultsForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;[Landroid/net/wifi/WifiScanner$ScanData;Landroid/net/wifi/WifiScanner$ScanSettings;I)[Landroid/net/wifi/WifiScanner$ScanData; +HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->isBucketMaybeScanned(II)Z +HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->shouldReportFullScanResultForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;Landroid/net/wifi/ScanResult;ILandroid/net/wifi/WifiScanner$ScanSettings;I)Z +HPLcom/android/server/wifi/scanner/WifiScannerImpl$2;->compare(Landroid/net/wifi/ScanResult;Landroid/net/wifi/ScanResult;)I HPLcom/android/server/wifi/scanner/WifiScannerImpl$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HPLcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory;->create(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)Lcom/android/server/wifi/scanner/WifiScannerImpl; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->reportEvent(IIILjava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->toString()Ljava/lang/String; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo;->reportEvent(IIILjava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;->reportEvent(IILjava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->addRequest(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->createMergedWorkSource()Landroid/os/WorkSource; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->-com_android_server_wifi_scanner_WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState-mthref-0(I)[Landroid/net/wifi/ScanResult; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->filterCachedScanResultsByAge()[Landroid/net/wifi/ScanResult; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->lambda$-com_android_server_wifi_scanner_WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState_23945(JLandroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->enter()V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->exit()V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Ljava/util/List; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onFullScanResult(Landroid/net/wifi/ScanResult;I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onScanStatus(I)V HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->reportFullScanResult(Landroid/net/wifi/ScanResult;I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->reportScanResults(Landroid/net/wifi/WifiScanner$ScanData;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendOpFailedToAllAndClear(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;ILjava/lang/String;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendScanResultBroadcast(Z)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->tryToStartNewScan()V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get14(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get15(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get16(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/WifiMetrics; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/ChannelHelper; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get5(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/util/ArrayMap; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get6(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/Clock; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->computeWorkSource(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;Landroid/os/WorkSource;)Landroid/os/WorkSource; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeForLog([Landroid/net/wifi/WifiScanner$ScanData;)Ljava/lang/String; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeTo(Ljava/lang/StringBuilder;Landroid/net/wifi/WifiScanner$ScanSettings;)Ljava/lang/String; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->enforceLocationHardwarePermission(I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->isWorkSourceValid(Landroid/os/WorkSource;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->localLog(Ljava/lang/String;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logCallback(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILjava/lang/String;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logScanRequest(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->replySucceeded(Landroid/os/Message;)V HPLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer$Listener;->onPnoScanFailed()V +HPLcom/android/server/wifi/scanner/WificondScannerImpl$LastScanSettings;-><init>(J)V +HPLcom/android/server/wifi/scanner/WificondScannerImpl;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WificondScannerImpl;->isAllChannelsScanned(Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;)Z HPLcom/android/server/wifi/scanner/WificondScannerImpl;->pollLatestScanData()V +HPLcom/android/server/wifi/scanner/WificondScannerImpl;->processPendingScans()V +HPLcom/android/server/wifi/util/BitMask;-><init>(I)V HPLcom/android/server/wifi/util/BitMask;->testAndClear(I)Z HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->appendBuffer([B)Z +HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->getBuffer(I)[B +HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->getNumBuffers()I HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->pruneToSize(I)V +HPLcom/android/server/wifi/util/FrameParser;-><init>(B[B)V +HPLcom/android/server/wifi/util/FrameParser;->getUnsignedByte(Ljava/nio/ByteBuffer;)S +HPLcom/android/server/wifi/util/FrameParser;->getUnsignedShort(Ljava/nio/ByteBuffer;)I +HPLcom/android/server/wifi/util/FrameParser;->parseEthernetFrame(Ljava/nio/ByteBuffer;)V +HPLcom/android/server/wifi/util/FrameParser;->parseIpv4Packet(Ljava/nio/ByteBuffer;)V +HPLcom/android/server/wifi/util/FrameParser;->parseTcpPacket(Ljava/nio/ByteBuffer;)V HPLcom/android/server/wifi/util/InformationElementUtil$BssLoad;-><init>()V HPLcom/android/server/wifi/util/InformationElementUtil$BssLoad;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;-><init>()V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->cipherToString(I)Ljava/lang/String; HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->from([Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/BitSet;)V HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->generateCapabilitiesString()Ljava/lang/String; HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->isWpaOneElement(Landroid/net/wifi/ScanResult$InformationElement;)Z HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->isWpsElement(Landroid/net/wifi/ScanResult$InformationElement;)Z +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->keyManagementToString(I)Ljava/lang/String; +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseRsnCipher(I)I HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseRsnElement(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseWpaOneElement(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->protocolToString(I)Ljava/lang/String; HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;-><init>()V HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->is80211McRTTResponder()Z HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;-><init>()V +HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getCenterFreq0(I)I +HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getChannelWidth()I HPLcom/android/server/wifi/util/InformationElementUtil$Interworking;-><init>()V +HPLcom/android/server/wifi/util/InformationElementUtil$Interworking;->from(Landroid/net/wifi/ScanResult$InformationElement;)V HPLcom/android/server/wifi/util/InformationElementUtil$RoamingConsortium;-><init>()V HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;-><init>()V HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->from(Landroid/net/wifi/ScanResult$InformationElement;)V @@ -1542,168 +4399,673 @@ HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->getRateF HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->isValid()Z HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;-><init>()V HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->isValid()Z HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;-><init>()V +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq0()I +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq1()I +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getChannelWidth()I HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->isValid()Z HPLcom/android/server/wifi/util/InformationElementUtil$Vsa;-><init>()V HPLcom/android/server/wifi/util/InformationElementUtil$Vsa;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$WifiMode;->determineMode(IIZZZ)I HPLcom/android/server/wifi/util/InformationElementUtil;->parseInformationElements([B)[Landroid/net/wifi/ScanResult$InformationElement; HPLcom/android/server/wifi/util/NativeUtil;->byteArrayFromArrayList(Ljava/util/ArrayList;)[B HPLcom/android/server/wifi/util/NativeUtil;->byteArrayToArrayList([B)Ljava/util/ArrayList; HPLcom/android/server/wifi/util/NativeUtil;->macAddressFromByteArray([B)Ljava/lang/String; +HPLcom/android/server/wifi/util/ScanResultUtil;->createQuotedSSID(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForEapNetwork(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForOpenNetwork(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForPskNetwork(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForWepNetwork(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/util/ScanResultUtil;->toScanDetail(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ScanDetail; +HPLcom/android/server/wifi/util/TelephonyUtil;->getSimMethodForConfig(Landroid/net/wifi/WifiConfiguration;)I +HPLcom/android/server/wifi/util/TelephonyUtil;->isSimConfig(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/util/TelephonyUtil;->isSimEapMethod(I)Z +HPLcom/android/server/wifi/util/WifiAsyncChannel;->getOrInitLog()Lcom/android/server/wifi/WifiLog; HPLcom/android/server/wifi/util/WifiAsyncChannel;->sendMessage(Landroid/os/Message;)V +HPLcom/android/server/wifi/util/WifiAsyncChannel;->sendMessageSynchronously(Landroid/os/Message;)Landroid/os/Message; +HPLcom/android/server/wifi/util/WifiHandler;->getOrInitLog()Lcom/android/server/wifi/WifiLog; +HPLcom/android/server/wifi/util/WifiHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->canAccessScanResults(Ljava/lang/String;II)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkAppOpAllowed(ILjava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallerHasPeersMacAddressPermission(I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallersLocationPermission(Ljava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isCallerActiveNwScorer(I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isCurrentProfile(I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isForegroundApp(Ljava/lang/String;)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyForeground(Ljava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyVersion(Ljava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLocationModeEnabled(Ljava/lang/String;)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isScanAllowedbyApps(Ljava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCallingUserId(I)I +HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCurrentUser()I +HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getTopPkgName()Ljava/lang/String; +HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getUidPermission(Ljava/lang/String;I)I +HPLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/util/Pair; +HPLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeToXmlForConfigStore(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V +HPLcom/android/server/wifi/util/XmlUtil;->readCurrentValue(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;)Ljava/lang/Object; +HPLcom/android/server/wifi/util/XmlUtil;->writeNextValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/Object;)V +HPLcom/android/server/wifi/wificond/ChannelSettings;-><init>()V +HPLcom/android/server/wifi/wificond/ChannelSettings;->writeToParcel(Landroid/os/Parcel;I)V HPLcom/android/server/wifi/wificond/NativeScanResult$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/server/wifi/wificond/NativeScanResult; +HPLcom/android/server/wifi/wificond/NativeScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLcom/android/server/wifi/wificond/NativeScanResult$1;->newArray(I)[Ljava/lang/Object; +HPLcom/android/server/wifi/wificond/NativeScanResult;-><init>()V +HPLcom/android/server/wifi/wificond/SingleScanSettings;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->$m$0(J)V +HPLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->doFrame(J)V +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$1(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->test(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->test(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->$m$1(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->accept(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->apply(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$1(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$14(Ljava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$17(Ljava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$3(Ljava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$4(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$5(Ljava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$6(Ljava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$7(Ljava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$8(Ljava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$9(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;-><init>(BLjava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->accept(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$12()V +HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;-><init>(BLjava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->run()V HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->$m$0(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->$m$3(Ljava/lang/Object;)V HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->accept(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->test(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$1(Ljava/lang/Object;)Z HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->apply(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->$m$0(I)Ljava/io/File; +HPLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->getSystemDirectoryForUser(I)Ljava/io/File; +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->cacheWindows(Ljava/util/List;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->clearAndRecycleWindows(Ljava/util/List;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeChangedWindows()V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeWindowBoundsInScreen(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->isReportedWindowType(I)Z +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->lambda$-com_android_server_wm_AccessibilityController$WindowsForAccessibilityObserver_59134(Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->obtainPopulatedWindowInfo(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)Landroid/view/WindowInfo; +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->performComputeChangedWindowsNotLocked()V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->populateVisibleWindowsOnScreenLocked(Landroid/util/SparseArray;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->scheduleComputeChangedWindowsLocked()V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowChangedNoLayer(Landroid/view/WindowInfo;Landroid/view/WindowInfo;)Z +HPLcom/android/server/wm/AccessibilityController;->-wrap0(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;)V +HPLcom/android/server/wm/AccessibilityController;->drawMagnifiedRegionBorderIfNeededLocked()V +HPLcom/android/server/wm/AccessibilityController;->getMagnificationSpecForWindowLocked(Lcom/android/server/wm/WindowState;)Landroid/view/MagnificationSpec; +HPLcom/android/server/wm/AccessibilityController;->onRectangleOnScreenRequestedLocked(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/AccessibilityController;->onSomeWindowResizedOrMovedLocked()V +HPLcom/android/server/wm/AccessibilityController;->onWindowLayersChangedLocked()V +HPLcom/android/server/wm/AccessibilityController;->populateTransformationMatrixLocked(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;)V +HPLcom/android/server/wm/AppTransition;->createClipRevealAnimationLocked(IZLandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/view/animation/Animation; +HPLcom/android/server/wm/AppTransition;->getAppStackClipMode()I +HPLcom/android/server/wm/AppTransition;->getAppTransition()I +HPLcom/android/server/wm/AppTransition;->getCachedAnimations(Landroid/view/WindowManager$LayoutParams;)Lcom/android/server/AttributeCache$Entry; +HPLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/AppWindowAnimator;Lcom/android/server/wm/AppWindowAnimator;Landroid/util/ArraySet;Landroid/util/ArraySet;)I +HPLcom/android/server/wm/AppTransition;->isKeyguardGoingAwayTransit(I)Z +HPLcom/android/server/wm/AppTransition;->isKeyguardTransit(I)Z +HPLcom/android/server/wm/AppTransition;->isReady()Z +HPLcom/android/server/wm/AppTransition;->isRunning()Z +HPLcom/android/server/wm/AppTransition;->isTimeout()Z HPLcom/android/server/wm/AppTransition;->isTransitionSet()Z +HPLcom/android/server/wm/AppTransition;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)Landroid/view/animation/Animation; +HPLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;I)Landroid/view/animation/Animation; +HPLcom/android/server/wm/AppTransition;->notifyAppTransitionFinishedLocked(Landroid/os/IBinder;)V +HPLcom/android/server/wm/AppTransition;->notifyAppTransitionPendingLocked()V +HPLcom/android/server/wm/AppTransition;->notifyAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I +HPLcom/android/server/wm/AppTransition;->prepare()Z +HPLcom/android/server/wm/AppTransition;->prepareAppTransitionLocked(IZIZ)Z +HPLcom/android/server/wm/AppTransition;->setAppTransitionState(I)V +HPLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/AppWindowToken;)V +HPLcom/android/server/wm/AppTransition;->setReady()V +HPLcom/android/server/wm/AppTransition;->updateBooster()V +HPLcom/android/server/wm/AppWindowAnimator;->clearAnimation()V +HPLcom/android/server/wm/AppWindowAnimator;->clearThumbnail()V +HPLcom/android/server/wm/AppWindowAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J HPLcom/android/server/wm/AppWindowAnimator;->getStackClip()I +HPLcom/android/server/wm/AppWindowAnimator;->getStartTimeCorrection()J +HPLcom/android/server/wm/AppWindowAnimator;->getTransit()I HPLcom/android/server/wm/AppWindowAnimator;->isAnimating()Z +HPLcom/android/server/wm/AppWindowAnimator;->isAnimationStarting()Z +HPLcom/android/server/wm/AppWindowAnimator;->setAnimation(Landroid/view/animation/Animation;IIIIZIII)V +HPLcom/android/server/wm/AppWindowAnimator;->setDummyAnimation()V +HPLcom/android/server/wm/AppWindowAnimator;->setNullAnimation()V +HPLcom/android/server/wm/AppWindowAnimator;->showAllWindowsLocked()Z +HPLcom/android/server/wm/AppWindowAnimator;->stepAnimation(J)Z HPLcom/android/server/wm/AppWindowAnimator;->stepAnimationLocked(J)Z +HPLcom/android/server/wm/AppWindowAnimator;->updateLayers()V +HPLcom/android/server/wm/AppWindowContainerController$H;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wm/AppWindowContainerController;-><init>(Lcom/android/server/wm/TaskWindowContainerController;Landroid/view/IApplicationToken;Lcom/android/server/wm/AppWindowContainerListener;IIZZIZZZIIJLcom/android/server/wm/WindowManagerService;Landroid/content/res/Configuration;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/AppWindowContainerController;->addStartingWindow(Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/os/IBinder;ZZZZZZ)Z +HPLcom/android/server/wm/AppWindowContainerController;->getOrientation()I +HPLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4735()V +HPLcom/android/server/wm/AppWindowContainerController;->pauseKeyDispatching()V +HPLcom/android/server/wm/AppWindowContainerController;->removeStartingWindow()V +HPLcom/android/server/wm/AppWindowContainerController;->reportStartingWindowDrawn()V +HPLcom/android/server/wm/AppWindowContainerController;->resumeKeyDispatching()V +HPLcom/android/server/wm/AppWindowContainerController;->setVisibility(ZZ)V +HPLcom/android/server/wm/AppWindowContainerController;->stopFreezingScreen(Z)V +HPLcom/android/server/wm/AppWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;ZLandroid/content/res/Configuration;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/AppWindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/AppWindowToken;->allDrawnStatesConsidered()Z +HPLcom/android/server/wm/AppWindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken; +HPLcom/android/server/wm/AppWindowToken;->canRestoreSurfaces()Z HPLcom/android/server/wm/AppWindowToken;->checkAppWindowsReadyToShow()V +HPLcom/android/server/wm/AppWindowToken;->checkCompleteDeferredRemoval()Z +HPLcom/android/server/wm/AppWindowToken;->checkKeyguardFlagsChanged()V +HPLcom/android/server/wm/AppWindowToken;->clearAllDrawn()V +HPLcom/android/server/wm/AppWindowToken;->clearAnimatingFlags()V +HPLcom/android/server/wm/AppWindowToken;->clearWasVisibleBeforeClientHidden()V HPLcom/android/server/wm/AppWindowToken;->containsDismissKeyguardWindow()Z HPLcom/android/server/wm/AppWindowToken;->containsShowWhenLockedWindow()Z +HPLcom/android/server/wm/AppWindowToken;->destroySavedSurfaces()V +HPLcom/android/server/wm/AppWindowToken;->destroySurfaces()V +HPLcom/android/server/wm/AppWindowToken;->destroySurfaces(Z)V +HPLcom/android/server/wm/AppWindowToken;->fillsParent()Z +HPLcom/android/server/wm/AppWindowToken;->findMainWindow()Lcom/android/server/wm/WindowState; HPLcom/android/server/wm/AppWindowToken;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z HPLcom/android/server/wm/AppWindowToken;->forAllWindowsUnchecked(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/AppWindowToken;->getAnimLayerAdjustment()I +HPLcom/android/server/wm/AppWindowToken;->getController()Lcom/android/server/wm/AppWindowContainerController; +HPLcom/android/server/wm/AppWindowToken;->getOrientation(I)I +HPLcom/android/server/wm/AppWindowToken;->getOrientationIgnoreVisibility()I +HPLcom/android/server/wm/AppWindowToken;->getStack()Lcom/android/server/wm/TaskStack; HPLcom/android/server/wm/AppWindowToken;->getTask()Lcom/android/server/wm/Task; +HPLcom/android/server/wm/AppWindowToken;->hasBounds()Z +HPLcom/android/server/wm/AppWindowToken;->isAnimatingInvisibleWithSavedSurface()Z +HPLcom/android/server/wm/AppWindowToken;->isClientHidden()Z +HPLcom/android/server/wm/AppWindowToken;->isRelaunching()Z +HPLcom/android/server/wm/AppWindowToken;->isVisible()Z +HPLcom/android/server/wm/AppWindowToken;->markSavedSurfaceExiting()V +HPLcom/android/server/wm/AppWindowToken;->notifyAppStopped()V +HPLcom/android/server/wm/AppWindowToken;->onAppTransitionDone()V +HPLcom/android/server/wm/AppWindowToken;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V +HPLcom/android/server/wm/AppWindowToken;->onParentSet()V +HPLcom/android/server/wm/AppWindowToken;->onRemovedFromDisplay()V +HPLcom/android/server/wm/AppWindowToken;->removeDeadWindows()V +HPLcom/android/server/wm/AppWindowToken;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/AppWindowToken;->requestUpdateWallpaperIfNeeded()V +HPLcom/android/server/wm/AppWindowToken;->restoreSavedSurfaceForInterestingWindows()V +HPLcom/android/server/wm/AppWindowToken;->setAllAppWinAnimators()V +HPLcom/android/server/wm/AppWindowToken;->setAppLayoutChanges(ILjava/lang/String;)V +HPLcom/android/server/wm/AppWindowToken;->setClientHidden(Z)V +HPLcom/android/server/wm/AppWindowToken;->setVisibility(Landroid/view/WindowManager$LayoutParams;ZIZZ)Z HPLcom/android/server/wm/AppWindowToken;->stepAppWindowsAnimation(J)V +HPLcom/android/server/wm/AppWindowToken;->toString()Ljava/lang/String; +HPLcom/android/server/wm/AppWindowToken;->updateAllDrawn()V HPLcom/android/server/wm/AppWindowToken;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/AppWindowToken;->updateReportedVisibilityLocked()V HPLcom/android/server/wm/AppWindowToken;->windowsAreFocusable()Z +HPLcom/android/server/wm/BlackFrame$BlackSurface;->setMatrix(Landroid/graphics/Matrix;)V +HPLcom/android/server/wm/BlackFrame;->setMatrix(Landroid/graphics/Matrix;)V +HPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->animationFinished()V +HPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V HPLcom/android/server/wm/BoundsAnimationTarget;->onAnimationEnd(ZLandroid/graphics/Rect;Z)V HPLcom/android/server/wm/BoundsAnimationTarget;->onAnimationStart(Z)V HPLcom/android/server/wm/BoundsAnimationTarget;->setPinnedStackSize(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLcom/android/server/wm/DimLayer;->adjustAlpha(F)V +HPLcom/android/server/wm/DimLayer;->adjustBounds()V +HPLcom/android/server/wm/DimLayer;->getBoundsForFullscreen(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/DimLayer;->getLayer()I +HPLcom/android/server/wm/DimLayer;->getTargetAlpha()F HPLcom/android/server/wm/DimLayer;->hide()V +HPLcom/android/server/wm/DimLayer;->hide(J)V +HPLcom/android/server/wm/DimLayer;->isAnimating()Z HPLcom/android/server/wm/DimLayer;->isDimming()Z +HPLcom/android/server/wm/DimLayer;->setAlpha(F)V +HPLcom/android/server/wm/DimLayer;->setBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/DimLayer;->setBoundsForFullscreen()V +HPLcom/android/server/wm/DimLayer;->setLayer(I)V +HPLcom/android/server/wm/DimLayer;->show(IFJ)V +HPLcom/android/server/wm/DimLayer;->stepAnimation()Z HPLcom/android/server/wm/DimLayerController;->animateDimLayers()Z HPLcom/android/server/wm/DimLayerController;->animateDimLayers(Lcom/android/server/wm/DimLayer$DimLayerUser;)Z +HPLcom/android/server/wm/DimLayerController;->applyDim(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;Z)V +HPLcom/android/server/wm/DimLayerController;->getOrCreateDimLayerState(Lcom/android/server/wm/DimLayer$DimLayerUser;)Lcom/android/server/wm/DimLayerController$DimLayerState; HPLcom/android/server/wm/DimLayerController;->isDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;)Z HPLcom/android/server/wm/DimLayerController;->resetDimming()V HPLcom/android/server/wm/DimLayerController;->stopDimmingIfNeeded()V HPLcom/android/server/wm/DimLayerController;->stopDimmingIfNeeded(Lcom/android/server/wm/DimLayer$DimLayerUser;)V +HPLcom/android/server/wm/DimLayerController;->updateDimLayer(Lcom/android/server/wm/DimLayer$DimLayerUser;)V +HPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V +HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->fillsParent()Z HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->get(I)Lcom/android/server/wm/WindowContainer; HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->size()I +HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getOrientation()I +HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_154417(Lcom/android/server/wm/WindowState;)Z HPLcom/android/server/wm/DisplayContent$Screenshoter;->screenshot(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object; +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->findPositionForStack(ILcom/android/server/wm/TaskStack;Z)I HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->forAllExitingAppTokenWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getOrientation()I +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/TaskStack;Z)V +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->removeExistingAppTokensIfPossible()V HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->setExitingTokensHasVisible(Z)V +HPLcom/android/server/wm/DisplayContent;->-set2(Lcom/android/server/wm/DisplayContent;I)I +HPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIIII)V HPLcom/android/server/wm/DisplayContent;->adjustForImeIfNeeded()V +HPLcom/android/server/wm/DisplayContent;->animateDimLayers()Z HPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction(Z)Z +HPLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V +HPLcom/android/server/wm/DisplayContent;->checkCompleteDeferredRemoval()Z +HPLcom/android/server/wm/DisplayContent;->clearLayoutNeeded()V +HPLcom/android/server/wm/DisplayContent;->computeCompatSmallestWidth(ZIIII)I +HPLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V +HPLcom/android/server/wm/DisplayContent;->computeSizeRangesAndScreenLayout(Landroid/view/DisplayInfo;IZIIIFLandroid/content/res/Configuration;)V +HPLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z HPLcom/android/server/wm/DisplayContent;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z HPLcom/android/server/wm/DisplayContent;->getAppWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/AppWindowToken; HPLcom/android/server/wm/DisplayContent;->getDisplayId()I HPLcom/android/server/wm/DisplayContent;->getDisplayInfo()Landroid/view/DisplayInfo; +HPLcom/android/server/wm/DisplayContent;->getDockedDividerController()Lcom/android/server/wm/DockedStackDividerController; +HPLcom/android/server/wm/DisplayContent;->getDockedStackIgnoringVisibility()Lcom/android/server/wm/TaskStack; HPLcom/android/server/wm/DisplayContent;->getDockedStackLocked()Lcom/android/server/wm/TaskStack; HPLcom/android/server/wm/DisplayContent;->getHomeStack()Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/DisplayContent;->getLastOrientation()I +HPLcom/android/server/wm/DisplayContent;->getLayerForAnimationBackground(Lcom/android/server/wm/WindowStateAnimator;)I HPLcom/android/server/wm/DisplayContent;->getLogicalDisplayRect(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/DisplayContent;->getNeedsMenu(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->getOrientation()I +HPLcom/android/server/wm/DisplayContent;->getRotation()I HPLcom/android/server/wm/DisplayContent;->getStackById(I)Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken; +HPLcom/android/server/wm/DisplayContent;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z +HPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z HPLcom/android/server/wm/DisplayContent;->isStackVisible(I)Z -HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_16024(Lcom/android/server/wm/WindowState;)V -HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_18337(Lcom/android/server/wm/WindowState;)V -HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_22837(Lcom/android/server/wm/WindowState;)V -HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_22943(Lcom/android/server/wm/WindowState;)V -HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_26486(Lcom/android/server/wm/WindowState;)V -HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28510(Lcom/android/server/wm/WindowState;)V -HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28715(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_109993(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_113179(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_117549(IILcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_130270(IZLandroid/os/IBinder;Landroid/util/MutableBoolean;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_16102(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_18415(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20364(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20860(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_22915(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_23021(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_26564(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28303(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28588(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28793(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_92144(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->layoutAndAssignWindowLayersIfNeeded()V +HPLcom/android/server/wm/DisplayContent;->okToAnimate()Z +HPLcom/android/server/wm/DisplayContent;->okToDisplay()Z HPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V +HPLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;Z)V +HPLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V +HPLcom/android/server/wm/DisplayContent;->prepareWindowSurfaces()V +HPLcom/android/server/wm/DisplayContent;->reduceCompatConfigWidthSize(IIILandroid/util/DisplayMetrics;III)I +HPLcom/android/server/wm/DisplayContent;->reduceConfigLayout(IIFIIII)I +HPLcom/android/server/wm/DisplayContent;->removeExistingTokensIfPossible()V HPLcom/android/server/wm/DisplayContent;->resetAnimationBackgroundAnimator()V +HPLcom/android/server/wm/DisplayContent;->resetDimming()V +HPLcom/android/server/wm/DisplayContent;->scheduleToastWindowsTimeoutIfNeededLocked(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->screenshotApplications(Landroid/os/IBinder;IIZFZZLcom/android/server/wm/DisplayContent$Screenshoter;)Ljava/lang/Object; +HPLcom/android/server/wm/DisplayContent;->setExitingTokensHasVisible(Z)V +HPLcom/android/server/wm/DisplayContent;->setInputMethodTarget(Lcom/android/server/wm/WindowState;ZI)V +HPLcom/android/server/wm/DisplayContent;->setLayoutNeeded()V HPLcom/android/server/wm/DisplayContent;->setTouchExcludeRegion(Lcom/android/server/wm/Task;)V +HPLcom/android/server/wm/DisplayContent;->stopDimmingIfNeeded()V +HPLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(I)Landroid/view/DisplayInfo; +HPLcom/android/server/wm/DisplayContent;->updateRotationUnchecked(Z)Z +HPLcom/android/server/wm/DisplayContent;->updateSystemUiVisibility(II)V +HPLcom/android/server/wm/DisplayContent;->updateWallpaperForAnimator(Lcom/android/server/wm/WindowAnimator;)V +HPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator(Lcom/android/server/wm/WindowAnimator;)V +HPLcom/android/server/wm/DockedStackDividerController;->animate(J)Z +HPLcom/android/server/wm/DockedStackDividerController;->initSnapAlgorithmForRotations()V +HPLcom/android/server/wm/DockedStackDividerController;->isMinimizedDock()Z HPLcom/android/server/wm/DockedStackDividerController;->isResizing()Z +HPLcom/android/server/wm/DockedStackDividerController;->positionDockedStackedDivider(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/DockedStackDividerController;->reevaluateVisibility(Z)V +HPLcom/android/server/wm/DockedStackDividerController;->setAdjustedForIme(ZZZLcom/android/server/wm/WindowState;I)V HPLcom/android/server/wm/DockedStackDividerController;->setResizeDimLayer(ZIF)V +HPLcom/android/server/wm/InputConsumerImpl;->layout(II)V +HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->-wrap0(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V HPLcom/android/server/wm/InputMonitor;->-get0(Lcom/android/server/wm/InputMonitor;)Z +HPLcom/android/server/wm/InputMonitor;->-get1(Lcom/android/server/wm/InputMonitor;)Z HPLcom/android/server/wm/InputMonitor;->-get2(Lcom/android/server/wm/InputMonitor;)Z +HPLcom/android/server/wm/InputMonitor;->-get3(Lcom/android/server/wm/InputMonitor;)Z +HPLcom/android/server/wm/InputMonitor;->-get4(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/input/InputWindowHandle; HPLcom/android/server/wm/InputMonitor;->-get5(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/InputMonitor;->-get6(Lcom/android/server/wm/InputMonitor;)[Lcom/android/server/input/InputWindowHandle; +HPLcom/android/server/wm/InputMonitor;->-get7(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowManagerService; +HPLcom/android/server/wm/InputMonitor;->-get8(Lcom/android/server/wm/InputMonitor;)Landroid/graphics/Rect; +HPLcom/android/server/wm/InputMonitor;->-set0(Lcom/android/server/wm/InputMonitor;Z)Z +HPLcom/android/server/wm/InputMonitor;->-set1(Lcom/android/server/wm/InputMonitor;Z)Z +HPLcom/android/server/wm/InputMonitor;->-set2(Lcom/android/server/wm/InputMonitor;Z)Z +HPLcom/android/server/wm/InputMonitor;->-set3(Lcom/android/server/wm/InputMonitor;Z)Z +HPLcom/android/server/wm/InputMonitor;->-wrap1(Lcom/android/server/wm/InputMonitor;)V HPLcom/android/server/wm/InputMonitor;->addInputWindowHandle(Lcom/android/server/input/InputWindowHandle;)V HPLcom/android/server/wm/InputMonitor;->addInputWindowHandle(Lcom/android/server/input/InputWindowHandle;Lcom/android/server/wm/WindowState;IIZZZ)V HPLcom/android/server/wm/InputMonitor;->clearInputWindowHandlesLw()V HPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;I)Lcom/android/server/wm/InputConsumerImpl; -HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V +HPLcom/android/server/wm/InputMonitor;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J +HPLcom/android/server/wm/InputMonitor;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I +HPLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V +HPLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/AppWindowToken;)V +HPLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V +HPLcom/android/server/wm/InputMonitor;->setUpdateInputWindowsNeededLw()V +HPLcom/android/server/wm/InputMonitor;->updateInputWindowsLw(Z)V +HPLcom/android/server/wm/PinnedStackController;->getDefaultBounds()Landroid/graphics/Rect; +HPLcom/android/server/wm/PinnedStackController;->getInsetBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect; +HPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;Z)Landroid/graphics/Rect; +HPLcom/android/server/wm/PinnedStackController;->notifyMovementBoundsChanged(Z)V +HPLcom/android/server/wm/PinnedStackController;->reloadResources()V +HPLcom/android/server/wm/PinnedStackController;->setAdjustedForIme(ZI)V +HPLcom/android/server/wm/PinnedStackController;->transformBoundsToAspectRatio(Landroid/graphics/Rect;FZ)Landroid/graphics/Rect; +HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;I)V +HPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction(ZII)V +HPLcom/android/server/wm/RootWindowContainer;->computeFocusedWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z HPLcom/android/server/wm/RootWindowContainer;->getAppWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/AppWindowToken; HPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent; HPLcom/android/server/wm/RootWindowContainer;->getDisplayContentOrCreate(I)Lcom/android/server/wm/DisplayContent; HPLcom/android/server/wm/RootWindowContainer;->getStackById(I)Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/RootWindowContainer;->getWindowTokenDisplay(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayContent; HPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z +HPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()Landroid/util/ArraySet; HPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z HPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z +HPLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_7116(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_7397(Lcom/android/server/wm/WindowState;)V HPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacement(Z)V +HPLcom/android/server/wm/RootWindowContainer;->removeReplacedWindows()V +HPLcom/android/server/wm/ScreenRotationAnimation;->getEnterTransformation()Landroid/view/animation/Transformation; +HPLcom/android/server/wm/ScreenRotationAnimation;->hasAnimations()Z +HPLcom/android/server/wm/ScreenRotationAnimation;->isAnimating()Z +HPLcom/android/server/wm/ScreenRotationAnimation;->setSnapshotTransformInTransaction(Landroid/graphics/Matrix;F)V +HPLcom/android/server/wm/ScreenRotationAnimation;->stepAnimation(J)Z +HPLcom/android/server/wm/ScreenRotationAnimation;->updateSurfacesInTransaction()V +HPLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)V +HPLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;)V +HPLcom/android/server/wm/Session;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/wm/Session;->onWindowSurfaceVisibilityChanged(Lcom/android/server/wm/WindowSurfaceController;ZI)V +HPLcom/android/server/wm/Session;->performHapticFeedback(Landroid/view/IWindow;IZ)Z +HPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I +HPLcom/android/server/wm/Session;->windowAddedLocked(Ljava/lang/String;)V +HPLcom/android/server/wm/StackWindowController;->getBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/StackWindowController;->positionChildAtTop(Lcom/android/server/wm/TaskWindowContainerController;Z)V HPLcom/android/server/wm/StackWindowListener;->requestResize(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/SurfaceControlWithBackground;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIIIILcom/android/server/wm/WindowSurfaceController;)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->destroy()V +HPLcom/android/server/wm/SurfaceControlWithBackground;->hide()V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setAlpha(F)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setFinalCrop(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setLayer(I)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setLayerStack(I)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setMatrix(FFFF)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setPosition(FF)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setWindowCrop(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->show()V +HPLcom/android/server/wm/SurfaceControlWithBackground;->updateBackgroundVisibility()V +HPLcom/android/server/wm/Task;-><init>(ILcom/android/server/wm/TaskStack;ILcom/android/server/wm/WindowManagerService;Landroid/graphics/Rect;Landroid/content/res/Configuration;IZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/TaskWindowContainerController;)V HPLcom/android/server/wm/Task;->cropWindowsToStackBounds()Z HPLcom/android/server/wm/Task;->dimFullscreen()Z +HPLcom/android/server/wm/Task;->fillsParent()Z +HPLcom/android/server/wm/Task;->getAdjustedAddPosition(I)I +HPLcom/android/server/wm/Task;->getBounds(Landroid/graphics/Rect;)V HPLcom/android/server/wm/Task;->getDimBounds(Landroid/graphics/Rect;)V HPLcom/android/server/wm/Task;->getDisplayContent()Lcom/android/server/wm/DisplayContent; HPLcom/android/server/wm/Task;->getTopVisibleAppToken()Lcom/android/server/wm/AppWindowToken; HPLcom/android/server/wm/Task;->inFreeformWorkspace()Z HPLcom/android/server/wm/Task;->inPinnedWorkspace()Z HPLcom/android/server/wm/Task;->isAttachedToDisplay()Z +HPLcom/android/server/wm/Task;->isDragResizing()Z +HPLcom/android/server/wm/Task;->isFloating()Z HPLcom/android/server/wm/Task;->isFullscreen()Z +HPLcom/android/server/wm/Task;->isHomeTask()Z HPLcom/android/server/wm/Task;->isResizeable()Z +HPLcom/android/server/wm/Task;->onParentSet()V +HPLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;Landroid/content/res/Configuration;)I +HPLcom/android/server/wm/Task;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/wm/Task;->showForAllUsers()Z HPLcom/android/server/wm/Task;->useCurrentBounds()Z +HPLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot; +HPLcom/android/server/wm/TaskSnapshotCache;->putSnapshot(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$TaskSnapshot;)V +HPLcom/android/server/wm/TaskSnapshotController;->-com_android_server_wm_TaskSnapshotController-mthref-0(I)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotController;->getClosingTasks(Landroid/util/ArraySet;Landroid/util/ArraySet;)V +HPLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot; +HPLcom/android/server/wm/TaskSnapshotController;->handleClosingApps(Landroid/util/ArraySet;)V +HPLcom/android/server/wm/TaskSnapshotController;->setPersisterPaused(Z)V +HPLcom/android/server/wm/TaskSnapshotController;->snapshotTask(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot; +HPLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;)V +HPLcom/android/server/wm/TaskSnapshotPersister$1;->run()V HPLcom/android/server/wm/TaskSnapshotPersister$DirectoryResolver;->getSystemDirectoryForUser(I)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I +HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V +HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeBuffer()Z +HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeProto()Z +HPLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->write()V +HPLcom/android/server/wm/TaskSnapshotPersister;->-get1(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/lang/Object; +HPLcom/android/server/wm/TaskSnapshotPersister;->-get5(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque; +HPLcom/android/server/wm/TaskSnapshotPersister;->-set0(Lcom/android/server/wm/TaskSnapshotPersister;Z)Z +HPLcom/android/server/wm/TaskSnapshotPersister;->getBitmapFile(II)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister;->getDirectory(I)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister;->getProtoFile(II)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister;->getReducedResolutionBitmapFile(II)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister;->sendToQueueLocked(Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V +HPLcom/android/server/wm/TaskSnapshotPersister;->setPaused(Z)V +HPLcom/android/server/wm/TaskSnapshotSurface;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/wm/TaskSnapshotSurface; +HPLcom/android/server/wm/TaskStack;->checkCompleteDeferredRemoval()Z +HPLcom/android/server/wm/TaskStack;->computeMinPosition(II)I HPLcom/android/server/wm/TaskStack;->dimFullscreen()Z HPLcom/android/server/wm/TaskStack;->fillsParent()Z +HPLcom/android/server/wm/TaskStack;->findPositionForTask(Lcom/android/server/wm/Task;IZZ)I HPLcom/android/server/wm/TaskStack;->getBounds(Landroid/graphics/Rect;)V HPLcom/android/server/wm/TaskStack;->getDimBounds(Landroid/graphics/Rect;)V HPLcom/android/server/wm/TaskStack;->getDisplayContent()Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/TaskStack;->getDisplayInfo()Landroid/view/DisplayInfo; HPLcom/android/server/wm/TaskStack;->isAdjustedForMinimizedDockedStack()Z +HPLcom/android/server/wm/TaskStack;->isAnimatingBounds()Z +HPLcom/android/server/wm/TaskStack;->isAnimatingForIme()Z +HPLcom/android/server/wm/TaskStack;->isAttachedToDisplay()Z +HPLcom/android/server/wm/TaskStack;->isForceScaled()Z +HPLcom/android/server/wm/TaskStack;->isMinimizedDockAndHomeStackResizable()Z +HPLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;Z)V +HPLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;ZZ)V +HPLcom/android/server/wm/TaskStack;->resetAdjustedForIme(Z)V HPLcom/android/server/wm/TaskStack;->resetAnimationBackgroundAnimator()V +HPLcom/android/server/wm/TaskStack;->setAdjustedBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/TaskStack;->setAnimationBackground(Lcom/android/server/wm/WindowStateAnimator;I)V HPLcom/android/server/wm/TaskStack;->setTouchExcludeRegion(Lcom/android/server/wm/Task;ILandroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;)V HPLcom/android/server/wm/TaskStack;->shouldIgnoreInput()Z HPLcom/android/server/wm/TaskStack;->stepAppWindowsAnimation(J)V HPLcom/android/server/wm/TaskStack;->updateAdjustedBounds()V HPLcom/android/server/wm/TaskStack;->useCurrentBounds()Z +HPLcom/android/server/wm/TaskTapPointerEventListener;->getDisplayId()I +HPLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V +HPLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;I)V +HPLcom/android/server/wm/TaskTapPointerEventListener;->setTouchExcludeRegion(Landroid/graphics/Region;)V +HPLcom/android/server/wm/TaskWindowContainerController;-><init>(ILcom/android/server/wm/TaskWindowContainerListener;Lcom/android/server/wm/StackWindowController;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/WindowManagerService;)V +HPLcom/android/server/wm/TaskWindowContainerController;->getBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/TaskWindowContainerController;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/AppWindowToken;)V +HPLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->reset()V +HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindowsForAppTransitionIfNeeded(Lcom/android/server/wm/DisplayContent;Landroid/util/ArraySet;)V +HPLcom/android/server/wm/WallpaperController;->findWallpaperTarget(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WallpaperController;->getAnimLayerAdjustment()I HPLcom/android/server/wm/WallpaperController;->getWallpaperTarget()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V HPLcom/android/server/wm/WallpaperController;->isWallpaperTarget(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z +HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WallpaperController;->lambda$-com_android_server_wm_WallpaperController_4687(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;IIZ)Z +HPLcom/android/server/wm/WallpaperController;->updateWallpaperTokens(Z)V +HPLcom/android/server/wm/WallpaperController;->updateWallpaperWindowsTarget(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V +HPLcom/android/server/wm/WallpaperController;->wallpaperTransitionReady()Z +HPLcom/android/server/wm/WallpaperVisibilityListeners;->notifyWallpaperVisibilityChanged(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WallpaperWindowToken;->hasVisibleNotDrawnWallpaper()Z +HPLcom/android/server/wm/WallpaperWindowToken;->hideWallpaperToken(ZLjava/lang/String;)V +HPLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperWindows(ZI)V HPLcom/android/server/wm/WindowAnimator;->animate(J)V +HPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V HPLcom/android/server/wm/WindowAnimator;->getDisplayContentsAnimatorLocked(I)Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator; +HPLcom/android/server/wm/WindowAnimator;->getPendingLayoutChanges(I)I HPLcom/android/server/wm/WindowAnimator;->getScreenRotationAnimationLocked(I)Lcom/android/server/wm/ScreenRotationAnimation; -HPLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_4018(J)V +HPLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_3951(J)V HPLcom/android/server/wm/WindowAnimator;->orAnimating(Z)V +HPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V +HPLcom/android/server/wm/WindowAnimator;->setAnimating(Z)V +HPLcom/android/server/wm/WindowAnimator;->setPendingLayoutChanges(II)V HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Lcom/android/server/wm/WindowState;)Z HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->setConsumer(Ljava/util/function/Consumer;)V HPLcom/android/server/wm/WindowContainer;->-get0(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool; +HPLcom/android/server/wm/WindowContainer;-><init>()V +HPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;Ljava/util/Comparator;)V HPLcom/android/server/wm/WindowContainer;->checkAppWindowsReadyToShow()V HPLcom/android/server/wm/WindowContainer;->checkCompleteDeferredRemoval()Z +HPLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I HPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z HPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V HPLcom/android/server/wm/WindowContainer;->getConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/wm/WindowContainer;->getController()Lcom/android/server/wm/WindowContainerController; +HPLcom/android/server/wm/WindowContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/wm/WindowContainer;->getOrientation()I HPLcom/android/server/wm/WindowContainer;->getOrientation(I)I HPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer; +HPLcom/android/server/wm/WindowContainer;->getParents(Ljava/util/LinkedList;)V +HPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer; HPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowContainer;->hasContentToDisplay()Z HPLcom/android/server/wm/WindowContainer;->isAnimating()Z +HPLcom/android/server/wm/WindowContainer;->isOnTop()Z +HPLcom/android/server/wm/WindowContainer;->isVisible()Z HPLcom/android/server/wm/WindowContainer;->obtainConsumerWrapper(Ljava/util/function/Consumer;)Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper; +HPLcom/android/server/wm/WindowContainer;->onAppTransitionDone()V +HPLcom/android/server/wm/WindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/server/wm/WindowContainer;->onMergedOverrideConfigurationChanged()V +HPLcom/android/server/wm/WindowContainer;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/server/wm/WindowContainer;->onParentSet()V +HPLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V +HPLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V +HPLcom/android/server/wm/WindowContainer;->removeImmediately()V +HPLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V +HPLcom/android/server/wm/WindowContainer;->setController(Lcom/android/server/wm/WindowContainerController;)V +HPLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V +HPLcom/android/server/wm/WindowContainer;->setVisibleBeforeClientHidden()V HPLcom/android/server/wm/WindowContainer;->stepAppWindowsAnimation(J)V +HPLcom/android/server/wm/WindowLayersController;->adjustSpecialWindows()V HPLcom/android/server/wm/WindowLayersController;->assignAnimLayer(Lcom/android/server/wm/WindowState;I)V +HPLcom/android/server/wm/WindowLayersController;->assignWindowLayers(Lcom/android/server/wm/DisplayContent;)V HPLcom/android/server/wm/WindowLayersController;->collectSpecialWindows(Lcom/android/server/wm/WindowState;)V -HPLcom/android/server/wm/WindowLayersController;->lambda$-com_android_server_wm_WindowLayersController_3457(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowLayersController;->lambda$-com_android_server_wm_WindowLayersController_3664(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowLayersController;->reset()V +HPLcom/android/server/wm/WindowList;-><init>()V +HPLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object; +HPLcom/android/server/wm/WindowManagerService$2;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V HPLcom/android/server/wm/WindowManagerService$AppFreezeListener;->onAppFreezeTimeout()V +HPLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wm/WindowManagerService$LocalService;->computeWindowsForAccessibility()V +HPLcom/android/server/wm/WindowManagerService$LocalService;->getCompatibleMagnificationSpecForWindow(Landroid/os/IBinder;)Landroid/view/MagnificationSpec; +HPLcom/android/server/wm/WindowManagerService$LocalService;->isDockedDividerResizing()Z +HPLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardShowingAndNotOccluded()Z HPLcom/android/server/wm/WindowManagerService$LocalService;->isStackVisible(I)Z +HPLcom/android/server/wm/WindowManagerService$MousePositionTracker;->onPointerEvent(Landroid/view/MotionEvent;)V +HPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I +HPLcom/android/server/wm/WindowManagerService;->applyAnimationLocked(Lcom/android/server/wm/AppWindowToken;Landroid/view/WindowManager$LayoutParams;IZZ)Z HPLcom/android/server/wm/WindowManagerService;->boostPriorityForLockedSection()V +HPLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V HPLcom/android/server/wm/WindowManagerService;->closeSurfaceTransaction()V -HPLcom/android/server/wm/WindowManagerService;->closeSurfaceTransaction(Z)V +HPLcom/android/server/wm/WindowManagerService;->containsDismissKeyguardWindow(Landroid/os/IBinder;)Z +HPLcom/android/server/wm/WindowManagerService;->containsShowWhenLockedWindow(Landroid/os/IBinder;)Z +HPLcom/android/server/wm/WindowManagerService;->continueSurfaceLayout()V +HPLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/Surface;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I +HPLcom/android/server/wm/WindowManagerService;->deferSurfaceLayout()V +HPLcom/android/server/wm/WindowManagerService;->destroyPreservedSurfaceLocked()V +HPLcom/android/server/wm/WindowManagerService;->dipToPixel(ILandroid/util/DisplayMetrics;)I +HPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V +HPLcom/android/server/wm/WindowManagerService;->excludeWindowTypeFromTapOutTask(I)Z +HPLcom/android/server/wm/WindowManagerService;->executeAppTransition()V +HPLcom/android/server/wm/WindowManagerService;->executeEmptyAnimationTransaction()V +HPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V +HPLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F HPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked()Lcom/android/server/wm/DisplayContent; HPLcom/android/server/wm/WindowManagerService;->getImeFocusStackLocked()Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/WindowManagerService;->getInputMethodWindowLw()Landroid/view/WindowManagerPolicy$WindowState; +HPLcom/android/server/wm/WindowManagerService;->getLidState()I +HPLcom/android/server/wm/WindowManagerService;->getStableInsets(ILandroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->getStableInsetsLocked(ILandroid/graphics/Rect;)V HPLcom/android/server/wm/WindowManagerService;->getStackBounds(ILandroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleLocked()F +HPLcom/android/server/wm/WindowManagerService;->getWindowDisplayFrame(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->handleAnimatingStoppedAndTransitionLocked()I +HPLcom/android/server/wm/WindowManagerService;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z +HPLcom/android/server/wm/WindowManagerService;->isCurrentProfileLocked(I)Z +HPLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z +HPLcom/android/server/wm/WindowManagerService;->isKeyguardShowingAndNotOccluded()Z +HPLcom/android/server/wm/WindowManagerService;->isScreenCaptureDisabledLocked(I)Z +HPLcom/android/server/wm/WindowManagerService;->isSecureLocked(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WindowManagerService;->isShowingDream()Z +HPLcom/android/server/wm/WindowManagerService;->makeWindowFreezingScreenIfNeededLocked(Lcom/android/server/wm/WindowState;)V HPLcom/android/server/wm/WindowManagerService;->markForSeamlessRotation(Lcom/android/server/wm/WindowState;Z)V -HPLcom/android/server/wm/WindowManagerService;->okToDisplay()Z +HPLcom/android/server/wm/WindowManagerService;->monitor()V +HPLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchesCleared(Landroid/os/IBinder;)V +HPLcom/android/server/wm/WindowManagerService;->notifyAppResumedFinished(Landroid/os/IBinder;)V +HPLcom/android/server/wm/WindowManagerService;->notifyFocusChanged()V +HPLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLcom/android/server/wm/WindowManagerService;->openSurfaceTransaction()V +HPLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZ)V +HPLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZIZ)V HPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I +HPLcom/android/server/wm/WindowManagerService;->removeWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V +HPLcom/android/server/wm/WindowManagerService;->requestTraversal()V HPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V +HPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V +HPLcom/android/server/wm/WindowManagerService;->setFocusTaskRegionLocked(Lcom/android/server/wm/AppWindowToken;)V +HPLcom/android/server/wm/WindowManagerService;->setFocusedApp(Landroid/os/IBinder;Z)V +HPLcom/android/server/wm/WindowManagerService;->setHoldScreenLocked(Lcom/android/server/wm/Session;)V +HPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V HPLcom/android/server/wm/WindowManagerService;->setResizeDimLayer(ZIF)V +HPLcom/android/server/wm/WindowManagerService;->statusBarVisibilityChanged(I)V +HPLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V +HPLcom/android/server/wm/WindowManagerService;->stopUsingSavedSurfaceLocked()V +HPLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;ZZ)Z +HPLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z +HPLcom/android/server/wm/WindowManagerService;->updateNonSystemOverlayWindowsVisibilityIfNeeded(Lcom/android/server/wm/WindowState;Z)V +HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration; +HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokensLocked(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration; HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokensLocked(ZI)Z +HPLcom/android/server/wm/WindowManagerService;->updateStatusBarVisibilityLocked(I)Z +HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState; HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->boost()V HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V +HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setAppTransitionRunning(Z)V +HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->updatePriorityLocked()V +HPLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->reset()V +HPLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;IILandroid/view/WindowManager$LayoutParams;IIZ)V +HPLcom/android/server/wm/WindowState;->addWinAnimatorToList(Ljava/util/ArrayList;)V +HPLcom/android/server/wm/WindowState;->adjustStartingWindowFlags()V +HPLcom/android/server/wm/WindowState;->applyAdjustForImeIfNeeded()V HPLcom/android/server/wm/WindowState;->applyDimLayerIfNeeded()V HPLcom/android/server/wm/WindowState;->applyGravityAndUpdateFrame(Landroid/graphics/Rect;Landroid/graphics/Rect;)V HPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z @@ -1711,42 +5073,72 @@ HPLcom/android/server/wm/WindowState;->calculatePolicyCrop(Landroid/graphics/Rec HPLcom/android/server/wm/WindowState;->calculateSystemDecorRect(Landroid/graphics/Rect;)V HPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z HPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z +HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z HPLcom/android/server/wm/WindowState;->canReceiveKeys()Z HPLcom/android/server/wm/WindowState;->canReceiveTouchInput()Z +HPLcom/android/server/wm/WindowState;->canRestoreSurface()Z +HPLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V +HPLcom/android/server/wm/WindowState;->clearHasSavedSurface()V +HPLcom/android/server/wm/WindowState;->clearWasVisibleBeforeClientHidden()V HPLcom/android/server/wm/WindowState;->computeDragResizing()Z HPLcom/android/server/wm/WindowState;->computeFrameLw(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V HPLcom/android/server/wm/WindowState;->cropRegionToStackBoundsIfNeeded(Landroid/graphics/Region;)V +HPLcom/android/server/wm/WindowState;->destroyOrSaveSurfaceUnchecked()V +HPLcom/android/server/wm/WindowState;->destroySavedSurface()V +HPLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z +HPLcom/android/server/wm/WindowState;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZI)V +HPLcom/android/server/wm/WindowState;->dispatchWallpaperVisibility(Z)V +HPLcom/android/server/wm/WindowState;->disposeInputChannel()V HPLcom/android/server/wm/WindowState;->expandForSurfaceInsets(Landroid/graphics/Rect;)V HPLcom/android/server/wm/WindowState;->fillsDisplay()Z +HPLcom/android/server/wm/WindowState;->forAllWindowTopToBottom(Lcom/android/internal/util/ToBooleanFunction;)Z HPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z HPLcom/android/server/wm/WindowState;->getAnimLayerAdjustment()I HPLcom/android/server/wm/WindowState;->getAppToken()Landroid/view/IApplicationToken; HPLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams; +HPLcom/android/server/wm/WindowState;->getBackdropFrame(Landroid/graphics/Rect;)Landroid/graphics/Rect; HPLcom/android/server/wm/WindowState;->getBaseType()I HPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration; HPLcom/android/server/wm/WindowState;->getDimLayerUser()Lcom/android/server/wm/DimLayer$DimLayerUser; HPLcom/android/server/wm/WindowState;->getDisplayContent()Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/WindowState;->getDisplayFrameLw()Landroid/graphics/Rect; HPLcom/android/server/wm/WindowState;->getDisplayId()I HPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo; +HPLcom/android/server/wm/WindowState;->getDrawnStateEvaluated()Z +HPLcom/android/server/wm/WindowState;->getHighestAnimLayer()I HPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutNanos()J +HPLcom/android/server/wm/WindowState;->getMergedConfiguration(Landroid/util/MergedConfiguration;)V +HPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String; +HPLcom/android/server/wm/WindowState;->getNeedsMenuLw(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/wm/WindowState;->getOrientationChanging()Z HPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState; HPLcom/android/server/wm/WindowState;->getSpecialWindowAnimLayerAdjustment()I HPLcom/android/server/wm/WindowState;->getStack()Lcom/android/server/wm/TaskStack; HPLcom/android/server/wm/WindowState;->getStackId()I +HPLcom/android/server/wm/WindowState;->getSurfaceLayer()I +HPLcom/android/server/wm/WindowState;->getSystemUiVisibility()I HPLcom/android/server/wm/WindowState;->getTask()Lcom/android/server/wm/Task; HPLcom/android/server/wm/WindowState;->getTopParentWindow()Lcom/android/server/wm/WindowState; HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;I)I HPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowState;->getWindowInfo()Landroid/view/WindowInfo; HPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence; HPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V +HPLcom/android/server/wm/WindowState;->hasContentToDisplay()Z HPLcom/android/server/wm/WindowState;->hasMoved()Z HPLcom/android/server/wm/WindowState;->hasSavedSurface()Z +HPLcom/android/server/wm/WindowState;->hideLw(Z)Z +HPLcom/android/server/wm/WindowState;->hideLw(ZZ)Z +HPLcom/android/server/wm/WindowState;->hideNonSystemOverlayWindowsWhenVisible()Z +HPLcom/android/server/wm/WindowState;->hideWallpaperWindow(ZLjava/lang/String;)V HPLcom/android/server/wm/WindowState;->inFreeformWorkspace()Z HPLcom/android/server/wm/WindowState;->inFullscreenContainer()Z HPLcom/android/server/wm/WindowState;->inPinnedWorkspace()Z HPLcom/android/server/wm/WindowState;->isAnimating()Z +HPLcom/android/server/wm/WindowState;->isAnimatingInvisibleWithSavedSurface()Z HPLcom/android/server/wm/WindowState;->isAnimatingLw()Z +HPLcom/android/server/wm/WindowState;->isAnimatingWithSavedSurface()Z HPLcom/android/server/wm/WindowState;->isChildWindow()Z HPLcom/android/server/wm/WindowState;->isConfigChanged()Z HPLcom/android/server/wm/WindowState;->isDefaultDisplay()Z @@ -1756,52 +5148,157 @@ HPLcom/android/server/wm/WindowState;->isDockedResizing()Z HPLcom/android/server/wm/WindowState;->isDragResizeChanged()Z HPLcom/android/server/wm/WindowState;->isDragResizing()Z HPLcom/android/server/wm/WindowState;->isDrawnLw()Z +HPLcom/android/server/wm/WindowState;->isFocused()Z HPLcom/android/server/wm/WindowState;->isGoneForLayoutLw()Z HPLcom/android/server/wm/WindowState;->isHiddenFromUserLocked()Z HPLcom/android/server/wm/WindowState;->isInMultiWindowMode()Z +HPLcom/android/server/wm/WindowState;->isInputMethodWindow()Z +HPLcom/android/server/wm/WindowState;->isInteresting()Z +HPLcom/android/server/wm/WindowState;->isLaidOut()Z +HPLcom/android/server/wm/WindowState;->isLetterboxedAppWindow()Z HPLcom/android/server/wm/WindowState;->isObscuringDisplay()Z HPLcom/android/server/wm/WindowState;->isOnScreen()Z HPLcom/android/server/wm/WindowState;->isOpaqueDrawn()Z HPLcom/android/server/wm/WindowState;->isParentWindowHidden()Z +HPLcom/android/server/wm/WindowState;->isReadyForDisplay()Z HPLcom/android/server/wm/WindowState;->isResizedWhileNotDragResizing()Z +HPLcom/android/server/wm/WindowState;->isResizedWhileNotDragResizingReported()Z +HPLcom/android/server/wm/WindowState;->isRtl()Z HPLcom/android/server/wm/WindowState;->isVisible()Z HPLcom/android/server/wm/WindowState;->isVisibleLw()Z +HPLcom/android/server/wm/WindowState;->isVisibleNow()Z HPLcom/android/server/wm/WindowState;->isVisibleOrAdding()Z +HPLcom/android/server/wm/WindowState;->isVoiceInteraction()Z +HPLcom/android/server/wm/WindowState;->isWinVisibleLw()Z +HPLcom/android/server/wm/WindowState;->layoutInParentFrame()Z +HPLcom/android/server/wm/WindowState;->logPerformShow(Ljava/lang/String;)V +HPLcom/android/server/wm/WindowState;->markSavedSurfaceExiting()V +HPLcom/android/server/wm/WindowState;->mightAffectAllDrawn(Z)Z +HPLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)Z +HPLcom/android/server/wm/WindowState;->onExitAnimationDone()V +HPLcom/android/server/wm/WindowState;->onParentSet()V +HPLcom/android/server/wm/WindowState;->openInputChannel(Landroid/view/InputChannel;)V +HPLcom/android/server/wm/WindowState;->performShowLocked()Z +HPLcom/android/server/wm/WindowState;->prelayout()V +HPLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Z)V +HPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(III)I +HPLcom/android/server/wm/WindowState;->removeIfPossible(Z)V +HPLcom/android/server/wm/WindowState;->removeImmediately()V +HPLcom/android/server/wm/WindowState;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(ZZ)V +HPLcom/android/server/wm/WindowState;->reportResized()V +HPLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V +HPLcom/android/server/wm/WindowState;->restoreSavedSurface()Z +HPLcom/android/server/wm/WindowState;->scheduleAnimationIfDimming()V +HPLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V +HPLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V +HPLcom/android/server/wm/WindowState;->setDrawnStateEvaluated(Z)V +HPLcom/android/server/wm/WindowState;->setHasSurface(Z)V +HPLcom/android/server/wm/WindowState;->setReplacementWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z HPLcom/android/server/wm/WindowState;->setReportResizeHints()Z +HPLcom/android/server/wm/WindowState;->setReportedConfiguration(Landroid/util/MergedConfiguration;)V +HPLcom/android/server/wm/WindowState;->setRequestedSize(II)V +HPLcom/android/server/wm/WindowState;->setVisibleBeforeClientHidden()V +HPLcom/android/server/wm/WindowState;->setWindowScale(II)V +HPLcom/android/server/wm/WindowState;->shouldSaveSurface()Z HPLcom/android/server/wm/WindowState;->showLw(Z)Z HPLcom/android/server/wm/WindowState;->showLw(ZZ)Z +HPLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z HPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String; HPLcom/android/server/wm/WindowState;->transformClipRectFromScreenToSurfaceSpace(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowState;->updateLastInsetValues()V +HPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V HPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V +HPLcom/android/server/wm/WindowState;->usesRelativeZOrdering()Z HPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z +HPLcom/android/server/wm/WindowStateAnimator;-><init>(Lcom/android/server/wm/WindowState;)V HPLcom/android/server/wm/WindowStateAnimator;->adjustCropToStackBounds(Landroid/graphics/Rect;Z)V +HPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z HPLcom/android/server/wm/WindowStateAnimator;->applyCrop(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V +HPLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V HPLcom/android/server/wm/WindowStateAnimator;->calculateCrop(Landroid/graphics/Rect;)Z HPLcom/android/server/wm/WindowStateAnimator;->calculateFinalCrop(Landroid/graphics/Rect;)Z HPLcom/android/server/wm/WindowStateAnimator;->calculateSurfaceBounds(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V +HPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z HPLcom/android/server/wm/WindowStateAnimator;->computeShownFrameLocked()V +HPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked(II)Lcom/android/server/wm/WindowSurfaceController; +HPLcom/android/server/wm/WindowStateAnimator;->destroyPreservedSurfaceLocked()V +HPLcom/android/server/wm/WindowStateAnimator;->destroySurface()V +HPLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked()V +HPLcom/android/server/wm/WindowStateAnimator;->detachChildren()V +HPLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked()Z +HPLcom/android/server/wm/WindowStateAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J +HPLcom/android/server/wm/WindowStateAnimator;->getLayerStack()I HPLcom/android/server/wm/WindowStateAnimator;->getMagnificationSpec()Landroid/view/MagnificationSpec; HPLcom/android/server/wm/WindowStateAnimator;->getShown()Z HPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z +HPLcom/android/server/wm/WindowStateAnimator;->hide(Ljava/lang/String;)V HPLcom/android/server/wm/WindowStateAnimator;->isAnimationSet()Z HPLcom/android/server/wm/WindowStateAnimator;->isAnimationStarting()Z +HPLcom/android/server/wm/WindowStateAnimator;->isDummyAnimation()Z HPLcom/android/server/wm/WindowStateAnimator;->isForceScaled()Z HPLcom/android/server/wm/WindowStateAnimator;->isWaitingForOpening()Z +HPLcom/android/server/wm/WindowStateAnimator;->isWindowAnimationSet()Z HPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Z)V +HPLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V HPLcom/android/server/wm/WindowStateAnimator;->resolveStackClip()I +HPLcom/android/server/wm/WindowStateAnimator;->setAnimation(Landroid/view/animation/Animation;JI)V HPLcom/android/server/wm/WindowStateAnimator;->setSurfaceBoundariesLocked(Z)V HPLcom/android/server/wm/WindowStateAnimator;->shouldCropToStackBounds()Z +HPLcom/android/server/wm/WindowStateAnimator;->showSurfaceRobustlyLocked()Z +HPLcom/android/server/wm/WindowStateAnimator;->stepAnimation(J)Z HPLcom/android/server/wm/WindowStateAnimator;->stepAnimationLocked(J)Z HPLcom/android/server/wm/WindowStateAnimator;->useFinalClipRect()Z +HPLcom/android/server/wm/WindowSurfaceController;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILcom/android/server/wm/WindowStateAnimator;II)V HPLcom/android/server/wm/WindowSurfaceController;->clearCropInTransaction(Z)V +HPLcom/android/server/wm/WindowSurfaceController;->destroyInTransaction()V +HPLcom/android/server/wm/WindowSurfaceController;->detachChildren()V HPLcom/android/server/wm/WindowSurfaceController;->getHeight()F +HPLcom/android/server/wm/WindowSurfaceController;->getShown()Z +HPLcom/android/server/wm/WindowSurfaceController;->getSurface(Landroid/view/Surface;)V HPLcom/android/server/wm/WindowSurfaceController;->getWidth()F HPLcom/android/server/wm/WindowSurfaceController;->hasSurface()Z +HPLcom/android/server/wm/WindowSurfaceController;->hideInTransaction(Ljava/lang/String;)V +HPLcom/android/server/wm/WindowSurfaceController;->hideSurface()V +HPLcom/android/server/wm/WindowSurfaceController;->prepareToShowInTransaction(FFFFFZ)Z +HPLcom/android/server/wm/WindowSurfaceController;->setCropInTransaction(Landroid/graphics/Rect;Z)V +HPLcom/android/server/wm/WindowSurfaceController;->setFinalCropInTransaction(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowSurfaceController;->setLayer(I)V +HPLcom/android/server/wm/WindowSurfaceController;->setLayerStackInTransaction(I)V HPLcom/android/server/wm/WindowSurfaceController;->setMatrixInTransaction(FFFFZ)V HPLcom/android/server/wm/WindowSurfaceController;->setPositionInTransaction(FFZ)V +HPLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V +HPLcom/android/server/wm/WindowSurfaceController;->setSizeInTransaction(IIZ)Z +HPLcom/android/server/wm/WindowSurfaceController;->showRobustlyInTransaction()Z +HPLcom/android/server/wm/WindowSurfaceController;->showSurface()Z +HPLcom/android/server/wm/WindowSurfaceController;->updateVisibility()Z +HPLcom/android/server/wm/WindowSurfacePlacer;->canBeWallpaperTarget(Landroid/util/ArraySet;)Z +HPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout()V +HPLcom/android/server/wm/WindowSurfacePlacer;->deferLayout()V HPLcom/android/server/wm/WindowSurfacePlacer;->destroyPendingSurfaces()V +HPLcom/android/server/wm/WindowSurfacePlacer;->handleAppTransitionReadyLocked()I +HPLcom/android/server/wm/WindowSurfacePlacer;->handleClosingApps(ILandroid/view/WindowManager$LayoutParams;ZLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;)V +HPLcom/android/server/wm/WindowSurfacePlacer;->handleOpeningApps(ILandroid/view/WindowManager$LayoutParams;ZI)Lcom/android/server/wm/AppWindowToken; +HPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z +HPLcom/android/server/wm/WindowSurfacePlacer;->lambda$-com_android_server_wm_WindowSurfacePlacer_5337()V +HPLcom/android/server/wm/WindowSurfacePlacer;->maybeUpdateTransitToWallpaper(IZZ)I +HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V +HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V +HPLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V +HPLcom/android/server/wm/WindowSurfacePlacer;->transitionGoodToGo(ILandroid/util/SparseIntArray;)Z +HPLcom/android/server/wm/WindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowToken;->getAnimLayerAdjustment()I HPLcom/android/server/wm/WindowToken;->getDisplayContent()Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/WindowToken;->getHighestAnimLayer()I +HPLcom/android/server/wm/WindowToken;->getReplacingWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowToken;->okToAnimate()Z +HPLcom/android/server/wm/WindowToken;->okToDisplay()Z +HPLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z +HPLcom/android/server/wm/animation/ClipRectLRAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HPLcom/android/server/wm/animation/ClipRectTBAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HPLcom/android/server/wm/animation/ClipRectTBAnimation;->getTransformation(JLandroid/view/animation/Transformation;)Z HSLcom/android/server/location/LocationProviderInterface;->disable()V HSLcom/android/server/location/LocationProviderInterface;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V HSLcom/android/server/location/LocationProviderInterface;->enable()V @@ -1812,341 +5309,67 @@ HSLcom/android/server/location/LocationProviderInterface;->getStatusUpdateTime() HSLcom/android/server/location/LocationProviderInterface;->isEnabled()Z HSLcom/android/server/location/LocationProviderInterface;->sendExtraCommand(Ljava/lang/String;Landroid/os/Bundle;)Z HSLcom/android/server/location/LocationProviderInterface;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V -HSPLcom/android/server/-$Lambda$6PBiitFNzy52xbrUpcD5i5xBLLY;->$m$1()V -HSPLcom/android/server/-$Lambda$6PBiitFNzy52xbrUpcD5i5xBLLY;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V -HSPLcom/android/server/-$Lambda$6PBiitFNzy52xbrUpcD5i5xBLLY;->run()V -HSPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->$m$0()V -HSPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;-><init>(B)V -HSPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->run()V -HSPLcom/android/server/AppOpsService$1;-><init>(Lcom/android/server/AppOpsService;)V -HSPLcom/android/server/AppOpsService$Callback;-><init>(Lcom/android/server/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;)V HSPLcom/android/server/AppOpsService$Op;-><init>(ILjava/lang/String;I)V -HSPLcom/android/server/AppOpsService$Ops;-><init>(Ljava/lang/String;Lcom/android/server/AppOpsService$UidState;Z)V -HSPLcom/android/server/AppOpsService$UidState;-><init>(I)V -HSPLcom/android/server/AppOpsService;-><init>(Ljava/io/File;Landroid/os/Handler;)V HSPLcom/android/server/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/AppOpsService$UidState; -HSPLcom/android/server/AppOpsService;->publish(Landroid/content/Context;)V HSPLcom/android/server/AppOpsService;->readPackage(Lorg/xmlpull/v1/XmlPullParser;)V HSPLcom/android/server/AppOpsService;->readState()V HSPLcom/android/server/AppOpsService;->readUid(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V -HSPLcom/android/server/AppOpsService;->readUidOps(Lorg/xmlpull/v1/XmlPullParser;)V HSPLcom/android/server/AppOpsService;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V -HSPLcom/android/server/DisplayThread;-><init>()V -HSPLcom/android/server/DisplayThread;->ensureThreadLocked()V -HSPLcom/android/server/DisplayThread;->get()Lcom/android/server/DisplayThread; -HSPLcom/android/server/DisplayThread;->getHandler()Landroid/os/Handler; -HSPLcom/android/server/FgThread;-><init>()V -HSPLcom/android/server/FgThread;->ensureThreadLocked()V -HSPLcom/android/server/FgThread;->get()Lcom/android/server/FgThread; -HSPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler; -HSPLcom/android/server/IntentResolver$1;-><init>()V -HSPLcom/android/server/IntentResolver;-><init>()V -HSPLcom/android/server/IntentResolver;->filterSet()Ljava/util/Set; -HSPLcom/android/server/IoThread;-><init>()V -HSPLcom/android/server/IoThread;->ensureThreadLocked()V -HSPLcom/android/server/IoThread;->getHandler()Landroid/os/Handler; -HSPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;I)Ljava/lang/Object; -HSPLcom/android/server/LockGuard;->installNewLock(I)Ljava/lang/Object; -HSPLcom/android/server/RecoverySystemService$BinderService;-><init>(Lcom/android/server/RecoverySystemService;)V -HSPLcom/android/server/RecoverySystemService$BinderService;-><init>(Lcom/android/server/RecoverySystemService;Lcom/android/server/RecoverySystemService$BinderService;)V -HSPLcom/android/server/RecoverySystemService;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/RecoverySystemService;->onStart()V -HSPLcom/android/server/RescueParty$BootThreshold;-><init>()V -HSPLcom/android/server/RescueParty$Threshold;-><init>(IIJ)V +HSPLcom/android/server/IntentResolver;->addFilter(Landroid/content/IntentFilter;)V +HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Landroid/content/IntentFilter;)V +HSPLcom/android/server/IntentResolver;->buildResolveList(Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Landroid/content/IntentFilter;Ljava/util/List;I)V +HSPLcom/android/server/IntentResolver;->collectFilters([Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Ljava/util/ArrayList; +HSPLcom/android/server/IntentResolver;->filterEquals(Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Z +HSPLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V +HSPLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList; +HSPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet; +HSPLcom/android/server/IntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List; +HSPLcom/android/server/IntentResolver;->register_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I +HSPLcom/android/server/IntentResolver;->register_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I HSPLcom/android/server/RescueParty$Threshold;->getCount()I HSPLcom/android/server/RescueParty$Threshold;->getStart()J HSPLcom/android/server/RescueParty$Threshold;->setCount(I)V HSPLcom/android/server/RescueParty$Threshold;->setStart(J)V -HSPLcom/android/server/RescueParty;->isDisabled()Z -HSPLcom/android/server/RescueParty;->isUsbActive()Z -HSPLcom/android/server/RescueParty;->noteBoot(Landroid/content/Context;)V -HSPLcom/android/server/ServiceThread;-><init>(Ljava/lang/String;IZ)V -HSPLcom/android/server/ServiceThread;->run()V -HSPLcom/android/server/SystemServer;->-com_android_server_SystemServer-mthref-0()V -HSPLcom/android/server/SystemServer;-><init>()V -HSPLcom/android/server/SystemServer;->createSystemContext()V -HSPLcom/android/server/SystemServer;->main([Ljava/lang/String;)V -HSPLcom/android/server/SystemServer;->performPendingShutdown()V -HSPLcom/android/server/SystemServer;->run()V -HSPLcom/android/server/SystemServer;->startBootstrapServices()V HSPLcom/android/server/SystemServer;->traceBeginAndSlog(Ljava/lang/String;)V HSPLcom/android/server/SystemServer;->traceEnd()V -HSPLcom/android/server/SystemServerInitThreadPool;-><init>()V -HSPLcom/android/server/SystemServerInitThreadPool;->get()Lcom/android/server/SystemServerInitThreadPool; -HSPLcom/android/server/SystemServerInitThreadPool;->lambda$-com_android_server_SystemServerInitThreadPool_2249(Ljava/lang/String;Ljava/lang/Runnable;)V -HSPLcom/android/server/SystemServerInitThreadPool;->submit(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future; -HSPLcom/android/server/SystemService;-><init>(Landroid/content/Context;)V HSPLcom/android/server/SystemService;->getContext()Landroid/content/Context; -HSPLcom/android/server/SystemService;->onBootPhase(I)V -HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;)V -HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;Z)V -HSPLcom/android/server/SystemService;->publishLocalService(Ljava/lang/Class;Ljava/lang/Object;)V -HSPLcom/android/server/SystemServiceManager;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/SystemServiceManager;->setRuntimeRestarted(Z)V HSPLcom/android/server/SystemServiceManager;->startBootPhase(I)V HSPLcom/android/server/SystemServiceManager;->startService(Lcom/android/server/SystemService;)V HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/Class;)Lcom/android/server/SystemService; HSPLcom/android/server/SystemServiceManager;->warnIfTooLong(JLcom/android/server/SystemService;Ljava/lang/String;)V -HSPLcom/android/server/ThreadPriorityBooster$1;-><init>(Lcom/android/server/ThreadPriorityBooster;)V -HSPLcom/android/server/ThreadPriorityBooster;-><init>(II)V -HSPLcom/android/server/UiThread;-><init>()V -HSPLcom/android/server/UiThread;->ensureThreadLocked()V -HSPLcom/android/server/UiThread;->get()Lcom/android/server/UiThread; -HSPLcom/android/server/UiThread;->getHandler()Landroid/os/Handler; -HSPLcom/android/server/UiThread;->run()V -HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>()V -HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>(Lcom/android/server/Watchdog$BinderThreadMonitor;)V -HSPLcom/android/server/Watchdog$HandlerChecker;-><init>(Lcom/android/server/Watchdog;Landroid/os/Handler;Ljava/lang/String;J)V -HSPLcom/android/server/Watchdog$HandlerChecker;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V -HSPLcom/android/server/Watchdog;-><init>()V -HSPLcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V -HSPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;)V -HSPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;J)V -HSPLcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog; -HSPLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;-><init>(B)V -HSPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->$m$0(Ljava/lang/Runnable;)Ljava/lang/Thread; -HSPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;-><init>()V -HSPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; -HSPLcom/android/server/am/ActiveServices$1;-><init>(Lcom/android/server/am/ActiveServices;)V -HSPLcom/android/server/am/ActiveServices;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/ActivityManagerConstants;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;)V -HSPLcom/android/server/am/ActivityManagerConstants;->computeEmptyProcessLimit(I)I -HSPLcom/android/server/am/ActivityManagerConstants;->updateMaxCachedProcesses()V -HSPLcom/android/server/am/ActivityManagerService$1;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V -HSPLcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/ActivityManagerService$4;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;)V HSPLcom/android/server/am/ActivityManagerService$4;->run()V -HSPLcom/android/server/am/ActivityManagerService$Injector;-><init>()V -HSPLcom/android/server/am/ActivityManagerService$Injector;->getAppOpsService(Ljava/io/File;Landroid/os/Handler;)Lcom/android/server/AppOpsService; -HSPLcom/android/server/am/ActivityManagerService$Injector;->getUiHandler(Lcom/android/server/am/ActivityManagerService;)Landroid/os/Handler; -HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->getAMSLock()Ljava/lang/Object; -HSPLcom/android/server/am/ActivityManagerService$KillHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V -HSPLcom/android/server/am/ActivityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->getService()Lcom/android/server/am/ActivityManagerService; -HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->onStart()V -HSPLcom/android/server/am/ActivityManagerService$LocalService;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/ActivityManagerService$MainHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V -HSPLcom/android/server/am/ActivityManagerService$UiHandler;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;-><init>()V -HSPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;-><init>(Lcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)V -HSPLcom/android/server/am/ActivityManagerService;->-wrap10(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/ActivityManagerService;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/am/ActivityManagerService;->createStackSupervisor()Lcom/android/server/am/ActivityStackSupervisor; -HSPLcom/android/server/am/ActivityManagerService;->initPowerManagement()V -HSPLcom/android/server/am/ActivityManagerService;->setInstaller(Lcom/android/server/pm/Installer;)V -HSPLcom/android/server/am/ActivityManagerService;->setSystemServiceManager(Lcom/android/server/SystemServiceManager;)V -HSPLcom/android/server/am/ActivityManagerService;->start()V -HSPLcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V -HSPLcom/android/server/am/ActivityMetricsLogger;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Landroid/content/Context;)V -HSPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Looper;)V -HSPLcom/android/server/am/ActivityStackSupervisor$FindTaskResult;-><init>()V -HSPLcom/android/server/am/ActivityStackSupervisor;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V -HSPLcom/android/server/am/ActivityStackSupervisor;->getChildCount()I -HSPLcom/android/server/am/ActivityStackSupervisor;->initPowerManagement()V -HSPLcom/android/server/am/ActivityStackSupervisor;->setRecentTasks(Lcom/android/server/am/RecentTasks;)V -HSPLcom/android/server/am/ActivityStartInterceptor;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V -HSPLcom/android/server/am/ActivityStarter;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V -HSPLcom/android/server/am/AppErrors;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/BatteryExternalStatsWorker$1;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V HSPLcom/android/server/am/BatteryExternalStatsWorker$1;->run()V -HSPLcom/android/server/am/BatteryExternalStatsWorker$2;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V -HSPLcom/android/server/am/BatteryExternalStatsWorker$2;->run()V -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get0(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/String; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get1(Lcom/android/server/am/BatteryExternalStatsWorker;)Lcom/android/internal/os/BatteryStatsImpl; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get2(Lcom/android/server/am/BatteryExternalStatsWorker;)Landroid/util/IntArray; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get3(Lcom/android/server/am/BatteryExternalStatsWorker;)I -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get4(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/Object; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-set0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/util/concurrent/Future;)Ljava/util/concurrent/Future; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-set1(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;)Ljava/lang/String; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-set2(Lcom/android/server/am/BatteryExternalStatsWorker;I)I -HSPLcom/android/server/am/BatteryExternalStatsWorker;->-wrap0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;I)V -HSPLcom/android/server/am/BatteryExternalStatsWorker;-><init>(Landroid/content/Context;Lcom/android/internal/os/BatteryStatsImpl;)V HSPLcom/android/server/am/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$-com_android_server_am_BatteryExternalStatsWorker_2607(Ljava/lang/Runnable;)Ljava/lang/Thread; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future; -HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleWrite()Ljava/util/concurrent/Future; HSPLcom/android/server/am/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;I)V -HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;-><init>(Lcom/android/server/am/BatteryStatsService;)V -HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V -HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String; -HSPLcom/android/server/am/BatteryStatsService;->-wrap0(Ljava/nio/ByteBuffer;)I -HSPLcom/android/server/am/BatteryStatsService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Handler;)V HSPLcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl; -HSPLcom/android/server/am/BatteryStatsService;->initPowerManagement()V -HSPLcom/android/server/am/BatteryStatsService;->publish()V -HSPLcom/android/server/am/BatteryStatsService;->scheduleWriteToDisk()V -HSPLcom/android/server/am/BroadcastQueue$BroadcastHandler;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/os/Looper;)V -HSPLcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Ljava/lang/String;JZ)V -HSPLcom/android/server/am/CompatModePackages$CompatHandler;-><init>(Lcom/android/server/am/CompatModePackages;Landroid/os/Looper;)V -HSPLcom/android/server/am/CompatModePackages;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;Landroid/os/Handler;)V HSPLcom/android/server/am/ConfigurationContainer;-><init>()V HSPLcom/android/server/am/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLcom/android/server/am/InstrumentationReporter;-><init>()V -HSPLcom/android/server/am/KeyguardController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V -HSPLcom/android/server/am/ProcessList;-><init>()V HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J -HSPLcom/android/server/am/ProcessList;->updateOomLevels(IIZ)V -HSPLcom/android/server/am/ProcessStatsService$1;-><init>(Lcom/android/server/am/ProcessStatsService;)V -HSPLcom/android/server/am/ProcessStatsService;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V -HSPLcom/android/server/am/ProcessStatsService;->updateFile()V -HSPLcom/android/server/am/ProviderMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/RecentTasks$1;-><init>()V -HSPLcom/android/server/am/RecentTasks;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V -HSPLcom/android/server/am/TaskChangeNotificationController$MainHandler;-><init>(Lcom/android/server/am/TaskChangeNotificationController;Landroid/os/Looper;)V HSPLcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V -HSPLcom/android/server/am/TaskChangeNotificationController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Handler;)V -HSPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;-><init>(Lcom/android/server/am/TaskPersister;Ljava/lang/String;)V -HSPLcom/android/server/am/TaskPersister;-><init>(Ljava/io/File;Lcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/RecentTasks;)V -HSPLcom/android/server/am/UserController$Injector;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/UserController$Injector;->getContext()Landroid/content/Context; -HSPLcom/android/server/am/UserController$Injector;->getHandler()Landroid/os/Handler; -HSPLcom/android/server/am/UserController$Injector;->getLock()Ljava/lang/Object; -HSPLcom/android/server/am/UserController$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils; -HSPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/ActivityManagerService;)V -HSPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/UserController$Injector;)V -HSPLcom/android/server/am/UserController;->updateStartedUserArrayLocked()V -HSPLcom/android/server/am/UserState;-><init>(Landroid/os/UserHandle;)V -HSPLcom/android/server/am/VrController$1;-><init>(Lcom/android/server/am/VrController;)V -HSPLcom/android/server/am/VrController;-><init>(Ljava/lang/Object;)V -HSPLcom/android/server/display/DisplayAdapter$1;-><init>(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V -HSPLcom/android/server/display/DisplayAdapter$1;->run()V -HSPLcom/android/server/display/DisplayAdapter$2;-><init>(Lcom/android/server/display/DisplayAdapter;)V -HSPLcom/android/server/display/DisplayAdapter$2;->run()V HSPLcom/android/server/display/DisplayAdapter$Listener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V HSPLcom/android/server/display/DisplayAdapter$Listener;->onTraversalRequested()V -HSPLcom/android/server/display/DisplayAdapter;->-get0(Lcom/android/server/display/DisplayAdapter;)Lcom/android/server/display/DisplayAdapter$Listener; -HSPLcom/android/server/display/DisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Ljava/lang/String;)V -HSPLcom/android/server/display/DisplayAdapter;->createMode(IIF)Landroid/view/Display$Mode; -HSPLcom/android/server/display/DisplayAdapter;->getContext()Landroid/content/Context; -HSPLcom/android/server/display/DisplayAdapter;->getHandler()Landroid/os/Handler; -HSPLcom/android/server/display/DisplayAdapter;->registerLocked()V -HSPLcom/android/server/display/DisplayAdapter;->sendDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V -HSPLcom/android/server/display/DisplayAdapter;->sendTraversalRequestLocked()V -HSPLcom/android/server/display/DisplayDevice;-><init>(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;)V HSPLcom/android/server/display/DisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo; HSPLcom/android/server/display/DisplayDevice;->getDisplayTokenLocked()Landroid/os/IBinder; -HSPLcom/android/server/display/DisplayDevice;->getUniqueId()Ljava/lang/String; HSPLcom/android/server/display/DisplayDevice;->hasStableUniqueId()Z -HSPLcom/android/server/display/DisplayDeviceInfo;-><init>()V -HSPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I -HSPLcom/android/server/display/DisplayDeviceInfo;->equals(Lcom/android/server/display/DisplayDeviceInfo;)Z -HSPLcom/android/server/display/DisplayDeviceInfo;->equals(Ljava/lang/Object;)Z -HSPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String; -HSPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String; -HSPLcom/android/server/display/DisplayDeviceInfo;->touchToString(I)Ljava/lang/String; -HSPLcom/android/server/display/DisplayManagerService$BinderService;-><init>(Lcom/android/server/display/DisplayManagerService;)V HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo; HSPLcom/android/server/display/DisplayManagerService$BinderService;->registerCallback(Landroid/hardware/display/IDisplayManagerCallback;)V HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;-><init>(Lcom/android/server/display/DisplayManagerService;ILandroid/hardware/display/IDisplayManagerCallback;)V -HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V -HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$DisplayAdapterListener;)V -HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V -HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onTraversalRequested()V -HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;-><init>(Lcom/android/server/display/DisplayManagerService;Landroid/os/Looper;)V -HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V -HSPLcom/android/server/display/DisplayManagerService$Injector;-><init>()V -HSPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;)V -HSPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$LocalService;)V -HSPLcom/android/server/display/DisplayManagerService$SyncRoot;-><init>()V -HSPLcom/android/server/display/DisplayManagerService;->-get5(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot; -HSPLcom/android/server/display/DisplayManagerService;->-wrap12(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V -HSPLcom/android/server/display/DisplayManagerService;->-wrap13(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V -HSPLcom/android/server/display/DisplayManagerService;->-wrap18(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;I)V -HSPLcom/android/server/display/DisplayManagerService;->-wrap19(Lcom/android/server/display/DisplayManagerService;)V -HSPLcom/android/server/display/DisplayManagerService;->-wrap2(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo; -HSPLcom/android/server/display/DisplayManagerService;->-wrap27(Lcom/android/server/display/DisplayManagerService;Z)V -HSPLcom/android/server/display/DisplayManagerService;->-wrap7(Lcom/android/server/display/DisplayManagerService;II)V -HSPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$Injector;)V -HSPLcom/android/server/display/DisplayManagerService;->addLogicalDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay; -HSPLcom/android/server/display/DisplayManagerService;->assignDisplayIdLocked(Z)I -HSPLcom/android/server/display/DisplayManagerService;->assignLayerStackLocked(I)I +HSPLcom/android/server/display/DisplayManagerService;->-wrap19(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;I)V +HSPLcom/android/server/display/DisplayManagerService;->-wrap3(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo; HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(II)V HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo; -HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAdded(Lcom/android/server/display/DisplayDevice;)V -HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAddedLocked(Lcom/android/server/display/DisplayDevice;)V -HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V -HSPLcom/android/server/display/DisplayManagerService;->onBootPhase(I)V -HSPLcom/android/server/display/DisplayManagerService;->onStart()V HSPLcom/android/server/display/DisplayManagerService;->registerCallbackInternal(Landroid/hardware/display/IDisplayManagerCallback;I)V -HSPLcom/android/server/display/DisplayManagerService;->registerDefaultDisplayAdapter()V -HSPLcom/android/server/display/DisplayManagerService;->registerDisplayAdapterLocked(Lcom/android/server/display/DisplayAdapter;)V -HSPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V -HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(II)V HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable; -HSPLcom/android/server/display/DisplayManagerService;->updateLogicalDisplaysLocked()Z -HSPLcom/android/server/display/DisplayTransformManager;-><init>()V -HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;-><init>(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)V -HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Z -HSPLcom/android/server/display/LocalDisplayAdapter$HotplugDisplayEventReceiver;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/Looper;)V HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;-><init>(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;IIZIILandroid/os/IBinder;)V HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(I)V -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)V HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-get0(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Lcom/android/server/lights/Light; -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;I[Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)V -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayInfoIndexLocked(I)I -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord; HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo; -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->hasStableUniqueId()Z HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(II)Ljava/lang/Runnable; -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateColorModesLocked([II)Z -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDeviceInfoLocked()V -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updatePhysicalDisplayInfoLocked([Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)Z -HSPLcom/android/server/display/LocalDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V -HSPLcom/android/server/display/LocalDisplayAdapter;->getPowerModeForState(I)I -HSPLcom/android/server/display/LocalDisplayAdapter;->registerLocked()V -HSPLcom/android/server/display/LocalDisplayAdapter;->tryConnectDisplayLocked(I)V -HSPLcom/android/server/display/LogicalDisplay;-><init>(IILcom/android/server/display/DisplayDevice;)V HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo; -HSPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice; -HSPLcom/android/server/display/LogicalDisplay;->isValidLocked()Z -HSPLcom/android/server/display/LogicalDisplay;->setRequestedColorModeLocked(I)V -HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Ljava/util/List;)V -HSPLcom/android/server/display/PersistentDataStore;-><init>()V -HSPLcom/android/server/display/PersistentDataStore;->clearState()V -HSPLcom/android/server/display/PersistentDataStore;->getColorMode(Lcom/android/server/display/DisplayDevice;)I -HSPLcom/android/server/display/PersistentDataStore;->getDisplayState(Ljava/lang/String;Z)Lcom/android/server/display/PersistentDataStore$DisplayState; -HSPLcom/android/server/display/PersistentDataStore;->load()V -HSPLcom/android/server/display/PersistentDataStore;->loadIfNeeded()V -HSPLcom/android/server/firewall/AndFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/CategoryFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/FilterFactory;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/FilterFactory;->getTagName()Ljava/lang/String; +HSPLcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;->createDisplay(Ljava/lang/String;Z)Landroid/os/IBinder; HSPLcom/android/server/firewall/IntentFirewall$AMSInterface;->checkComponentPermission(Ljava/lang/String;IIIZ)I HSPLcom/android/server/firewall/IntentFirewall$AMSInterface;->getAMSLock()Ljava/lang/Object; -HSPLcom/android/server/firewall/IntentFirewall$FirewallHandler;-><init>(Lcom/android/server/firewall/IntentFirewall;Landroid/os/Looper;)V -HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>()V -HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;)V -HSPLcom/android/server/firewall/IntentFirewall$RuleObserver;-><init>(Lcom/android/server/firewall/IntentFirewall;Ljava/io/File;)V -HSPLcom/android/server/firewall/IntentFirewall;-><init>(Lcom/android/server/firewall/IntentFirewall$AMSInterface;Landroid/os/Handler;)V -HSPLcom/android/server/firewall/IntentFirewall;->getRulesDir()Ljava/io/File; -HSPLcom/android/server/firewall/IntentFirewall;->readRulesDir(Ljava/io/File;)V -HSPLcom/android/server/firewall/NotFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/OrFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/PortFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/SenderFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/SenderFilter$2;-><init>()V -HSPLcom/android/server/firewall/SenderFilter$3;-><init>()V -HSPLcom/android/server/firewall/SenderFilter$4;-><init>()V -HSPLcom/android/server/firewall/SenderFilter$5;-><init>()V -HSPLcom/android/server/firewall/SenderPackageFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/SenderPermissionFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$10;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$1;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$2;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$3;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$4;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$5;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$6;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$7;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$8;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$9;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/firewall/StringFilter$ValueProvider;-><init>(Ljava/lang/String;)V -HSPLcom/android/server/lights/Light;-><init>()V HSPLcom/android/server/lights/Light;->pulse()V HSPLcom/android/server/lights/Light;->pulse(II)V HSPLcom/android/server/lights/Light;->setBrightness(I)V @@ -2155,82 +5378,160 @@ HSPLcom/android/server/lights/Light;->setColor(I)V HSPLcom/android/server/lights/Light;->setFlashing(IIII)V HSPLcom/android/server/lights/Light;->setVrMode(Z)V HSPLcom/android/server/lights/Light;->turnOff()V -HSPLcom/android/server/lights/LightsManager;-><init>()V HSPLcom/android/server/lights/LightsManager;->getLight(I)Lcom/android/server/lights/Light; -HSPLcom/android/server/lights/LightsService$1;-><init>(Lcom/android/server/lights/LightsService;)V -HSPLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/Light; -HSPLcom/android/server/lights/LightsService$2;-><init>(Lcom/android/server/lights/LightsService;)V -HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;I)V -HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;ILcom/android/server/lights/LightsService$LightImpl;)V HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(I)V HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(II)V HSPLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V HSPLcom/android/server/lights/LightsService$LightImpl;->shouldBeInLowPersistenceMode()Z -HSPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/lights/LightsService;->onBootPhase(I)V -HSPLcom/android/server/lights/LightsService;->onStart()V -HSPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/os/DeviceIdentifiersPolicyService;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/os/DeviceIdentifiersPolicyService;->onStart()V -HSPLcom/android/server/pm/AbstractStatsBase;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$2()V +HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;-><init>(BILjava/lang/Object;Ljava/lang/Object;)V +HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->run()V HSPLcom/android/server/pm/BasePermission;-><init>(Ljava/lang/String;Ljava/lang/String;I)V HSPLcom/android/server/pm/BasePermission;->computeGids(I)[I -HSPLcom/android/server/pm/BasePermission;->setGids([IZ)V -HSPLcom/android/server/pm/CompilerStats;-><init>()V -HSPLcom/android/server/pm/DefaultPermissionGrantPolicy$1;-><init>(Lcom/android/server/pm/DefaultPermissionGrantPolicy;Landroid/os/Looper;)V -HSPLcom/android/server/pm/DefaultPermissionGrantPolicy;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/Installer$1;-><init>(Lcom/android/server/pm/Installer;)V -HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;Z)V +HSPLcom/android/server/pm/BasePermission;->isRuntimeOnly()Z HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z -HSPLcom/android/server/pm/Installer;->connect()V -HSPLcom/android/server/pm/Installer;->invalidateMounts()V -HSPLcom/android/server/pm/Installer;->onStart()V -HSPLcom/android/server/pm/InstantAppRegistry$CookiePersistence;-><init>(Lcom/android/server/pm/InstantAppRegistry;Landroid/os/Looper;)V -HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/KeySetManagerService;-><init>(Landroid/util/ArrayMap;)V -HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V +HSPLcom/android/server/pm/Installer;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J +HSPLcom/android/server/pm/InstructionSets;->getPreferredInstructionSet()Ljava/lang/String; +HSPLcom/android/server/pm/InstructionSets;->getPrimaryInstructionSet(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String; +HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->getKey()Ljava/security/PublicKey; +HSPLcom/android/server/pm/KeySetManagerService;->addRefCountsFromSavedPackagesLPw(Landroid/util/ArrayMap;)V +HSPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/KeySetManagerService;->addSigningKeySetToPackageLPw(Lcom/android/server/pm/PackageSetting;Landroid/util/ArraySet;)V +HSPLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet; +HSPLcom/android/server/pm/KeySetManagerService;->readKeySetListLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/KeySetManagerService;->readKeysLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/KeySetManagerService;->readPublicKeyLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z HSPLcom/android/server/pm/PackageKeySetData;-><init>()V -HSPLcom/android/server/pm/PackageKeySetData;->setProperSigningKeySet(J)V -HSPLcom/android/server/pm/PackageManagerService$1;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/PackageManagerService$2;-><init>()V -HSPLcom/android/server/pm/PackageManagerService$3;-><init>()V -HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/PackageManagerService$DefaultContainerConnection;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/PackageManagerService$MoveCallbacks;-><init>(Landroid/os/Looper;)V -HSPLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;-><init>(Landroid/os/Looper;)V -HSPLcom/android/server/pm/PackageManagerService$PackageHandler;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;)V -HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;-><init>()V -HSPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver;)V -HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V -HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)V -HSPLcom/android/server/pm/PackageManagerService$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)V +HSPLcom/android/server/pm/PackageKeySetData;->getAliases()Landroid/util/ArrayMap; +HSPLcom/android/server/pm/PackageKeySetData;->getProperSigningKeySet()J +HSPLcom/android/server/pm/PackageKeySetData;->isUsingUpgradeKeySets()Z +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->addActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->adjustPriority(Ljava/util/List;Landroid/content/pm/PackageParser$ActivityIntentInfo;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;Ljava/util/List;)Z +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->findMatchingActivity(Ljava/util/List;Landroid/content/pm/ActivityInfo;)Landroid/content/pm/PackageParser$Activity; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->getIntentListSubset(Ljava/util/List;Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;Ljava/util/Iterator;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isProtectedAction(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/IntentFilter; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ActivityIntentInfo; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;II)Landroid/content/pm/ResolveInfo; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->sortResults(Ljava/util/List;)V +HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPackagesLocked(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPathsLocked(Ljava/util/Collection;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->addProvider(Landroid/content/pm/PackageParser$Provider;)V +HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->addService(Landroid/content/pm/PackageParser$Service;)V +HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/IntentFilter; +HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ServiceIntentInfo; +HSPLcom/android/server/pm/PackageManagerService;->-get13()Ljava/util/Comparator; +HSPLcom/android/server/pm/PackageManagerService;->-wrap13(Lcom/android/server/pm/PackageManagerService;I)Z HSPLcom/android/server/pm/PackageManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)V -HSPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPw(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)Z -HSPLcom/android/server/pm/PackageManagerService;->getDefaultDisplayMetrics(Landroid/content/Context;Landroid/util/DisplayMetrics;)V -HSPLcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)Lcom/android/server/pm/PackageManagerService; -HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->checkProperties()V +HSPLcom/android/server/pm/PackageManagerService;->addSharedLibrariesLPw(Ljava/util/List;[I[[Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageParser$Package;ZILandroid/util/ArraySet;)Landroid/util/ArraySet; +HSPLcom/android/server/pm/PackageManagerService;->adjustCpuAbisForSharedUserLPw(Ljava/util/Set;Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/PackageManagerService;->applyPolicy(Landroid/content/pm/PackageParser$Package;I)V +HSPLcom/android/server/pm/PackageManagerService;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZII)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->assertPackageIsValid(Landroid/content/pm/PackageParser$Package;II)V +HSPLcom/android/server/pm/PackageManagerService;->assertPackageKnownAndInstalled(Ljava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/server/pm/PackageManagerService;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;Ljava/io/File;I)V +HSPLcom/android/server/pm/PackageManagerService;->commitPackageSettings(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;IZ)V +HSPLcom/android/server/pm/PackageManagerService;->compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I +HSPLcom/android/server/pm/PackageManagerService;->compressedFileExists(Ljava/lang/String;)Z +HSPLcom/android/server/pm/PackageManagerService;->deriveAbiOverride(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->enforceCrossUserPermission(IIZZLjava/lang/String;)V +HSPLcom/android/server/pm/PackageManagerService;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->findPermissionTreeLP(Ljava/lang/String;)Lcom/android/server/pm/BasePermission; +HSPLcom/android/server/pm/PackageManagerService;->fixProcessName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->getCompressedFiles(Ljava/lang/String;)[Ljava/io/File; +HSPLcom/android/server/pm/PackageManagerService;->getDefaultBrowserPackageName(I)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->getInstantAppPackageName(I)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->getLastModifiedTime(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)J +HSPLcom/android/server/pm/PackageManagerService;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/Settings$VersionInfo; +HSPLcom/android/server/pm/PackageManagerService;->getSharedLibraryEntryLPr(Ljava/lang/String;I)Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry; +HSPLcom/android/server/pm/PackageManagerService;->getVolumeUuidForPackage(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->grantPermissionsLPw(Landroid/content/pm/PackageParser$Package;ZLjava/lang/String;)V +HSPLcom/android/server/pm/PackageManagerService;->grantSignaturePermission(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/BasePermission;Lcom/android/server/pm/PermissionsState;)Z +HSPLcom/android/server/pm/PackageManagerService;->hasNonNegativePriority(Ljava/util/List;)Z +HSPLcom/android/server/pm/PackageManagerService;->hasWebURI(Landroid/content/Intent;)Z +HSPLcom/android/server/pm/PackageManagerService;->isCompatSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isEphemeralDisabled()Z +HSPLcom/android/server/pm/PackageManagerService;->isExternal(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isInstantAppAllowed(Landroid/content/Intent;Ljava/util/List;IZ)Z +HSPLcom/android/server/pm/PackageManagerService;->isNewPlatformPermissionForPackage(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isPrivilegedApp(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isRecoverSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isSystemApp(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isSystemApp(Lcom/android/server/pm/PackageSetting;)Z +HSPLcom/android/server/pm/PackageManagerService;->isUpdatedSystemApp(Lcom/android/server/pm/PackageSetting;)Z +HSPLcom/android/server/pm/PackageManagerService;->lambda$-com_android_server_pm_PackageManagerService_140173(Ljava/util/List;I)V +HSPLcom/android/server/pm/PackageManagerService;->maybeMigrateAppDataLIF(Landroid/content/pm/PackageParser$Package;I)Z +HSPLcom/android/server/pm/PackageManagerService;->normalizePackageNameLPr(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataAndMigrateLIF(Landroid/content/pm/PackageParser$Package;IIZ)V +HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataContentsLeafLIF(Landroid/content/pm/PackageParser$Package;II)V +HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V +HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V +HSPLcom/android/server/pm/PackageManagerService;->queryCrossProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo; +HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->querySkipCurrentProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HSPLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->scanDirLI(Ljava/io/File;IIJ)V +HSPLcom/android/server/pm/PackageManagerService;->scanPackageDirtyLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/PackageManagerService;->scanPackageInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/PackageManagerService;->setNativeLibraryPaths(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)V +HSPLcom/android/server/pm/PackageManagerService;->shouldCheckUpgradeKeySetLP(Lcom/android/server/pm/PackageSetting;I)Z +HSPLcom/android/server/pm/PackageManagerService;->updateAllSharedLibrariesLPw(Landroid/content/pm/PackageParser$Package;)Ljava/util/ArrayList; +HSPLcom/android/server/pm/PackageManagerService;->updateFlags(II)I +HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForComponent(IILjava/lang/Object;)I +HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZZ)I +HSPLcom/android/server/pm/PackageManagerService;->updatePermissionsLPw(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Ljava/lang/String;I)V +HSPLcom/android/server/pm/PackageManagerService;->updateSharedLibrariesLPr(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/PackageManagerService;->userNeedsBadging(I)Z +HSPLcom/android/server/pm/PackageManagerService;->verifySignaturesLP(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getAndCheckValidity(I)Ljava/lang/String; HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getSystemPropertyName(I)Ljava/lang/String; -HSPLcom/android/server/pm/PackageSender;->sendPackageAddedForNewUsers(Ljava/lang/String;ZI[I)V +HSPLcom/android/server/pm/PackageSender;->sendPackageAddedForNewUsers(Ljava/lang/String;ZZI[I)V HSPLcom/android/server/pm/PackageSender;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V +HSPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;)V HSPLcom/android/server/pm/PackageSetting;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/List;I[Ljava/lang/String;[I)V HSPLcom/android/server/pm/PackageSetting;->getPermissionsState()Lcom/android/server/pm/PermissionsState; +HSPLcom/android/server/pm/PackageSetting;->isPrivileged()Z +HSPLcom/android/server/pm/PackageSettingBase;-><init>(Lcom/android/server/pm/PackageSettingBase;Ljava/lang/String;)V HSPLcom/android/server/pm/PackageSettingBase;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/List;[Ljava/lang/String;[I)V +HSPLcom/android/server/pm/PackageSettingBase;->doCopy(Lcom/android/server/pm/PackageSettingBase;)V +HSPLcom/android/server/pm/PackageSettingBase;->getInstalled(I)Z +HSPLcom/android/server/pm/PackageSettingBase;->getInstantApp(I)Z +HSPLcom/android/server/pm/PackageSettingBase;->getNotInstalledUserIds()[I +HSPLcom/android/server/pm/PackageSettingBase;->getVirtulalPreload(I)Z HSPLcom/android/server/pm/PackageSettingBase;->init(Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V HSPLcom/android/server/pm/PackageSettingBase;->modifyUserState(I)Landroid/content/pm/PackageUserState; +HSPLcom/android/server/pm/PackageSettingBase;->readUserState(I)Landroid/content/pm/PackageUserState; HSPLcom/android/server/pm/PackageSettingBase;->setEnabled(IILjava/lang/String;)V -HSPLcom/android/server/pm/PackageSettingBase;->setIntentFilterVerificationInfo(Landroid/content/pm/IntentFilterVerificationInfo;)V HSPLcom/android/server/pm/PackageSettingBase;->setTimeStamp(J)V +HSPLcom/android/server/pm/PackageSettingBase;->setUserState(IJIZZZZZZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;III)V HSPLcom/android/server/pm/PackageSignatures;-><init>()V HSPLcom/android/server/pm/PackageSignatures;->readXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/ArrayList;)V -HSPLcom/android/server/pm/PackageUsage;-><init>()V +HSPLcom/android/server/pm/PackageSignatures;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V +HSPLcom/android/server/pm/ParallelPackageParser$ParseResult;-><init>()V +HSPLcom/android/server/pm/ParallelPackageParser;->lambda$-com_android_server_pm_ParallelPackageParser_3701(Ljava/io/File;I)V +HSPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Landroid/content/pm/PackageParser;Ljava/io/File;I)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/ParallelPackageParser;->submit(Ljava/io/File;I)V +HSPLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult; HSPLcom/android/server/pm/PermissionsState$PermissionData;-><init>(Lcom/android/server/pm/BasePermission;)V +HSPLcom/android/server/pm/PermissionsState$PermissionData;-><init>(Lcom/android/server/pm/PermissionsState$PermissionData;)V HSPLcom/android/server/pm/PermissionsState$PermissionData;->computeGids(I)[I HSPLcom/android/server/pm/PermissionsState$PermissionData;->getFlags(I)I +HSPLcom/android/server/pm/PermissionsState$PermissionData;->getPermissionState(I)Lcom/android/server/pm/PermissionsState$PermissionState; HSPLcom/android/server/pm/PermissionsState$PermissionData;->grant(I)Z HSPLcom/android/server/pm/PermissionsState$PermissionData;->isCompatibleUserId(I)Z HSPLcom/android/server/pm/PermissionsState$PermissionData;->isDefault()Z @@ -2242,123 +5543,116 @@ HSPLcom/android/server/pm/PermissionsState$PermissionState;->-get0(Lcom/android/ HSPLcom/android/server/pm/PermissionsState$PermissionState;->-get1(Lcom/android/server/pm/PermissionsState$PermissionState;)Z HSPLcom/android/server/pm/PermissionsState$PermissionState;->-set0(Lcom/android/server/pm/PermissionsState$PermissionState;I)I HSPLcom/android/server/pm/PermissionsState$PermissionState;->-set1(Lcom/android/server/pm/PermissionsState$PermissionState;Z)Z +HSPLcom/android/server/pm/PermissionsState$PermissionState;-><init>(Lcom/android/server/pm/PermissionsState$PermissionState;)V HSPLcom/android/server/pm/PermissionsState$PermissionState;-><init>(Ljava/lang/String;)V +HSPLcom/android/server/pm/PermissionsState$PermissionState;->getFlags()I +HSPLcom/android/server/pm/PermissionsState$PermissionState;->getName()Ljava/lang/String; HSPLcom/android/server/pm/PermissionsState$PermissionState;->isDefault()Z +HSPLcom/android/server/pm/PermissionsState$PermissionState;->isGranted()Z HSPLcom/android/server/pm/PermissionsState;-><init>()V HSPLcom/android/server/pm/PermissionsState;->appendInts([I[I)[I HSPLcom/android/server/pm/PermissionsState;->computeGids(I)[I +HSPLcom/android/server/pm/PermissionsState;->copyFrom(Lcom/android/server/pm/PermissionsState;)V HSPLcom/android/server/pm/PermissionsState;->enforceValidUserId(I)V HSPLcom/android/server/pm/PermissionsState;->ensurePermissionData(Lcom/android/server/pm/BasePermission;)Lcom/android/server/pm/PermissionsState$PermissionData; +HSPLcom/android/server/pm/PermissionsState;->getInstallPermissionStates()Ljava/util/List; +HSPLcom/android/server/pm/PermissionsState;->getPermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState; +HSPLcom/android/server/pm/PermissionsState;->getPermissionStatesInternal(I)Ljava/util/List; +HSPLcom/android/server/pm/PermissionsState;->getRuntimePermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState; HSPLcom/android/server/pm/PermissionsState;->grantInstallPermission(Lcom/android/server/pm/BasePermission;)I HSPLcom/android/server/pm/PermissionsState;->grantPermission(Lcom/android/server/pm/BasePermission;I)I +HSPLcom/android/server/pm/PermissionsState;->grantRuntimePermission(Lcom/android/server/pm/BasePermission;I)I +HSPLcom/android/server/pm/PermissionsState;->hasInstallPermission(Ljava/lang/String;)Z HSPLcom/android/server/pm/PermissionsState;->hasPermission(Ljava/lang/String;I)Z +HSPLcom/android/server/pm/PermissionsState;->hasRuntimePermission(Ljava/lang/String;I)Z +HSPLcom/android/server/pm/PermissionsState;->revokeInstallPermission(Lcom/android/server/pm/BasePermission;)I +HSPLcom/android/server/pm/PermissionsState;->revokePermission(Lcom/android/server/pm/BasePermission;I)I +HSPLcom/android/server/pm/PermissionsState;->setGlobalGids([I)V HSPLcom/android/server/pm/PermissionsState;->updatePermissionFlags(Lcom/android/server/pm/BasePermission;III)Z -HSPLcom/android/server/pm/Policy$PolicyBuilder;->-get0(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Set; -HSPLcom/android/server/pm/Policy$PolicyBuilder;->-get1(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Map; -HSPLcom/android/server/pm/Policy$PolicyBuilder;->-get2(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/lang/String; -HSPLcom/android/server/pm/Policy$PolicyBuilder;-><init>()V -HSPLcom/android/server/pm/Policy$PolicyBuilder;->addInnerPackageMapOrThrow(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; -HSPLcom/android/server/pm/Policy$PolicyBuilder;->addSignature(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; -HSPLcom/android/server/pm/Policy$PolicyBuilder;->build()Lcom/android/server/pm/Policy; -HSPLcom/android/server/pm/Policy$PolicyBuilder;->setGlobalSeinfoOrThrow(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; -HSPLcom/android/server/pm/Policy$PolicyBuilder;->validateValue(Ljava/lang/String;)Z -HSPLcom/android/server/pm/Policy;->-get0(Lcom/android/server/pm/Policy;)Ljava/util/Set; -HSPLcom/android/server/pm/Policy;->-get1(Lcom/android/server/pm/Policy;)Ljava/util/Map; -HSPLcom/android/server/pm/Policy;->-get2(Lcom/android/server/pm/Policy;)Ljava/lang/String; -HSPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;)V -HSPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;Lcom/android/server/pm/Policy;)V -HSPLcom/android/server/pm/Policy;->getSignatures()Ljava/util/Set; -HSPLcom/android/server/pm/Policy;->hasInnerPackages()Z -HSPLcom/android/server/pm/PolicyComparator;-><init>()V -HSPLcom/android/server/pm/PolicyComparator;->compare(Lcom/android/server/pm/Policy;Lcom/android/server/pm/Policy;)I -HSPLcom/android/server/pm/PolicyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -HSPLcom/android/server/pm/PolicyComparator;->foundDuplicate()Z -HSPLcom/android/server/pm/ProcessLoggingHandler;-><init>()V -HSPLcom/android/server/pm/ProtectedPackages;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/pm/SELinuxMMAC;->readInstallPolicy()Z -HSPLcom/android/server/pm/SELinuxMMAC;->readPackageOrThrow(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/Policy$PolicyBuilder;)V -HSPLcom/android/server/pm/SELinuxMMAC;->readSeinfo(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLcom/android/server/pm/SELinuxMMAC;->readSignerOrThrow(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/Policy; +HSPLcom/android/server/pm/Policy;->getMatchedSeInfo(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; +HSPLcom/android/server/pm/PreferredComponent$Callbacks;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z +HSPLcom/android/server/pm/SELinuxMMAC;->assignSeInfoValue(Landroid/content/pm/PackageParser$Package;)V HSPLcom/android/server/pm/SettingBase;-><init>(II)V +HSPLcom/android/server/pm/SettingBase;-><init>(Lcom/android/server/pm/SettingBase;)V +HSPLcom/android/server/pm/SettingBase;->doCopy(Lcom/android/server/pm/SettingBase;)V HSPLcom/android/server/pm/SettingBase;->getPermissionsState()Lcom/android/server/pm/PermissionsState; HSPLcom/android/server/pm/SettingBase;->setFlags(I)V HSPLcom/android/server/pm/SettingBase;->setPrivateFlags(I)V -HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V -HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><init>(Lcom/android/server/pm/Settings;Ljava/lang/Object;)V -HSPLcom/android/server/pm/Settings$VersionInfo;-><init>()V -HSPLcom/android/server/pm/Settings;-><init>(Ljava/io/File;Ljava/lang/Object;)V -HSPLcom/android/server/pm/Settings;-><init>(Ljava/lang/Object;)V +HSPLcom/android/server/pm/Settings$KernelPackageState;-><init>()V +HSPLcom/android/server/pm/Settings$KernelPackageState;-><init>(Lcom/android/server/pm/Settings$KernelPackageState;)V +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parsePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PermissionsState;I)V +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parseRuntimePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;I)V +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsForUserAsyncLPr(I)V +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsSync(I)V HSPLcom/android/server/pm/Settings;->addPackageLPw(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIILjava/lang/String;Ljava/util/List;[Ljava/lang/String;[I)Lcom/android/server/pm/PackageSetting; -HSPLcom/android/server/pm/Settings;->addSharedUserLPw(Ljava/lang/String;III)Lcom/android/server/pm/SharedUserSetting; +HSPLcom/android/server/pm/Settings;->addPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;)V HSPLcom/android/server/pm/Settings;->addUserIdLPw(ILjava/lang/Object;Ljava/lang/Object;)Z -HSPLcom/android/server/pm/Settings;->findOrCreateVersion(Ljava/lang/String;)Lcom/android/server/pm/Settings$VersionInfo; -HSPLcom/android/server/pm/Settings;->readDomainVerificationLPw(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PackageSettingBase;)V +HSPLcom/android/server/pm/Settings;->getAllUsers(Lcom/android/server/pm/UserManagerService;)Ljava/util/List; +HSPLcom/android/server/pm/Settings;->getDefaultBrowserPackageNameLPw(I)Ljava/lang/String; +HSPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting; +HSPLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo; +HSPLcom/android/server/pm/Settings;->getListOfIncompleteInstallPackagesLPr()Ljava/util/ArrayList; +HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting; +HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/server/pm/Settings;->getUserIdLPr(I)Ljava/lang/Object; +HSPLcom/android/server/pm/Settings;->getVolumePackagesLPr(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/Settings;->isDisabledSystemPackageLPr(Ljava/lang/String;)Z +HSPLcom/android/server/pm/Settings;->isEnabledAndMatchLPr(Landroid/content/pm/ComponentInfo;II)Z +HSPLcom/android/server/pm/Settings;->pruneSharedUsersLPw()V +HSPLcom/android/server/pm/Settings;->readComponentsLPr(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/ArraySet; +HSPLcom/android/server/pm/Settings;->readDisabledSysPackageLPw(Lorg/xmlpull/v1/XmlPullParser;)V HSPLcom/android/server/pm/Settings;->readInstallPermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PermissionsState;)V HSPLcom/android/server/pm/Settings;->readInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;I)I HSPLcom/android/server/pm/Settings;->readLPw(Ljava/util/List;)Z HSPLcom/android/server/pm/Settings;->readPackageLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(I)V HSPLcom/android/server/pm/Settings;->readPermissionsLPw(Landroid/util/ArrayMap;Lorg/xmlpull/v1/XmlPullParser;)V -HSPLcom/android/server/pm/SharedUserSetting;-><init>(Ljava/lang/String;II)V -HSPLcom/android/server/pm/UserDataPreparer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Z)V -HSPLcom/android/server/pm/UserManagerService$1;-><init>(Lcom/android/server/pm/UserManagerService;)V -HSPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;)V -HSPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$LocalService;)V -HSPLcom/android/server/pm/UserManagerService$MainHandler;-><init>(Lcom/android/server/pm/UserManagerService;)V -HSPLcom/android/server/pm/UserManagerService$UserData;-><init>()V -HSPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;)V -HSPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;Ljava/io/File;)V +HSPLcom/android/server/pm/Settings;->readSharedUserLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[I)V +HSPLcom/android/server/pm/Settings;->writeChildPackagesLPw(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V +HSPLcom/android/server/pm/Settings;->writeDomainVerificationsLPr(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/IntentFilterVerificationInfo;)V +HSPLcom/android/server/pm/Settings;->writeIntToFile(Ljava/io/File;I)V +HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr()V +HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr(Lcom/android/server/pm/PackageSetting;)V +HSPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V +HSPLcom/android/server/pm/Settings;->writeLPr()V +HSPLcom/android/server/pm/Settings;->writePackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V +HSPLcom/android/server/pm/Settings;->writePermissionLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/BasePermission;)V +HSPLcom/android/server/pm/Settings;->writePermissionsLPr(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V +HSPLcom/android/server/pm/Settings;->writeRuntimePermissionsForUserLPr(IZ)V +HSPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V +HSPLcom/android/server/pm/Settings;->writeUpgradeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V +HSPLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V +HSPLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;[I)V +HSPLcom/android/server/pm/SharedUserSetting;->addPackage(Lcom/android/server/pm/PackageSetting;)V HSPLcom/android/server/pm/UserManagerService;->checkManageOrCreateUsersPermission(Ljava/lang/String;)V +HSPLcom/android/server/pm/UserManagerService;->exists(I)Z +HSPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService; +HSPLcom/android/server/pm/UserManagerService;->getUserIds()[I +HSPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo; +HSPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo; +HSPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo; HSPLcom/android/server/pm/UserManagerService;->getUsers(Z)Ljava/util/List; HSPLcom/android/server/pm/UserManagerService;->hasManageOrCreateUsersPermission()Z -HSPLcom/android/server/pm/UserManagerService;->initDefaultGuestRestrictions()V -HSPLcom/android/server/pm/UserManagerService;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I -HSPLcom/android/server/pm/UserManagerService;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J -HSPLcom/android/server/pm/UserManagerService;->readUserLP(I)Lcom/android/server/pm/UserManagerService$UserData; -HSPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;)Lcom/android/server/pm/UserManagerService$UserData; -HSPLcom/android/server/pm/UserManagerService;->readUserListLP()V -HSPLcom/android/server/pm/UserManagerService;->updateUserIds()V -HSPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(Landroid/os/Bundle;)V HSPLcom/android/server/pm/UserManagerService;->userWithName(Landroid/content/pm/UserInfo;)Landroid/content/pm/UserInfo; -HSPLcom/android/server/pm/UserRestrictionsUtils;->newSetWithUniqueCheck([Ljava/lang/String;)Ljava/util/Set; -HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/Bundle; HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;Landroid/os/Bundle;)V -HSPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V -HSPLcom/android/server/pm/dex/PackageDexUsage;-><init>()V -HSPLcom/android/server/power/BatterySaverPolicy;-><init>(Landroid/os/Handler;)V HSPLcom/android/server/power/BatterySaverPolicy;->getBatterySaverPolicy(IZ)Landroid/os/PowerSaveState; -HSPLcom/android/server/power/PowerManagerService$1;-><init>(Lcom/android/server/power/PowerManagerService;)V -HSPLcom/android/server/power/PowerManagerService$2;-><init>(Lcom/android/server/power/PowerManagerService;)V -HSPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;)V -HSPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$BinderService;)V -HSPLcom/android/server/power/PowerManagerService$Constants;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V -HSPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;)V -HSPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$LocalService;)V -HSPLcom/android/server/power/PowerManagerService$LocalService;->getLowPowerState(I)Landroid/os/PowerSaveState; -HSPLcom/android/server/power/PowerManagerService$LocalService;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V -HSPLcom/android/server/power/PowerManagerService$PowerManagerHandler;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Looper;)V -HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;-><init>(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)V -HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire()V -HSPLcom/android/server/power/PowerManagerService;->-get0(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/BatterySaverPolicy; -HSPLcom/android/server/power/PowerManagerService;->-get10(Lcom/android/server/power/PowerManagerService;)Z -HSPLcom/android/server/power/PowerManagerService;->-get11(Lcom/android/server/power/PowerManagerService;)Ljava/util/ArrayList; +HSPLcom/android/server/power/PowerManagerService$BinderService;->powerHint(II)V +HSPLcom/android/server/power/PowerManagerService;->-get12(Lcom/android/server/power/PowerManagerService;)Z HSPLcom/android/server/power/PowerManagerService;->-get9(Lcom/android/server/power/PowerManagerService;)Ljava/lang/Object; -HSPLcom/android/server/power/PowerManagerService;->-wrap20(Ljava/lang/String;)V -HSPLcom/android/server/power/PowerManagerService;-><init>(Landroid/content/Context;)V -HSPLcom/android/server/power/PowerManagerService;->createSuspendBlockerLocked(Ljava/lang/String;)Lcom/android/server/power/SuspendBlocker; -HSPLcom/android/server/power/PowerManagerService;->onBootPhase(I)V -HSPLcom/android/server/power/PowerManagerService;->onStart()V HSPLcom/android/server/power/SuspendBlocker;->acquire()V HSPLcom/android/server/power/SuspendBlocker;->release()V HSPLcom/android/server/power/SuspendBlocker;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V HSPLcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener;->onEnabledComponentChanged()V HSPLcom/android/server/wm/AppWindowContainerListener;->keyDispatchingTimedOut(Ljava/lang/String;I)Z -HSPLcom/android/server/wm/AppWindowContainerListener;->onStartingWindowDrawn()V -HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsDrawn()V +HSPLcom/android/server/wm/AppWindowContainerListener;->onStartingWindowDrawn(J)V +HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsDrawn(J)V HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsGone()V HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsVisible()V HSPLcom/android/server/wm/TaskWindowContainerListener;->onSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V HSPLcom/android/server/wm/TaskWindowContainerListener;->requestResize(Landroid/graphics/Rect;I)V -Lcom/android/server/-$Lambda$6PBiitFNzy52xbrUpcD5i5xBLLY; +Lcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g; Lcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo; Lcom/android/server/AlarmManagerService; Lcom/android/server/AppOpsService$1; @@ -2395,6 +5689,7 @@ Lcom/android/server/VibratorService; Lcom/android/server/Watchdog$BinderThreadMonitor; Lcom/android/server/Watchdog$HandlerChecker; Lcom/android/server/Watchdog$Monitor; +Lcom/android/server/Watchdog$OpenFdMonitor; Lcom/android/server/Watchdog; Lcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s; Lcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU; @@ -2434,6 +5729,7 @@ Lcom/android/server/am/BaseErrorDialog; Lcom/android/server/am/BatteryExternalStatsWorker$1; Lcom/android/server/am/BatteryExternalStatsWorker$2; Lcom/android/server/am/BatteryExternalStatsWorker; +Lcom/android/server/am/BatteryStatsService$1; Lcom/android/server/am/BatteryStatsService$WakeupReasonThread; Lcom/android/server/am/BatteryStatsService; Lcom/android/server/am/BroadcastQueue$BroadcastHandler; @@ -2464,8 +5760,13 @@ Lcom/android/server/am/UserController; Lcom/android/server/am/UserState; Lcom/android/server/am/VrController$1; Lcom/android/server/am/VrController; +Lcom/android/server/broadcastradio/BroadcastRadioService; +Lcom/android/server/broadcastradio/Convert; +Lcom/android/server/broadcastradio/Tuner; +Lcom/android/server/broadcastradio/TunerCallback; Lcom/android/server/connectivity/Vpn; Lcom/android/server/connectivity/tethering/OffloadHardwareInterface; +Lcom/android/server/display/-$Lambda$pe87L53A2dvYIZSUUR6Usyk2Zwo; Lcom/android/server/display/DisplayAdapter$1; Lcom/android/server/display/DisplayAdapter$2; Lcom/android/server/display/DisplayAdapter$Listener; @@ -2488,7 +5789,10 @@ Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice; Lcom/android/server/display/LocalDisplayAdapter; Lcom/android/server/display/LogicalDisplay; Lcom/android/server/display/PersistentDataStore$DisplayState; +Lcom/android/server/display/PersistentDataStore$StableDeviceValues; Lcom/android/server/display/PersistentDataStore; +Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory; +Lcom/android/server/display/VirtualDisplayAdapter; Lcom/android/server/firewall/AndFilter$1; Lcom/android/server/firewall/AndFilter; Lcom/android/server/firewall/CategoryFilter$1; @@ -2545,9 +5849,11 @@ Lcom/android/server/location/LocationProviderInterface; Lcom/android/server/locksettings/SyntheticPasswordManager; Lcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy; Lcom/android/server/os/DeviceIdentifiersPolicyService; +Lcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs; Lcom/android/server/pm/AbstractStatsBase; Lcom/android/server/pm/BasePermission; Lcom/android/server/pm/CompilerStats; +Lcom/android/server/pm/CrossProfileIntentResolver; Lcom/android/server/pm/DefaultPermissionGrantPolicy$1; Lcom/android/server/pm/DefaultPermissionGrantPolicy; Lcom/android/server/pm/Installer$1; @@ -2555,13 +5861,22 @@ Lcom/android/server/pm/Installer$InstallerException; Lcom/android/server/pm/Installer; Lcom/android/server/pm/InstantAppRegistry$CookiePersistence; Lcom/android/server/pm/InstantAppRegistry; +Lcom/android/server/pm/InstructionSets; +Lcom/android/server/pm/KeySetHandle; +Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle; Lcom/android/server/pm/KeySetManagerService; Lcom/android/server/pm/PackageDexOptimizer; +Lcom/android/server/pm/PackageInstallerService$1; +Lcom/android/server/pm/PackageInstallerService; Lcom/android/server/pm/PackageKeySetData; Lcom/android/server/pm/PackageManagerException; Lcom/android/server/pm/PackageManagerService$1; Lcom/android/server/pm/PackageManagerService$2; Lcom/android/server/pm/PackageManagerService$3; +Lcom/android/server/pm/PackageManagerService$9; +Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator; +Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator; +Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator; Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver; Lcom/android/server/pm/PackageManagerService$DefaultContainerConnection; Lcom/android/server/pm/PackageManagerService$MoveCallbacks; @@ -2580,16 +5895,23 @@ Lcom/android/server/pm/PackageSetting; Lcom/android/server/pm/PackageSettingBase; Lcom/android/server/pm/PackageSignatures; Lcom/android/server/pm/PackageUsage; +Lcom/android/server/pm/ParallelPackageParser$ParseResult; +Lcom/android/server/pm/ParallelPackageParser; Lcom/android/server/pm/PermissionsState$PermissionData; Lcom/android/server/pm/PermissionsState$PermissionState; Lcom/android/server/pm/PermissionsState; Lcom/android/server/pm/Policy$PolicyBuilder; Lcom/android/server/pm/Policy; Lcom/android/server/pm/PolicyComparator; +Lcom/android/server/pm/PreferredActivity; +Lcom/android/server/pm/PreferredComponent$Callbacks; +Lcom/android/server/pm/PreferredComponent; +Lcom/android/server/pm/PreferredIntentResolver; Lcom/android/server/pm/ProcessLoggingHandler; Lcom/android/server/pm/ProtectedPackages; Lcom/android/server/pm/SELinuxMMAC; Lcom/android/server/pm/SettingBase; +Lcom/android/server/pm/Settings$KernelPackageState; Lcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler; Lcom/android/server/pm/Settings$RuntimePermissionPersistence; Lcom/android/server/pm/Settings$VersionInfo; @@ -2603,6 +5925,7 @@ Lcom/android/server/pm/UserManagerService$UserData; Lcom/android/server/pm/UserManagerService; Lcom/android/server/pm/UserRestrictionsUtils; Lcom/android/server/pm/dex/DexManager; +Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; Lcom/android/server/pm/dex/PackageDexUsage; Lcom/android/server/power/BatterySaverPolicy; Lcom/android/server/power/PowerManagerService$1; @@ -2614,9 +5937,6 @@ Lcom/android/server/power/PowerManagerService$PowerManagerHandler; Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl; Lcom/android/server/power/PowerManagerService; Lcom/android/server/power/SuspendBlocker; -Lcom/android/server/radio/RadioService; -Lcom/android/server/radio/Tuner; -Lcom/android/server/radio/TunerCallback; Lcom/android/server/storage/AppFuseBridge; Lcom/android/server/tv/TvInputHal; Lcom/android/server/tv/UinputBridge; @@ -2637,6 +5957,14 @@ PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->asInterf PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->getService()Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint; PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;-><init>()V PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;-><init>(Landroid/os/IHwBinder;)V +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->hasWideColorDisplay()Landroid/hardware/configstore/V1_0/OptionalBool; +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs; +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getService()Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs; +PLandroid/hardware/configstore/V1_0/OptionalBool;-><init>()V +PLandroid/hardware/configstore/V1_0/OptionalBool;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/configstore/V1_0/OptionalBool;->readFromParcel(Landroid/os/HwParcel;)V PLandroid/hardware/oemlock/V1_0/IOemLock;->getService()Landroid/hardware/oemlock/V1_0/IOemLock; PLandroid/hardware/usb/V1_0/IUsb$Proxy;-><init>(Landroid/os/IHwBinder;)V PLandroid/hardware/usb/V1_0/IUsb$Proxy;->interfaceChain()Ljava/util/ArrayList; @@ -2656,10 +5984,7 @@ PLandroid/hardware/usb/V1_1/PortStatus_1_1;->readEmbeddedFromParcel(Landroid/os/ PLandroid/hardware/usb/V1_1/PortStatus_1_1;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; PLandroid/hardware/weaver/V1_0/IWeaver;->getService()Landroid/hardware/weaver/V1_0/IWeaver; PLandroid/hardware/wifi/V1_0/IWifi$Proxy;-><init>(Landroid/os/IHwBinder;)V -PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChip(ILandroid/hardware/wifi/V1_0/IWifi$getChipCallback;)V -PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChipIds(Landroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;)V PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->interfaceChain()Ljava/util/ArrayList; -PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->isStarted()Z PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->start()Landroid/hardware/wifi/V1_0/WifiStatus; @@ -2670,30 +5995,18 @@ PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;-><init>()V PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;->readFromParcel(Landroid/os/HwParcel;)V PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;-><init>()V -PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V -PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;-><init>()V -PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V PLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;-><init>()V -PLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V -PLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;-><init>(Landroid/os/IHwBinder;)V PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->configureChip(I)Landroid/hardware/wifi/V1_0/WifiStatus; PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->createRttController(Landroid/hardware/wifi/V1_0/IWifiIface;Landroid/hardware/wifi/V1_0/IWifiChip$createRttControllerCallback;)V PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->createStaIface(Landroid/hardware/wifi/V1_0/IWifiChip$createStaIfaceCallback;)V PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->enableDebugErrorAlerts(Z)Landroid/hardware/wifi/V1_0/WifiStatus; -PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getApIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getAvailableModes(Landroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->forceDumpToDebugRingBuffer(Ljava/lang/String;)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getDebugHostWakeReasonStats(Landroid/hardware/wifi/V1_0/IWifiChip$getDebugHostWakeReasonStatsCallback;)V PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getDebugRingBuffersStatus(Landroid/hardware/wifi/V1_0/IWifiChip$getDebugRingBuffersStatusCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getMode(Landroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getNanIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getP2pIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getP2pIfaceNamesCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->interfaceChain()Ljava/util/ArrayList; PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiChipEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->requestChipDebugInfo(Landroid/hardware/wifi/V1_0/IWifiChip$requestChipDebugInfoCallback;)V PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->startLoggingToDebugRingBuffer(Ljava/lang/String;III)Landroid/hardware/wifi/V1_0/WifiStatus; -PLandroid/hardware/wifi/V1_0/IWifiChip;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiChip; PLandroid/hardware/wifi/V1_0/IWifiChipEventCallback$Stub;-><init>()V PLandroid/hardware/wifi/V1_0/IWifiChipEventCallback$Stub;->asBinder()Landroid/os/IHwBinder; PLandroid/hardware/wifi/V1_0/IWifiEventCallback$Stub;-><init>()V @@ -2712,19 +6025,14 @@ PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->enableLinkLayerStatsCollectio PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->enableNdOffload(Z)Landroid/hardware/wifi/V1_0/WifiStatus; PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getApfPacketFilterCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getApfPacketFilterCapabilitiesCallback;)V PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getBackgroundScanCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getBackgroundScanCapabilitiesCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;)V PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getDebugRxPacketFates(Landroid/hardware/wifi/V1_0/IWifiStaIface$getDebugRxPacketFatesCallback;)V PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getDebugTxPacketFates(Landroid/hardware/wifi/V1_0/IWifiStaIface$getDebugTxPacketFatesCallback;)V PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getName(Landroid/hardware/wifi/V1_0/IWifiIface$getNameCallback;)V PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getRoamingCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getRoamingCapabilitiesCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getValidFrequenciesForBand(ILandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;)V -PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->installApfPacketFilter(ILjava/util/ArrayList;)Landroid/hardware/wifi/V1_0/WifiStatus; -PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->interfaceChain()Ljava/util/ArrayList; PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->setScanningMacOui([B)Landroid/hardware/wifi/V1_0/WifiStatus; PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->startDebugPacketFateMonitoring()Landroid/hardware/wifi/V1_0/WifiStatus; PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->stopRssiMonitoring(I)Landroid/hardware/wifi/V1_0/WifiStatus; -PLandroid/hardware/wifi/V1_0/IWifiStaIface;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiStaIface; PLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback$Stub;-><init>()V PLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback$Stub;->asBinder()Landroid/os/IHwBinder; PLandroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;-><init>()V @@ -2734,28 +6042,26 @@ PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;-><init>()V PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->readFromParcel(Landroid/os/HwParcel;)V PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->toString()Ljava/lang/String; -PLandroid/hardware/wifi/V1_0/StaLinkLayerIfacePacketStats;-><init>()V -PLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;-><init>()V -PLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V -PLandroid/hardware/wifi/V1_0/StaLinkLayerRadioStats;-><init>()V -PLandroid/hardware/wifi/V1_0/StaLinkLayerStats;-><init>()V -PLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->readFromParcel(Landroid/os/HwParcel;)V PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;-><init>()V PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;->readFromParcel(Landroid/os/HwParcel;)V PLandroid/hardware/wifi/V1_0/StaRoamingConfig;-><init>()V PLandroid/hardware/wifi/V1_0/StaRoamingConfig;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V PLandroid/hardware/wifi/V1_0/StaRoamingConfig;->writeToParcel(Landroid/os/HwParcel;)V -PLandroid/hardware/wifi/V1_0/WifiDebugPacketFateFrameInfo;-><init>()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxIcmpPacketDetails;-><init>()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxIcmpPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxMulticastPacketDetails;-><init>()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxMulticastPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxPacketDetails;-><init>()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;-><init>()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;->readFromParcel(Landroid/os/HwParcel;)V PLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;-><init>()V PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; PLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;-><init>()V -PLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V -PLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; -PLandroid/hardware/wifi/V1_0/WifiStatus;-><init>()V -PLandroid/hardware/wifi/V1_0/WifiStatus;->readFromParcel(Landroid/os/HwParcel;)V PLandroid/hardware/wifi/V1_0/WifiStatus;->toString()Ljava/lang/String; PLandroid/hardware/wifi/V1_0/WifiStatusCode;->toString(I)Ljava/lang/String; PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;-><init>()V @@ -2812,7 +6118,6 @@ PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setBtCoexist PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setBtCoexistenceScanModeEnabled(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setCountryCode([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setExternalSim(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; -PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setPowerSave(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setSuspendModeEnabled(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsConfigMethods(S)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsDeviceName(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; @@ -2844,9 +6149,6 @@ PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setSsid(Lj PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork; PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback$Stub;-><init>()V PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback$Stub;->asBinder()Landroid/os/IHwBinder; -PLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;-><init>()V -PLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V -PLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readFromParcel(Landroid/os/HwParcel;)V PLandroid/net/apf/ApfCapabilities;-><init>(III)V PLandroid/net/apf/ApfCapabilities;->toString()Ljava/lang/String; PLandroid/net/apf/ApfFilter$ProcessRaResult;-><init>(Ljava/lang/String;I)V @@ -2856,9 +6158,8 @@ PLandroid/net/apf/ApfFilter$Ra;->IPv6AddresstoString(I)Ljava/lang/String; PLandroid/net/apf/ApfFilter$Ra;->addNonLifetime(III)I PLandroid/net/apf/ApfFilter$Ra;->addNonLifetimeU32(I)I PLandroid/net/apf/ApfFilter$Ra;->currentLifetime()J -PLandroid/net/apf/ApfFilter$Ra;->generateFilterLocked(Landroid/net/apf/ApfGenerator;)J +PLandroid/net/apf/ApfFilter$Ra;->getLastMatchingPacket()Ljava/lang/String; PLandroid/net/apf/ApfFilter$Ra;->isExpired()Z -PLandroid/net/apf/ApfFilter$Ra;->minLifetime([BI)J PLandroid/net/apf/ApfFilter$Ra;->prefixOptionToString(Ljava/lang/StringBuffer;I)V PLandroid/net/apf/ApfFilter$Ra;->rdnssOptionToString(Ljava/lang/StringBuffer;I)V PLandroid/net/apf/ApfFilter$Ra;->toString()Ljava/lang/String; @@ -2869,19 +6170,14 @@ PLandroid/net/apf/ApfFilter$ReceiveThread;->updateStats(Landroid/net/apf/ApfFilt PLandroid/net/apf/ApfFilter;->-get1(Landroid/net/apf/ApfFilter;)Landroid/net/metrics/IpConnectivityLog; PLandroid/net/apf/ApfFilter;->-wrap0(Landroid/net/apf/ApfFilter;)J PLandroid/net/apf/ApfFilter;->-wrap2(Landroid/net/apf/ApfFilter;Ljava/lang/String;)V -PLandroid/net/apf/ApfFilter;-><init>(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;ZLandroid/net/metrics/IpConnectivityLog;)V -PLandroid/net/apf/ApfFilter;->beginProgramLocked()Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfFilter;->currentTimeSeconds()J +PLandroid/net/apf/ApfFilter;-><init>(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;ZZLandroid/net/metrics/IpConnectivityLog;)V +PLandroid/net/apf/ApfFilter;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V PLandroid/net/apf/ApfFilter;->findIPv4LinkAddress(Landroid/net/LinkProperties;)Landroid/net/LinkAddress; -PLandroid/net/apf/ApfFilter;->generateArpFilterLocked(Landroid/net/apf/ApfGenerator;)V -PLandroid/net/apf/ApfFilter;->generateIPv4FilterLocked(Landroid/net/apf/ApfGenerator;)V -PLandroid/net/apf/ApfFilter;->generateIPv6FilterLocked(Landroid/net/apf/ApfGenerator;)V PLandroid/net/apf/ApfFilter;->getUniqueNumberLocked()J -PLandroid/net/apf/ApfFilter;->installNewProgramLocked()V PLandroid/net/apf/ApfFilter;->ipv4BroadcastAddress([BI)I PLandroid/net/apf/ApfFilter;->log(Ljava/lang/String;)V PLandroid/net/apf/ApfFilter;->logApfProgramEventLocked(J)V -PLandroid/net/apf/ApfFilter;->maybeCreate(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;Z)Landroid/net/apf/ApfFilter; +PLandroid/net/apf/ApfFilter;->maybeCreate(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;ZZ)Landroid/net/apf/ApfFilter; PLandroid/net/apf/ApfFilter;->maybeStartFilter()V PLandroid/net/apf/ApfFilter;->processRa([BI)Landroid/net/apf/ApfFilter$ProcessRaResult; PLandroid/net/apf/ApfFilter;->purgeExpiredRasLocked()V @@ -2889,52 +6185,23 @@ PLandroid/net/apf/ApfFilter;->setLinkProperties(Landroid/net/LinkProperties;)V PLandroid/net/apf/ApfFilter;->setMulticastFilter(Z)V PLandroid/net/apf/ApfFilter;->shouldInstallnewProgram()Z PLandroid/net/apf/ApfGenerator$ExtendedOpcodes;-><init>(Ljava/lang/String;II)V -PLandroid/net/apf/ApfGenerator$Instruction;-><init>(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;)V -PLandroid/net/apf/ApfGenerator$Instruction;-><init>(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;Landroid/net/apf/ApfGenerator$Register;)V -PLandroid/net/apf/ApfGenerator$Instruction;->calculateImmSize(IZ)B -PLandroid/net/apf/ApfGenerator$Instruction;->generate([B)V -PLandroid/net/apf/ApfGenerator$Instruction;->generateImmSizeField()B -PLandroid/net/apf/ApfGenerator$Instruction;->generateInstructionByte()B -PLandroid/net/apf/ApfGenerator$Instruction;->setCompareBytes([B)V -PLandroid/net/apf/ApfGenerator$Instruction;->setImm(IZ)V -PLandroid/net/apf/ApfGenerator$Instruction;->setLabel(Ljava/lang/String;)V -PLandroid/net/apf/ApfGenerator$Instruction;->setSignedImm(I)V -PLandroid/net/apf/ApfGenerator$Instruction;->setTargetLabel(Ljava/lang/String;)V -PLandroid/net/apf/ApfGenerator$Instruction;->setUnsignedImm(I)V -PLandroid/net/apf/ApfGenerator$Instruction;->writeValue(I[BI)I PLandroid/net/apf/ApfGenerator$Opcodes;-><init>(Ljava/lang/String;II)V PLandroid/net/apf/ApfGenerator$Register;-><init>(Ljava/lang/String;II)V -PLandroid/net/apf/ApfGenerator;->-get0(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction; -PLandroid/net/apf/ApfGenerator;->-get1(Landroid/net/apf/ApfGenerator;)Ljava/util/HashMap; -PLandroid/net/apf/ApfGenerator;->-get2(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction; -PLandroid/net/apf/ApfGenerator;-><init>()V PLandroid/net/apf/ApfGenerator;->addAddR1()Landroid/net/apf/ApfGenerator; PLandroid/net/apf/ApfGenerator;->addAnd(I)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addInstruction(Landroid/net/apf/ApfGenerator$Instruction;)V -PLandroid/net/apf/ApfGenerator;->addJump(Ljava/lang/String;)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addJumpIfBytesNotEqual(Landroid/net/apf/ApfGenerator$Register;[BLjava/lang/String;)Landroid/net/apf/ApfGenerator; PLandroid/net/apf/ApfGenerator;->addJumpIfR0AnyBitsSet(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addJumpIfR0Equals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addJumpIfR0GreaterThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addJumpIfR0LessThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addJumpIfR0NotEquals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addLoad16(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; PLandroid/net/apf/ApfGenerator;->addLoad16Indexed(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addLoad32(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addLoad8(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addLoadFromMemory(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->addLoadImmediate(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; -PLandroid/net/apf/ApfGenerator;->defineLabel(Ljava/lang/String;)Landroid/net/apf/ApfGenerator; PLandroid/net/apf/ApfGenerator;->programLengthOverEstimate()I PLandroid/net/apf/ApfGenerator;->setApfVersion(I)Z PLandroid/net/dhcp/DhcpAckPacket;-><init>(ISZLjava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;[B)V -PLandroid/net/dhcp/DhcpAckPacket;->toString()Ljava/lang/String; PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;-><init>(Landroid/net/dhcp/DhcpClient;)V PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;->enter()V PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;->processMessage(Landroid/os/Message;)Z PLandroid/net/dhcp/DhcpClient$DhcpBoundState;-><init>(Landroid/net/dhcp/DhcpClient;)V PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->enter()V +PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->exit()V PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->logTimeToBoundState()V +PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->processMessage(Landroid/os/Message;)Z PLandroid/net/dhcp/DhcpClient$DhcpHaveLeaseState;-><init>(Landroid/net/dhcp/DhcpClient;)V PLandroid/net/dhcp/DhcpClient$DhcpHaveLeaseState;->processMessage(Landroid/os/Message;)Z PLandroid/net/dhcp/DhcpClient$DhcpInitRebootState;-><init>(Landroid/net/dhcp/DhcpClient;)V @@ -2943,9 +6210,14 @@ PLandroid/net/dhcp/DhcpClient$DhcpInitState;->enter()V PLandroid/net/dhcp/DhcpClient$DhcpInitState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V PLandroid/net/dhcp/DhcpClient$DhcpInitState;->sendPacket()Z PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;-><init>(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->enter()V +PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V +PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->sendPacket()Z PLandroid/net/dhcp/DhcpClient$DhcpRebindingState;-><init>(Landroid/net/dhcp/DhcpClient;)V PLandroid/net/dhcp/DhcpClient$DhcpRebootingState;-><init>(Landroid/net/dhcp/DhcpClient;)V PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;-><init>(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;->packetDestination()Ljava/net/Inet4Address; +PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;->processMessage(Landroid/os/Message;)Z PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;-><init>(Landroid/net/dhcp/DhcpClient;)V PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;->sendPacket()Z @@ -2986,10 +6258,12 @@ PLandroid/net/dhcp/DhcpClient;->-get16(Landroid/net/dhcp/DhcpClient;)Landroid/ne PLandroid/net/dhcp/DhcpClient;->-get17(Landroid/net/dhcp/DhcpClient;)Z PLandroid/net/dhcp/DhcpClient;->-get2(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; PLandroid/net/dhcp/DhcpClient;->-get20(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/dhcp/DhcpClient;->-get22(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; PLandroid/net/dhcp/DhcpClient;->-get23(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; PLandroid/net/dhcp/DhcpClient;->-get4(Landroid/net/dhcp/DhcpClient;)Landroid/net/DhcpResults; PLandroid/net/dhcp/DhcpClient;->-get7(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; PLandroid/net/dhcp/DhcpClient;->-get9(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/dhcp/DhcpClient;->-set0(Landroid/net/dhcp/DhcpClient;J)J PLandroid/net/dhcp/DhcpClient;->-set1(Landroid/net/dhcp/DhcpClient;J)J PLandroid/net/dhcp/DhcpClient;->-set2(Landroid/net/dhcp/DhcpClient;Landroid/net/DhcpResults;)Landroid/net/DhcpResults; PLandroid/net/dhcp/DhcpClient;->-set3(Landroid/net/dhcp/DhcpClient;Landroid/net/dhcp/DhcpClient$ReceiveThread;)Landroid/net/dhcp/DhcpClient$ReceiveThread; @@ -3040,39 +6314,25 @@ PLandroid/net/dhcp/DhcpPacket;->addTlv(Ljava/nio/ByteBuffer;B[B)V PLandroid/net/dhcp/DhcpPacket;->addTlvEnd(Ljava/nio/ByteBuffer;)V PLandroid/net/dhcp/DhcpPacket;->buildDiscoverPacket(IIS[BZ[B)Ljava/nio/ByteBuffer; PLandroid/net/dhcp/DhcpPacket;->buildRequestPacket(IISLjava/net/Inet4Address;Z[BLjava/net/Inet4Address;Ljava/net/Inet4Address;[BLjava/lang/String;)Ljava/nio/ByteBuffer; -PLandroid/net/dhcp/DhcpPacket;->checksum(Ljava/nio/ByteBuffer;III)I -PLandroid/net/dhcp/DhcpPacket;->decodeFullPacket(Ljava/nio/ByteBuffer;I)Landroid/net/dhcp/DhcpPacket; PLandroid/net/dhcp/DhcpPacket;->decodeFullPacket([BII)Landroid/net/dhcp/DhcpPacket; -PLandroid/net/dhcp/DhcpPacket;->fillInPacket(ILjava/net/Inet4Address;Ljava/net/Inet4Address;SSLjava/nio/ByteBuffer;BZ)V PLandroid/net/dhcp/DhcpPacket;->getClientId()[B PLandroid/net/dhcp/DhcpPacket;->getClientMac()[B PLandroid/net/dhcp/DhcpPacket;->getHostname()Ljava/lang/String; PLandroid/net/dhcp/DhcpPacket;->getLeaseTimeMillis()J PLandroid/net/dhcp/DhcpPacket;->getTransactionId()I PLandroid/net/dhcp/DhcpPacket;->getVendorId()Ljava/lang/String; -PLandroid/net/dhcp/DhcpPacket;->intAbs(S)I PLandroid/net/dhcp/DhcpPacket;->isPacketToOrFromClient(SS)Z -PLandroid/net/dhcp/DhcpPacket;->macToString([B)Ljava/lang/String; PLandroid/net/dhcp/DhcpPacket;->readAsciiString(Ljava/nio/ByteBuffer;IZ)Ljava/lang/String; -PLandroid/net/dhcp/DhcpPacket;->readIpAddress(Ljava/nio/ByteBuffer;)Ljava/net/Inet4Address; PLandroid/net/dhcp/DhcpPacket;->toDhcpResults()Landroid/net/DhcpResults; PLandroid/net/dhcp/DhcpPacket;->toString()Ljava/lang/String; PLandroid/net/dhcp/DhcpRequestPacket;-><init>(ISLjava/net/Inet4Address;[BZ)V PLandroid/net/dhcp/DhcpRequestPacket;->buildPacket(ISS)Ljava/nio/ByteBuffer; PLandroid/net/dhcp/DhcpRequestPacket;->finishPacket(Ljava/nio/ByteBuffer;)V PLandroid/net/dhcp/DhcpRequestPacket;->toString()Ljava/lang/String; -PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->$m$0()V PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->$m$1()V -PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V -PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->run()V -PLandroid/net/ip/-$Lambda$Ew7nO2XMmp8bwulVlFTiHphyunQ;-><init>(Ljava/lang/Object;)V +PLandroid/net/ip/-$Lambda$Ew7nO2XMmp8bwulVlFTiHphyunQ$2;-><init>(Ljava/lang/Object;)V PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;-><init>(Landroid/net/ip/ConnectivityPacketTracker;I[BI)V -PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->addLogEntry(Ljava/lang/String;)V PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->createSocket()Ljava/io/FileDescriptor; -PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->handlePacket([BI)V -PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->lambda$-android_net_ip_ConnectivityPacketTracker$PacketListener_4824(Ljava/lang/String;)V -PLandroid/net/ip/ConnectivityPacketTracker;->-get0(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/os/Handler; -PLandroid/net/ip/ConnectivityPacketTracker;->-get1(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/util/LocalLog; PLandroid/net/ip/ConnectivityPacketTracker;-><init>(Ljava/net/NetworkInterface;Landroid/util/LocalLog;)V PLandroid/net/ip/ConnectivityPacketTracker;->start()V PLandroid/net/ip/IpManager$1;-><init>(Landroid/net/ip/IpManager;)V @@ -3080,13 +6340,13 @@ PLandroid/net/ip/IpManager$1;->update()V PLandroid/net/ip/IpManager$2;-><init>(Landroid/net/ip/IpManager;Ljava/lang/String;Lcom/android/server/net/NetlinkTracker$Callback;)V PLandroid/net/ip/IpManager$2;->interfaceAdded(Ljava/lang/String;)V PLandroid/net/ip/IpManager$2;->interfaceRemoved(Ljava/lang/String;)V -PLandroid/net/ip/IpManager$2;->lambda$-android_net_ip_IpManager$2_18952(Ljava/lang/String;)V +PLandroid/net/ip/IpManager$2;->lambda$-android_net_ip_IpManager$2_26299(Ljava/lang/String;)V PLandroid/net/ip/IpManager$2;->logMsg(Ljava/lang/String;)V PLandroid/net/ip/IpManager$3;-><init>(Landroid/net/ip/IpManager;)V PLandroid/net/ip/IpManager$Callback;-><init>()V +PLandroid/net/ip/IpManager$InitialConfiguration;->copy(Landroid/net/ip/IpManager$InitialConfiguration;)Landroid/net/ip/IpManager$InitialConfiguration; PLandroid/net/ip/IpManager$LoggingCallbackWrapper;-><init>(Landroid/net/ip/IpManager;Landroid/net/ip/IpManager$Callback;)V PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->installPacketFilter([B)V -PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->log(Ljava/lang/String;)V PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onLinkPropertiesChange(Landroid/net/LinkProperties;)V PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onNewDhcpResults(Landroid/net/DhcpResults;)V PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onPostDhcpAction()V @@ -3104,12 +6364,12 @@ PLandroid/net/ip/IpManager$ProvisioningConfiguration$Builder;->withApfCapabiliti PLandroid/net/ip/IpManager$ProvisioningConfiguration$Builder;->withPreDhcpAction()Landroid/net/ip/IpManager$ProvisioningConfiguration$Builder; PLandroid/net/ip/IpManager$ProvisioningConfiguration;-><init>()V PLandroid/net/ip/IpManager$ProvisioningConfiguration;-><init>(Landroid/net/ip/IpManager$ProvisioningConfiguration;)V +PLandroid/net/ip/IpManager$ProvisioningConfiguration;->isValid()Z PLandroid/net/ip/IpManager$ProvisioningConfiguration;->toString()Ljava/lang/String; PLandroid/net/ip/IpManager$RunningState;-><init>(Landroid/net/ip/IpManager;)V PLandroid/net/ip/IpManager$RunningState;->createPacketTracker()Landroid/net/ip/ConnectivityPacketTracker; PLandroid/net/ip/IpManager$RunningState;->ensureDhcpAction()V PLandroid/net/ip/IpManager$RunningState;->enter()V -PLandroid/net/ip/IpManager$RunningState;->processMessage(Landroid/os/Message;)Z PLandroid/net/ip/IpManager$RunningState;->stopDhcpAction()V PLandroid/net/ip/IpManager$StartedState;-><init>(Landroid/net/ip/IpManager;)V PLandroid/net/ip/IpManager$StartedState;->enter()V @@ -3120,22 +6380,23 @@ PLandroid/net/ip/IpManager$StoppedState;->processMessage(Landroid/os/Message;)Z PLandroid/net/ip/IpManager$StoppingState;-><init>(Landroid/net/ip/IpManager;)V PLandroid/net/ip/IpManager;->-get0(Landroid/net/ip/IpManager;)Landroid/net/apf/ApfFilter; PLandroid/net/ip/IpManager;->-get1(Landroid/net/ip/IpManager;)Ljava/lang/String; -PLandroid/net/ip/IpManager;->-get10(Landroid/net/ip/IpManager;)Landroid/net/ip/IpManager$MessageHandlingLogger; -PLandroid/net/ip/IpManager;->-get11(Landroid/net/ip/IpManager;)Z -PLandroid/net/ip/IpManager;->-get12(Landroid/net/ip/IpManager;)Ljava/net/NetworkInterface; -PLandroid/net/ip/IpManager;->-get13(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage; -PLandroid/net/ip/IpManager;->-get14(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State; -PLandroid/net/ip/IpManager;->-get15(Landroid/net/ip/IpManager;)J -PLandroid/net/ip/IpManager;->-get16(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State; -PLandroid/net/ip/IpManager;->-get19(Landroid/net/ip/IpManager;)Ljava/lang/String; +PLandroid/net/ip/IpManager;->-get10(Landroid/net/ip/IpManager;)Landroid/net/util/SharedLog; +PLandroid/net/ip/IpManager;->-get11(Landroid/net/ip/IpManager;)Landroid/net/ip/IpManager$MessageHandlingLogger; +PLandroid/net/ip/IpManager;->-get12(Landroid/net/ip/IpManager;)Z +PLandroid/net/ip/IpManager;->-get13(Landroid/net/ip/IpManager;)Ljava/net/NetworkInterface; +PLandroid/net/ip/IpManager;->-get14(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/ip/IpManager;->-get15(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State; +PLandroid/net/ip/IpManager;->-get16(Landroid/net/ip/IpManager;)J +PLandroid/net/ip/IpManager;->-get17(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State; PLandroid/net/ip/IpManager;->-get2(Landroid/net/ip/IpManager;)Landroid/net/ip/IpManager$ProvisioningConfiguration; +PLandroid/net/ip/IpManager;->-get20(Landroid/net/ip/IpManager;)Ljava/lang/String; PLandroid/net/ip/IpManager;->-get3(Landroid/net/ip/IpManager;)Landroid/util/LocalLog; -PLandroid/net/ip/IpManager;->-get4(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage; -PLandroid/net/ip/IpManager;->-get5(Landroid/net/ip/IpManager;)Landroid/net/dhcp/DhcpClient; -PLandroid/net/ip/IpManager;->-get6(Landroid/net/ip/IpManager;)Ljava/lang/String; -PLandroid/net/ip/IpManager;->-get7(Landroid/net/ip/IpManager;)Landroid/net/ip/IpReachabilityMonitor; -PLandroid/net/ip/IpManager;->-get8(Landroid/net/ip/IpManager;)Landroid/net/LinkProperties; -PLandroid/net/ip/IpManager;->-get9(Landroid/net/ip/IpManager;)Landroid/util/LocalLog; +PLandroid/net/ip/IpManager;->-get4(Landroid/net/ip/IpManager;)Landroid/content/Context; +PLandroid/net/ip/IpManager;->-get5(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/ip/IpManager;->-get6(Landroid/net/ip/IpManager;)Landroid/net/dhcp/DhcpClient; +PLandroid/net/ip/IpManager;->-get7(Landroid/net/ip/IpManager;)Ljava/lang/String; +PLandroid/net/ip/IpManager;->-get8(Landroid/net/ip/IpManager;)Landroid/net/ip/IpReachabilityMonitor; +PLandroid/net/ip/IpManager;->-get9(Landroid/net/ip/IpManager;)Landroid/net/LinkProperties; PLandroid/net/ip/IpManager;->-getandroid-net-LinkProperties$ProvisioningChangeSwitchesValues()[I PLandroid/net/ip/IpManager;->-set0(Landroid/net/ip/IpManager;Landroid/net/apf/ApfFilter;)Landroid/net/apf/ApfFilter; PLandroid/net/ip/IpManager;->-set1(Landroid/net/ip/IpManager;Landroid/net/ip/IpManager$ProvisioningConfiguration;)Landroid/net/ip/IpManager$ProvisioningConfiguration; @@ -3143,36 +6404,33 @@ PLandroid/net/ip/IpManager;->-set3(Landroid/net/ip/IpManager;Landroid/net/ProxyI PLandroid/net/ip/IpManager;->-set5(Landroid/net/ip/IpManager;Z)Z PLandroid/net/ip/IpManager;->-set6(Landroid/net/ip/IpManager;J)J PLandroid/net/ip/IpManager;->-set7(Landroid/net/ip/IpManager;Ljava/lang/String;)Ljava/lang/String; -PLandroid/net/ip/IpManager;->-wrap0(Landroid/net/ip/IpManager;Z)Z -PLandroid/net/ip/IpManager;->-wrap1(Landroid/net/ip/IpManager;Landroid/net/LinkAddress;)Z -PLandroid/net/ip/IpManager;->-wrap13(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager;->-wrap1(Landroid/net/ip/IpManager;Z)Z +PLandroid/net/ip/IpManager;->-wrap10(Landroid/net/ip/IpManager;Landroid/net/DhcpResults;)V PLandroid/net/ip/IpManager;->-wrap14(Landroid/net/ip/IpManager;)V -PLandroid/net/ip/IpManager;->-wrap2(Landroid/net/ip/IpManager;)Z +PLandroid/net/ip/IpManager;->-wrap15(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager;->-wrap2(Landroid/net/ip/IpManager;Landroid/net/LinkAddress;)Z PLandroid/net/ip/IpManager;->-wrap3(Landroid/net/ip/IpManager;)Z PLandroid/net/ip/IpManager;->-wrap4(Landroid/net/ip/IpManager;)Z -PLandroid/net/ip/IpManager;->-wrap9(Landroid/net/ip/IpManager;Landroid/net/DhcpResults;)V +PLandroid/net/ip/IpManager;->-wrap5(Landroid/net/ip/IpManager;)Z PLandroid/net/ip/IpManager;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;)V -PLandroid/net/ip/IpManager;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;Landroid/os/INetworkManagementService;)V -PLandroid/net/ip/IpManager;->addAllReachableDnsServers(Landroid/net/LinkProperties;Ljava/lang/Iterable;)V -PLandroid/net/ip/IpManager;->assembleLinkProperties()Landroid/net/LinkProperties; +PLandroid/net/ip/IpManager;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;Landroid/os/INetworkManagementService;Landroid/net/INetd;)V PLandroid/net/ip/IpManager;->buildProvisioningConfiguration()Landroid/net/ip/IpManager$ProvisioningConfiguration$Builder; PLandroid/net/ip/IpManager;->compareProvisioning(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)Landroid/net/LinkProperties$ProvisioningChange; PLandroid/net/ip/IpManager;->completedPreDhcpAction()V PLandroid/net/ip/IpManager;->configureAndStartStateMachine()V PLandroid/net/ip/IpManager;->confirmConfiguration()V PLandroid/net/ip/IpManager;->dispatchCallback(Landroid/net/LinkProperties$ProvisioningChange;Landroid/net/LinkProperties;)V -PLandroid/net/ip/IpManager;->getLogRecString(Landroid/os/Message;)Ljava/lang/String; +PLandroid/net/ip/IpManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLandroid/net/ip/IpManager;->getNetworkInterface()V -PLandroid/net/ip/IpManager;->getWhatToString(I)Ljava/lang/String; PLandroid/net/ip/IpManager;->handleIPv4Success(Landroid/net/DhcpResults;)V PLandroid/net/ip/IpManager;->handleLinkPropertiesUpdate(Z)Z -PLandroid/net/ip/IpManager;->isProvisioned(Landroid/net/LinkProperties;)Z -PLandroid/net/ip/IpManager;->linkPropertiesUnchanged(Landroid/net/LinkProperties;)Z +PLandroid/net/ip/IpManager;->isProvisioned(Landroid/net/LinkProperties;Landroid/net/ip/IpManager$InitialConfiguration;)Z PLandroid/net/ip/IpManager;->recordLogRec(Landroid/os/Message;)Z PLandroid/net/ip/IpManager;->recordMetric(I)V PLandroid/net/ip/IpManager;->resetLinkProperties()V PLandroid/net/ip/IpManager;->setHttpProxy(Landroid/net/ProxyInfo;)V PLandroid/net/ip/IpManager;->setIPv4Address(Landroid/net/LinkAddress;)Z +PLandroid/net/ip/IpManager;->setIPv6AddrGenModeIfSupported()V PLandroid/net/ip/IpManager;->setLinkProperties(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$ProvisioningChange; PLandroid/net/ip/IpManager;->setMulticastFilter(Z)V PLandroid/net/ip/IpManager;->setTcpBufferSizes(Ljava/lang/String;)V @@ -3186,59 +6444,14 @@ PLandroid/net/ip/IpManager;->stopAllIP()V PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;-><init>(Landroid/net/ip/IpReachabilityMonitor;)V PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;-><init>(Landroid/net/ip/IpReachabilityMonitor;Landroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;)V PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->clearNetlinkSocket()V -PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->evaluateRtNetlinkNeighborMessage(Landroid/net/netlink/RtNetlinkNeighborMessage;J)V -PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->parseNetlinkMessageBuffer(Ljava/nio/ByteBuffer;J)V -PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->recvKernelReply()Ljava/nio/ByteBuffer; -PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->run()V PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->setupNetlinkSocket()V -PLandroid/net/ip/IpReachabilityMonitor;->-get0(Landroid/net/ip/IpReachabilityMonitor;)I -PLandroid/net/ip/IpReachabilityMonitor;->-get1(Landroid/net/ip/IpReachabilityMonitor;)Ljava/util/Map; -PLandroid/net/ip/IpReachabilityMonitor;->-get2(Landroid/net/ip/IpReachabilityMonitor;)Ljava/lang/Object; -PLandroid/net/ip/IpReachabilityMonitor;->-get3(Landroid/net/ip/IpReachabilityMonitor;)Z PLandroid/net/ip/IpReachabilityMonitor;->-set0(Landroid/net/ip/IpReachabilityMonitor;Z)Z -PLandroid/net/ip/IpReachabilityMonitor;->-wrap0(Landroid/net/ip/IpReachabilityMonitor;Ljava/net/InetAddress;)Z -PLandroid/net/ip/IpReachabilityMonitor;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpReachabilityMonitor$Callback;Landroid/net/util/MultinetworkPolicyTracker;)V +PLandroid/net/ip/IpReachabilityMonitor;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/util/SharedLog;Landroid/net/ip/IpReachabilityMonitor$Callback;Landroid/net/util/MultinetworkPolicyTracker;)V PLandroid/net/ip/IpReachabilityMonitor;->getNeighborStateLocked(Ljava/net/InetAddress;)S -PLandroid/net/ip/IpReachabilityMonitor;->isOnLink(Ljava/util/List;Ljava/net/InetAddress;)Z -PLandroid/net/ip/IpReachabilityMonitor;->isWatching(Ljava/net/InetAddress;)Z PLandroid/net/ip/IpReachabilityMonitor;->probeAll()V -PLandroid/net/ip/IpReachabilityMonitor;->updateLinkProperties(Landroid/net/LinkProperties;)V PLandroid/net/metrics/INetdEventListener$Stub;-><init>()V -PLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z -PLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(I)I -PLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(S)I -PLandroid/net/netlink/NetlinkConstants;->hexify([B)Ljava/lang/String; -PLandroid/net/netlink/NetlinkConstants;->stringForNlMsgType(S)Ljava/lang/String; -PLandroid/net/netlink/NetlinkMessage;-><init>(Landroid/net/netlink/StructNlMsgHdr;)V -PLandroid/net/netlink/NetlinkMessage;->getHeader()Landroid/net/netlink/StructNlMsgHdr; -PLandroid/net/netlink/NetlinkMessage;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/NetlinkMessage; PLandroid/net/netlink/NetlinkSocket;-><init>(I)V PLandroid/net/netlink/NetlinkSocket;->bind(Landroid/system/NetlinkSocketAddress;)V -PLandroid/net/netlink/NetlinkSocket;->checkTimeout(J)V -PLandroid/net/netlink/NetlinkSocket;->recvMessage(IJ)Ljava/nio/ByteBuffer; -PLandroid/net/netlink/NetlinkSocket;->recvMessage(J)Ljava/nio/ByteBuffer; -PLandroid/net/netlink/RtNetlinkNeighborMessage;-><init>(Landroid/net/netlink/StructNlMsgHdr;)V -PLandroid/net/netlink/RtNetlinkNeighborMessage;->findNextAttrOfType(SLjava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr; -PLandroid/net/netlink/RtNetlinkNeighborMessage;->getDestination()Ljava/net/InetAddress; -PLandroid/net/netlink/RtNetlinkNeighborMessage;->getLinkLayerAddress()[B -PLandroid/net/netlink/RtNetlinkNeighborMessage;->getNdHeader()Landroid/net/netlink/StructNdMsg; -PLandroid/net/netlink/RtNetlinkNeighborMessage;->parse(Landroid/net/netlink/StructNlMsgHdr;Ljava/nio/ByteBuffer;)Landroid/net/netlink/RtNetlinkNeighborMessage; -PLandroid/net/netlink/StructNdMsg;-><init>()V -PLandroid/net/netlink/StructNdMsg;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z -PLandroid/net/netlink/StructNdMsg;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdMsg; -PLandroid/net/netlink/StructNdMsg;->stringForNudState(S)Ljava/lang/String; -PLandroid/net/netlink/StructNdaCacheInfo;-><init>()V -PLandroid/net/netlink/StructNdaCacheInfo;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z -PLandroid/net/netlink/StructNdaCacheInfo;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdaCacheInfo; -PLandroid/net/netlink/StructNlAttr;-><init>()V -PLandroid/net/netlink/StructNlAttr;->getAlignedLength()I -PLandroid/net/netlink/StructNlAttr;->getValueAsByteBuffer()Ljava/nio/ByteBuffer; -PLandroid/net/netlink/StructNlAttr;->getValueAsInetAddress()Ljava/net/InetAddress; -PLandroid/net/netlink/StructNlAttr;->getValueAsInt(I)I -PLandroid/net/netlink/StructNlAttr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr; -PLandroid/net/netlink/StructNlMsgHdr;-><init>()V -PLandroid/net/netlink/StructNlMsgHdr;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z -PLandroid/net/netlink/StructNlMsgHdr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlMsgHdr; PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;->$m$0()V PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;->run()V @@ -3246,27 +6459,11 @@ PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;->$m$0()V PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;-><init>(Ljava/lang/Object;)V PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;->run()V PLandroid/net/util/BlockingSocketReader;-><init>(I)V -PLandroid/net/util/BlockingSocketReader;->isRunning()Z PLandroid/net/util/BlockingSocketReader;->lambda$-android_net_util_BlockingSocketReader_2194()V -PLandroid/net/util/BlockingSocketReader;->mainLoop()V PLandroid/net/util/BlockingSocketReader;->start()Z -PLandroid/net/util/ConnectivityPacketSummary;-><init>([B[BI)V -PLandroid/net/util/ConnectivityPacketSummary;->getIPv4AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String; -PLandroid/net/util/ConnectivityPacketSummary;->getIPv6AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String; -PLandroid/net/util/ConnectivityPacketSummary;->getIpAddressString(Ljava/nio/ByteBuffer;I)Ljava/lang/String; -PLandroid/net/util/ConnectivityPacketSummary;->parseARP(Ljava/util/StringJoiner;)V PLandroid/net/util/ConnectivityPacketSummary;->parseDHCPv4(Ljava/util/StringJoiner;)V -PLandroid/net/util/ConnectivityPacketSummary;->parseEther(Ljava/util/StringJoiner;)V -PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6(Ljava/util/StringJoiner;)V -PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborDiscoveryOptions(Ljava/util/StringJoiner;)V -PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborMessage(Ljava/util/StringJoiner;)V PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6RouterAdvertisement(Ljava/util/StringJoiner;)V PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6RouterSolicitation(Ljava/util/StringJoiner;)V -PLandroid/net/util/ConnectivityPacketSummary;->parseIPv4(Ljava/util/StringJoiner;)V -PLandroid/net/util/ConnectivityPacketSummary;->parseIPv6(Ljava/util/StringJoiner;)V -PLandroid/net/util/ConnectivityPacketSummary;->parseUDP(Ljava/util/StringJoiner;)V -PLandroid/net/util/ConnectivityPacketSummary;->summarize([B[BI)Ljava/lang/String; -PLandroid/net/util/ConnectivityPacketSummary;->toString()Ljava/lang/String; PLandroid/net/util/MultinetworkPolicyTracker$1;-><init>(Landroid/net/util/MultinetworkPolicyTracker;)V PLandroid/net/util/MultinetworkPolicyTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLandroid/net/util/MultinetworkPolicyTracker$SettingObserver;-><init>(Landroid/net/util/MultinetworkPolicyTracker;)V @@ -3280,20 +6477,20 @@ PLandroid/net/util/MultinetworkPolicyTracker;->reevaluate()V PLandroid/net/util/MultinetworkPolicyTracker;->start()V PLandroid/net/util/MultinetworkPolicyTracker;->updateAvoidBadWifi()Z PLandroid/net/util/MultinetworkPolicyTracker;->updateMeteredMultipathPreference()V +PLandroid/net/util/NetdService;->get()Landroid/net/INetd; +PLandroid/net/util/NetdService;->get(J)Landroid/net/INetd; +PLandroid/net/util/NetdService;->getInstance()Landroid/net/INetd; PLandroid/net/util/NetworkConstants;->asByte(I)B PLandroid/net/util/NetworkConstants;->asString(I)Ljava/lang/String; -PLandroid/net/util/NetworkConstants;->asUint(B)I -PLandroid/net/util/NetworkConstants;->asUint(S)I +PLandroid/net/util/PrefixUtils;->addNonForwardablePrefixes(Ljava/util/Set;)V +PLandroid/net/util/PrefixUtils;->pfx(Ljava/lang/String;)Landroid/net/IpPrefix; PLandroid/net/util/SharedLog$Category;-><init>(Ljava/lang/String;I)V PLandroid/net/util/SharedLog;-><init>(ILjava/lang/String;)V PLandroid/net/util/SharedLog;-><init>(Landroid/util/LocalLog;Ljava/lang/String;Ljava/lang/String;)V PLandroid/net/util/SharedLog;-><init>(Ljava/lang/String;)V +PLandroid/net/util/SharedLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLandroid/net/util/SharedLog;->forSubComponent(Ljava/lang/String;)Landroid/net/util/SharedLog; -PLandroid/net/util/SharedLog;->isRootLogInstance()Z -PLandroid/net/util/SharedLog;->log(Ljava/lang/String;)V -PLandroid/net/util/SharedLog;->logLine(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String; PLandroid/net/util/SharedLog;->mark(Ljava/lang/String;)V -PLandroid/net/util/SharedLog;->record(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String; PLandroid/net/util/Stopwatch;-><init>()V PLandroid/net/util/Stopwatch;->isRunning()Z PLandroid/net/util/Stopwatch;->isStarted()Z @@ -3306,43 +6503,29 @@ PLandroid/net/wifi/IClientInterface$Stub$Proxy;->asBinder()Landroid/os/IBinder; PLandroid/net/wifi/IClientInterface$Stub$Proxy;->enableSupplicant()Z PLandroid/net/wifi/IClientInterface$Stub$Proxy;->getInterfaceName()Ljava/lang/String; PLandroid/net/wifi/IClientInterface$Stub$Proxy;->getWifiScannerImpl()Landroid/net/wifi/IWifiScannerImpl; -PLandroid/net/wifi/IClientInterface$Stub$Proxy;->signalPoll()[I PLandroid/net/wifi/IClientInterface$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IClientInterface; -PLandroid/net/wifi/IInterfaceEventCallback$Stub;-><init>()V -PLandroid/net/wifi/IInterfaceEventCallback$Stub;->asBinder()Landroid/os/IBinder; PLandroid/net/wifi/IPnoScanEvent$Stub;-><init>()V PLandroid/net/wifi/IPnoScanEvent$Stub;->asBinder()Landroid/os/IBinder; PLandroid/net/wifi/IScanEvent$Stub;-><init>()V PLandroid/net/wifi/IScanEvent$Stub;->asBinder()Landroid/os/IBinder; -PLandroid/net/wifi/IScanEvent$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;-><init>(Landroid/os/IBinder;)V PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->abortScan()V PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->asBinder()Landroid/os/IBinder; -PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->getScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult; -PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->scan(Lcom/android/server/wifi/wificond/SingleScanSettings;)Z PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->subscribePnoScanEvents(Landroid/net/wifi/IPnoScanEvent;)V PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->subscribeScanEvents(Landroid/net/wifi/IScanEvent;)V PLandroid/net/wifi/IWifiScannerImpl$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScannerImpl; PLandroid/net/wifi/IWificond$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -PLandroid/net/wifi/IWificond$Stub$Proxy;->GetClientInterfaces()Ljava/util/List; -PLandroid/net/wifi/IWificond$Stub$Proxy;->RegisterCallback(Landroid/net/wifi/IInterfaceEventCallback;)V PLandroid/net/wifi/IWificond$Stub$Proxy;->createClientInterface()Landroid/net/wifi/IClientInterface; PLandroid/net/wifi/IWificond$Stub$Proxy;->tearDownInterfaces()V PLandroid/net/wifi/IWificond$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWificond; PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$0(Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$1(Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$2(Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;->$m$0(Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;-><init>(JLjava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;->$m$0(Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;-><init>(BZLjava/lang/Object;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->$m$0(Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;-><init>(ZIJ)V -PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$0(Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$1(Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$2(Landroid/net/INetworkManagementEventObserver;)V @@ -3355,6 +6538,7 @@ PLcom/android/server/-$Lambda$AZbCJpvy__SzB8YDjhldiwCtqD8;->get(Lcom/android/ser PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;->$m$0(Ljava/lang/Object;)Ljava/lang/Object; PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;-><init>()V PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;->apply(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->$m$1()V PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;->$m$0()V PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;->run()V @@ -3372,39 +6556,21 @@ PLcom/android/server/-$Lambda$o3e2BPeEiY4LSvdQI9l_B7RsPtQ;-><init>(Ljava/lang/Ob PLcom/android/server/-$Lambda$qXtDhnbBL0MhXoSy7vXxLi-Juu4;-><init>(Ljava/lang/Object;)V PLcom/android/server/AlarmManagerService$1;-><init>(Lcom/android/server/AlarmManagerService;)V PLcom/android/server/AlarmManagerService$1;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I -PLcom/android/server/AlarmManagerService$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I PLcom/android/server/AlarmManagerService$2;-><init>(Lcom/android/server/AlarmManagerService;)V -PLcom/android/server/AlarmManagerService$2;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo; -PLcom/android/server/AlarmManagerService$2;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V PLcom/android/server/AlarmManagerService$2;->setTime(J)Z -PLcom/android/server/AlarmManagerService$Alarm;-><init>(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V -PLcom/android/server/AlarmManagerService$Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String; PLcom/android/server/AlarmManagerService$AlarmHandler;-><init>(Lcom/android/server/AlarmManagerService;)V -PLcom/android/server/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/AlarmManagerService$AlarmThread;-><init>(Lcom/android/server/AlarmManagerService;)V -PLcom/android/server/AlarmManagerService$AlarmThread;->run()V -PLcom/android/server/AlarmManagerService$Batch;->hasWakeups()Z PLcom/android/server/AlarmManagerService$BatchTimeOrder;-><init>()V PLcom/android/server/AlarmManagerService$BroadcastStats;-><init>(ILjava/lang/String;)V PLcom/android/server/AlarmManagerService$ClockReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V -PLcom/android/server/AlarmManagerService$ClockReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleDateChangedEvent()V -PLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V PLcom/android/server/AlarmManagerService$Constants;-><init>(Lcom/android/server/AlarmManagerService;Landroid/os/Handler;)V PLcom/android/server/AlarmManagerService$Constants;->start(Landroid/content/ContentResolver;)V PLcom/android/server/AlarmManagerService$Constants;->updateAllowWhileIdleMinTimeLocked()V PLcom/android/server/AlarmManagerService$Constants;->updateAllowWhileIdleWhitelistDurationLocked()V PLcom/android/server/AlarmManagerService$Constants;->updateConstants()V PLcom/android/server/AlarmManagerService$DeliveryTracker;-><init>(Lcom/android/server/AlarmManagerService;)V -PLcom/android/server/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V -PLcom/android/server/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V -PLcom/android/server/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V -PLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/AlarmManagerService$InFlight; -PLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/AlarmManagerService$InFlight; -PLcom/android/server/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/AlarmManagerService$InFlight;)V -PLcom/android/server/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/AlarmManagerService$InFlight;)V PLcom/android/server/AlarmManagerService$FilterStats;-><init>(Lcom/android/server/AlarmManagerService$BroadcastStats;Ljava/lang/String;)V -PLcom/android/server/AlarmManagerService$InFlight;-><init>(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Landroid/os/WorkSource;ILjava/lang/String;ILjava/lang/String;J)V PLcom/android/server/AlarmManagerService$IncreasingTimeOrder;-><init>()V PLcom/android/server/AlarmManagerService$InteractiveStateReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V PLcom/android/server/AlarmManagerService$LocalService;-><init>(Lcom/android/server/AlarmManagerService;)V @@ -3413,34 +6579,21 @@ PLcom/android/server/AlarmManagerService$PriorityClass;-><init>(Lcom/android/ser PLcom/android/server/AlarmManagerService$UidObserver;-><init>(Lcom/android/server/AlarmManagerService;)V PLcom/android/server/AlarmManagerService$UidObserver;->onUidIdle(IZ)V PLcom/android/server/AlarmManagerService$UninstallReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V -PLcom/android/server/AlarmManagerService;->-get0(Lcom/android/server/AlarmManagerService;)Landroid/content/Intent; -PLcom/android/server/AlarmManagerService;->-set0(Lcom/android/server/AlarmManagerService;J)J -PLcom/android/server/AlarmManagerService;->-wrap0(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats; +PLcom/android/server/AlarmManagerService;->-get1(Lcom/android/server/AlarmManagerService;)I +PLcom/android/server/AlarmManagerService;->-get2(Lcom/android/server/AlarmManagerService;)I +PLcom/android/server/AlarmManagerService;->-set1(Lcom/android/server/AlarmManagerService;I)I +PLcom/android/server/AlarmManagerService;->-set2(Lcom/android/server/AlarmManagerService;I)I PLcom/android/server/AlarmManagerService;->-wrap1(Lcom/android/server/AlarmManagerService;ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats; PLcom/android/server/AlarmManagerService;->-wrap2(Lcom/android/server/AlarmManagerService;JJ)I -PLcom/android/server/AlarmManagerService;->-wrap4(Lcom/android/server/AlarmManagerService;J)I -PLcom/android/server/AlarmManagerService;->-wrap5(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V -PLcom/android/server/AlarmManagerService;->-wrap7(Lcom/android/server/AlarmManagerService;)V PLcom/android/server/AlarmManagerService;-><init>(Landroid/content/Context;)V -PLcom/android/server/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V PLcom/android/server/AlarmManagerService;->checkAllowNonWakeupDelayLocked(J)Z -PLcom/android/server/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V -PLcom/android/server/AlarmManagerService;->findFirstWakeupBatchLocked()Lcom/android/server/AlarmManagerService$Batch; PLcom/android/server/AlarmManagerService;->getNextAlarmClockImpl(I)Landroid/app/AlarmManager$AlarmClockInfo; -PLcom/android/server/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats; -PLcom/android/server/AlarmManagerService;->getStatsLocked(Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats; -PLcom/android/server/AlarmManagerService;->maxTriggerTime(JJJ)J PLcom/android/server/AlarmManagerService;->onBootPhase(I)V PLcom/android/server/AlarmManagerService;->onStart()V PLcom/android/server/AlarmManagerService;->rebatchAllAlarms()V PLcom/android/server/AlarmManagerService;->removeImpl(Landroid/app/PendingIntent;)V PLcom/android/server/AlarmManagerService;->setDeviceIdleUserWhitelistImpl([I)V -PLcom/android/server/AlarmManagerService;->setImplLocked(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;IZLandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V -PLcom/android/server/AlarmManagerService;->setLocked(IJ)V PLcom/android/server/AlarmManagerService;->setTimeZoneImpl(Ljava/lang/String;)V -PLcom/android/server/AlarmManagerService;->setWakelockWorkSource(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;IZ)V -PLcom/android/server/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;JJ)Z -PLcom/android/server/AlarmManagerService;->updateNextAlarmClockLocked()V PLcom/android/server/AnimationThread;-><init>()V PLcom/android/server/AnimationThread;->ensureThreadLocked()V PLcom/android/server/AnimationThread;->get()Lcom/android/server/AnimationThread; @@ -3459,80 +6612,57 @@ PLcom/android/server/AppOpsService$1$1;->doInBackground([Ljava/lang/Void;)Ljava/ PLcom/android/server/AppOpsService$1;->run()V PLcom/android/server/AppOpsService$2;-><init>(Lcom/android/server/AppOpsService;)V PLcom/android/server/AppOpsService$3;-><init>(Lcom/android/server/AppOpsService;)V -PLcom/android/server/AppOpsService$3;->getMountMode(ILjava/lang/String;)I -PLcom/android/server/AppOpsService$3;->hasExternalStorage(ILjava/lang/String;)Z +PLcom/android/server/AppOpsService$Callback;->binderDied()V PLcom/android/server/AppOpsService$Callback;->unlinkToDeath()V PLcom/android/server/AppOpsService$ClientRestrictionState;-><init>(Lcom/android/server/AppOpsService;Landroid/os/IBinder;)V PLcom/android/server/AppOpsService$ClientRestrictionState;->destroy()V PLcom/android/server/AppOpsService$ClientRestrictionState;->isDefault()Z PLcom/android/server/AppOpsService$ClientRestrictionState;->setRestriction(IZ[Ljava/lang/String;I)Z PLcom/android/server/AppOpsService$ClientState;-><init>(Lcom/android/server/AppOpsService;Landroid/os/IBinder;)V +PLcom/android/server/AppOpsService$ClientState;->binderDied()V PLcom/android/server/AppOpsService$UidState;->clear()V PLcom/android/server/AppOpsService$UidState;->isDefault()Z -PLcom/android/server/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I -PLcom/android/server/AppOpsService;->checkOperation(IILjava/lang/String;)I -PLcom/android/server/AppOpsService;->checkRestrictionLocked(IIILjava/lang/String;)I PLcom/android/server/AppOpsService;->checkSystemUid(Ljava/lang/String;)V -PLcom/android/server/AppOpsService;->collectOps(Lcom/android/server/AppOpsService$Ops;[I)Ljava/util/ArrayList; -PLcom/android/server/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V -PLcom/android/server/AppOpsService;->getOpLocked(IILjava/lang/String;Z)Lcom/android/server/AppOpsService$Op; PLcom/android/server/AppOpsService;->getPackagesForUid(I)[Ljava/lang/String; PLcom/android/server/AppOpsService;->getToken(Landroid/os/IBinder;)Landroid/os/IBinder; -PLcom/android/server/AppOpsService;->isOperationActive(IILjava/lang/String;)Z -PLcom/android/server/AppOpsService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z -PLcom/android/server/AppOpsService;->notifyWatchersOfChange(I)V -PLcom/android/server/AppOpsService;->resolvePackageName(ILjava/lang/String;)Ljava/lang/String; PLcom/android/server/AppOpsService;->scheduleFastWriteLocked()V -PLcom/android/server/AppOpsService;->scheduleWriteLocked()V -PLcom/android/server/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V -PLcom/android/server/AppOpsService;->setUidMode(III)V -PLcom/android/server/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;I[Ljava/lang/String;)V -PLcom/android/server/AppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V -PLcom/android/server/AppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V -PLcom/android/server/AppOpsService;->systemReady()V -PLcom/android/server/AppOpsService;->verifyIncomingOp(I)V PLcom/android/server/AttributeCache$Entry;-><init>(Landroid/content/Context;Landroid/content/res/TypedArray;)V -PLcom/android/server/AttributeCache$Package;->-get0(Lcom/android/server/AttributeCache$Package;)Landroid/util/SparseArray; +PLcom/android/server/AttributeCache$Entry;->recycle()V PLcom/android/server/AttributeCache$Package;-><init>(Landroid/content/Context;)V PLcom/android/server/AttributeCache;-><init>(Landroid/content/Context;)V -PLcom/android/server/AttributeCache;->get(Ljava/lang/String;I[II)Lcom/android/server/AttributeCache$Entry; PLcom/android/server/AttributeCache;->init(Landroid/content/Context;)V -PLcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache; +PLcom/android/server/AttributeCache;->removePackage(Ljava/lang/String;)V PLcom/android/server/AttributeCache;->updateConfiguration(Landroid/content/res/Configuration;)V PLcom/android/server/BatteryService$2;-><init>(Lcom/android/server/BatteryService;Landroid/os/Handler;)V -PLcom/android/server/BatteryService$9;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V -PLcom/android/server/BatteryService$9;->run()V +PLcom/android/server/BatteryService$5;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V +PLcom/android/server/BatteryService$5;->run()V +PLcom/android/server/BatteryService$6;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V +PLcom/android/server/BatteryService$6;->run()V PLcom/android/server/BatteryService$BatteryListener;-><init>(Lcom/android/server/BatteryService;)V PLcom/android/server/BatteryService$BatteryListener;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BatteryListener;)V -PLcom/android/server/BatteryService$BatteryListener;->batteryPropertiesChanged(Landroid/os/BatteryProperties;)V PLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;)V PLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BinderService;)V +PLcom/android/server/BatteryService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/BatteryService$Led;-><init>(Lcom/android/server/BatteryService;Landroid/content/Context;Lcom/android/server/lights/LightsManager;)V -PLcom/android/server/BatteryService$Led;->updateLightsLocked()V PLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;)V PLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$LocalService;)V -PLcom/android/server/BatteryService$LocalService;->getBatteryLevel()I -PLcom/android/server/BatteryService$LocalService;->getBatteryLevelLow()Z -PLcom/android/server/BatteryService$LocalService;->getPlugType()I -PLcom/android/server/BatteryService$LocalService;->isPowered(I)Z +PLcom/android/server/BatteryService$Shell;-><init>(Lcom/android/server/BatteryService;)V +PLcom/android/server/BatteryService$Shell;->onCommand(Ljava/lang/String;)I +PLcom/android/server/BatteryService;->-get0()Ljava/lang/String; PLcom/android/server/BatteryService;->-get2(Lcom/android/server/BatteryService;)Z -PLcom/android/server/BatteryService;->-get3(Lcom/android/server/BatteryService;)Landroid/os/BatteryProperties; -PLcom/android/server/BatteryService;->-get6(Lcom/android/server/BatteryService;)Ljava/lang/Object; +PLcom/android/server/BatteryService;->-get4(Lcom/android/server/BatteryService;)Landroid/content/Context; PLcom/android/server/BatteryService;->-get7(Lcom/android/server/BatteryService;)I PLcom/android/server/BatteryService;->-get8(Lcom/android/server/BatteryService;)I -PLcom/android/server/BatteryService;->-wrap0(Lcom/android/server/BatteryService;I)Z -PLcom/android/server/BatteryService;->-wrap4(Lcom/android/server/BatteryService;Landroid/os/BatteryProperties;)V +PLcom/android/server/BatteryService;->-wrap1(Lcom/android/server/BatteryService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/BatteryService;-><init>(Landroid/content/Context;)V -PLcom/android/server/BatteryService;->getIconLocked(I)I -PLcom/android/server/BatteryService;->isPoweredLocked(I)Z +PLcom/android/server/BatteryService;->dumpInternal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/BatteryService;->onBootPhase(I)V +PLcom/android/server/BatteryService;->onShellCommand(Lcom/android/server/BatteryService$Shell;Ljava/lang/String;)I PLcom/android/server/BatteryService;->onStart()V -PLcom/android/server/BatteryService;->processValuesLocked(Z)V -PLcom/android/server/BatteryService;->sendIntentLocked()V -PLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z +PLcom/android/server/BatteryService;->parseOptions(Lcom/android/server/BatteryService$Shell;)I +PLcom/android/server/BatteryService;->processValuesFromShellLocked(Ljava/io/PrintWriter;I)V PLcom/android/server/BatteryService;->shutdownIfNoPowerLocked()V PLcom/android/server/BatteryService;->shutdownIfOverTempLocked()V -PLcom/android/server/BatteryService;->update(Landroid/os/BatteryProperties;)V PLcom/android/server/BatteryService;->updateBatteryWarningLevelLocked()V PLcom/android/server/BluetoothManagerService$1;-><init>(Lcom/android/server/BluetoothManagerService;)V PLcom/android/server/BluetoothManagerService$1;->onBluetoothStateChange(II)V @@ -3544,10 +6674,11 @@ PLcom/android/server/BluetoothManagerService$4;->onReceive(Landroid/content/Cont PLcom/android/server/BluetoothManagerService$5;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Handler;)V PLcom/android/server/BluetoothManagerService$ActiveLog;-><init>(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;ZJ)V PLcom/android/server/BluetoothManagerService$BluetoothHandler;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Looper;)V -PLcom/android/server/BluetoothManagerService$BluetoothHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;-><init>(Lcom/android/server/BluetoothManagerService;)V PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;-><init>(Lcom/android/server/BluetoothManagerService;Lcom/android/server/BluetoothManagerService$BluetoothServiceConnection;)V PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;-><init>(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;)V +PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;->binderDied()V PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->-wrap0(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;)Z PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->-wrap1(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;Landroid/bluetooth/IBluetoothProfileServiceConnection;)V PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/content/Intent;)V @@ -3589,8 +6720,7 @@ PLcom/android/server/BluetoothManagerService;->getBluetoothGatt()Landroid/blueto PLcom/android/server/BluetoothManagerService;->handleEnable(Z)V PLcom/android/server/BluetoothManagerService;->handleOnBootPhase()V PLcom/android/server/BluetoothManagerService;->handleOnUnlockUser(I)V -PLcom/android/server/BluetoothManagerService;->isAirplaneModeOn()Z -PLcom/android/server/BluetoothManagerService;->isBleScanAlwaysAvailable()Z +PLcom/android/server/BluetoothManagerService;->isBleAppPresent()Z PLcom/android/server/BluetoothManagerService;->isBluetoothDisallowed()Z PLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOn()Z PLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOnBluetooth()Z @@ -3606,6 +6736,8 @@ PLcom/android/server/BluetoothManagerService;->sendBluetoothServiceUpCallback()V PLcom/android/server/BluetoothManagerService;->sendBluetoothStateCallback(Z)V PLcom/android/server/BluetoothManagerService;->sendEnableMsg(ZLjava/lang/String;)V PLcom/android/server/BluetoothManagerService;->storeNameAndAddress(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/BluetoothManagerService;->unregisterStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V +PLcom/android/server/BluetoothManagerService;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I PLcom/android/server/BluetoothService;-><init>(Landroid/content/Context;)V PLcom/android/server/BluetoothService;->onBootPhase(I)V PLcom/android/server/BluetoothService;->onStart()V @@ -3621,7 +6753,6 @@ PLcom/android/server/CommonTimeManagementService$InterfaceScoreRule;-><init>(Lja PLcom/android/server/CommonTimeManagementService;-><init>(Landroid/content/Context;)V PLcom/android/server/CommonTimeManagementService;->systemRunning()V PLcom/android/server/ConnectivityService$1;-><init>(Lcom/android/server/ConnectivityService;)V -PLcom/android/server/ConnectivityService$1;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V PLcom/android/server/ConnectivityService$2;-><init>(Lcom/android/server/ConnectivityService;)V PLcom/android/server/ConnectivityService$2;->onMeteredIfacesChanged([Ljava/lang/String;)V PLcom/android/server/ConnectivityService$2;->onUidRulesChanged(II)V @@ -3630,25 +6761,16 @@ PLcom/android/server/ConnectivityService$3;->onReceive(Landroid/content/Context; PLcom/android/server/ConnectivityService$4;-><init>(Lcom/android/server/ConnectivityService;)V PLcom/android/server/ConnectivityService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/ConnectivityService$InternalHandler;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V -PLcom/android/server/ConnectivityService$InternalHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/ConnectivityService$LegacyTypeTracker;-><init>(Lcom/android/server/ConnectivityService;)V PLcom/android/server/ConnectivityService$LegacyTypeTracker;->add(ILcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService$LegacyTypeTracker;->addSupportedType(I)V -PLcom/android/server/ConnectivityService$LegacyTypeTracker;->getNetworkForType(I)Lcom/android/server/connectivity/NetworkAgentInfo; -PLcom/android/server/ConnectivityService$LegacyTypeTracker;->isTypeSupported(I)Z PLcom/android/server/ConnectivityService$LegacyTypeTracker;->maybeLogBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;IZ)V +PLcom/android/server/ConnectivityService$LegacyTypeTracker;->naiToString(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/lang/String; PLcom/android/server/ConnectivityService$NetworkFactoryInfo;-><init>(Ljava/lang/String;Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;)V -PLcom/android/server/ConnectivityService$NetworkRequestInfo;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;Landroid/net/NetworkRequest;Landroid/os/IBinder;)V PLcom/android/server/ConnectivityService$NetworkRequestInfo;->binderDied()V PLcom/android/server/ConnectivityService$NetworkRequestInfo;->enforceRequestCountLimit()V -PLcom/android/server/ConnectivityService$NetworkRequestInfo;->toString()Ljava/lang/String; PLcom/android/server/ConnectivityService$NetworkRequestInfo;->unlinkDeathRecipient()V PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V -PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleAsyncChannelMessage(Landroid/os/Message;)Z -PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentInfoMessage(Landroid/os/Message;)Z -PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentMessage(Landroid/os/Message;)V -PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkMonitorMessage(Landroid/os/Message;)Z PLcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;-><init>(Ljava/lang/String;I)V PLcom/android/server/ConnectivityService$SettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V PLcom/android/server/ConnectivityService$SettingsObserver;->observe(Landroid/net/Uri;I)V @@ -3656,11 +6778,9 @@ PLcom/android/server/ConnectivityService$UnneededFor;-><init>(Ljava/lang/String; PLcom/android/server/ConnectivityService$UnneededFor;->values()[Lcom/android/server/ConnectivityService$UnneededFor; PLcom/android/server/ConnectivityService$ValidationLog;-><init>(Landroid/net/Network;Ljava/lang/String;Landroid/util/LocalLog$ReadOnlyLocalLog;)V PLcom/android/server/ConnectivityService;->-get1(Lcom/android/server/ConnectivityService;)Landroid/content/Context; -PLcom/android/server/ConnectivityService;->-get4(Lcom/android/server/ConnectivityService;)Ljava/util/HashMap; PLcom/android/server/ConnectivityService;->-get5(Lcom/android/server/ConnectivityService;)Landroid/util/SparseArray; PLcom/android/server/ConnectivityService;->-get6(Lcom/android/server/ConnectivityService;)Lcom/android/server/connectivity/NetworkNotificationManager; PLcom/android/server/ConnectivityService;->-get8(Lcom/android/server/ConnectivityService;)Landroid/util/SparseIntArray; -PLcom/android/server/ConnectivityService;->-getcom-android-server-ConnectivityService$UnneededForSwitchesValues()[I PLcom/android/server/ConnectivityService;->-wrap0(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)Z PLcom/android/server/ConnectivityService;->-wrap10(Lcom/android/server/ConnectivityService;)V PLcom/android/server/ConnectivityService;->-wrap12(Lcom/android/server/ConnectivityService;Landroid/net/Network;)V @@ -3673,59 +6793,42 @@ PLcom/android/server/ConnectivityService;->-wrap20(Lcom/android/server/Connectiv PLcom/android/server/ConnectivityService;->-wrap25(Ljava/lang/String;)V PLcom/android/server/ConnectivityService;->-wrap29(Lcom/android/server/ConnectivityService;I)V PLcom/android/server/ConnectivityService;->-wrap31(Lcom/android/server/ConnectivityService;I)V -PLcom/android/server/ConnectivityService;->-wrap32(Lcom/android/server/ConnectivityService;IZJ)V PLcom/android/server/ConnectivityService;->-wrap33(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;I)V PLcom/android/server/ConnectivityService;->-wrap34(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService;->-wrap36(Lcom/android/server/ConnectivityService;ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V PLcom/android/server/ConnectivityService;->-wrap37(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V -PLcom/android/server/ConnectivityService;->-wrap38(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V -PLcom/android/server/ConnectivityService;->-wrap39(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V +PLcom/android/server/ConnectivityService;->-wrap38(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V PLcom/android/server/ConnectivityService;->-wrap4(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;)V -PLcom/android/server/ConnectivityService;->-wrap40(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;I)V PLcom/android/server/ConnectivityService;->-wrap7(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V PLcom/android/server/ConnectivityService;->-wrap8(Lcom/android/server/ConnectivityService;)V PLcom/android/server/ConnectivityService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;)V PLcom/android/server/ConnectivityService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/net/metrics/IpConnectivityLog;)V PLcom/android/server/ConnectivityService;->addValidationLogs(Landroid/util/LocalLog$ReadOnlyLocalLog;Landroid/net/Network;Ljava/lang/String;)V +PLcom/android/server/ConnectivityService;->argsContain([Ljava/lang/String;Ljava/lang/String;)Z PLcom/android/server/ConnectivityService;->avoidBadWifi()Z -PLcom/android/server/ConnectivityService;->callCallbackForRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;II)V PLcom/android/server/ConnectivityService;->canonicalizeProxyInfo(Landroid/net/ProxyInfo;)Landroid/net/ProxyInfo; PLcom/android/server/ConnectivityService;->createInternetRequestForTransport(ILandroid/net/NetworkRequest$Type;)Landroid/net/NetworkRequest; PLcom/android/server/ConnectivityService;->createMultinetworkPolicyTracker(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/net/util/MultinetworkPolicyTracker; PLcom/android/server/ConnectivityService;->createNetworkMonitor(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkRequest;)Lcom/android/server/connectivity/NetworkMonitor; PLcom/android/server/ConnectivityService;->createVpnInfo(Lcom/android/server/connectivity/Vpn;)Lcom/android/internal/net/VpnInfo; +PLcom/android/server/ConnectivityService;->dumpAvoidBadWifiSettings(Lcom/android/internal/util/IndentingPrintWriter;)V PLcom/android/server/ConnectivityService;->encodeBool(Z)I -PLcom/android/server/ConnectivityService;->enforceAccessPermission()V -PLcom/android/server/ConnectivityService;->enforceConnectivityInternalPermission()V PLcom/android/server/ConnectivityService;->enforceCrossUserPermission(I)V PLcom/android/server/ConnectivityService;->enforceInternetPermission()V -PLcom/android/server/ConnectivityService;->enforceTetherAccessPermission()V PLcom/android/server/ConnectivityService;->ensureNetworkRequestHasType(Landroid/net/NetworkRequest;)V PLcom/android/server/ConnectivityService;->ensureRequestableCapabilities(Landroid/net/NetworkCapabilities;)V PLcom/android/server/ConnectivityService;->ensureValidNetworkSpecifier(Landroid/net/NetworkCapabilities;)V PLcom/android/server/ConnectivityService;->flushVmDnsCache()V PLcom/android/server/ConnectivityService;->getActiveLinkProperties()Landroid/net/LinkProperties; -PLcom/android/server/ConnectivityService;->getActiveNetwork()Landroid/net/Network; -PLcom/android/server/ConnectivityService;->getActiveNetworkForUid(IZ)Landroid/net/Network; -PLcom/android/server/ConnectivityService;->getActiveNetworkForUidInternal(IZ)Landroid/net/Network; PLcom/android/server/ConnectivityService;->getAllNetworkInfo()[Landroid/net/NetworkInfo; PLcom/android/server/ConnectivityService;->getAllNetworkState()[Landroid/net/NetworkState; -PLcom/android/server/ConnectivityService;->getAllNetworks()[Landroid/net/Network; -PLcom/android/server/ConnectivityService;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo; PLcom/android/server/ConnectivityService;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities; PLcom/android/server/ConnectivityService;->getDefaultProxy()Landroid/net/ProxyInfo; -PLcom/android/server/ConnectivityService;->getFilteredNetworkState(IIZ)Landroid/net/NetworkState; PLcom/android/server/ConnectivityService;->getGlobalProxy()Landroid/net/ProxyInfo; PLcom/android/server/ConnectivityService;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties; PLcom/android/server/ConnectivityService;->getLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/LinkProperties; -PLcom/android/server/ConnectivityService;->getNetworkAgentInfoForNetwork(Landroid/net/Network;)Lcom/android/server/connectivity/NetworkAgentInfo; -PLcom/android/server/ConnectivityService;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities; -PLcom/android/server/ConnectivityService;->getNetworkCapabilitiesInternal(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/NetworkCapabilities; -PLcom/android/server/ConnectivityService;->getNetworkInfo(I)Landroid/net/NetworkInfo; -PLcom/android/server/ConnectivityService;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo; PLcom/android/server/ConnectivityService;->getNetworkPermission(Landroid/net/NetworkCapabilities;)Ljava/lang/String; PLcom/android/server/ConnectivityService;->getNriForAppRequest(Landroid/net/NetworkRequest;ILjava/lang/String;)Lcom/android/server/ConnectivityService$NetworkRequestInfo; -PLcom/android/server/ConnectivityService;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo; PLcom/android/server/ConnectivityService;->getSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/util/ArrayList; PLcom/android/server/ConnectivityService;->getSystemProperties()Lcom/android/server/connectivity/MockableSystemProperties; PLcom/android/server/ConnectivityService;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig; @@ -3736,18 +6839,15 @@ PLcom/android/server/ConnectivityService;->handleMobileDataAlwaysOn()V PLcom/android/server/ConnectivityService;->handlePromptUnvalidated(Landroid/net/Network;)V PLcom/android/server/ConnectivityService;->handleRegisterNetworkAgent(Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService;->handleRegisterNetworkFactory(Lcom/android/server/ConnectivityService$NetworkFactoryInfo;)V -PLcom/android/server/ConnectivityService;->handleRegisterNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V PLcom/android/server/ConnectivityService;->handleReleaseNetworkRequest(Landroid/net/NetworkRequest;I)V -PLcom/android/server/ConnectivityService;->handleRemoveNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V PLcom/android/server/ConnectivityService;->handleReportNetworkConnectivity(Landroid/net/Network;IZ)V +PLcom/android/server/ConnectivityService;->handleUpdateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V PLcom/android/server/ConnectivityService;->hasWifiNetworkListenPermission(Landroid/net/NetworkCapabilities;)Z -PLcom/android/server/ConnectivityService;->isActiveNetworkMetered()Z PLcom/android/server/ConnectivityService;->isDefaultNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)Z PLcom/android/server/ConnectivityService;->isDefaultRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)Z PLcom/android/server/ConnectivityService;->isNetworkSupported(I)Z -PLcom/android/server/ConnectivityService;->isSystem(I)Z PLcom/android/server/ConnectivityService;->isTetheringSupported()Z -PLcom/android/server/ConnectivityService;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest; +PLcom/android/server/ConnectivityService;->isTetheringSupported(Ljava/lang/String;)Z PLcom/android/server/ConnectivityService;->loadGlobalProxy()V PLcom/android/server/ConnectivityService;->log(Ljava/lang/String;)V PLcom/android/server/ConnectivityService;->logDefaultNetworkEvent(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)V @@ -3759,30 +6859,23 @@ PLcom/android/server/ConnectivityService;->notifyIfacesChangedForNetworkStats()V PLcom/android/server/ConnectivityService;->notifyLockdownVpn(Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService;->notifyNetworkAvailable(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V PLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;I)V -PLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;II)V PLcom/android/server/ConnectivityService;->onUserStart(I)V PLcom/android/server/ConnectivityService;->onUserUnlocked(I)V PLcom/android/server/ConnectivityService;->proxyInfoEqual(Landroid/net/ProxyInfo;Landroid/net/ProxyInfo;)Z -PLcom/android/server/ConnectivityService;->putParcelable(Landroid/os/Bundle;Landroid/os/Parcelable;)V PLcom/android/server/ConnectivityService;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;)I PLcom/android/server/ConnectivityService;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V PLcom/android/server/ConnectivityService;->registerSettingsCallbacks()V PLcom/android/server/ConnectivityService;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V -PLcom/android/server/ConnectivityService;->rematchAllNetworksAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;I)V -PLcom/android/server/ConnectivityService;->rematchNetworkAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;J)V PLcom/android/server/ConnectivityService;->reportNetworkConnectivity(Landroid/net/Network;Z)V PLcom/android/server/ConnectivityService;->requestNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;ILandroid/os/IBinder;I)Landroid/net/NetworkRequest; PLcom/android/server/ConnectivityService;->reserveNetId()I PLcom/android/server/ConnectivityService;->scheduleReleaseNetworkTransitionWakelock()V PLcom/android/server/ConnectivityService;->scheduleUnvalidatedPrompt(Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService;->sendConnectedBroadcast(Landroid/net/NetworkInfo;)V -PLcom/android/server/ConnectivityService;->sendDataActivityBroadcast(IZJ)V PLcom/android/server/ConnectivityService;->sendGeneralBroadcast(Landroid/net/NetworkInfo;Ljava/lang/String;)V PLcom/android/server/ConnectivityService;->sendInetConditionBroadcast(Landroid/net/NetworkInfo;)V PLcom/android/server/ConnectivityService;->sendLegacyNetworkBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;I)V PLcom/android/server/ConnectivityService;->sendStickyBroadcast(Landroid/content/Intent;)V -PLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Landroid/net/NetworkRequest;I)V -PLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService;->setDefaultDnsSystemProperties(Ljava/util/Collection;)V PLcom/android/server/ConnectivityService;->setLockdownTracker(Lcom/android/server/net/LockdownVpnTracker;)V PLcom/android/server/ConnectivityService;->setNetDnsProperty(ILjava/lang/String;)V @@ -3790,47 +6883,50 @@ PLcom/android/server/ConnectivityService;->setupDataActivityTracking(Lcom/androi PLcom/android/server/ConnectivityService;->startAlwaysOnVpn(I)Z PLcom/android/server/ConnectivityService;->systemReady()V PLcom/android/server/ConnectivityService;->toBool(I)Z -PLcom/android/server/ConnectivityService;->unneeded(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$UnneededFor;)Z PLcom/android/server/ConnectivityService;->updateCapabilities(ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V -PLcom/android/server/ConnectivityService;->updateClat(Landroid/net/LinkProperties;Landroid/net/LinkProperties;Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService;->updateDnses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)V PLcom/android/server/ConnectivityService;->updateInetCondition(Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService;->updateInterfaces(Landroid/net/LinkProperties;Landroid/net/LinkProperties;ILandroid/net/NetworkCapabilities;)V -PLcom/android/server/ConnectivityService;->updateLingerState(Lcom/android/server/connectivity/NetworkAgentInfo;J)V PLcom/android/server/ConnectivityService;->updateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V PLcom/android/server/ConnectivityService;->updateLockdownVpn()Z PLcom/android/server/ConnectivityService;->updateMtu(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V PLcom/android/server/ConnectivityService;->updateNetworkInfo(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V -PLcom/android/server/ConnectivityService;->updateNetworkScore(Lcom/android/server/connectivity/NetworkAgentInfo;I)V PLcom/android/server/ConnectivityService;->updateProxy(Landroid/net/LinkProperties;Landroid/net/LinkProperties;Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/ConnectivityService;->updateRoutes(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)Z PLcom/android/server/ConnectivityService;->updateSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;Ljava/lang/String;Landroid/net/NetworkRequest;)V PLcom/android/server/ConnectivityService;->updateTcpBufferSizes(Lcom/android/server/connectivity/NetworkAgentInfo;)V -PLcom/android/server/ConnectivityService;->wakeupAddInterface(Ljava/lang/String;Landroid/net/NetworkCapabilities;)V +PLcom/android/server/ConnectivityService;->wakeupModifyInterface(Ljava/lang/String;Landroid/net/NetworkCapabilities;Z)V PLcom/android/server/ConsumerIrService;-><init>(Landroid/content/Context;)V PLcom/android/server/ContextHubSystemService;-><init>(Landroid/content/Context;)V +PLcom/android/server/ContextHubSystemService;->lambda$-com_android_server_ContextHubSystemService_1237(Landroid/content/Context;)V PLcom/android/server/ContextHubSystemService;->onBootPhase(I)V PLcom/android/server/ContextHubSystemService;->onStart()V +PLcom/android/server/CountryDetectorService$1$1;-><init>(Lcom/android/server/CountryDetectorService$1;Landroid/location/Country;)V +PLcom/android/server/CountryDetectorService$1$1;->run()V PLcom/android/server/CountryDetectorService$1;-><init>(Lcom/android/server/CountryDetectorService;)V +PLcom/android/server/CountryDetectorService$1;->onCountryDetected(Landroid/location/Country;)V PLcom/android/server/CountryDetectorService$2;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V PLcom/android/server/CountryDetectorService$2;->run()V PLcom/android/server/CountryDetectorService$Receiver;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/ICountryListener;)V +PLcom/android/server/CountryDetectorService$Receiver;->getListener()Landroid/location/ICountryListener; PLcom/android/server/CountryDetectorService;->-get0(Lcom/android/server/CountryDetectorService;)Lcom/android/server/location/ComprehensiveCountryDetector; +PLcom/android/server/CountryDetectorService;->-get1(Lcom/android/server/CountryDetectorService;)Landroid/os/Handler; PLcom/android/server/CountryDetectorService;-><init>(Landroid/content/Context;)V PLcom/android/server/CountryDetectorService;->addCountryListener(Landroid/location/ICountryListener;)V PLcom/android/server/CountryDetectorService;->addListener(Landroid/location/ICountryListener;)V PLcom/android/server/CountryDetectorService;->detectCountry()Landroid/location/Country; PLcom/android/server/CountryDetectorService;->initialize()V +PLcom/android/server/CountryDetectorService;->notifyReceivers(Landroid/location/Country;)V PLcom/android/server/CountryDetectorService;->run()V PLcom/android/server/CountryDetectorService;->setCountryListener(Landroid/location/CountryListener;)V PLcom/android/server/CountryDetectorService;->systemRunning()V PLcom/android/server/DeviceIdleController$1;-><init>(Lcom/android/server/DeviceIdleController;)V -PLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/DeviceIdleController$2;-><init>(Lcom/android/server/DeviceIdleController;)V PLcom/android/server/DeviceIdleController$3;-><init>(Lcom/android/server/DeviceIdleController;)V PLcom/android/server/DeviceIdleController$4;-><init>(Lcom/android/server/DeviceIdleController;)V PLcom/android/server/DeviceIdleController$5;-><init>(Lcom/android/server/DeviceIdleController;)V PLcom/android/server/DeviceIdleController$6;-><init>(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$6;->onDisplayChanged(I)V PLcom/android/server/DeviceIdleController$7;-><init>(Lcom/android/server/DeviceIdleController;)V PLcom/android/server/DeviceIdleController$8;-><init>(Lcom/android/server/DeviceIdleController;)V PLcom/android/server/DeviceIdleController$BinderService;-><init>(Lcom/android/server/DeviceIdleController;)V @@ -3839,44 +6935,35 @@ PLcom/android/server/DeviceIdleController$BinderService;->getAppIdTempWhitelist( PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelist()[I PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelistExceptIdle()[I PLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistApp(Ljava/lang/String;)Z -PLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistExceptIdleApp(Ljava/lang/String;)Z PLcom/android/server/DeviceIdleController$Constants;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)V PLcom/android/server/DeviceIdleController$Constants;->updateConstants()V PLcom/android/server/DeviceIdleController$LocalService;-><init>(Lcom/android/server/DeviceIdleController;)V PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistApp(ILjava/lang/String;JIZLjava/lang/String;)V +PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistAppDirect(IJZLjava/lang/String;)V PLcom/android/server/DeviceIdleController$LocalService;->getNotificationWhitelistDuration()J -PLcom/android/server/DeviceIdleController$LocalService;->setAlarmsActive(Z)V -PLcom/android/server/DeviceIdleController$LocalService;->setJobsActive(Z)V PLcom/android/server/DeviceIdleController$LocalService;->setNetworkPolicyTempWhitelistCallback(Ljava/lang/Runnable;)V PLcom/android/server/DeviceIdleController$MotionListener;-><init>(Lcom/android/server/DeviceIdleController;)V PLcom/android/server/DeviceIdleController$MotionListener;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$MotionListener;)V PLcom/android/server/DeviceIdleController$MyHandler;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Looper;)V -PLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/DeviceIdleController;->-get1(Lcom/android/server/DeviceIdleController;)Lcom/android/server/DeviceIdleController$Constants; -PLcom/android/server/DeviceIdleController;->-get7(Lcom/android/server/DeviceIdleController;)Landroid/os/RemoteCallbackList; PLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;)V PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJZLjava/lang/String;)V PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppInternal(ILjava/lang/String;JIZLjava/lang/String;)V PLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;I)V +PLcom/android/server/DeviceIdleController;->becomeInactiveIfAppropriateLocked()V PLcom/android/server/DeviceIdleController;->buildAppIdArray(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseBooleanArray;)[I PLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V -PLcom/android/server/DeviceIdleController;->exitMaintenanceEarlyIfNeededLocked()V PLcom/android/server/DeviceIdleController;->getAppIdTempWhitelistInternal()[I PLcom/android/server/DeviceIdleController;->getAppIdWhitelistExceptIdleInternal()[I PLcom/android/server/DeviceIdleController;->getAppIdWhitelistInternal()[I PLcom/android/server/DeviceIdleController;->getSystemDir()Ljava/io/File; PLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistAppInternal(Ljava/lang/String;)Z -PLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistExceptIdleAppInternal(Ljava/lang/String;)Z PLcom/android/server/DeviceIdleController;->onBootPhase(I)V PLcom/android/server/DeviceIdleController;->onStart()V PLcom/android/server/DeviceIdleController;->postTempActiveTimeoutMessage(IJ)V PLcom/android/server/DeviceIdleController;->readConfigFileLocked()V -PLcom/android/server/DeviceIdleController;->reportMaintenanceActivityIfNeededLocked()V PLcom/android/server/DeviceIdleController;->reportTempWhitelistChangedLocked()V -PLcom/android/server/DeviceIdleController;->setAlarmsActive(Z)V -PLcom/android/server/DeviceIdleController;->setJobsActive(Z)V PLcom/android/server/DeviceIdleController;->setNetworkPolicyTempWhitelistCallbackInternal(Ljava/lang/Runnable;)V -PLcom/android/server/DeviceIdleController;->updateChargingLocked(Z)V PLcom/android/server/DeviceIdleController;->updateConnectivityState(Landroid/content/Intent;)V PLcom/android/server/DeviceIdleController;->updateDisplayLocked()V PLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZ)V @@ -3895,15 +6982,9 @@ PLcom/android/server/DropBoxManagerService$1$1;->run()V PLcom/android/server/DropBoxManagerService$1;-><init>(Lcom/android/server/DropBoxManagerService;)V PLcom/android/server/DropBoxManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/DropBoxManagerService$2;-><init>(Lcom/android/server/DropBoxManagerService;)V -PLcom/android/server/DropBoxManagerService$2;->add(Landroid/os/DropBoxManager$Entry;)V -PLcom/android/server/DropBoxManagerService$2;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; -PLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z -PLcom/android/server/DropBoxManagerService$3;-><init>(Lcom/android/server/DropBoxManagerService;)V -PLcom/android/server/DropBoxManagerService$3;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/DropBoxManagerService$3;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Looper;)V PLcom/android/server/DropBoxManagerService$4;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Handler;)V PLcom/android/server/DropBoxManagerService$4;->onChange(Z)V -PLcom/android/server/DropBoxManagerService$EntryFile;-><init>(J)V -PLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V PLcom/android/server/DropBoxManagerService$FileList;-><init>()V PLcom/android/server/DropBoxManagerService$FileList;-><init>(Lcom/android/server/DropBoxManagerService$FileList;)V PLcom/android/server/DropBoxManagerService;->-get0(Lcom/android/server/DropBoxManagerService;)Landroid/content/BroadcastReceiver; @@ -3911,14 +6992,13 @@ PLcom/android/server/DropBoxManagerService;->-set0(Lcom/android/server/DropBoxMa PLcom/android/server/DropBoxManagerService;->-wrap0(Lcom/android/server/DropBoxManagerService;)J PLcom/android/server/DropBoxManagerService;->-wrap1(Lcom/android/server/DropBoxManagerService;)V PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;)V -PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;Ljava/io/File;)V -PLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J -PLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V +PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V PLcom/android/server/DropBoxManagerService;->onBootPhase(I)V PLcom/android/server/DropBoxManagerService;->onStart()V -PLcom/android/server/DropBoxManagerService;->trimToFit()J PLcom/android/server/EntropyMixer$1;-><init>(Lcom/android/server/EntropyMixer;)V PLcom/android/server/EntropyMixer$2;-><init>(Lcom/android/server/EntropyMixer;)V +PLcom/android/server/EntropyMixer$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/EntropyMixer;->-wrap2(Lcom/android/server/EntropyMixer;)V PLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;)V PLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/EntropyMixer;->addDeviceSpecificEntropy()V @@ -3927,10 +7007,8 @@ PLcom/android/server/EntropyMixer;->getSystemDir()Ljava/lang/String; PLcom/android/server/EntropyMixer;->loadInitialEntropy()V PLcom/android/server/EntropyMixer;->scheduleEntropyWriter()V PLcom/android/server/EntropyMixer;->writeEntropy()V -PLcom/android/server/EventLogTags;->writeNetstatsMobileSample(JJJJJJJJJJJJJ)V -PLcom/android/server/EventLogTags;->writeNetstatsWifiSample(JJJJJJJJJJJJJ)V -PLcom/android/server/EventLogTags;->writeNotificationCancelAll(IILjava/lang/String;IIIILjava/lang/String;)V -PLcom/android/server/EventLogTags;->writeNotificationCanceled(Ljava/lang/String;IIII)V +PLcom/android/server/EventLogTags;->writeNotificationCancel(IILjava/lang/String;ILjava/lang/String;IIIILjava/lang/String;)V +PLcom/android/server/EventLogTags;->writeNotificationCanceled(Ljava/lang/String;IIIILjava/lang/String;)V PLcom/android/server/EventLogTags;->writeNotificationEnqueue(IILjava/lang/String;ILjava/lang/String;ILjava/lang/String;I)V PLcom/android/server/EventLogTags;->writeNotificationExpansion(Ljava/lang/String;IIIII)V PLcom/android/server/EventLogTags;->writeNotificationPanelHidden()V @@ -3938,7 +7016,6 @@ PLcom/android/server/EventLogTags;->writeNotificationPanelRevealed(I)V PLcom/android/server/EventLogTags;->writeNotificationVisibility(Ljava/lang/String;IIIII)V PLcom/android/server/EventLogTags;->writeStorageState(Ljava/lang/String;IIJJ)V PLcom/android/server/EventLogTags;->writeStreamDevicesChanged(III)V -PLcom/android/server/EventLogTags;->writeVolumeChanged(IIIILjava/lang/String;)V PLcom/android/server/GestureLauncherService$1;-><init>(Lcom/android/server/GestureLauncherService;)V PLcom/android/server/GestureLauncherService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/GestureLauncherService$2;-><init>(Lcom/android/server/GestureLauncherService;Landroid/os/Handler;)V @@ -3947,7 +7024,7 @@ PLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;-><in PLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;)V PLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$GestureEventListener;)V PLcom/android/server/GestureLauncherService;->-get10(Lcom/android/server/GestureLauncherService;)Landroid/content/Context; -PLcom/android/server/GestureLauncherService;->-get14(Lcom/android/server/GestureLauncherService;)Landroid/database/ContentObserver; +PLcom/android/server/GestureLauncherService;->-get13(Lcom/android/server/GestureLauncherService;)Landroid/database/ContentObserver; PLcom/android/server/GestureLauncherService;->-set5(Lcom/android/server/GestureLauncherService;I)I PLcom/android/server/GestureLauncherService;->-wrap0(Lcom/android/server/GestureLauncherService;)V PLcom/android/server/GestureLauncherService;->-wrap1(Lcom/android/server/GestureLauncherService;)V @@ -3969,7 +7046,6 @@ PLcom/android/server/GestureLauncherService;->updateCameraDoubleTapPowerEnabled( PLcom/android/server/GestureLauncherService;->updateCameraRegistered()V PLcom/android/server/GraphicsStatsService$1;-><init>(Lcom/android/server/GraphicsStatsService;)V PLcom/android/server/GraphicsStatsService$1;->handleMessage(Landroid/os/Message;)Z -PLcom/android/server/GraphicsStatsService$ActiveBuffer;-><init>(Lcom/android/server/GraphicsStatsService;Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)V PLcom/android/server/GraphicsStatsService$ActiveBuffer;->binderDied()V PLcom/android/server/GraphicsStatsService$ActiveBuffer;->closeAllBuffers()V PLcom/android/server/GraphicsStatsService$BufferInfo;-><init>(Lcom/android/server/GraphicsStatsService;Ljava/lang/String;IJ)V @@ -3980,12 +7056,9 @@ PLcom/android/server/GraphicsStatsService;->-wrap1(Lcom/android/server/GraphicsS PLcom/android/server/GraphicsStatsService;->-wrap2(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V PLcom/android/server/GraphicsStatsService;-><init>(Landroid/content/Context;)V PLcom/android/server/GraphicsStatsService;->addToSaveQueue(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V -PLcom/android/server/GraphicsStatsService;->fetchActiveBuffersLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)Lcom/android/server/GraphicsStatsService$ActiveBuffer; PLcom/android/server/GraphicsStatsService;->getPfd(Landroid/os/MemoryFile;)Landroid/os/ParcelFileDescriptor; -PLcom/android/server/GraphicsStatsService;->normalizeDate(J)Ljava/util/Calendar; PLcom/android/server/GraphicsStatsService;->pathForApp(Lcom/android/server/GraphicsStatsService$BufferInfo;)Ljava/io/File; PLcom/android/server/GraphicsStatsService;->processDied(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V -PLcom/android/server/GraphicsStatsService;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor; PLcom/android/server/GraphicsStatsService;->requestBufferForProcessLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)Landroid/os/ParcelFileDescriptor; PLcom/android/server/GraphicsStatsService;->saveBuffer(Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V PLcom/android/server/GraphicsStatsService;->scheduleRotateLocked()V @@ -3996,7 +7069,6 @@ PLcom/android/server/InputMethodManagerService$1;-><init>(Lcom/android/server/In PLcom/android/server/InputMethodManagerService$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V PLcom/android/server/InputMethodManagerService$2;-><init>(Lcom/android/server/InputMethodManagerService;)V PLcom/android/server/InputMethodManagerService$ClientState;-><init>(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;II)V -PLcom/android/server/InputMethodManagerService$ClientState;->toString()Ljava/lang/String; PLcom/android/server/InputMethodManagerService$HardKeyboardListener;-><init>(Lcom/android/server/InputMethodManagerService;)V PLcom/android/server/InputMethodManagerService$HardKeyboardListener;-><init>(Lcom/android/server/InputMethodManagerService;Lcom/android/server/InputMethodManagerService$HardKeyboardListener;)V PLcom/android/server/InputMethodManagerService$ImmsBroadcastReceiver;-><init>(Lcom/android/server/InputMethodManagerService;)V @@ -4022,90 +7094,54 @@ PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onBeginPackage PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChanges()V PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChangesInternal()V PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->shouldRebuildInputMethodListLocked()Z PLcom/android/server/InputMethodManagerService$SessionState;-><init>(Lcom/android/server/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V PLcom/android/server/InputMethodManagerService$SettingsObserver;-><init>(Lcom/android/server/InputMethodManagerService;Landroid/os/Handler;)V PLcom/android/server/InputMethodManagerService$SettingsObserver;->registerContentObserverLocked(I)V PLcom/android/server/InputMethodManagerService$StartInputHistory$Entry;-><init>(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V -PLcom/android/server/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V PLcom/android/server/InputMethodManagerService$StartInputHistory;-><init>()V PLcom/android/server/InputMethodManagerService$StartInputHistory;-><init>(Lcom/android/server/InputMethodManagerService$StartInputHistory;)V -PLcom/android/server/InputMethodManagerService$StartInputHistory;->addEntry(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V PLcom/android/server/InputMethodManagerService$StartInputHistory;->getEntrySize()I -PLcom/android/server/InputMethodManagerService$StartInputInfo;-><init>(Landroid/os/IBinder;Ljava/lang/String;IZLandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V PLcom/android/server/InputMethodManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/InputMethodManagerService;->addClient(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;II)V -PLcom/android/server/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/view/InputBindResult; PLcom/android/server/InputMethodManagerService;->bindCurrentInputMethodService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z -PLcom/android/server/InputMethodManagerService;->buildInputMethodListLocked(Z)V -PLcom/android/server/InputMethodManagerService;->calledFromValidUser()Z -PLcom/android/server/InputMethodManagerService;->calledWithValidToken(Landroid/os/IBinder;)Z PLcom/android/server/InputMethodManagerService;->clearClientSessionLocked(Lcom/android/server/InputMethodManagerService$ClientState;)V PLcom/android/server/InputMethodManagerService;->clearCurMethodLocked()V -PLcom/android/server/InputMethodManagerService;->executeOrSendMessage(Landroid/os/IInterface;Landroid/os/Message;)V PLcom/android/server/InputMethodManagerService;->finishInput(Lcom/android/internal/view/IInputMethodClient;)V PLcom/android/server/InputMethodManagerService;->finishSessionLocked(Lcom/android/server/InputMethodManagerService$SessionState;)V PLcom/android/server/InputMethodManagerService;->getAppShowFlags()I PLcom/android/server/InputMethodManagerService;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype; -PLcom/android/server/InputMethodManagerService;->getCurrentInputMethodSubtypeLocked()Landroid/view/inputmethod/InputMethodSubtype; PLcom/android/server/InputMethodManagerService;->getEnabledInputMethodList()Ljava/util/List; -PLcom/android/server/InputMethodManagerService;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List; PLcom/android/server/InputMethodManagerService;->getImeShowFlags()I PLcom/android/server/InputMethodManagerService;->getInputMethodList()Ljava/util/List; PLcom/android/server/InputMethodManagerService;->getInputMethodWindowVisibleHeight()I -PLcom/android/server/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z -PLcom/android/server/InputMethodManagerService;->hideCurrentInputLocked(ILandroid/os/ResultReceiver;)Z PLcom/android/server/InputMethodManagerService;->hideInputMethodMenu()V PLcom/android/server/InputMethodManagerService;->hideInputMethodMenuLocked()V -PLcom/android/server/InputMethodManagerService;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z +PLcom/android/server/InputMethodManagerService;->hideMySoftInput(Landroid/os/IBinder;I)V PLcom/android/server/InputMethodManagerService;->isKeyguardLocked()Z -PLcom/android/server/InputMethodManagerService;->isScreenLocked()Z PLcom/android/server/InputMethodManagerService;->notifyInputMethodSubtypeChanged(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V PLcom/android/server/InputMethodManagerService;->notifyUserAction(I)V PLcom/android/server/InputMethodManagerService;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V PLcom/android/server/InputMethodManagerService;->onSessionCreated(Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V -PLcom/android/server/InputMethodManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLcom/android/server/InputMethodManagerService;->onUnlockUser(I)V PLcom/android/server/InputMethodManagerService;->removeClient(Lcom/android/internal/view/IInputMethodClient;)V -PLcom/android/server/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V PLcom/android/server/InputMethodManagerService;->requestClientSessionLocked(Lcom/android/server/InputMethodManagerService$ClientState;)V PLcom/android/server/InputMethodManagerService;->resetDefaultImeLocked(Landroid/content/Context;)V PLcom/android/server/InputMethodManagerService;->setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V -PLcom/android/server/InputMethodManagerService;->setEnabledSessionInMainThread(Lcom/android/server/InputMethodManagerService$SessionState;)V -PLcom/android/server/InputMethodManagerService;->setImeWindowStatus(Landroid/os/IBinder;Landroid/os/IBinder;II)V PLcom/android/server/InputMethodManagerService;->setInputMethodEnabledLocked(Ljava/lang/String;Z)Z PLcom/android/server/InputMethodManagerService;->setInputMethodLocked(Ljava/lang/String;I)V PLcom/android/server/InputMethodManagerService;->setSelectedInputMethodAndSubtypeLocked(Landroid/view/inputmethod/InputMethodInfo;IZ)V -PLcom/android/server/InputMethodManagerService;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z -PLcom/android/server/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z PLcom/android/server/InputMethodManagerService;->showCurrentInputLocked(ILandroid/os/ResultReceiver;)Z PLcom/android/server/InputMethodManagerService;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z -PLcom/android/server/InputMethodManagerService;->startInput(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult; PLcom/android/server/InputMethodManagerService;->startInputInnerLocked()Lcom/android/internal/view/InputBindResult; -PLcom/android/server/InputMethodManagerService;->startInputLocked(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult; -PLcom/android/server/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult; -PLcom/android/server/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;II)Lcom/android/internal/view/InputBindResult; PLcom/android/server/InputMethodManagerService;->systemRunning(Lcom/android/server/statusbar/StatusBarManagerService;)V -PLcom/android/server/InputMethodManagerService;->unbindCurrentClientLocked(I)V PLcom/android/server/InputMethodManagerService;->unbindCurrentMethodLocked(Z)V PLcom/android/server/InputMethodManagerService;->updateCurrentProfileIds()V PLcom/android/server/InputMethodManagerService;->updateFromSettingsLocked(Z)V PLcom/android/server/InputMethodManagerService;->updateInputMethodsFromSettingsLocked(Z)V PLcom/android/server/InputMethodManagerService;->updateKeyboardFromSettingsLocked()V -PLcom/android/server/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V -PLcom/android/server/InputMethodManagerService;->updateSystemUiLocked(Landroid/os/IBinder;II)V -PLcom/android/server/InputMethodManagerService;->windowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult; -PLcom/android/server/IntentResolver;->collectFilters([Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Ljava/util/ArrayList; -PLcom/android/server/IntentResolver;->filterEquals(Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Z -PLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList; -PLcom/android/server/IntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z -PLcom/android/server/IntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; -PLcom/android/server/IntentResolver;->removeFilter(Landroid/content/IntentFilter;)V -PLcom/android/server/IntentResolver;->removeFilterInternal(Landroid/content/IntentFilter;)V -PLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V -PLcom/android/server/IntentResolver;->unregister_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I -PLcom/android/server/IntentResolver;->unregister_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I PLcom/android/server/IoThread;->get()Lcom/android/server/IoThread; PLcom/android/server/LocationManagerService$1;-><init>(Lcom/android/server/LocationManagerService;)V PLcom/android/server/LocationManagerService$2;-><init>(Lcom/android/server/LocationManagerService;)V @@ -4119,61 +7155,45 @@ PLcom/android/server/LocationManagerService$9;-><init>(Lcom/android/server/Locat PLcom/android/server/LocationManagerService$9;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/LocationManagerService$Identity;-><init>(IILjava/lang/String;)V PLcom/android/server/LocationManagerService$LocationWorkerHandler;-><init>(Lcom/android/server/LocationManagerService;Landroid/os/Looper;)V -PLcom/android/server/LocationManagerService$Receiver;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)V +PLcom/android/server/LocationManagerService$Receiver;->binderDied()V PLcom/android/server/LocationManagerService$Receiver;->clearPendingBroadcastsLocked()V PLcom/android/server/LocationManagerService$Receiver;->getListener()Landroid/location/ILocationListener; PLcom/android/server/LocationManagerService$Receiver;->isListener()Z -PLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(Z)V PLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(ZZI)Z -PLcom/android/server/LocationManagerService$UpdateRecord;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;)V PLcom/android/server/LocationManagerService$UpdateRecord;->disposeLocked(Z)V PLcom/android/server/LocationManagerService;->-get0(Lcom/android/server/LocationManagerService;)Landroid/app/ActivityManager; PLcom/android/server/LocationManagerService;->-get1(Lcom/android/server/LocationManagerService;)Landroid/app/AppOpsManager; -PLcom/android/server/LocationManagerService;->-get10(Lcom/android/server/LocationManagerService;)Landroid/os/PowerManager; -PLcom/android/server/LocationManagerService;->-get11(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap; -PLcom/android/server/LocationManagerService;->-get13(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap; -PLcom/android/server/LocationManagerService;->-get14(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationRequestStatistics; -PLcom/android/server/LocationManagerService;->-get4(Lcom/android/server/LocationManagerService;)Landroid/util/ArrayMap; -PLcom/android/server/LocationManagerService;->-get6(Lcom/android/server/LocationManagerService;)Landroid/util/ArrayMap; -PLcom/android/server/LocationManagerService;->-get9(Lcom/android/server/LocationManagerService;)Ljava/lang/Object; +PLcom/android/server/LocationManagerService;->-get10(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationRequestStatistics; +PLcom/android/server/LocationManagerService;->-get2(Lcom/android/server/LocationManagerService;)Landroid/content/Context; +PLcom/android/server/LocationManagerService;->-get5(Lcom/android/server/LocationManagerService;)Ljava/lang/Object; +PLcom/android/server/LocationManagerService;->-get6(Lcom/android/server/LocationManagerService;)Landroid/os/PowerManager; +PLcom/android/server/LocationManagerService;->-get7(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap; +PLcom/android/server/LocationManagerService;->-get8(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap; +PLcom/android/server/LocationManagerService;->-get9(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap; PLcom/android/server/LocationManagerService;->-wrap0(Lcom/android/server/LocationManagerService;Ljava/lang/String;)Z PLcom/android/server/LocationManagerService;->-wrap1(I)Z -PLcom/android/server/LocationManagerService;->-wrap10(Lcom/android/server/LocationManagerService;I)V -PLcom/android/server/LocationManagerService;->-wrap3(Lcom/android/server/LocationManagerService;II)I +PLcom/android/server/LocationManagerService;->-wrap2(Lcom/android/server/LocationManagerService;II)I +PLcom/android/server/LocationManagerService;->-wrap5(Lcom/android/server/LocationManagerService;Landroid/location/Location;Z)V +PLcom/android/server/LocationManagerService;->-wrap7(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$Receiver;)V +PLcom/android/server/LocationManagerService;->-wrap9(Lcom/android/server/LocationManagerService;I)V PLcom/android/server/LocationManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/LocationManagerService;->addProviderLocked(Lcom/android/server/location/LocationProviderInterface;)V -PLcom/android/server/LocationManagerService;->applyRequirementsLocked(Ljava/lang/String;)V PLcom/android/server/LocationManagerService;->checkDeviceStatsAllowed()V PLcom/android/server/LocationManagerService;->checkListenerOrIntentLocked(Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver; -PLcom/android/server/LocationManagerService;->checkLocationAccess(IILjava/lang/String;I)Z -PLcom/android/server/LocationManagerService;->checkPackageName(Ljava/lang/String;)V -PLcom/android/server/LocationManagerService;->checkResolutionLevelIsSufficientForProviderUse(ILjava/lang/String;)V PLcom/android/server/LocationManagerService;->checkUpdateAppOpsAllowed()V PLcom/android/server/LocationManagerService;->createSanitizedRequest(Landroid/location/LocationRequest;I)Landroid/location/LocationRequest; PLcom/android/server/LocationManagerService;->ensureFallbackFusedProviderPresentLocked(Ljava/util/ArrayList;)V PLcom/android/server/LocationManagerService;->geocoderIsPresent()Z -PLcom/android/server/LocationManagerService;->getAllowedResolutionLevel(II)I -PLcom/android/server/LocationManagerService;->getCallerAllowedResolutionLevel()I -PLcom/android/server/LocationManagerService;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location; -PLcom/android/server/LocationManagerService;->getMinimumResolutionLevelForProviderUse(Ljava/lang/String;)I +PLcom/android/server/LocationManagerService;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; PLcom/android/server/LocationManagerService;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties; PLcom/android/server/LocationManagerService;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List; -PLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/location/ILocationListener;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver; PLcom/android/server/LocationManagerService;->hasGnssPermissions(Ljava/lang/String;)Z -PLcom/android/server/LocationManagerService;->isAllowedByCurrentUserSettingsLocked(Ljava/lang/String;)Z -PLcom/android/server/LocationManagerService;->isAllowedByUserSettingsLocked(Ljava/lang/String;I)Z -PLcom/android/server/LocationManagerService;->isCurrentProfile(I)Z -PLcom/android/server/LocationManagerService;->isImportanceForeground(I)Z -PLcom/android/server/LocationManagerService;->isProviderEnabled(Ljava/lang/String;)Z -PLcom/android/server/LocationManagerService;->isThrottlingExemptLocked(Lcom/android/server/LocationManagerService$Identity;)Z +PLcom/android/server/LocationManagerService;->isMockProvider(Ljava/lang/String;)Z +PLcom/android/server/LocationManagerService;->isUidALocationProvider(I)Z PLcom/android/server/LocationManagerService;->loadProvidersLocked()V PLcom/android/server/LocationManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;)Z PLcom/android/server/LocationManagerService;->removeUpdates(Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V -PLcom/android/server/LocationManagerService;->removeUpdatesLocked(Lcom/android/server/LocationManagerService$Receiver;)V -PLcom/android/server/LocationManagerService;->reportLocationAccessNoThrow(IILjava/lang/String;I)Z -PLcom/android/server/LocationManagerService;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V PLcom/android/server/LocationManagerService;->requestLocationUpdatesLocked(Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;IILjava/lang/String;)V -PLcom/android/server/LocationManagerService;->resolutionLevelToOp(I)I PLcom/android/server/LocationManagerService;->switchUser(I)V PLcom/android/server/LocationManagerService;->systemRunning()V PLcom/android/server/LocationManagerService;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V @@ -4195,10 +7215,7 @@ PLcom/android/server/NativeDaemonConnector$Command;->-get0(Lcom/android/server/N PLcom/android/server/NativeDaemonConnector$Command;->-get1(Lcom/android/server/NativeDaemonConnector$Command;)Ljava/lang/String; PLcom/android/server/NativeDaemonConnector$Command;-><init>(Ljava/lang/String;[Ljava/lang/Object;)V PLcom/android/server/NativeDaemonConnector$Command;->appendArg(Ljava/lang/Object;)Lcom/android/server/NativeDaemonConnector$Command; -PLcom/android/server/NativeDaemonConnector$ResponseQueue$PendingCmd;-><init>(ILjava/lang/String;)V PLcom/android/server/NativeDaemonConnector$ResponseQueue;-><init>(I)V -PLcom/android/server/NativeDaemonConnector$ResponseQueue;->add(ILcom/android/server/NativeDaemonEvent;)V -PLcom/android/server/NativeDaemonConnector$ResponseQueue;->remove(IJLjava/lang/String;)Lcom/android/server/NativeDaemonEvent; PLcom/android/server/NativeDaemonConnector$SensitiveArg;-><init>(Ljava/lang/Object;)V PLcom/android/server/NativeDaemonConnector$SensitiveArg;->toString()Ljava/lang/String; PLcom/android/server/NativeDaemonConnector;-><init>(Lcom/android/server/INativeDaemonConnectorCallbacks;Ljava/lang/String;ILjava/lang/String;ILandroid/os/PowerManager$WakeLock;)V @@ -4208,26 +7225,19 @@ PLcom/android/server/NativeDaemonConnector;->execute(JLjava/lang/String;[Ljava/l PLcom/android/server/NativeDaemonConnector;->execute(Lcom/android/server/NativeDaemonConnector$Command;)Lcom/android/server/NativeDaemonEvent; PLcom/android/server/NativeDaemonConnector;->execute(Ljava/lang/String;[Ljava/lang/Object;)Lcom/android/server/NativeDaemonEvent; PLcom/android/server/NativeDaemonConnector;->executeForList(Ljava/lang/String;[Ljava/lang/Object;)[Lcom/android/server/NativeDaemonEvent; -PLcom/android/server/NativeDaemonConnector;->handleMessage(Landroid/os/Message;)Z -PLcom/android/server/NativeDaemonConnector;->log(Ljava/lang/String;)V PLcom/android/server/NativeDaemonConnector;->loge(Ljava/lang/String;)V PLcom/android/server/NativeDaemonConnector;->monitor()V PLcom/android/server/NativeDaemonConnector;->run()V PLcom/android/server/NativeDaemonConnector;->setDebug(Z)V PLcom/android/server/NativeDaemonConnector;->setWarnIfHeld(Ljava/lang/Object;)V -PLcom/android/server/NativeDaemonEvent;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/io/FileDescriptor;)V PLcom/android/server/NativeDaemonEvent;->checkCode(I)V PLcom/android/server/NativeDaemonEvent;->filterMessageList([Lcom/android/server/NativeDaemonEvent;I)[Ljava/lang/String; PLcom/android/server/NativeDaemonEvent;->getCmdNumber()I -PLcom/android/server/NativeDaemonEvent;->getCode()I PLcom/android/server/NativeDaemonEvent;->getMessage()Ljava/lang/String; PLcom/android/server/NativeDaemonEvent;->getRawEvent()Ljava/lang/String; PLcom/android/server/NativeDaemonEvent;->isClassClientError()Z PLcom/android/server/NativeDaemonEvent;->isClassContinue()Z PLcom/android/server/NativeDaemonEvent;->isClassServerError()Z -PLcom/android/server/NativeDaemonEvent;->isClassUnsolicited()Z -PLcom/android/server/NativeDaemonEvent;->isClassUnsolicited(I)Z -PLcom/android/server/NativeDaemonEvent;->toString()Ljava/lang/String; PLcom/android/server/NetworkManagementInternal;-><init>()V PLcom/android/server/NetworkManagementService$1;-><init>(Lcom/android/server/NetworkManagementService;I)V PLcom/android/server/NetworkManagementService$1;->run()V @@ -4235,18 +7245,17 @@ PLcom/android/server/NetworkManagementService$IdleTimerParams;-><init>(II)V PLcom/android/server/NetworkManagementService$LocalService;-><init>(Lcom/android/server/NetworkManagementService;)V PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;-><init>(Lcom/android/server/NetworkManagementService;)V PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;-><init>(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$NetdCallbackReceiver;)V -PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onCheckHoldWakeLock(I)Z PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onDaemonConnected()V -PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onEvent(ILjava/lang/String;[Ljava/lang/String;)Z -PLcom/android/server/NetworkManagementService;->-get1(Lcom/android/server/NetworkManagementService;)Ljava/util/concurrent/CountDownLatch; -PLcom/android/server/NetworkManagementService;->-get8(Lcom/android/server/NetworkManagementService;)Landroid/util/SparseIntArray; +PLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;-><init>(Lcom/android/server/NetworkManagementService;)V +PLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;-><init>(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;)V +PLcom/android/server/NetworkManagementService;->-get0(Lcom/android/server/NetworkManagementService;)Ljava/util/concurrent/CountDownLatch; +PLcom/android/server/NetworkManagementService;->-get1(Lcom/android/server/NetworkManagementService;)Lcom/android/server/NativeDaemonConnector; PLcom/android/server/NetworkManagementService;->-set0(Lcom/android/server/NetworkManagementService;Ljava/util/concurrent/CountDownLatch;)Ljava/util/concurrent/CountDownLatch; PLcom/android/server/NetworkManagementService;->-wrap11(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/NetworkManagementService;->-wrap12(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/RouteInfo;)V PLcom/android/server/NetworkManagementService;->-wrap3(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V PLcom/android/server/NetworkManagementService;->-wrap4(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V PLcom/android/server/NetworkManagementService;->-wrap5(Lcom/android/server/NetworkManagementService;Ljava/lang/String;)V -PLcom/android/server/NetworkManagementService;->-wrap6(Lcom/android/server/NetworkManagementService;IIJIZ)V PLcom/android/server/NetworkManagementService;->-wrap7(Lcom/android/server/NetworkManagementService;Ljava/lang/String;J[Ljava/lang/String;)V PLcom/android/server/NetworkManagementService;->-wrap8(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Z)V PLcom/android/server/NetworkManagementService;->-wrap9(Lcom/android/server/NetworkManagementService;Ljava/lang/String;)V @@ -4262,37 +7271,27 @@ PLcom/android/server/NetworkManagementService;->create(Landroid/content/Context; PLcom/android/server/NetworkManagementService;->createPhysicalNetwork(ILjava/lang/String;)V PLcom/android/server/NetworkManagementService;->disableIpv6(Ljava/lang/String;)V PLcom/android/server/NetworkManagementService;->enableIpv6(Ljava/lang/String;)V -PLcom/android/server/NetworkManagementService;->enforceSystemUid()V PLcom/android/server/NetworkManagementService;->getBatteryStats()Lcom/android/internal/app/IBatteryStats; -PLcom/android/server/NetworkManagementService;->getFirewallChainName(I)Ljava/lang/String; -PLcom/android/server/NetworkManagementService;->getFirewallRuleName(II)Ljava/lang/String; PLcom/android/server/NetworkManagementService;->getFirewallType(I)I PLcom/android/server/NetworkManagementService;->getInterfaceConfig(Ljava/lang/String;)Landroid/net/InterfaceConfiguration; PLcom/android/server/NetworkManagementService;->getNetdService()Landroid/net/INetd; PLcom/android/server/NetworkManagementService;->getNetworkStatsSummaryDev()Landroid/net/NetworkStats; PLcom/android/server/NetworkManagementService;->getNetworkStatsSummaryXt()Landroid/net/NetworkStats; -PLcom/android/server/NetworkManagementService;->getNetworkStatsTethering()Landroid/net/NetworkStats; PLcom/android/server/NetworkManagementService;->getNetworkStatsUidDetail(I)Landroid/net/NetworkStats; -PLcom/android/server/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray; PLcom/android/server/NetworkManagementService;->isBandwidthControlEnabled()Z -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_17509(Ljava/lang/String;ZLandroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_17716(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18101(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18305(Ljava/lang/String;Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_20521(IZJLandroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_27982(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_28210(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_28464(Ljava/lang/String;J[Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_28737(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V -PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_28817(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18114(Ljava/lang/String;ZLandroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18321(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18706(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29657(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29911(Ljava/lang/String;J[Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_30184(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_30264(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V PLcom/android/server/NetworkManagementService;->listInterfaces()[Ljava/lang/String; PLcom/android/server/NetworkManagementService;->modifyInterfaceInNetwork(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/NetworkManagementService;->modifyRoute(Ljava/lang/String;Ljava/lang/String;Landroid/net/RouteInfo;)V -PLcom/android/server/NetworkManagementService;->monitor()V PLcom/android/server/NetworkManagementService;->notifyAddressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V PLcom/android/server/NetworkManagementService;->notifyAddressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V PLcom/android/server/NetworkManagementService;->notifyInterfaceAdded(Ljava/lang/String;)V -PLcom/android/server/NetworkManagementService;->notifyInterfaceClassActivity(IIJIZ)V PLcom/android/server/NetworkManagementService;->notifyInterfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V PLcom/android/server/NetworkManagementService;->notifyInterfaceLinkStateChanged(Ljava/lang/String;Z)V PLcom/android/server/NetworkManagementService;->notifyInterfaceRemoved(Ljava/lang/String;)V @@ -4300,6 +7299,7 @@ PLcom/android/server/NetworkManagementService;->notifyLimitReached(Ljava/lang/St PLcom/android/server/NetworkManagementService;->notifyRouteChange(Ljava/lang/String;Landroid/net/RouteInfo;)V PLcom/android/server/NetworkManagementService;->prepareNativeDaemon()V PLcom/android/server/NetworkManagementService;->registerObserver(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->registerTetheringStatsProvider(Landroid/net/ITetheringStatsProvider;Ljava/lang/String;)V PLcom/android/server/NetworkManagementService;->reportNetworkActive()V PLcom/android/server/NetworkManagementService;->setDataSaverModeEnabled(Z)Z PLcom/android/server/NetworkManagementService;->setDefaultNetId(I)V @@ -4307,29 +7307,26 @@ PLcom/android/server/NetworkManagementService;->setDnsConfigurationForNetwork(I[ PLcom/android/server/NetworkManagementService;->setFirewallChainEnabled(IZ)V PLcom/android/server/NetworkManagementService;->setFirewallChainState(IZ)V PLcom/android/server/NetworkManagementService;->setFirewallEnabled(Z)V -PLcom/android/server/NetworkManagementService;->setFirewallUidRule(III)V -PLcom/android/server/NetworkManagementService;->setFirewallUidRuleLocked(III)V PLcom/android/server/NetworkManagementService;->setFirewallUidRules(I[I[I)V PLcom/android/server/NetworkManagementService;->setGlobalAlert(J)V +PLcom/android/server/NetworkManagementService;->setIPv6AddrGenMode(Ljava/lang/String;I)V PLcom/android/server/NetworkManagementService;->setInterfaceConfig(Ljava/lang/String;Landroid/net/InterfaceConfiguration;)V PLcom/android/server/NetworkManagementService;->setInterfaceIpv6PrivacyExtensions(Ljava/lang/String;Z)V PLcom/android/server/NetworkManagementService;->setInterfaceUp(Ljava/lang/String;)V -PLcom/android/server/NetworkManagementService;->setPermission(Ljava/lang/String;[I)V -PLcom/android/server/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V PLcom/android/server/NetworkManagementService;->setUidMeteredNetworkWhitelist(IZ)V PLcom/android/server/NetworkManagementService;->setUidOnMeteredNetworkList(IZZ)V -PLcom/android/server/NetworkManagementService;->startClatd(Ljava/lang/String;)V -PLcom/android/server/NetworkManagementService;->stopClatd(Ljava/lang/String;)V PLcom/android/server/NetworkManagementService;->syncFirewallChainLocked(ILjava/lang/String;)V PLcom/android/server/NetworkManagementService;->systemReady()V -PLcom/android/server/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z PLcom/android/server/NetworkScoreService$1;-><init>(Lcom/android/server/NetworkScoreService;)V PLcom/android/server/NetworkScoreService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V -PLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;-><init>(Ljava/util/function/Supplier;)V -PLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;->apply(Ljava/lang/Object;)Ljava/lang/Object; -PLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;->apply(Ljava/util/List;)Ljava/util/List; +PLcom/android/server/NetworkScoreService$2;-><init>(Lcom/android/server/NetworkScoreService;)V +PLcom/android/server/NetworkScoreService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/NetworkScoreService$3;-><init>(Lcom/android/server/NetworkScoreService;)V +PLcom/android/server/NetworkScoreService$3;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V +PLcom/android/server/NetworkScoreService$3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/NetworkScoreService$DispatchingContentObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->observe(Landroid/net/Uri;I)V +PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->onChange(ZLandroid/net/Uri;)V PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;-><init>(Landroid/content/Context;Ljava/util/List;ILjava/util/function/UnaryOperator;Ljava/util/function/UnaryOperator;)V PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V @@ -4338,66 +7335,71 @@ PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->filter PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;-><init>(Lcom/android/server/NetworkScoreService;Ljava/lang/String;)V PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;-><init>(Lcom/android/server/NetworkScoreService;Ljava/lang/String;Lcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;)V PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->evaluateBinding(Ljava/lang/String;Z)V -PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V +PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V PLcom/android/server/NetworkScoreService$ScoringServiceConnection;-><init>(Landroid/net/NetworkScorerAppData;)V PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->bind(Landroid/content/Context;)V -PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getAppData()Landroid/net/NetworkScorerAppData; -PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getPackageName()Ljava/lang/String; PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider; PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V PLcom/android/server/NetworkScoreService$ServiceHandler;-><init>(Lcom/android/server/NetworkScoreService;Landroid/os/Looper;)V -PLcom/android/server/NetworkScoreService$WifiInfoSupplier;-><init>(Landroid/content/Context;)V -PLcom/android/server/NetworkScoreService$WifiInfoSupplier;->get()Landroid/net/wifi/WifiInfo; -PLcom/android/server/NetworkScoreService$WifiInfoSupplier;->get()Ljava/lang/Object; +PLcom/android/server/NetworkScoreService$ServiceHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/NetworkScoreService;->-com_android_server_NetworkScoreService-mthref-0(Landroid/net/NetworkScorerAppData;)Lcom/android/server/NetworkScoreService$ScoringServiceConnection; PLcom/android/server/NetworkScoreService;->-get0()Z PLcom/android/server/NetworkScoreService;->-get2(Lcom/android/server/NetworkScoreService;)Lcom/android/server/NetworkScorerAppManager; PLcom/android/server/NetworkScoreService;->-wrap0(Lcom/android/server/NetworkScoreService;Landroid/net/NetworkScorerAppData;)V +PLcom/android/server/NetworkScoreService;->-wrap1(Lcom/android/server/NetworkScoreService;)V PLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;)V PLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager;Ljava/util/function/Function;Landroid/os/Looper;)V PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded()V PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded(Landroid/net/NetworkScorerAppData;)V -PLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String; +PLcom/android/server/NetworkScoreService;->clearInternal()V PLcom/android/server/NetworkScoreService;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider; -PLcom/android/server/NetworkScoreService;->isCallerActiveScorer(I)Z +PLcom/android/server/NetworkScoreService;->getScoreCacheLists()Ljava/util/Collection; PLcom/android/server/NetworkScoreService;->onUserUnlocked(I)V PLcom/android/server/NetworkScoreService;->refreshBinding()V PLcom/android/server/NetworkScoreService;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V PLcom/android/server/NetworkScoreService;->registerPackageMonitorIfNeeded()V PLcom/android/server/NetworkScoreService;->registerRecommendationSettingsObserver()V -PLcom/android/server/NetworkScoreService;->requestScores([Landroid/net/NetworkKey;)Z -PLcom/android/server/NetworkScoreService;->sendCacheUpdateCallback(Ljava/util/function/BiConsumer;Ljava/util/Collection;)V PLcom/android/server/NetworkScoreService;->systemReady()V PLcom/android/server/NetworkScoreService;->systemRunning()V -PLcom/android/server/NetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z +PLcom/android/server/NetworkScoreService;->unbindFromScoringServiceIfNeeded()V PLcom/android/server/NetworkScorerAppManager$SettingsFacade;-><init>()V PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getInt(Landroid/content/Context;Ljava/lang/String;I)I +PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getSecureInt(Landroid/content/Context;Ljava/lang/String;I)I PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getString(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->putInt(Landroid/content/Context;Ljava/lang/String;I)Z PLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;)V PLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager$SettingsFacade;)V +PLcom/android/server/NetworkScorerAppManager;->canAccessLocation(ILjava/lang/String;)Z PLcom/android/server/NetworkScorerAppManager;->findUseOpenWifiNetworksActivity(Landroid/content/pm/ServiceInfo;)Landroid/content/ComponentName; PLcom/android/server/NetworkScorerAppManager;->getActiveScorer()Landroid/net/NetworkScorerAppData; PLcom/android/server/NetworkScorerAppManager;->getAllValidScorers()Ljava/util/List; +PLcom/android/server/NetworkScorerAppManager;->getDefaultPackageSetting()Ljava/lang/String; PLcom/android/server/NetworkScorerAppManager;->getNetworkAvailableNotificationChannelId(Landroid/content/pm/ServiceInfo;)Ljava/lang/String; PLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsEnabledSetting()I PLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsPackage()Ljava/lang/String; PLcom/android/server/NetworkScorerAppManager;->getRecommendationServiceLabel(Landroid/content/pm/ServiceInfo;Landroid/content/pm/PackageManager;)Ljava/lang/String; PLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData; -PLcom/android/server/NetworkScorerAppManager;->hasPermissions(Ljava/lang/String;)Z +PLcom/android/server/NetworkScorerAppManager;->hasPermissions(ILjava/lang/String;)Z +PLcom/android/server/NetworkScorerAppManager;->hasScoreNetworksPermission(Ljava/lang/String;)Z +PLcom/android/server/NetworkScorerAppManager;->isLocationModeEnabled()Z PLcom/android/server/NetworkScorerAppManager;->migrateNetworkScorerAppSettingIfNeeded()V PLcom/android/server/NetworkScorerAppManager;->setNetworkRecommendationsEnabledSetting(I)V PLcom/android/server/NetworkScorerAppManager;->updateState()V PLcom/android/server/NetworkTimeUpdateService$1;-><init>(Lcom/android/server/NetworkTimeUpdateService;)V PLcom/android/server/NetworkTimeUpdateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/NetworkTimeUpdateService$2;-><init>(Lcom/android/server/NetworkTimeUpdateService;)V +PLcom/android/server/NetworkTimeUpdateService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/NetworkTimeUpdateService$MyHandler;-><init>(Lcom/android/server/NetworkTimeUpdateService;Landroid/os/Looper;)V +PLcom/android/server/NetworkTimeUpdateService$MyHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;-><init>(Lcom/android/server/NetworkTimeUpdateService;)V PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;-><init>(Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;)V PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;->onAvailable(Landroid/net/Network;)V PLcom/android/server/NetworkTimeUpdateService$SettingsObserver;-><init>(Landroid/os/Handler;I)V PLcom/android/server/NetworkTimeUpdateService$SettingsObserver;->observe(Landroid/content/Context;)V +PLcom/android/server/NetworkTimeUpdateService;->-get1(Lcom/android/server/NetworkTimeUpdateService;)Landroid/os/Handler; PLcom/android/server/NetworkTimeUpdateService;->-set0(Lcom/android/server/NetworkTimeUpdateService;Landroid/net/Network;)Landroid/net/Network; PLcom/android/server/NetworkTimeUpdateService;->-set1(Lcom/android/server/NetworkTimeUpdateService;J)J PLcom/android/server/NetworkTimeUpdateService;->-wrap0(Lcom/android/server/NetworkTimeUpdateService;I)V @@ -4443,14 +7445,14 @@ PLcom/android/server/PersistentDataBlockService;->-get2(Lcom/android/server/Pers PLcom/android/server/PersistentDataBlockService;->-get4(Lcom/android/server/PersistentDataBlockService;)Z PLcom/android/server/PersistentDataBlockService;->-get5(Lcom/android/server/PersistentDataBlockService;)Ljava/lang/Object; PLcom/android/server/PersistentDataBlockService;->-wrap0(Lcom/android/server/PersistentDataBlockService;)Z -PLcom/android/server/PersistentDataBlockService;->-wrap10(Lcom/android/server/PersistentDataBlockService;I)V +PLcom/android/server/PersistentDataBlockService;->-wrap11(Lcom/android/server/PersistentDataBlockService;I)V PLcom/android/server/PersistentDataBlockService;->-wrap2(Lcom/android/server/PersistentDataBlockService;)Z PLcom/android/server/PersistentDataBlockService;->-wrap3(Lcom/android/server/PersistentDataBlockService;Ljava/io/DataInputStream;)I PLcom/android/server/PersistentDataBlockService;->-wrap5(Lcom/android/server/PersistentDataBlockService;)J -PLcom/android/server/PersistentDataBlockService;->-wrap8(Lcom/android/server/PersistentDataBlockService;)V +PLcom/android/server/PersistentDataBlockService;->-wrap9(Lcom/android/server/PersistentDataBlockService;)V PLcom/android/server/PersistentDataBlockService;-><init>(Landroid/content/Context;)V PLcom/android/server/PersistentDataBlockService;->computeAndWriteDigestLocked()Z -PLcom/android/server/PersistentDataBlockService;->computeDigestLocked([B)[B +PLcom/android/server/PersistentDataBlockService;->doGetMaximumDataBlockSize()J PLcom/android/server/PersistentDataBlockService;->doGetOemUnlockEnabled()Z PLcom/android/server/PersistentDataBlockService;->enforceChecksumValidity()Z PLcom/android/server/PersistentDataBlockService;->enforceOemUnlockReadPermission()V @@ -4463,6 +7465,7 @@ PLcom/android/server/PersistentDataBlockService;->lambda$-com_android_server_Per PLcom/android/server/PersistentDataBlockService;->onBootPhase(I)V PLcom/android/server/PersistentDataBlockService;->onStart()V PLcom/android/server/PinnerService$1;-><init>(Lcom/android/server/PinnerService;)V +PLcom/android/server/PinnerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/PinnerService$BinderService;-><init>(Lcom/android/server/PinnerService;)V PLcom/android/server/PinnerService$BinderService;-><init>(Lcom/android/server/PinnerService;Lcom/android/server/PinnerService$BinderService;)V PLcom/android/server/PinnerService$PinnedFile;-><init>(JJLjava/lang/String;)V @@ -4479,6 +7482,7 @@ PLcom/android/server/PinnerService;->onStart()V PLcom/android/server/PinnerService;->pinCamera(I)Z PLcom/android/server/PinnerService;->pinFile(Ljava/lang/String;JJJ)Lcom/android/server/PinnerService$PinnedFile; PLcom/android/server/PinnerService;->unpinCameraApp()V +PLcom/android/server/PinnerService;->unpinFile(Lcom/android/server/PinnerService$PinnedFile;)Z PLcom/android/server/PinnerService;->update(Landroid/util/ArraySet;)V PLcom/android/server/PruneInstantAppsJobService;->schedule(Landroid/content/Context;)V PLcom/android/server/RandomBlock;-><init>()V @@ -4488,14 +7492,21 @@ PLcom/android/server/RandomBlock;->fromStream(Ljava/io/InputStream;)Lcom/android PLcom/android/server/RandomBlock;->toDataOut(Ljava/io/DataOutput;)V PLcom/android/server/RandomBlock;->toFile(Ljava/lang/String;Z)V PLcom/android/server/RandomBlock;->truncateIfPossible(Ljava/io/RandomAccessFile;)V +PLcom/android/server/RecoverySystemService$BinderService;->checkAndWaitForUncryptService()Z +PLcom/android/server/RecoverySystemService$BinderService;->clearBcb()Z +PLcom/android/server/RecoverySystemService$BinderService;->connectService()Landroid/net/LocalSocket; +PLcom/android/server/RecoverySystemService$BinderService;->setupOrClearBcb(ZLjava/lang/String;)Z +PLcom/android/server/RecoverySystemService;->-get0(Lcom/android/server/RecoverySystemService;)Landroid/content/Context; +PLcom/android/server/RecoverySystemService;->-get1()Ljava/lang/Object; PLcom/android/server/RescueParty;->executeRescueLevel(Landroid/content/Context;)V PLcom/android/server/RescueParty;->onSettingsProviderPublished(Landroid/content/Context;)V PLcom/android/server/SensorNotificationService;-><init>(Landroid/content/Context;)V PLcom/android/server/SensorNotificationService;->onBootPhase(I)V +PLcom/android/server/SensorNotificationService;->onLocationChanged(Landroid/location/Location;)V PLcom/android/server/SensorNotificationService;->onStart()V +PLcom/android/server/SensorNotificationService;->useMockedLocation()Z PLcom/android/server/SerialService;-><init>(Landroid/content/Context;)V PLcom/android/server/ServiceWatcher$1;-><init>(Lcom/android/server/ServiceWatcher;)V -PLcom/android/server/ServiceWatcher$1;->onPackageAdded(Ljava/lang/String;I)V PLcom/android/server/ServiceWatcher$1;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z PLcom/android/server/ServiceWatcher$2;-><init>(Lcom/android/server/ServiceWatcher;)V PLcom/android/server/ServiceWatcher$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V @@ -4503,14 +7514,14 @@ PLcom/android/server/ServiceWatcher;->-get0(Lcom/android/server/ServiceWatcher;) PLcom/android/server/ServiceWatcher;->-get1(Lcom/android/server/ServiceWatcher;)Ljava/lang/Object; PLcom/android/server/ServiceWatcher;->-wrap0(Lcom/android/server/ServiceWatcher;Ljava/lang/String;Z)Z PLcom/android/server/ServiceWatcher;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/Runnable;Landroid/os/Handler;)V -PLcom/android/server/ServiceWatcher;->bindBestPackageLocked(Ljava/lang/String;Z)Z PLcom/android/server/ServiceWatcher;->bindToPackageLocked(Landroid/content/ComponentName;II)V +PLcom/android/server/ServiceWatcher;->getBestPackageName()Ljava/lang/String; PLcom/android/server/ServiceWatcher;->getBinder()Landroid/os/IBinder; PLcom/android/server/ServiceWatcher;->getSignatureSets(Landroid/content/Context;Ljava/util/List;)Ljava/util/ArrayList; PLcom/android/server/ServiceWatcher;->isServiceMissing()Z PLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;)Z -PLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;Ljava/util/List;)Z PLcom/android/server/ServiceWatcher;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/ServiceWatcher;->onServiceDisconnected(Landroid/content/ComponentName;)V PLcom/android/server/ServiceWatcher;->start()Z PLcom/android/server/ServiceWatcher;->switchUser(I)V PLcom/android/server/ServiceWatcher;->unbindLocked()V @@ -4533,7 +7544,6 @@ PLcom/android/server/StorageManagerService$ObbActionHandler;-><init>(Lcom/androi PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;)V PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;)V PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->addExternalStoragePolicy(Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;)V -PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I PLcom/android/server/StorageManagerService$StorageManagerServiceHandler;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V PLcom/android/server/StorageManagerService$StorageManagerServiceHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/StorageManagerService;->-get0(Lcom/android/server/StorageManagerService;)Lcom/android/server/NativeDaemonConnector; @@ -4547,15 +7557,16 @@ PLcom/android/server/StorageManagerService;->-wrap7(Lcom/android/server/StorageM PLcom/android/server/StorageManagerService;->-wrap8(Lcom/android/server/StorageManagerService;)V PLcom/android/server/StorageManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/StorageManagerService;->addInternalVolumeLocked()V -PLcom/android/server/StorageManagerService;->adjustAllocateFlags(IILjava/lang/String;)I +PLcom/android/server/StorageManagerService;->addUserKeyAuth(II[B[B)V PLcom/android/server/StorageManagerService;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V PLcom/android/server/StorageManagerService;->bootCompleted()V +PLcom/android/server/StorageManagerService;->changeEncryptionPassword(ILjava/lang/String;)I PLcom/android/server/StorageManagerService;->clearPassword()V PLcom/android/server/StorageManagerService;->copyLocaleFromMountService()V PLcom/android/server/StorageManagerService;->encodeBytes([B)Lcom/android/server/NativeDaemonConnector$SensitiveArg; PLcom/android/server/StorageManagerService;->enforcePermission(Ljava/lang/String;)V PLcom/android/server/StorageManagerService;->escapeNull(Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J +PLcom/android/server/StorageManagerService;->fixateNewestUserKeyAuth(I)V PLcom/android/server/StorageManagerService;->getDefaultPrimaryStorageUuid()Ljava/lang/String; PLcom/android/server/StorageManagerService;->getDisks()[Landroid/os/storage/DiskInfo; PLcom/android/server/StorageManagerService;->getField(Ljava/lang/String;)Ljava/lang/String; @@ -4567,7 +7578,6 @@ PLcom/android/server/StorageManagerService;->handleSystemReady()V PLcom/android/server/StorageManagerService;->initIfReadyAndConnected()V PLcom/android/server/StorageManagerService;->isMountDisallowed(Landroid/os/storage/VolumeInfo;)Z PLcom/android/server/StorageManagerService;->isReady()Z -PLcom/android/server/StorageManagerService;->isUserKeyUnlocked(I)Z PLcom/android/server/StorageManagerService;->killMediaProvider(Ljava/util/List;)V PLcom/android/server/StorageManagerService;->lastMaintenance()J PLcom/android/server/StorageManagerService;->onCheckHoldWakeLock(I)Z @@ -4589,13 +7599,12 @@ PLcom/android/server/StorageManagerService;->waitForLatch(Ljava/util/concurrent/ PLcom/android/server/StorageManagerService;->waitForLatch(Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;J)V PLcom/android/server/StorageManagerService;->waitForReady()V PLcom/android/server/StorageManagerService;->warnOnNotMounted()V -PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_28929()V -PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_34065()V -PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_38654()V -PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_74165(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/NetworkScoreService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/ConnectivityService;Lcom/android/server/LocationManagerService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/CommonTimeManagementService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V -PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_75070()V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_29579()V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_34627()V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_38931()V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_75718(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/NetworkScoreService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/ConnectivityService;Lcom/android/server/LocationManagerService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/CommonTimeManagementService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_76623()V PLcom/android/server/SystemServer;->startCoreServices()V -PLcom/android/server/SystemServer;->startOtherServices()V PLcom/android/server/SystemServer;->startSystemUi(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/SystemServerInitThreadPool;->shutdown()V PLcom/android/server/SystemService;->getBinderService(Ljava/lang/String;)Landroid/os/IBinder; @@ -4609,8 +7618,6 @@ PLcom/android/server/SystemServiceManager;->isRuntimeRestarted()Z PLcom/android/server/SystemServiceManager;->isSafeMode()Z PLcom/android/server/SystemServiceManager;->setSafeMode(Z)V PLcom/android/server/SystemServiceManager;->startService(Ljava/lang/String;)Lcom/android/server/SystemService; -PLcom/android/server/SystemServiceManager;->startUser(I)V -PLcom/android/server/SystemServiceManager;->unlockUser(I)V PLcom/android/server/TelephonyRegistry$1;-><init>(Lcom/android/server/TelephonyRegistry;)V PLcom/android/server/TelephonyRegistry$1;->handleMessage(Landroid/os/Message;)V PLcom/android/server/TelephonyRegistry$2;-><init>(Lcom/android/server/TelephonyRegistry;)V @@ -4618,13 +7625,9 @@ PLcom/android/server/TelephonyRegistry$2;->onReceive(Landroid/content/Context;La PLcom/android/server/TelephonyRegistry$Record;-><init>()V PLcom/android/server/TelephonyRegistry$Record;-><init>(Lcom/android/server/TelephonyRegistry$Record;)V PLcom/android/server/TelephonyRegistry$Record;->matchOnSubscriptionsChangedListener()Z -PLcom/android/server/TelephonyRegistry$Record;->matchPhoneStateListenerEvent(I)Z PLcom/android/server/TelephonyRegistry;->-get0(Lcom/android/server/TelephonyRegistry;)[Landroid/os/Bundle; PLcom/android/server/TelephonyRegistry;->-get3(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler; PLcom/android/server/TelephonyRegistry;-><init>(Landroid/content/Context;)V -PLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V -PLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ZI)V -PLcom/android/server/TelephonyRegistry;->broadcastPreciseDataConnectionStateChanged(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Ljava/lang/String;)V PLcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;II)V PLcom/android/server/TelephonyRegistry;->broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;II)V PLcom/android/server/TelephonyRegistry;->canReadPhoneState(Ljava/lang/String;)Z @@ -4633,26 +7636,36 @@ PLcom/android/server/TelephonyRegistry;->checkNotifyPermission()Z PLcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z PLcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V PLcom/android/server/TelephonyRegistry;->idMatch(III)Z -PLcom/android/server/TelephonyRegistry;->listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZI)V PLcom/android/server/TelephonyRegistry;->listenForSubscriber(ILjava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V PLcom/android/server/TelephonyRegistry;->log(Ljava/lang/String;)V PLcom/android/server/TelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/os/Bundle;)V PLcom/android/server/TelephonyRegistry;->notifyDataActivityForSubscriber(II)V -PLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V PLcom/android/server/TelephonyRegistry;->notifyMessageWaitingChangedForPhoneId(IIZ)V PLcom/android/server/TelephonyRegistry;->notifyOemHookRawEventForSubscriber(I[B)V PLcom/android/server/TelephonyRegistry;->notifyOtaspChanged(I)V PLcom/android/server/TelephonyRegistry;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V -PLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V -PLcom/android/server/TelephonyRegistry;->notifySimActivationStateChangedForPhoneId(IIII)V PLcom/android/server/TelephonyRegistry;->notifySubscriptionInfoChanged()V -PLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V PLcom/android/server/TelephonyRegistry;->systemRunning()V PLcom/android/server/TelephonyRegistry;->validatePhoneId(I)Z +PLcom/android/server/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;-><init>(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;Lcom/android/server/TextServicesManagerService$SessionRequest;)V +PLcom/android/server/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;)V +PLcom/android/server/TextServicesManagerService$InternalDeathRecipients;-><init>(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;)V +PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->-get0(Lcom/android/server/TextServicesManagerService$InternalServiceConnection;)Ljava/lang/String; +PLcom/android/server/TextServicesManagerService$InternalServiceConnection;-><init>(Lcom/android/server/TextServicesManagerService;Ljava/lang/String;)V +PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->onServiceConnectedInnerLocked(Landroid/content/ComponentName;Landroid/os/IBinder;)V PLcom/android/server/TextServicesManagerService$Lifecycle;-><init>(Landroid/content/Context;)V PLcom/android/server/TextServicesManagerService$Lifecycle;->onBootPhase(I)V PLcom/android/server/TextServicesManagerService$Lifecycle;->onStart()V PLcom/android/server/TextServicesManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/TextServicesManagerService$SessionRequest;-><init>(ILjava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->-get1(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;)Lcom/android/server/TextServicesManagerService$InternalServiceConnection; +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;-><init>(Lcom/android/server/TextServicesManagerService;Lcom/android/server/TextServicesManagerService$InternalServiceConnection;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->cleanLocked()V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->getISpellCheckerSessionOrQueueLocked(Lcom/android/server/TextServicesManagerService$SessionRequest;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->onServiceConnectedLocked(Lcom/android/internal/textservice/ISpellCheckerService;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;Lcom/android/server/TextServicesManagerService$SessionRequest;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->removeListener(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V PLcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;-><init>(Lcom/android/server/TextServicesManagerService;)V PLcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;-><init>(Lcom/android/server/TextServicesManagerService;Lcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;)V PLcom/android/server/TextServicesManagerService$TextServicesMonitor;-><init>(Lcom/android/server/TextServicesManagerService;)V @@ -4660,24 +7673,34 @@ PLcom/android/server/TextServicesManagerService$TextServicesMonitor;-><init>(Lco PLcom/android/server/TextServicesManagerService$TextServicesMonitor;->isChangingPackagesOfCurrentUser()Z PLcom/android/server/TextServicesManagerService$TextServicesMonitor;->onSomePackagesChanged()V PLcom/android/server/TextServicesManagerService$TextServicesSettings;-><init>(Landroid/content/ContentResolver;IZ)V +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getBoolean(Ljava/lang/String;Z)Z PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getCurrentUserId()I +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getInt(Ljava/lang/String;I)I PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getSelectedSpellChecker()Ljava/lang/String; +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getSelectedSpellCheckerSubtype(I)I PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->isSpellCheckerEnabled()Z PLcom/android/server/TextServicesManagerService$TextServicesSettings;->setCurrentProfileIds([I)V PLcom/android/server/TextServicesManagerService$TextServicesSettings;->switchCurrentUser(IZ)V PLcom/android/server/TextServicesManagerService;->-get1(Lcom/android/server/TextServicesManagerService;)Landroid/content/Context; -PLcom/android/server/TextServicesManagerService;->-get2(Lcom/android/server/TextServicesManagerService;)Lcom/android/server/TextServicesManagerService$TextServicesSettings; -PLcom/android/server/TextServicesManagerService;->-get4(Lcom/android/server/TextServicesManagerService;)Ljava/util/ArrayList; -PLcom/android/server/TextServicesManagerService;->-get5(Lcom/android/server/TextServicesManagerService;)Ljava/util/HashMap; +PLcom/android/server/TextServicesManagerService;->-get2(Lcom/android/server/TextServicesManagerService;)Ljava/lang/Object; +PLcom/android/server/TextServicesManagerService;->-get3(Lcom/android/server/TextServicesManagerService;)Lcom/android/server/TextServicesManagerService$TextServicesSettings; +PLcom/android/server/TextServicesManagerService;->-get4(Lcom/android/server/TextServicesManagerService;)Ljava/util/HashMap; +PLcom/android/server/TextServicesManagerService;->-get5(Lcom/android/server/TextServicesManagerService;)Ljava/util/ArrayList; +PLcom/android/server/TextServicesManagerService;->-get6(Lcom/android/server/TextServicesManagerService;)Ljava/util/HashMap; PLcom/android/server/TextServicesManagerService;->-wrap1(Landroid/content/Context;Ljava/util/ArrayList;Ljava/util/HashMap;Lcom/android/server/TextServicesManagerService$TextServicesSettings;)V PLcom/android/server/TextServicesManagerService;-><init>(Landroid/content/Context;)V -PLcom/android/server/TextServicesManagerService;->buildSpellCheckerMapLocked(Landroid/content/Context;Ljava/util/ArrayList;Ljava/util/HashMap;Lcom/android/server/TextServicesManagerService$TextServicesSettings;)V -PLcom/android/server/TextServicesManagerService;->calledFromValidUser()Z +PLcom/android/server/TextServicesManagerService;->bindCurrentSpellCheckerService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z PLcom/android/server/TextServicesManagerService;->findAvailSpellCheckerLocked(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo; +PLcom/android/server/TextServicesManagerService;->finishSpellCheckerService(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V PLcom/android/server/TextServicesManagerService;->getCurrentSpellChecker(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo; PLcom/android/server/TextServicesManagerService;->getCurrentSpellCheckerWithoutVerification()Landroid/view/textservice/SpellCheckerInfo; +PLcom/android/server/TextServicesManagerService;->getSpellCheckerService(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V +PLcom/android/server/TextServicesManagerService;->isSpellCheckerEnabled()Z +PLcom/android/server/TextServicesManagerService;->isSpellCheckerEnabledLocked()Z PLcom/android/server/TextServicesManagerService;->onUnlockUser(I)V PLcom/android/server/TextServicesManagerService;->resetInternalState(I)V +PLcom/android/server/TextServicesManagerService;->startSpellCheckerServiceInnerLocked(Landroid/view/textservice/SpellCheckerInfo;)Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup; PLcom/android/server/TextServicesManagerService;->systemRunning()V PLcom/android/server/TextServicesManagerService;->unbindServiceLocked()V PLcom/android/server/TextServicesManagerService;->updateCurrentProfileIds()V @@ -4685,29 +7708,28 @@ PLcom/android/server/ThreadPriorityBooster$1;->initialValue()Lcom/android/server PLcom/android/server/ThreadPriorityBooster$1;->initialValue()Ljava/lang/Object; PLcom/android/server/ThreadPriorityBooster$PriorityState;-><init>()V PLcom/android/server/ThreadPriorityBooster$PriorityState;-><init>(Lcom/android/server/ThreadPriorityBooster$PriorityState;)V -PLcom/android/server/ThreadPriorityBooster;->setBoostToPriority(I)V PLcom/android/server/UiModeManagerService$1;-><init>(Lcom/android/server/UiModeManagerService;)V PLcom/android/server/UiModeManagerService$2;-><init>(Lcom/android/server/UiModeManagerService;)V PLcom/android/server/UiModeManagerService$3;-><init>(Lcom/android/server/UiModeManagerService;)V -PLcom/android/server/UiModeManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/UiModeManagerService$4;-><init>(Lcom/android/server/UiModeManagerService;)V PLcom/android/server/UiModeManagerService$5;-><init>(Lcom/android/server/UiModeManagerService;)V PLcom/android/server/UiModeManagerService$6;-><init>(Lcom/android/server/UiModeManagerService;)V PLcom/android/server/UiModeManagerService$6;->getCurrentModeType()I PLcom/android/server/UiModeManagerService;->-set0(Lcom/android/server/UiModeManagerService;Z)Z PLcom/android/server/UiModeManagerService;-><init>(Landroid/content/Context;)V -PLcom/android/server/UiModeManagerService;->isDeskDockState(I)Z PLcom/android/server/UiModeManagerService;->lambda$-com_android_server_UiModeManagerService_9177()V PLcom/android/server/UiModeManagerService;->onBootPhase(I)V PLcom/android/server/UiModeManagerService;->onStart()V PLcom/android/server/UiModeManagerService;->registerVrStateListener()V -PLcom/android/server/UiModeManagerService;->sendConfigurationAndStartDreamOrDockAppLocked(Ljava/lang/String;)V PLcom/android/server/UiModeManagerService;->sendConfigurationLocked()V PLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked()V -PLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V -PLcom/android/server/UiModeManagerService;->updateLocked(II)V PLcom/android/server/UpdateLockService$LockWatcher;-><init>(Lcom/android/server/UpdateLockService;Landroid/os/Handler;Ljava/lang/String;)V +PLcom/android/server/UpdateLockService$LockWatcher;->acquired()V +PLcom/android/server/UpdateLockService$LockWatcher;->released()V PLcom/android/server/UpdateLockService;-><init>(Landroid/content/Context;)V +PLcom/android/server/UpdateLockService;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/UpdateLockService;->makeTag(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/UpdateLockService;->releaseUpdateLock(Landroid/os/IBinder;)V PLcom/android/server/UpdateLockService;->sendLockChangedBroadcast(Z)V PLcom/android/server/VibratorService$1;-><init>(Lcom/android/server/VibratorService;)V PLcom/android/server/VibratorService$1;->run()V @@ -4716,61 +7738,31 @@ PLcom/android/server/VibratorService$3;-><init>(Lcom/android/server/VibratorServ PLcom/android/server/VibratorService$4;-><init>(Lcom/android/server/VibratorService;)V PLcom/android/server/VibratorService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/VibratorService$SettingsObserver;-><init>(Lcom/android/server/VibratorService;Landroid/os/Handler;)V -PLcom/android/server/VibratorService$VibrateThread;-><init>(Lcom/android/server/VibratorService;Landroid/os/VibrationEffect$Waveform;II)V -PLcom/android/server/VibratorService$VibrateThread;->cancel()V -PLcom/android/server/VibratorService$VibrateThread;->delayLocked(J)J -PLcom/android/server/VibratorService$VibrateThread;->getTotalOnDuration([J[III)J -PLcom/android/server/VibratorService$VibrateThread;->playWaveform()Z -PLcom/android/server/VibratorService$VibrateThread;->run()V -PLcom/android/server/VibratorService$Vibration;->-get0(Lcom/android/server/VibratorService$Vibration;)Landroid/os/VibrationEffect; PLcom/android/server/VibratorService$Vibration;->-get1(Lcom/android/server/VibratorService$Vibration;)Ljava/lang/String; PLcom/android/server/VibratorService$Vibration;->-get2(Lcom/android/server/VibratorService$Vibration;)J -PLcom/android/server/VibratorService$Vibration;->-get4(Lcom/android/server/VibratorService$Vibration;)I PLcom/android/server/VibratorService$Vibration;->-get5(Lcom/android/server/VibratorService$Vibration;)I PLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;IILjava/lang/String;)V PLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;IILjava/lang/String;Lcom/android/server/VibratorService$Vibration;)V PLcom/android/server/VibratorService$VibrationInfo;-><init>(JLandroid/os/VibrationEffect;IILjava/lang/String;)V -PLcom/android/server/VibratorService;->-get2(Lcom/android/server/VibratorService;)Lcom/android/server/VibratorService$VibrateThread; -PLcom/android/server/VibratorService;->-get3(Lcom/android/server/VibratorService;)Landroid/os/WorkSource; -PLcom/android/server/VibratorService;->-get4(Lcom/android/server/VibratorService;)Landroid/os/PowerManager$WakeLock; -PLcom/android/server/VibratorService;->-wrap1(Lcom/android/server/VibratorService;JIII)V PLcom/android/server/VibratorService;->-wrap3(Lcom/android/server/VibratorService;)V PLcom/android/server/VibratorService;-><init>(Landroid/content/Context;)V -PLcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V PLcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V PLcom/android/server/VibratorService;->createEffect([J)Landroid/os/VibrationEffect; -PLcom/android/server/VibratorService;->doCancelVibrateLocked()V PLcom/android/server/VibratorService;->doVibratorExists()Z -PLcom/android/server/VibratorService;->doVibratorOff()V -PLcom/android/server/VibratorService;->doVibratorOn(JIII)V -PLcom/android/server/VibratorService;->doVibratorPrebakedEffectLocked(Lcom/android/server/VibratorService$Vibration;)J -PLcom/android/server/VibratorService;->doVibratorSetAmplitude(I)V -PLcom/android/server/VibratorService;->getAppOpMode(Lcom/android/server/VibratorService$Vibration;)I PLcom/android/server/VibratorService;->getLongIntArray(Landroid/content/res/Resources;I)[J PLcom/android/server/VibratorService;->hasVibrator()Z PLcom/android/server/VibratorService;->isAllowedToVibrate(Lcom/android/server/VibratorService$Vibration;)Z PLcom/android/server/VibratorService;->noteVibratorOffLocked()V PLcom/android/server/VibratorService;->noteVibratorOnLocked(IJ)V PLcom/android/server/VibratorService;->onVibrationFinished()V -PLcom/android/server/VibratorService;->reportFinishVibrationLocked()V -PLcom/android/server/VibratorService;->startVibrationInnerLocked(Lcom/android/server/VibratorService$Vibration;)V -PLcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V PLcom/android/server/VibratorService;->systemReady()V PLcom/android/server/VibratorService;->updateInputDeviceVibratorsLocked()Z PLcom/android/server/VibratorService;->updateLowPowerModeLocked()Z PLcom/android/server/VibratorService;->updateVibrators()V -PLcom/android/server/VibratorService;->verifyIncomingUid(I)V PLcom/android/server/VibratorService;->verifyVibrationEffect(Landroid/os/VibrationEffect;)Z -PLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILandroid/os/IBinder;)V -PLcom/android/server/Watchdog$BinderThreadMonitor;->monitor()V -PLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I -PLcom/android/server/Watchdog$HandlerChecker;->run()V -PLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked()V PLcom/android/server/Watchdog$RebootRequestReceiver;-><init>(Lcom/android/server/Watchdog;)V -PLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I PLcom/android/server/Watchdog;->init(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/Watchdog;->processStarted(Ljava/lang/String;I)V -PLcom/android/server/Watchdog;->run()V PLcom/android/server/WiredAccessoryManager$1;-><init>(Lcom/android/server/WiredAccessoryManager;Landroid/os/Looper;Landroid/os/Handler$Callback;Z)V PLcom/android/server/WiredAccessoryManager$1;->handleMessage(Landroid/os/Message;)V PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;-><init>(Lcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;Ljava/lang/String;III)V @@ -4799,6 +7791,8 @@ PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;->$m$2(L PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;-><init>(BI)V PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;->accept(Ljava/lang/Object;)V PLcom/android/server/accessibility/AccessibilityManagerService$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/accessibility/AccessibilityManagerService$1;->onPackageUpdateFinished(Ljava/lang/String;I)V PLcom/android/server/accessibility/AccessibilityManagerService$1;->onSomePackagesChanged()V PLcom/android/server/accessibility/AccessibilityManagerService$2;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V PLcom/android/server/accessibility/AccessibilityManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V @@ -4807,36 +7801,79 @@ PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConn PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;->unlinkToDeath()V PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Handler;)V PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->register(Landroid/content/ContentResolver;)V +PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->clearAccessibilityFocusNotLocked(I)V +PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->getAccessibilityFocusNotLocked(I)Landroid/view/accessibility/AccessibilityNodeInfo; PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Looper;)V PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->getUserClientsForId(I)Landroid/os/RemoteCallbackList; PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->lambda$-com_android_server_accessibility_AccessibilityManagerService$MainHandler_113337(ILandroid/view/accessibility/IAccessibilityManagerClient;)V +PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->lambda$-com_android_server_accessibility_AccessibilityManagerService$MainHandler_113532(ILandroid/view/accessibility/IAccessibilityManagerClient;)V +PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->notifyClientsOfServicesStateChange(Landroid/os/RemoteCallbackList;)V PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->sendStateToClients(ILandroid/os/RemoteCallbackList;)V -PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap3(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)I -PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap4(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)Landroid/view/WindowInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap4(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)I +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap5(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canCaptureFingerprintGestures(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canControlMagnification(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canRetrieveWindowsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->clearWindowsLocked()V PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->findWindowInfoById(I)Landroid/view/WindowInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->getFocusedWindowId()I PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->hasPermission(Ljava/lang/String;)Z -PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isCallerInteractingAcrossUsers(I)Z -PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->notifyWindowsChanged()V -PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I -PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveProfileParentLocked(I)I +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->setAccessibilityFocusedWindowLocked(I)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/os/Looper;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service$2;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service$2;->run()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service$InvocationHandler;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/os/Looper;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;ILandroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->bindLocked()Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->binderDied()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->canRetrieveInteractiveWindowsLocked()Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->findFocus(IJIILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->getWindow(I)Landroid/view/accessibility/AccessibilityWindowInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->isCapturingFingerprintGestures()Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->isConnectedLocked()Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onAdded()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onRemoved()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->resetLocked()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->resolveAccessibilityWindowIdForFindFocusLocked(II)I +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->setDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V PLcom/android/server/accessibility/AccessibilityManagerService$UserState$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get0(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Landroid/os/IBinder$DeathRecipient; PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get1(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Lcom/android/server/accessibility/AccessibilityManagerService$Service; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get2(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Landroid/accessibilityservice/IAccessibilityServiceClient; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set0(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)I +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set1(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Lcom/android/server/accessibility/AccessibilityManagerService$Service; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set2(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Landroid/accessibilityservice/IAccessibilityServiceClient;)Landroid/accessibilityservice/IAccessibilityServiceClient; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set3(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Landroid/os/IBinder;)Landroid/os/IBinder; PLcom/android/server/accessibility/AccessibilityManagerService$UserState;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;I)V +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->destroyUiAutomationService()V PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->getClientState()I -PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isHandlingAccessibilityEvents()Z PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isUiAutomationSuppressingOtherServices()Z PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->onSwitchToAnotherUser()V +PLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V PLcom/android/server/accessibility/AccessibilityManagerService;->-get0()I PLcom/android/server/accessibility/AccessibilityManagerService;->-get1(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/content/Context; -PLcom/android/server/accessibility/AccessibilityManagerService;->-get19(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback; -PLcom/android/server/accessibility/AccessibilityManagerService;->-get2(Lcom/android/server/accessibility/AccessibilityManagerService;)I +PLcom/android/server/accessibility/AccessibilityManagerService;->-get10(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get13(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/os/PowerManager; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get19(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/view/WindowManagerInternal; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get21()Landroid/content/ComponentName; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get22()I PLcom/android/server/accessibility/AccessibilityManagerService;->-get4(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/os/RemoteCallbackList; -PLcom/android/server/accessibility/AccessibilityManagerService;->-get8(Lcom/android/server/accessibility/AccessibilityManagerService;)Ljava/lang/Object; -PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap12(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +PLcom/android/server/accessibility/AccessibilityManagerService;->-set0(I)I +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap11(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge; PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap13(Lcom/android/server/accessibility/AccessibilityManagerService;I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap14(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/KeyEventDispatcher; +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap16(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap18(Lcom/android/server/accessibility/AccessibilityManagerService;)V PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap20(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap23(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap25(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap28(Lcom/android/server/accessibility/AccessibilityManagerService;I)V PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap29(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap30(Lcom/android/server/accessibility/AccessibilityManagerService;I)V @@ -4844,15 +7881,18 @@ PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap33(Lcom/an PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap34(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap4(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;-><init>(Landroid/content/Context;)V -PLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J +PLcom/android/server/accessibility/AccessibilityManagerService;->addServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->broadcastToClients(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Ljava/util/function/Consumer;)V -PLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserStateLocked()Lcom/android/server/accessibility/AccessibilityManagerService$UserState; -PLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List; +PLcom/android/server/accessibility/AccessibilityManagerService;->canRequestAndRequestsTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->ensureWindowsAvailableTimed()V PLcom/android/server/accessibility/AccessibilityManagerService;->getInstalledAccessibilityServiceList(I)Ljava/util/List; -PLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState; -PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61351(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)V -PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61405(ILandroid/view/accessibility/IAccessibilityManagerClient;)V -PLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->getInteractionBridge()Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge; +PLcom/android/server/accessibility/AccessibilityManagerService;->getKeyEventDispatcher()Lcom/android/server/accessibility/KeyEventDispatcher; +PLcom/android/server/accessibility/AccessibilityManagerService;->getMagnificationController()Lcom/android/server/accessibility/MagnificationController; +PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61763(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)V +PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61817(ILandroid/view/accessibility/IAccessibilityManagerClient;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChanged(Z)V +PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChangedLocked(Z)V PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityShortcutSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;->readAutoclickEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z @@ -4861,11 +7901,14 @@ PLcom/android/server/accessibility/AccessibilityManagerService;->readComponentNa PLcom/android/server/accessibility/AccessibilityManagerService;->readConfigurationForUserStateLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;->readEnabledAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;->readHighTextContrastEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z -PLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationEnabledSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationGrantedAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/AccessibilityManagerService;->registerBroadcastReceivers()V +PLcom/android/server/accessibility/AccessibilityManagerService;->registerUiTestAutomationService(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/accessibilityservice/AccessibilityServiceInfo;I)V +PLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->removeServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleNotifyClientsOfServicesStateChange(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateClientsIfNeededLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateInputFilter(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V @@ -4873,20 +7916,18 @@ PLcom/android/server/accessibility/AccessibilityManagerService;->setPictureInPic PLcom/android/server/accessibility/AccessibilityManagerService;->switchUser(I)V PLcom/android/server/accessibility/AccessibilityManagerService;->unbindAllServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->unlockUser(I)V -PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargets(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->unregisterUiTestAutomationService(Landroid/accessibilityservice/IAccessibilityServiceClient;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityEnabledSetting(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityFocusBehaviorLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V -PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateDisplayDaltonizerLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateDisplayInversionLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateFilterKeyEventsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateInputFilter(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V -PLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updatePerformGesturesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateRelevantEventsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V -PLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateSoftKeyboardShowModeLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V PLcom/android/server/accessibility/AccessibilityManagerService;->updateWindowsForAccessibilityCallbackLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V @@ -4894,30 +7935,39 @@ PLcom/android/server/accessibility/AccessibilityManagerService;->userHasListenin PLcom/android/server/accessibility/AccessibilityManagerService;->userHasMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z PLcom/android/server/accessibility/DisplayAdjustmentUtils;->applyDaltonizerSetting(Landroid/content/Context;I)V PLcom/android/server/accessibility/DisplayAdjustmentUtils;->applyInversionSetting(Landroid/content/Context;I)V +PLcom/android/server/accessibility/KeyEventDispatcher;-><init>(Landroid/os/Handler;ILjava/lang/Object;Landroid/os/PowerManager;)V +PLcom/android/server/accessibility/KeyEventDispatcher;->flush(Lcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;)V +PLcom/android/server/accessibility/MagnificationController$1;-><init>(Lcom/android/server/accessibility/MagnificationController;)V +PLcom/android/server/accessibility/MagnificationController$ScreenStateObserver;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/MagnificationController;)V +PLcom/android/server/accessibility/MagnificationController$SettingsBridge;-><init>(Landroid/content/ContentResolver;)V +PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;-><init>(Landroid/content/Context;Ljava/lang/Object;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;)V +PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;-><init>(Landroid/content/Context;Ljava/lang/Object;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;Lcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;)V +PLcom/android/server/accessibility/MagnificationController;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;)V +PLcom/android/server/accessibility/MagnificationController;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;Landroid/os/Handler;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;Lcom/android/server/accessibility/MagnificationController$SettingsBridge;)V +PLcom/android/server/accessibility/MagnificationController;->getIdOfLastServiceToMagnify()I +PLcom/android/server/accessibility/MagnificationController;->isMagnifying()Z +PLcom/android/server/accessibility/MagnificationController;->setUserId(I)V +PLcom/android/server/accessibility/MagnificationController;->unregister()V +PLcom/android/server/accessibility/MagnificationController;->unregisterInternalLocked()V PLcom/android/server/accounts/-$Lambda$JwXVQhqSYlVkCeKB5Nx7U6RsZlU;-><init>(Ljava/lang/Object;)V PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>()V PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>(Lcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;)V PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/accounts/AuthenticatorDescription; PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/Object; PLcom/android/server/accounts/AccountAuthenticatorCache;-><init>(Landroid/content/Context;)V -PLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo; -PLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/accounts/AuthenticatorDescription; PLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object; PLcom/android/server/accounts/AccountManagerService$1;-><init>(Lcom/android/server/accounts/AccountManagerService;)V +PLcom/android/server/accounts/AccountManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/accounts/AccountManagerService$2;-><init>(Lcom/android/server/accounts/AccountManagerService;)V -PLcom/android/server/accounts/AccountManagerService$2;->onPackageAdded(Ljava/lang/String;I)V PLcom/android/server/accounts/AccountManagerService$3;-><init>(Lcom/android/server/accounts/AccountManagerService;)V -PLcom/android/server/accounts/AccountManagerService$7;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZIZLjava/lang/String;[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V -PLcom/android/server/accounts/AccountManagerService$7;->onResult(Landroid/os/Bundle;)V -PLcom/android/server/accounts/AccountManagerService$7;->run()V +PLcom/android/server/accounts/AccountManagerService$3;->onPackageUpdateFinished(Ljava/lang/String;I)V +PLcom/android/server/accounts/AccountManagerService$4;-><init>(Lcom/android/server/accounts/AccountManagerService;)V +PLcom/android/server/accounts/AccountManagerService$8;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZIZLjava/lang/String;[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V +PLcom/android/server/accounts/AccountManagerService$8;->run()V PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;)V PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;)V PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->addOnAppPermissionChangeListener(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;)V PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/String;Z)V -PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V -PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V -PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V -PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V PLcom/android/server/accounts/AccountManagerService$Injector;-><init>(Landroid/content/Context;)V PLcom/android/server/accounts/AccountManagerService$Injector;->addLocalService(Landroid/accounts/AccountManagerInternal;)V PLcom/android/server/accounts/AccountManagerService$Injector;->getAccountAuthenticatorCache()Lcom/android/server/accounts/IAccountAuthenticatorCache; @@ -4933,101 +7983,57 @@ PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onUnlockUser(I)V PLcom/android/server/accounts/AccountManagerService$MessageHandler;-><init>(Lcom/android/server/accounts/AccountManagerService;Landroid/os/Looper;)V PLcom/android/server/accounts/AccountManagerService$NotificationId;->-get0(Lcom/android/server/accounts/AccountManagerService$NotificationId;)I PLcom/android/server/accounts/AccountManagerService$NotificationId;-><init>(Ljava/lang/String;I)V -PLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;Z)V -PLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V -PLcom/android/server/accounts/AccountManagerService$Session;->bind()V -PLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z -PLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V -PLcom/android/server/accounts/AccountManagerService$Session;->close()V -PLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse; -PLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V -PLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V -PLcom/android/server/accounts/AccountManagerService$Session;->unbind()V PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;)V -PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->onResult(Landroid/os/Bundle;)V PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->run()V PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get0(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Lcom/android/server/accounts/TokenCache; PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get1(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; -PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get10(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get2(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap; PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get4(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get6(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap; -PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get8(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; -PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get9(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-set0(Lcom/android/server/accounts/AccountManagerService$UserAccounts;I)I PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-set1(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/database/sqlite/SQLiteStatement;)Landroid/database/sqlite/SQLiteStatement; PLcom/android/server/accounts/AccountManagerService$UserAccounts;-><init>(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)V PLcom/android/server/accounts/AccountManagerService;->-get1(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList; PLcom/android/server/accounts/AccountManagerService;->-get2(Lcom/android/server/accounts/AccountManagerService;)Lcom/android/server/accounts/IAccountAuthenticatorCache; -PLcom/android/server/accounts/AccountManagerService;->-get5(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/LinkedHashMap; PLcom/android/server/accounts/AccountManagerService;->-wrap11(Lcom/android/server/accounts/AccountManagerService;IZ)V PLcom/android/server/accounts/AccountManagerService;->-wrap13(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/os/UserHandle;)V PLcom/android/server/accounts/AccountManagerService;->-wrap21(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V -PLcom/android/server/accounts/AccountManagerService;->-wrap4(Lcom/android/server/accounts/AccountManagerService;I)Z PLcom/android/server/accounts/AccountManagerService;->-wrap9(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId; PLcom/android/server/accounts/AccountManagerService;-><init>(Lcom/android/server/accounts/AccountManagerService$Injector;)V -PLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z -PLcom/android/server/accounts/AccountManagerService;->accountTypeManagesContacts(Ljava/lang/String;I)Z -PLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;)[B PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(IZ)V PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;ILjava/lang/String;Z)V PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;IZ)V PLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/os/UserHandle;)V -PLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Landroid/os/UserHandle;)V PLcom/android/server/accounts/AccountManagerService;->checkGetAccountsPermission(Ljava/lang/String;II)Z PLcom/android/server/accounts/AccountManagerService;->checkReadAccountsPermitted(ILjava/lang/String;ILjava/lang/String;)V PLcom/android/server/accounts/AccountManagerService;->checkReadContactsPermission(Ljava/lang/String;II)Z -PLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map; -PLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I -PLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account; -PLcom/android/server/accounts/AccountManagerService;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +PLcom/android/server/accounts/AccountManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->dumpUser(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V PLcom/android/server/accounts/AccountManagerService;->getAccounts([I)[Landroid/accounts/AccountAndUser; -PLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account; -PLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; PLcom/android/server/accounts/AccountManagerService;->getAllAccounts()[Landroid/accounts/AccountAndUser; -PLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypeAndUIDForUser(Lcom/android/server/accounts/IAccountAuthenticatorCache;I)Ljava/util/HashMap; -PLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String; -PLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription; PLcom/android/server/accounts/AccountManagerService;->getPassword(Landroid/accounts/Account;)Ljava/lang/String; PLcom/android/server/accounts/AccountManagerService;->getRunningAccounts()[Landroid/accounts/AccountAndUser; -PLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId; PLcom/android/server/accounts/AccountManagerService;->getSingleton()Lcom/android/server/accounts/AccountManagerService; -PLcom/android/server/accounts/AccountManagerService;->getTypesManagedByCaller(II)Ljava/util/List; -PLcom/android/server/accounts/AccountManagerService;->getTypesVisibleToCaller(IILjava/lang/String;)Ljava/util/List; -PLcom/android/server/accounts/AccountManagerService;->getUidsOfInstalledOrUpdatedPackagesAsUser(I)Landroid/util/SparseBooleanArray; -PLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts; -PLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager; -PLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;I)Z -PLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z PLcom/android/server/accounts/AccountManagerService;->hasExplicitlyGrantedPermission(Landroid/accounts/Account;Ljava/lang/String;I)Z -PLcom/android/server/accounts/AccountManagerService;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/accounts/AccountManagerService;->initializeDebugDbSizeAndCompileSqlStatementForLogging(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V PLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; -PLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z PLcom/android/server/accounts/AccountManagerService;->isAccountVisibleToCaller(Ljava/lang/String;IILjava/lang/String;)Z -PLcom/android/server/accounts/AccountManagerService;->isLocalUnlockedUser(I)Z -PLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z -PLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z -PLcom/android/server/accounts/AccountManagerService;->onAccountAccessed(Ljava/lang/String;)V -PLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +PLcom/android/server/accounts/AccountManagerService;->isCrossUser(II)Z +PLcom/android/server/accounts/AccountManagerService;->onResult(Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;)V PLcom/android/server/accounts/AccountManagerService;->onUnlockUser(I)V -PLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z PLcom/android/server/accounts/AccountManagerService;->purgeOldGrants(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V -PLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/accounts/AccountManagerService;->readCachedTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String; PLcom/android/server/accounts/AccountManagerService;->readPasswordInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Ljava/lang/String; -PLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V PLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z PLcom/android/server/accounts/AccountManagerService;->saveCachedToken(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V +PLcom/android/server/accounts/AccountManagerService;->scanArgs([Ljava/lang/String;Ljava/lang/String;)Z PLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/accounts/AccountManagerService;->syncDeCeAccountsLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V +PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V PLcom/android/server/accounts/AccountManagerService;->validateAccounts(I)V PLcom/android/server/accounts/AccountManagerService;->validateAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Z)V PLcom/android/server/accounts/AccountManagerService;->writeAuthTokenIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V @@ -5035,7 +8041,6 @@ PLcom/android/server/accounts/AccountManagerService;->writeUserDataIntoCacheLock PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;-><init>(Landroid/content/Context;Ljava/lang/String;)V PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->create(Landroid/content/Context;Ljava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb$CeDatabaseHelper; PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V -PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-get0(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)Z PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-set0(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Z)Z PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;)V PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)V @@ -5050,6 +8055,7 @@ PLcom/android/server/accounts/AccountsDb;->compileSqlStatementForLogging()Landro PLcom/android/server/accounts/AccountsDb;->create(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb; PLcom/android/server/accounts/AccountsDb;->deleteAuthToken(Ljava/lang/String;)Z PLcom/android/server/accounts/AccountsDb;->deleteAuthtokensByAccountIdAndType(JLjava/lang/String;)Z +PLcom/android/server/accounts/AccountsDb;->dumpDeAccountsTable(Ljava/io/PrintWriter;)V PLcom/android/server/accounts/AccountsDb;->endTransaction()V PLcom/android/server/accounts/AccountsDb;->findAccountPasswordByNameAndType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/accounts/AccountsDb;->findAllDeAccounts()Ljava/util/Map; @@ -5059,16 +8065,14 @@ PLcom/android/server/accounts/AccountsDb;->findAuthTokensByAccount(Landroid/acco PLcom/android/server/accounts/AccountsDb;->findAuthtokenForAllAccounts(Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; PLcom/android/server/accounts/AccountsDb;->findCeAccountsNotInDe()Ljava/util/List; PLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J -PLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J PLcom/android/server/accounts/AccountsDb;->findMatchingGrantsCountAnyToken(ILandroid/accounts/Account;)J PLcom/android/server/accounts/AccountsDb;->findMetaAuthUid()Ljava/util/Map; -PLcom/android/server/accounts/AccountsDb;->findUserExtrasForAccount(Landroid/accounts/Account;)Ljava/util/Map; PLcom/android/server/accounts/AccountsDb;->insertAuthToken(JLjava/lang/String;Ljava/lang/String;)J -PLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z +PLcom/android/server/accounts/AccountsDb;->insertExtra(JLjava/lang/String;Ljava/lang/String;)J PLcom/android/server/accounts/AccountsDb;->setTransactionSuccessful()V PLcom/android/server/accounts/AccountsDb;->updateExtra(JLjava/lang/String;)Z PLcom/android/server/accounts/TokenCache$Key;-><init>(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)V -PLcom/android/server/accounts/TokenCache$Key;->hashCode()I +PLcom/android/server/accounts/TokenCache$Key;->equals(Ljava/lang/Object;)Z PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;-><init>(Lcom/android/server/accounts/TokenCache$TokenLruCache;)V PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->add(Lcom/android/server/accounts/TokenCache$Key;)V PLcom/android/server/accounts/TokenCache$TokenLruCache;-><init>()V @@ -5078,12 +8082,9 @@ PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Lcom/android/ser PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I PLcom/android/server/accounts/TokenCache$Value;-><init>(Ljava/lang/String;J)V PLcom/android/server/accounts/TokenCache;-><init>()V -PLcom/android/server/accounts/TokenCache;->get(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String; PLcom/android/server/accounts/TokenCache;->put(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BJ)V PLcom/android/server/accounts/TokenCache;->remove(Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->$m$1()V -PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;-><init>(BIIIIIIIILjava/lang/Object;)V -PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->run()V +PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->$m$0()V PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$0(Landroid/app/ITaskStackListener;Landroid/os/Message;)V PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$1(Landroid/app/ITaskStackListener;Landroid/os/Message;)V PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$10(Landroid/app/ITaskStackListener;Landroid/os/Message;)V @@ -5092,366 +8093,217 @@ PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$12(Landroid/ap PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$13(Landroid/app/ITaskStackListener;Landroid/os/Message;)V PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$8(Landroid/app/ITaskStackListener;Landroid/os/Message;)V PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$9(Landroid/app/ITaskStackListener;Landroid/os/Message;)V -PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V -PLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->$m$0(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z PLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;-><init>(B)V -PLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +PLcom/android/server/am/ActiveInstrumentation;-><init>(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActiveInstrumentation;->removeProcess(Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActiveServices$ActiveForegroundApp;-><init>()V -PLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V PLcom/android/server/am/ActiveServices$ServiceMap;-><init>(Lcom/android/server/am/ActiveServices;Landroid/os/Looper;I)V PLcom/android/server/am/ActiveServices$ServiceMap;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V -PLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;)V -PLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$ServiceRestarter;)V PLcom/android/server/am/ActiveServices$ServiceRestarter;->run()V -PLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V PLcom/android/server/am/ActiveServices;->-get0()Ljava/lang/String; -PLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z -PLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZZ)Z -PLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)V -PLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V -PLcom/android/server/am/ActiveServices;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;Landroid/content/ComponentName;Landroid/content/Intent;)V -PLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V -PLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZZLandroid/util/ArrayMap;)Z PLcom/android/server/am/ActiveServices;->decActiveForegroundAppLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ServiceRecord;)V -PLcom/android/server/am/ActiveServices;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Lcom/android/server/am/ServiceRecord; -PLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V +PLcom/android/server/am/ActiveServices;->foregroundAppShownEnoughLocked(Lcom/android/server/am/ActiveServices$ActiveForegroundApp;J)Z PLcom/android/server/am/ActiveServices;->foregroundServiceProcStateChangedLocked(Lcom/android/server/am/UidRecord;)V -PLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List; -PLcom/android/server/am/ActiveServices;->getServiceByNameLocked(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord; PLcom/android/server/am/ActiveServices;->getServicesLocked(I)Landroid/util/ArrayMap; -PLcom/android/server/am/ActiveServices;->hasBackgroundServicesLocked(I)Z -PLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z -PLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V -PLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo; -PLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V -PLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZ)Z -PLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;Z)V PLcom/android/server/am/ActiveServices;->requestUpdateActiveForegroundAppsLocked(Lcom/android/server/am/ActiveServices$ServiceMap;J)V -PLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z +PLcom/android/server/am/ActiveServices;->serviceProcessGoneLocked(Lcom/android/server/am/ServiceRecord;)V +PLcom/android/server/am/ActiveServices;->serviceTimeout(Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;I)V PLcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;I)V -PLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V -PLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I -PLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V -PLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V -PLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z -PLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V -PLcom/android/server/am/ActiveServices;->updateScreenStateLocked(Z)V -PLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActiveServices;->updateWhitelistManagerLocked(Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActivityManagerConstants;->start(Landroid/content/ContentResolver;)V PLcom/android/server/am/ActivityManagerConstants;->updateConstants()V PLcom/android/server/am/ActivityManagerService$10;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService$10;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +PLcom/android/server/am/ActivityManagerService$11;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;ILandroid/os/IBinder;Ljava/lang/String;)V PLcom/android/server/am/ActivityManagerService$18;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService$18;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V PLcom/android/server/am/ActivityManagerService$19;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/StringBuilder;Landroid/os/DropBoxManager;Ljava/lang/String;)V PLcom/android/server/am/ActivityManagerService$19;->run()V -PLcom/android/server/am/ActivityManagerService$1;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z -PLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Landroid/content/IntentFilter; -PLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Lcom/android/server/am/BroadcastFilter; -PLcom/android/server/am/ActivityManagerService$1;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; -PLcom/android/server/am/ActivityManagerService$1;->newResult(Lcom/android/server/am/BroadcastFilter;II)Lcom/android/server/am/BroadcastFilter; PLcom/android/server/am/ActivityManagerService$20;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Landroid/os/DropBoxManager;Ljava/lang/String;)V -PLcom/android/server/am/ActivityManagerService$20;->run()V PLcom/android/server/am/ActivityManagerService$21;-><init>(Lcom/android/server/am/ActivityManagerService;IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V PLcom/android/server/am/ActivityManagerService$21;->run()V PLcom/android/server/am/ActivityManagerService$22;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Landroid/os/DropBoxManager;)V PLcom/android/server/am/ActivityManagerService$22;->run()V -PLcom/android/server/am/ActivityManagerService$2;->lambda$-com_android_server_am_ActivityManagerService$2_103032(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +PLcom/android/server/am/ActivityManagerService$24;-><init>()V +PLcom/android/server/am/ActivityManagerService$28;-><init>(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$28;->run()V PLcom/android/server/am/ActivityManagerService$8;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService$9;-><init>(Lcom/android/server/am/ActivityManagerService;)V -PLcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V -PLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V PLcom/android/server/am/ActivityManagerService$AppTaskImpl;-><init>(Lcom/android/server/am/ActivityManagerService;II)V PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->checkCaller()V -PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->setExcludeFromRecents(Z)V PLcom/android/server/am/ActivityManagerService$CpuBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService$DbBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService$FontScaleSettingObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V -PLcom/android/server/am/ActivityManagerService$GrantUri;-><init>(ILandroid/net/Uri;Z)V -PLcom/android/server/am/ActivityManagerService$GrantUri;->hashCode()I -PLcom/android/server/am/ActivityManagerService$GrantUri;->resolve(ILandroid/net/Uri;)Lcom/android/server/am/ActivityManagerService$GrantUri; PLcom/android/server/am/ActivityManagerService$GraphicsBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V -PLcom/android/server/am/ActivityManagerService$KillHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String; +PLcom/android/server/am/ActivityManagerService$ImportanceToken;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/os/IBinder;Ljava/lang/String;)V PLcom/android/server/am/ActivityManagerService$LocalService;->getUidProcessState(I)I PLcom/android/server/am/ActivityManagerService$LocalService;->isSystemReady()Z PLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionCancelled()V -PLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionFinished()V -PLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionStarting(Landroid/util/SparseIntArray;)V PLcom/android/server/am/ActivityManagerService$LocalService;->notifyDockedStackMinimizedChanged(Z)V PLcom/android/server/am/ActivityManagerService$LocalService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;)V PLcom/android/server/am/ActivityManagerService$LocalService;->notifyKeyguardTrustedChanged()V -PLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V PLcom/android/server/am/ActivityManagerService$LocalService;->setDeviceIdleWhitelist([I)V +PLcom/android/server/am/ActivityManagerService$LocalService;->setFocusedActivity(Landroid/os/IBinder;)V PLcom/android/server/am/ActivityManagerService$LocalService;->setHasOverlayUi(IZ)V PLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentWhitelistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;J)V PLcom/android/server/am/ActivityManagerService$LocalService;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)I PLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempWhitelist([IIZ)V -PLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/am/ActivityManagerService$MemBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService$PendingAssistExtras;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;Landroid/content/Intent;Ljava/lang/String;Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;I)V +PLcom/android/server/am/ActivityManagerService$PendingTempWhitelist;-><init>(IJLjava/lang/String;)V PLcom/android/server/am/ActivityManagerService$PermissionController;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService$PermissionController;->checkPermission(Ljava/lang/String;II)Z +PLcom/android/server/am/ActivityManagerService$PermissionController;->getPackagesForUid(I)[Ljava/lang/String; PLcom/android/server/am/ActivityManagerService$ProcessChangeItem;-><init>()V PLcom/android/server/am/ActivityManagerService$ProcessInfoService;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService$ProcessInfoService;->getProcessStatesAndOomScoresFromPids([I[I[I)V -PLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/am/ActivityManagerService$UidObserverRegistration;-><init>(ILjava/lang/String;II)V PLcom/android/server/am/ActivityManagerService;->-get0()Ljava/lang/String; PLcom/android/server/am/ActivityManagerService;->-get2(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/KeyguardController; -PLcom/android/server/am/ActivityManagerService;->-get5(Lcom/android/server/am/ActivityManagerService;)Ljava/lang/StringBuilder; PLcom/android/server/am/ActivityManagerService;->-get6(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/VrController; +PLcom/android/server/am/ActivityManagerService;->-set0(Lcom/android/server/am/ActivityManagerService;Z)Z PLcom/android/server/am/ActivityManagerService;->-wrap0(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/TaskRecord;)Landroid/app/ActivityManager$RecentTaskInfo; -PLcom/android/server/am/ActivityManagerService;->-wrap2(Lcom/android/server/am/ActivityManagerService;II)V PLcom/android/server/am/ActivityManagerService;->-wrap3(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/ActivityManagerService;->-wrap5(Lcom/android/server/am/ActivityManagerService;I)V PLcom/android/server/am/ActivityManagerService;->-wrap6(Lcom/android/server/am/ActivityManagerService;Z)V -PLcom/android/server/am/ActivityManagerService;->-wrap7(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActivityManagerService;->-wrap9(Lcom/android/server/am/ActivityManagerService;I)V +PLcom/android/server/am/ActivityManagerService;->acquireSleepToken(Ljava/lang/String;I)Landroid/app/ActivityManagerInternal$SleepToken; PLcom/android/server/am/ActivityManagerService;->activityDestroyed(Landroid/os/IBinder;)V -PLcom/android/server/am/ActivityManagerService;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V -PLcom/android/server/am/ActivityManagerService;->activityPaused(Landroid/os/IBinder;)V -PLcom/android/server/am/ActivityManagerService;->activityResumed(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityManagerService;->activityRelaunched(Landroid/os/IBinder;)V PLcom/android/server/am/ActivityManagerService;->activitySlept(Landroid/os/IBinder;)V -PLcom/android/server/am/ActivityManagerService;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZLjava/lang/String;)Lcom/android/server/am/ProcessRecord; -PLcom/android/server/am/ActivityManagerService;->addBackgroundCheckViolationLocked(Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V PLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V -PLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V -PLcom/android/server/am/ActivityManagerService;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V -PLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;Z)V -PLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLocked(ILjava/lang/String;I)I -PLcom/android/server/am/ActivityManagerService;->appServicesRestrictedInBackgroundLocked(ILjava/lang/String;I)I -PLcom/android/server/am/ActivityManagerService;->applyUpdateLockStateLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActivityManagerService;->applyUpdateVrModeLocked(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;)V -PLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V PLcom/android/server/am/ActivityManagerService;->batteryNeedsCpuUpdate()V -PLcom/android/server/am/ActivityManagerService;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I +PLcom/android/server/am/ActivityManagerService;->batteryPowerChanged(Z)V +PLcom/android/server/am/ActivityManagerService;->batterySendBroadcast(Landroid/content/Intent;)V PLcom/android/server/am/ActivityManagerService;->bootAnimationComplete()V -PLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZI)I -PLcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue; PLcom/android/server/am/ActivityManagerService;->buildAssistBundleLocked(Lcom/android/server/am/ActivityManagerService$PendingAssistExtras;Landroid/os/Bundle;)V PLcom/android/server/am/ActivityManagerService;->canClearIdentity(III)Z -PLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V PLcom/android/server/am/ActivityManagerService;->cancelIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Z)V -PLcom/android/server/am/ActivityManagerService;->cancelTaskThumbnailTransition(I)V -PLcom/android/server/am/ActivityManagerService;->cancelTaskWindowTransition(I)V -PLcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;)Z PLcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IIIILjava/lang/String;)Z PLcom/android/server/am/ActivityManagerService;->checkAuthorityGrants(ILandroid/content/pm/ProviderInfo;IZ)Z -PLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V -PLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked(Z)V -PLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;I)Lcom/android/server/am/ActivityManagerService$NeededUriGrants; -PLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;II)I -PLcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsInternalLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ActivityManagerService$GrantUri;IIZ)Z -PLcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ActivityManagerService$GrantUri;II)Z -PLcom/android/server/am/ActivityManagerService;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I PLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I PLcom/android/server/am/ActivityManagerService;->checkUriPermissionLocked(Lcom/android/server/am/ActivityManagerService$GrantUri;II)Z -PLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZIZ)Z -PLcom/android/server/am/ActivityManagerService;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z PLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageComponentsLocked(Ljava/lang/String;IZ[Ljava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageTasksLocked(Ljava/lang/String;Ljava/util/Set;I)V PLcom/android/server/am/ActivityManagerService;->closeSystemDialogs(Ljava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->closeSystemDialogsLocked(Ljava/lang/String;)V -PLcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo; -PLcom/android/server/am/ActivityManagerService;->dispatchProcessDied(II)V -PLcom/android/server/am/ActivityManagerService;->dispatchProcessesChanged()V -PLcom/android/server/am/ActivityManagerService;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActivityManagerService;->doStopUidLocked(ILcom/android/server/am/UidRecord;)V +PLcom/android/server/am/ActivityManagerService;->dumpHeap(Ljava/lang/String;IZZZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)Z +PLcom/android/server/am/ActivityManagerService;->dumpHeapFinished(Ljava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->enableScreenAfterBoot()V -PLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->enqueueAssistContext(ILandroid/content/Intent;Ljava/lang/String;Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZILandroid/os/Bundle;JI)Lcom/android/server/am/ActivityManagerService$PendingAssistExtras; -PLcom/android/server/am/ActivityManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/am/ActivityRecord;I)Z -PLcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V -PLcom/android/server/am/ActivityManagerService;->findOrCreateUriPermissionLocked(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/am/ActivityManagerService$GrantUri;)Lcom/android/server/am/UriPermission; -PLcom/android/server/am/ActivityManagerService;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z +PLcom/android/server/am/ActivityManagerService;->findProcessLocked(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/am/ProcessRecord; PLcom/android/server/am/ActivityManagerService;->finishBooting()V +PLcom/android/server/am/ActivityManagerService;->finishForceStopPackageLocked(Ljava/lang/String;I)V +PLcom/android/server/am/ActivityManagerService;->finishInstrumentation(Landroid/app/IApplicationThread;ILandroid/os/Bundle;)V +PLcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V PLcom/android/server/am/ActivityManagerService;->finishRunningVoiceLocked()V -PLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZILjava/lang/String;)Z -PLcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List; +PLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;ILjava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->getActivityDisplayId(Landroid/os/IBinder;)I -PLcom/android/server/am/ActivityManagerService;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle; PLcom/android/server/am/ActivityManagerService;->getActivityStackId(Landroid/os/IBinder;)I -PLcom/android/server/am/ActivityManagerService;->getAllStackInfos()Ljava/util/List; PLcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo; PLcom/android/server/am/ActivityManagerService;->getAppOpsService()Lcom/android/internal/app/IAppOpsService; -PLcom/android/server/am/ActivityManagerService;->getAppTasks(Ljava/lang/String;)Ljava/util/List; -PLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet; PLcom/android/server/am/ActivityManagerService;->getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName; PLcom/android/server/am/ActivityManagerService;->getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityManagerService;->getCommonServicesLocked(Z)Ljava/util/HashMap; PLcom/android/server/am/ActivityManagerService;->getConfiguration()Landroid/content/res/Configuration; -PLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder; +PLcom/android/server/am/ActivityManagerService;->getContentProviderExternal(Ljava/lang/String;ILandroid/os/IBinder;)Landroid/app/ContentProviderHolder; PLcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)Landroid/app/ContentProviderHolder; -PLcom/android/server/am/ActivityManagerService;->getCurrentUser()Landroid/content/pm/UserInfo; PLcom/android/server/am/ActivityManagerService;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo; -PLcom/android/server/am/ActivityManagerService;->getFocusedStack()Lcom/android/server/am/ActivityStack; -PLcom/android/server/am/ActivityManagerService;->getFocusedStackId()I -PLcom/android/server/am/ActivityManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration; PLcom/android/server/am/ActivityManagerService;->getHomeIntent()Landroid/content/Intent; PLcom/android/server/am/ActivityManagerService;->getInputDispatchingTimeoutLocked(Lcom/android/server/am/ActivityRecord;)J PLcom/android/server/am/ActivityManagerService;->getInputDispatchingTimeoutLocked(Lcom/android/server/am/ProcessRecord;)J -PLcom/android/server/am/ActivityManagerService;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent; -PLcom/android/server/am/ActivityManagerService;->getLastResumedActivityUserId()I -PLcom/android/server/am/ActivityManagerService;->getLockTaskModeState()I -PLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V -PLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I -PLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V -PLcom/android/server/am/ActivityManagerService;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String; -PLcom/android/server/am/ActivityManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal; -PLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I -PLcom/android/server/am/ActivityManagerService;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; -PLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;IZ)Lcom/android/server/am/ProcessRecord; +PLcom/android/server/am/ActivityManagerService;->getKsmInfo()[J PLcom/android/server/am/ActivityManagerService;->getProcessStatesAndOomScoresForPIDs([I[I[I)V -PLcom/android/server/am/ActivityManagerService;->getProviderInfoLocked(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo; PLcom/android/server/am/ActivityManagerService;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String; PLcom/android/server/am/ActivityManagerService;->getRequestedOrientation(Landroid/os/IBinder;)I PLcom/android/server/am/ActivityManagerService;->getRunningUserIds()[I PLcom/android/server/am/ActivityManagerService;->getServices(II)Ljava/util/List; -PLcom/android/server/am/ActivityManagerService;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo; -PLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/am/ActivityManagerService;->getTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap; PLcom/android/server/am/ActivityManagerService;->getTaskForActivity(Landroid/os/IBinder;Z)I -PLcom/android/server/am/ActivityManagerService;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot; -PLcom/android/server/am/ActivityManagerService;->getTasks(II)Ljava/util/List; -PLcom/android/server/am/ActivityManagerService;->getUidForIntentSender(Landroid/content/IIntentSender;)I PLcom/android/server/am/ActivityManagerService;->getUidFromIntent(Landroid/content/Intent;)I PLcom/android/server/am/ActivityManagerService;->getUidState(I)I PLcom/android/server/am/ActivityManagerService;->getUidStateLocked(I)I -PLcom/android/server/am/ActivityManagerService;->grantUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V PLcom/android/server/am/ActivityManagerService;->grantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/am/UriPermissionOwner;I)V -PLcom/android/server/am/ActivityManagerService;->grantUriPermissionLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;ILcom/android/server/am/UriPermissionOwner;I)V -PLcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;ILcom/android/server/am/UriPermissionOwner;)V -PLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V PLcom/android/server/am/ActivityManagerService;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;)Z PLcom/android/server/am/ActivityManagerService;->handleApplicationWtfInner(IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Lcom/android/server/am/ProcessRecord; -PLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I -PLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z -PLcom/android/server/am/ActivityManagerService;->idleUids()V PLcom/android/server/am/ActivityManagerService;->installEncryptionUnawareProviders(I)V PLcom/android/server/am/ActivityManagerService;->installSystemProviders()V PLcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z -PLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z -PLcom/android/server/am/ActivityManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z PLcom/android/server/am/ActivityManagerService;->isInLockTaskMode()Z -PLcom/android/server/am/ActivityManagerService;->isInMultiWindowMode(Landroid/os/IBinder;)Z +PLcom/android/server/am/ActivityManagerService;->isInPictureInPictureMode(Landroid/os/IBinder;)Z +PLcom/android/server/am/ActivityManagerService;->isInPictureInPictureMode(Lcom/android/server/am/ActivityRecord;)Z PLcom/android/server/am/ActivityManagerService;->isKeyguardLocked()Z PLcom/android/server/am/ActivityManagerService;->isNextTransitionForward()Z -PLcom/android/server/am/ActivityManagerService;->isOnDeviceIdleWhitelistLocked(I)Z -PLcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z -PLcom/android/server/am/ActivityManagerService;->isShuttingDownLocked()Z -PLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z PLcom/android/server/am/ActivityManagerService;->isSleepingOrShuttingDownLocked()Z -PLcom/android/server/am/ActivityManagerService;->isTopOfTask(Landroid/os/IBinder;)Z -PLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z -PLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z PLcom/android/server/am/ActivityManagerService;->keyguardGoingAway(I)V PLcom/android/server/am/ActivityManagerService;->killAllBackgroundProcessesExcept(II)V PLcom/android/server/am/ActivityManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V -PLcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZLjava/lang/String;)Z -PLcom/android/server/am/ActivityManagerService;->killProcessGroup(II)V PLcom/android/server/am/ActivityManagerService;->logAppTooSlow(Lcom/android/server/am/ProcessRecord;JLjava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->makeIntentSenderCanceledLocked(Lcom/android/server/am/PendingIntentRecord;)V -PLcom/android/server/am/ActivityManagerService;->monitor()V -PLcom/android/server/am/ActivityManagerService;->moveTaskToFrontLocked(IILandroid/os/Bundle;Z)V -PLcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZI)Lcom/android/server/am/ProcessRecord; +PLcom/android/server/am/ActivityManagerService;->moveActivityTaskToBack(Landroid/os/IBinder;Z)Z PLcom/android/server/am/ActivityManagerService;->newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder; -PLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;ILjava/lang/String;)V -PLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;ILjava/lang/String;)V -PLcom/android/server/am/ActivityManagerService;->noteUidProcessState(II)V -PLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;ILjava/lang/String;Ljava/lang/String;)V -PLcom/android/server/am/ActivityManagerService;->notifyActivityDrawn(Landroid/os/IBinder;)V PLcom/android/server/am/ActivityManagerService;->notifyEnterAnimationComplete(Landroid/os/IBinder;)V -PLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V PLcom/android/server/am/ActivityManagerService;->notifyTaskPersisterLocked(Lcom/android/server/am/TaskRecord;Z)V PLcom/android/server/am/ActivityManagerService;->notifyVrManagerOfSleepState(Z)V PLcom/android/server/am/ActivityManagerService;->onCoreSettingsChange(Landroid/os/Bundle;)V +PLcom/android/server/am/ActivityManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V PLcom/android/server/am/ActivityManagerService;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V PLcom/android/server/am/ActivityManagerService;->performDisplayOverrideConfigUpdate(Landroid/content/res/Configuration;ZI)I PLcom/android/server/am/ActivityManagerService;->postFinishBooting(ZZ)V -PLcom/android/server/am/ActivityManagerService;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I PLcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String; -PLcom/android/server/am/ActivityManagerService;->processContentProviderPublishTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V -PLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityManagerService;->pushTempWhitelist()V PLcom/android/server/am/ActivityManagerService;->readGrantedUriPermissionsLocked()V -PLcom/android/server/am/ActivityManagerService;->recordPssSampleLocked(Lcom/android/server/am/ProcessRecord;IJJJJ)V PLcom/android/server/am/ActivityManagerService;->registerProcessObserver(Landroid/app/IProcessObserver;)V PLcom/android/server/am/ActivityManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V PLcom/android/server/am/ActivityManagerService;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->removeContentProviderExternal(Ljava/lang/String;Landroid/os/IBinder;)V PLcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V -PLcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z -PLcom/android/server/am/ActivityManagerService;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z -PLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord; -PLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord; -PLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V PLcom/android/server/am/ActivityManagerService;->removeUriPermissionsForPackageLocked(Ljava/lang/String;IZ)V +PLcom/android/server/am/ActivityManagerService;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V PLcom/android/server/am/ActivityManagerService;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V PLcom/android/server/am/ActivityManagerService;->reportSizeConfigurations(Landroid/os/IBinder;[I[I[I)V PLcom/android/server/am/ActivityManagerService;->requestAutofillData(Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;Landroid/os/IBinder;I)Z PLcom/android/server/am/ActivityManagerService;->requestPssAllProcsLocked(JZZ)V -PLcom/android/server/am/ActivityManagerService;->requestPssLocked(Lcom/android/server/am/ProcessRecord;I)V PLcom/android/server/am/ActivityManagerService;->resolveActivityInfo(Landroid/content/Intent;II)Landroid/content/pm/ActivityInfo; PLcom/android/server/am/ActivityManagerService;->retrieveSettings()V -PLcom/android/server/am/ActivityManagerService;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V -PLcom/android/server/am/ActivityManagerService;->revokeUriPermissionLocked(Ljava/lang/String;ILcom/android/server/am/ActivityManagerService$GrantUri;I)V -PLcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V PLcom/android/server/am/ActivityManagerService;->scheduleApplicationInfoChanged(Ljava/util/List;I)V PLcom/android/server/am/ActivityManagerService;->scheduleStartProfilesLocked()V -PLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I PLcom/android/server/am/ActivityManagerService;->sendNotifyVrManagerOfSleepState(Z)V -PLcom/android/server/am/ActivityManagerService;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z -PLcom/android/server/am/ActivityManagerService;->setAppIdTempWhitelistStateLocked(IZ)V PLcom/android/server/am/ActivityManagerService;->setDisablePreviewScreenshots(Landroid/os/IBinder;Z)V PLcom/android/server/am/ActivityManagerService;->setHasTopUi(Z)V +PLcom/android/server/am/ActivityManagerService;->setImmersive(Landroid/os/IBinder;Z)V PLcom/android/server/am/ActivityManagerService;->setLockScreenShown(Z)V -PLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLocked(Lcom/android/server/am/ProcessRecord;IJ)V -PLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V -PLcom/android/server/am/ActivityManagerService;->setRequestedOrientation(Landroid/os/IBinder;I)V -PLcom/android/server/am/ActivityManagerService;->setResumedActivityUncheckLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->setProcessImportant(Landroid/os/IBinder;IZLjava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;I)V PLcom/android/server/am/ActivityManagerService;->setSystemProcess()V -PLcom/android/server/am/ActivityManagerService;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V +PLcom/android/server/am/ActivityManagerService;->setUidTempWhitelistStateLocked(IZ)V PLcom/android/server/am/ActivityManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V PLcom/android/server/am/ActivityManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/am/ActivityManagerService;->shouldDisableNonVrUiLocked()Z PLcom/android/server/am/ActivityManagerService;->shouldShowDialogs(Landroid/content/res/Configuration;)Z -PLcom/android/server/am/ActivityManagerService;->shouldSleepLocked()Z -PLcom/android/server/am/ActivityManagerService;->showAskCompatModeDialogLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityManagerService;->showUnsupportedZoomDialogIfNeededLocked(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V PLcom/android/server/am/ActivityManagerService;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I -PLcom/android/server/am/ActivityManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I -PLcom/android/server/am/ActivityManagerService;->startActivityFromRecents(ILandroid/os/Bundle;)I -PLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IILandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association; +PLcom/android/server/am/ActivityManagerService;->startActivityAndWait(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)Landroid/app/WaitResult; PLcom/android/server/am/ActivityManagerService;->startHomeActivityLocked(ILjava/lang/String;)Z +PLcom/android/server/am/ActivityManagerService;->startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;ILandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;ILjava/lang/String;)Z PLcom/android/server/am/ActivityManagerService;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)I PLcom/android/server/am/ActivityManagerService;->startObservingNativeCrashes()V PLcom/android/server/am/ActivityManagerService;->startPersistentApps(I)V -PLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZIZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord; -PLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZZ)Lcom/android/server/am/ProcessRecord; -PLcom/android/server/am/ActivityManagerService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName; PLcom/android/server/am/ActivityManagerService;->startSetupActivityLocked()V PLcom/android/server/am/ActivityManagerService;->startTimeTrackingFocusedActivityLocked()V PLcom/android/server/am/ActivityManagerService;->stopAppSwitches()V -PLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;ILandroid/content/ComponentName;)V -PLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I -PLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z PLcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;Landroid/util/TimingsTraceLog;)V -PLcom/android/server/am/ActivityManagerService;->trimApplications()V -PLcom/android/server/am/ActivityManagerService;->uidOnBackgroundWhitelist(I)Z +PLcom/android/server/am/ActivityManagerService;->tempWhitelistUidLocked(IJLjava/lang/String;)V PLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V -PLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z PLcom/android/server/am/ActivityManagerService;->unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V -PLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V PLcom/android/server/am/ActivityManagerService;->updateApplicationInfoLocked(Ljava/util/List;I)V PLcom/android/server/am/ActivityManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;Z)Z @@ -5460,14 +8312,22 @@ PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landr PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZIZLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)Z PLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)Z PLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZI)Z -PLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZILcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)Z PLcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V -PLcom/android/server/am/ActivityManagerService;->updateGlobalConfiguration(Landroid/content/res/Configuration;ZZIZ)I PLcom/android/server/am/ActivityManagerService;->updateLockTaskPackages(I[Ljava/lang/String;)V -PLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZZ)V PLcom/android/server/am/ActivityManagerService;->updateSleepIfNeededLocked()V -PLcom/android/server/am/ActivityManagerService;->updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V -PLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent; +PLcom/android/server/am/ActivityManagerShellCommand$1;-><init>(Lcom/android/server/am/ActivityManagerShellCommand;)V +PLcom/android/server/am/ActivityManagerShellCommand$1;->handleOption(Ljava/lang/String;Landroid/os/ShellCommand;)Z +PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;-><init>(Ljava/io/PrintWriter;)V +PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->waitForFinish()V +PLcom/android/server/am/ActivityManagerShellCommand;->-set10(Lcom/android/server/am/ActivityManagerShellCommand;Z)Z +PLcom/android/server/am/ActivityManagerShellCommand;->-set14(Lcom/android/server/am/ActivityManagerShellCommand;Z)Z +PLcom/android/server/am/ActivityManagerShellCommand;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V +PLcom/android/server/am/ActivityManagerShellCommand;->makeIntent(I)Landroid/content/Intent; +PLcom/android/server/am/ActivityManagerShellCommand;->onCommand(Ljava/lang/String;)I +PLcom/android/server/am/ActivityManagerShellCommand;->runDumpHeap(Ljava/io/PrintWriter;)I +PLcom/android/server/am/ActivityManagerShellCommand;->runForceStop(Ljava/io/PrintWriter;)I +PLcom/android/server/am/ActivityManagerShellCommand;->runSendBroadcast(Ljava/io/PrintWriter;)I PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get0(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get1(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)Z PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get2(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)Lcom/android/server/am/ActivityRecord; @@ -5488,371 +8348,210 @@ PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set7(Lcom/a PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set8(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;I)I PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;-><init>(Lcom/android/server/am/ActivityMetricsLogger;)V PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;-><init>(Lcom/android/server/am/ActivityMetricsLogger;Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)V -PLcom/android/server/am/ActivityMetricsLogger;->allStacksWindowsDrawn()Z PLcom/android/server/am/ActivityMetricsLogger;->calculateCurrentDelay()I +PLcom/android/server/am/ActivityMetricsLogger;->calculateDelay(J)I PLcom/android/server/am/ActivityMetricsLogger;->getTransitionType(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I PLcom/android/server/am/ActivityMetricsLogger;->hasStartedActivity(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)Z -PLcom/android/server/am/ActivityMetricsLogger;->isAnyTransitionActive()Z -PLcom/android/server/am/ActivityMetricsLogger;->logAppTransitionMultiEvents()V -PLcom/android/server/am/ActivityMetricsLogger;->logWindowState()V -PLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;ZZ)V +PLcom/android/server/am/ActivityMetricsLogger;->logAppTransitionReportedDrawn(Lcom/android/server/am/ActivityRecord;Z)V PLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunching()V -PLcom/android/server/am/ActivityMetricsLogger;->notifyBindApplication(Lcom/android/server/am/ProcessRecord;)V -PLcom/android/server/am/ActivityMetricsLogger;->notifyStartingWindowDrawn(I)V -PLcom/android/server/am/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/SparseIntArray;)V -PLcom/android/server/am/ActivityMetricsLogger;->notifyVisibilityChanged(Lcom/android/server/am/ActivityRecord;Z)V -PLcom/android/server/am/ActivityMetricsLogger;->notifyWindowsDrawn(I)V PLcom/android/server/am/ActivityMetricsLogger;->reset(Z)V -PLcom/android/server/am/ActivityRecord$Token;->-wrap0(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityRecord$Token;-><init>(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityRecord$Token;->toString()Ljava/lang/String; -PLcom/android/server/am/ActivityRecord$Token;->tokenToActivityRecordLocked(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityRecord;->-getcom-android-server-am-ActivityStack$ActivityStateSwitchesValues()[I -PLcom/android/server/am/ActivityRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityStackSupervisor$ActivityContainer;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityRecord;->activityResumedLocked(Landroid/os/IBinder;)V -PLcom/android/server/am/ActivityRecord;->activityStoppedLocked(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V PLcom/android/server/am/ActivityRecord;->addNewIntentLocked(Lcom/android/internal/content/ReferrerIntent;)V PLcom/android/server/am/ActivityRecord;->addResultLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V PLcom/android/server/am/ActivityRecord;->allowTaskSnapshot()Z -PLcom/android/server/am/ActivityRecord;->applyOptionsLocked()V +PLcom/android/server/am/ActivityRecord;->canBeLaunchedOnDisplay(I)Z PLcom/android/server/am/ActivityRecord;->canLaunchHomeActivity(ILcom/android/server/am/ActivityRecord;)Z PLcom/android/server/am/ActivityRecord;->checkEnterPictureInPictureAppOpsState()Z -PLcom/android/server/am/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;ZZ)Z PLcom/android/server/am/ActivityRecord;->clearOptionsLocked()V -PLcom/android/server/am/ActivityRecord;->completeResumeLocked()V -PLcom/android/server/am/ActivityRecord;->computeBounds(Landroid/graphics/Rect;)V -PLcom/android/server/am/ActivityRecord;->continueLaunchTickingLocked()Z -PLcom/android/server/am/ActivityRecord;->createWindowContainer()V +PLcom/android/server/am/ActivityRecord;->createImageFilename(JI)Ljava/lang/String; +PLcom/android/server/am/ActivityRecord;->crossesHorizontalSizeThreshold(II)Z +PLcom/android/server/am/ActivityRecord;->crossesSizeThreshold([III)Z +PLcom/android/server/am/ActivityRecord;->crossesVerticalSizeThreshold(II)Z PLcom/android/server/am/ActivityRecord;->deliverNewIntentLocked(ILandroid/content/Intent;Ljava/lang/String;)V -PLcom/android/server/am/ActivityRecord;->ensureActivityConfigurationLocked(IZ)Z -PLcom/android/server/am/ActivityRecord;->finishLaunchTickingLocked()V -PLcom/android/server/am/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityRecord;->getChildCount()I -PLcom/android/server/am/ActivityRecord;->getDisplayId()I +PLcom/android/server/am/ActivityRecord;->getConfigurationChanges(Landroid/content/res/Configuration;)I PLcom/android/server/am/ActivityRecord;->getOptionsForTargetActivityLocked()Landroid/app/ActivityOptions; -PLcom/android/server/am/ActivityRecord;->getParent()Lcom/android/server/am/ConfigurationContainer; PLcom/android/server/am/ActivityRecord;->getRequestedOrientation()I -PLcom/android/server/am/ActivityRecord;->getStackId()I -PLcom/android/server/am/ActivityRecord;->getStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityStack; -PLcom/android/server/am/ActivityRecord;->getTask()Lcom/android/server/am/TaskRecord; PLcom/android/server/am/ActivityRecord;->getTaskForActivityLocked(Landroid/os/IBinder;Z)I PLcom/android/server/am/ActivityRecord;->getUriPermissionsLocked()Lcom/android/server/am/UriPermissionOwner; PLcom/android/server/am/ActivityRecord;->getWindowContainerController()Lcom/android/server/wm/AppWindowContainerController; -PLcom/android/server/am/ActivityRecord;->handleAlreadyVisible()Z -PLcom/android/server/am/ActivityRecord;->hasDismissKeyguardWindows()Z -PLcom/android/server/am/ActivityRecord;->hasShowWhenLockedWindows()Z PLcom/android/server/am/ActivityRecord;->isAlwaysFocusable()Z -PLcom/android/server/am/ActivityRecord;->isAssistantActivity()Z -PLcom/android/server/am/ActivityRecord;->isConfigurationCompatible(Landroid/content/res/Configuration;)Z -PLcom/android/server/am/ActivityRecord;->isFocusable()Z PLcom/android/server/am/ActivityRecord;->isFreeform()Z -PLcom/android/server/am/ActivityRecord;->isHomeActivity()Z PLcom/android/server/am/ActivityRecord;->isHomeIntent(Landroid/content/Intent;)Z -PLcom/android/server/am/ActivityRecord;->isInHistory()Z -PLcom/android/server/am/ActivityRecord;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityRecord;->isInVrUiMode(Landroid/content/res/Configuration;)Z PLcom/android/server/am/ActivityRecord;->isMainIntent(Landroid/content/Intent;)Z PLcom/android/server/am/ActivityRecord;->isNoHistory()Z -PLcom/android/server/am/ActivityRecord;->isPersistable()Z PLcom/android/server/am/ActivityRecord;->isProcessRunning()Z -PLcom/android/server/am/ActivityRecord;->isRecentsActivity()Z +PLcom/android/server/am/ActivityRecord;->isResizeOnlyChange(I)Z PLcom/android/server/am/ActivityRecord;->isResizeable()Z -PLcom/android/server/am/ActivityRecord;->isResolverActivity()Z +PLcom/android/server/am/ActivityRecord;->isTopRunningActivity()Z PLcom/android/server/am/ActivityRecord;->makeFinishingLocked()V PLcom/android/server/am/ActivityRecord;->makeVisibleIfNeeded(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityRecord;->mayFreezeScreenLocked(Lcom/android/server/am/ProcessRecord;)Z PLcom/android/server/am/ActivityRecord;->notifyAppResumed(Z)V PLcom/android/server/am/ActivityRecord;->notifyUnknownVisibilityLaunched()V -PLcom/android/server/am/ActivityRecord;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V -PLcom/android/server/am/ActivityRecord;->onOverrideConfigurationSent()V -PLcom/android/server/am/ActivityRecord;->onStartingWindowDrawn()V -PLcom/android/server/am/ActivityRecord;->onWindowsDrawn()V PLcom/android/server/am/ActivityRecord;->onWindowsGone()V -PLcom/android/server/am/ActivityRecord;->onWindowsVisible()V +PLcom/android/server/am/ActivityRecord;->onlyVrUiModeChanged(ILandroid/content/res/Configuration;)Z PLcom/android/server/am/ActivityRecord;->pauseKeyDispatchingLocked()V -PLcom/android/server/am/ActivityRecord;->removeOrphanedStartingWindow(Z)V +PLcom/android/server/am/ActivityRecord;->relaunchActivityLocked(ZZ)V PLcom/android/server/am/ActivityRecord;->removeUriPermissionsLocked()V PLcom/android/server/am/ActivityRecord;->removeWindowContainer()V -PLcom/android/server/am/ActivityRecord;->reportLaunchTimeLocked(J)V -PLcom/android/server/am/ActivityRecord;->resumeKeyDispatchingLocked()V +PLcom/android/server/am/ActivityRecord;->reportFullyDrawnLocked(Z)V +PLcom/android/server/am/ActivityRecord;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V PLcom/android/server/am/ActivityRecord;->screenshotActivityLocked()Landroid/graphics/Bitmap; -PLcom/android/server/am/ActivityRecord;->setActivityType(ZILandroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityRecord;->setDeferHidingClient(Z)V PLcom/android/server/am/ActivityRecord;->setDisablePreviewScreenshots(Z)V +PLcom/android/server/am/ActivityRecord;->setLastReportedConfiguration(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V PLcom/android/server/am/ActivityRecord;->setLastReportedConfiguration(Landroid/util/MergedConfiguration;)V PLcom/android/server/am/ActivityRecord;->setLastReportedGlobalConfiguration(Landroid/content/res/Configuration;)V PLcom/android/server/am/ActivityRecord;->setRequestedOrientation(I)V PLcom/android/server/am/ActivityRecord;->setSizeConfigurations([I[I[I)V PLcom/android/server/am/ActivityRecord;->setSleeping(Z)V PLcom/android/server/am/ActivityRecord;->setSleeping(ZZ)V -PLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;)V -PLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;Z)V -PLcom/android/server/am/ActivityRecord;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V -PLcom/android/server/am/ActivityRecord;->setVisibility(Z)V -PLcom/android/server/am/ActivityRecord;->setVisible(Z)V -PLcom/android/server/am/ActivityRecord;->shouldBeVisibleIgnoringKeyguard(ZZLcom/android/server/am/ActivityRecord;Z)Z +PLcom/android/server/am/ActivityRecord;->shouldRelaunchLocked(ILandroid/content/res/Configuration;)Z PLcom/android/server/am/ActivityRecord;->showStartingWindow(Lcom/android/server/am/ActivityRecord;ZZ)V -PLcom/android/server/am/ActivityRecord;->showStartingWindow(Lcom/android/server/am/ActivityRecord;ZZZ)V PLcom/android/server/am/ActivityRecord;->startFreezingScreenLocked(Lcom/android/server/am/ProcessRecord;I)V -PLcom/android/server/am/ActivityRecord;->startLaunchTickingLocked()V -PLcom/android/server/am/ActivityRecord;->stopFreezingScreenLocked(Z)V -PLcom/android/server/am/ActivityRecord;->supportsPictureInPicture()Z +PLcom/android/server/am/ActivityRecord;->supportsResizeableMultiWindow()Z PLcom/android/server/am/ActivityRecord;->takeFromHistory()V -PLcom/android/server/am/ActivityRecord;->toString()Ljava/lang/String; +PLcom/android/server/am/ActivityRecord;->takeOptionsLocked()Landroid/app/ActivityOptions; PLcom/android/server/am/ActivityRecord;->updateOptionsLocked(Landroid/app/ActivityOptions;)V -PLcom/android/server/am/ActivityRecord;->updateOverrideConfiguration()V PLcom/android/server/am/ActivityRecord;->updateThumbnailLocked(Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V PLcom/android/server/am/ActivityResult;-><init>(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V PLcom/android/server/am/ActivityStack$ActivityStackHandler;-><init>(Lcom/android/server/am/ActivityStack;Landroid/os/Looper;)V -PLcom/android/server/am/ActivityStack$ActivityStackHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/am/ActivityStack$ActivityState;-><init>(Ljava/lang/String;I)V PLcom/android/server/am/ActivityStack$ActivityState;->values()[Lcom/android/server/am/ActivityStack$ActivityState; PLcom/android/server/am/ActivityStack;->-get0()Ljava/lang/String; PLcom/android/server/am/ActivityStack;->-getcom-android-server-am-ActivityStack$ActivityStateSwitchesValues()[I -PLcom/android/server/am/ActivityStack;-><init>(Lcom/android/server/am/ActivityStackSupervisor$ActivityContainer;Lcom/android/server/am/RecentTasks;Z)V -PLcom/android/server/am/ActivityStack;->activityDestroyedLocked(Landroid/os/IBinder;Ljava/lang/String;)V -PLcom/android/server/am/ActivityStack;->activityPausedLocked(Landroid/os/IBinder;Z)V +PLcom/android/server/am/ActivityStack;-><init>(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;ILcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/RecentTasks;Z)V +PLcom/android/server/am/ActivityStack;->addRecentActivityLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStack;->addStartingWindowsForVisibleActivities(Z)V -PLcom/android/server/am/ActivityStack;->addTask(Lcom/android/server/am/TaskRecord;IZLjava/lang/String;)V PLcom/android/server/am/ActivityStack;->addTask(Lcom/android/server/am/TaskRecord;ZLjava/lang/String;)V -PLcom/android/server/am/ActivityStack;->addToStopping(Lcom/android/server/am/ActivityRecord;ZZ)V -PLcom/android/server/am/ActivityStack;->adjustFocusedActivityStackLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V PLcom/android/server/am/ActivityStack;->awakeFromSleepingLocked()V -PLcom/android/server/am/ActivityStack;->canShowWithInsecureKeyguard()Z -PLcom/android/server/am/ActivityStack;->cancelInitializingActivities()V -PLcom/android/server/am/ActivityStack;->checkReadyForSleepLocked()Z -PLcom/android/server/am/ActivityStack;->checkTranslucentActivityWaiting(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStack;->cleanUpActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V +PLcom/android/server/am/ActivityStack;->canEnterPipOnTaskSwitch(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z PLcom/android/server/am/ActivityStack;->cleanUpActivityServicesLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStack;->clearLaunchTime(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStack;->closeSystemDialogsLocked()V -PLcom/android/server/am/ActivityStack;->completePauseLocked(ZLcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStack;->continueUpdateBounds()V +PLcom/android/server/am/ActivityStack;->containsActivityFromStack(Ljava/util/List;)Z PLcom/android/server/am/ActivityStack;->createStackWindowController(IZLandroid/graphics/Rect;)Lcom/android/server/wm/StackWindowController; PLcom/android/server/am/ActivityStack;->createTaskRecord(ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZI)Lcom/android/server/am/TaskRecord; -PLcom/android/server/am/ActivityStack;->destroyActivityLocked(Lcom/android/server/am/ActivityRecord;ZLjava/lang/String;)Z -PLcom/android/server/am/ActivityStack;->executeAppTransition(Landroid/app/ActivityOptions;)V PLcom/android/server/am/ActivityStack;->findActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStack;->findStackInsertIndex(Z)I -PLcom/android/server/am/ActivityStack;->findTaskLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStackSupervisor$FindTaskResult;)V PLcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;Z)Z -PLcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;ZZ)Z PLcom/android/server/am/ActivityStack;->finishActivityResultsLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;)V -PLcom/android/server/am/ActivityStack;->finishCurrentActivityLocked(Lcom/android/server/am/ActivityRecord;IZ)Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStack;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z -PLcom/android/server/am/ActivityStack;->getAdjustedPositionForTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityRecord;)I -PLcom/android/server/am/ActivityStack;->getAllTasks()Ljava/util/ArrayList; +PLcom/android/server/am/ActivityStack;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer; PLcom/android/server/am/ActivityStack;->getChildCount()I PLcom/android/server/am/ActivityStack;->getNextTask(Lcom/android/server/am/TaskRecord;)Lcom/android/server/am/TaskRecord; PLcom/android/server/am/ActivityStack;->getParent()Lcom/android/server/am/ConfigurationContainer; -PLcom/android/server/am/ActivityStack;->getStackId()I -PLcom/android/server/am/ActivityStack;->getTasksLocked(Ljava/util/List;IZ)V -PLcom/android/server/am/ActivityStack;->getTopDismissingKeyguardActivity()Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStack;->getTopStackOnDisplay()Lcom/android/server/am/ActivityStack; -PLcom/android/server/am/ActivityStack;->getVisibleBehindActivity()Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStack;->getWindowContainerBounds(Landroid/graphics/Rect;)V PLcom/android/server/am/ActivityStack;->getWindowContainerController()Lcom/android/server/wm/StackWindowController; PLcom/android/server/am/ActivityStack;->goToSleep()V -PLcom/android/server/am/ActivityStack;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z -PLcom/android/server/am/ActivityStack;->hasVisibleBehindActivity()Z -PLcom/android/server/am/ActivityStack;->insertTaskAtTop(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStack;->goToSleepIfPossible(Z)Z PLcom/android/server/am/ActivityStack;->isATopFinishingTask(Lcom/android/server/am/TaskRecord;)Z -PLcom/android/server/am/ActivityStack;->isAssistantStack()Z -PLcom/android/server/am/ActivityStack;->isAttached()Z -PLcom/android/server/am/ActivityStack;->isDockedStack()Z -PLcom/android/server/am/ActivityStack;->isFocusable()Z -PLcom/android/server/am/ActivityStack;->isHomeOrRecentsStack()Z PLcom/android/server/am/ActivityStack;->isHomeStack()Z -PLcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStack;->isInStackLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityStack;->isInStackLocked(Lcom/android/server/am/TaskRecord;)Z PLcom/android/server/am/ActivityStack;->isOnHomeDisplay()Z -PLcom/android/server/am/ActivityStack;->isPinnedStack()Z -PLcom/android/server/am/ActivityStack;->isStackTranslucent(Lcom/android/server/am/ActivityRecord;I)Z PLcom/android/server/am/ActivityStack;->isTaskSwitch(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)Z PLcom/android/server/am/ActivityStack;->layoutTaskInStack(Lcom/android/server/am/TaskRecord;Landroid/content/pm/ActivityInfo$WindowLayout;)Z -PLcom/android/server/am/ActivityStack;->logStartActivity(ILcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;)V -PLcom/android/server/am/ActivityStack;->makeInvisible(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStack;->makeVisibleAndRestartIfNeeded(Lcom/android/server/am/ActivityRecord;IZZLcom/android/server/am/ActivityRecord;)Z PLcom/android/server/am/ActivityStack;->minimalResumeActivityLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStack;->moveHomeStackTaskToTop()V -PLcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;Ljava/lang/String;)V +PLcom/android/server/am/ActivityStack;->moveTaskToBackLocked(I)Z PLcom/android/server/am/ActivityStack;->moveToFront(Ljava/lang/String;)V -PLcom/android/server/am/ActivityStack;->moveToFront(Ljava/lang/String;Lcom/android/server/am/TaskRecord;)V PLcom/android/server/am/ActivityStack;->notifyActivityDrawnLocked(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStack;->numActivities()I PLcom/android/server/am/ActivityStack;->onActivityRemovedFromStack(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStack;->onLockTaskPackagesUpdatedLocked()V PLcom/android/server/am/ActivityStack;->onParentChanged()V PLcom/android/server/am/ActivityStack;->postAddTask(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityStack;Z)V PLcom/android/server/am/ActivityStack;->postAddToDisplay(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;Landroid/graphics/Rect;Z)V PLcom/android/server/am/ActivityStack;->preAddTask(Lcom/android/server/am/TaskRecord;Ljava/lang/String;Z)Lcom/android/server/am/ActivityStack; -PLcom/android/server/am/ActivityStack;->prepareActivityHideTransitionAnimation(Lcom/android/server/am/ActivityRecord;I)V -PLcom/android/server/am/ActivityStack;->rankTaskLayers(I)I PLcom/android/server/am/ActivityStack;->removeActivitiesFromLRUListLocked(Lcom/android/server/am/TaskRecord;)V -PLcom/android/server/am/ActivityStack;->removeActivityFromHistoryLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V -PLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Lcom/android/server/am/ProcessRecord;)Z -PLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Ljava/util/ArrayList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V -PLcom/android/server/am/ActivityStack;->removeTask(Lcom/android/server/am/TaskRecord;Ljava/lang/String;I)V -PLcom/android/server/am/ActivityStack;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Z)Z -PLcom/android/server/am/ActivityStack;->resetAffinityTaskIfNeededLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/TaskRecord;ZZI)I PLcom/android/server/am/ActivityStack;->resetTargetTaskIfNeededLocked(Lcom/android/server/am/TaskRecord;Z)Landroid/app/ActivityOptions; -PLcom/android/server/am/ActivityStack;->resetTaskIfNeededLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityStack;->resumeTopActivityInNextFocusableStack(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Ljava/lang/String;)Z -PLcom/android/server/am/ActivityStack;->resumeTopActivityInnerLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z -PLcom/android/server/am/ActivityStack;->resumeTopActivityUncheckedLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z -PLcom/android/server/am/ActivityStack;->schedulePauseTimeout(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStack;->setLaunchTime(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStack;->setResumedActivityLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V -PLcom/android/server/am/ActivityStack;->startActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;ZZLandroid/app/ActivityOptions;)V -PLcom/android/server/am/ActivityStack;->startLaunchTraces(Ljava/lang/String;)V -PLcom/android/server/am/ActivityStack;->startPausingLocked(ZZLcom/android/server/am/ActivityRecord;Z)Z -PLcom/android/server/am/ActivityStack;->stopActivityLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStack;->sendActivityResultLocked(ILcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V PLcom/android/server/am/ActivityStack;->stopFullyDrawnTraceIfNeeded()V -PLcom/android/server/am/ActivityStack;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord; -PLcom/android/server/am/ActivityStack;->topActivity()Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStack;->topActivityOccludesKeyguard()Z -PLcom/android/server/am/ActivityStack;->topRunningNonDelayedActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStack;->topTask()Lcom/android/server/am/TaskRecord; -PLcom/android/server/am/ActivityStack;->updateBehindFullscreen(ZZLcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)Z PLcom/android/server/am/ActivityStack;->updateLRUListLocked(Lcom/android/server/am/ActivityRecord;)Z -PLcom/android/server/am/ActivityStack;->updateTaskMovement(Lcom/android/server/am/TaskRecord;Z)V -PLcom/android/server/am/ActivityStack;->updateTaskReturnToForTopInsertion(Lcom/android/server/am/TaskRecord;)V PLcom/android/server/am/ActivityStack;->updateTransitLocked(ILandroid/app/ActivityOptions;)V -PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;-><init>(Lcom/android/server/am/ActivityStackSupervisor;ILcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;Z)V -PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->createStack(IZ)V -PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->getDisplayId()I -PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->getOuter()Lcom/android/server/am/ActivityStackSupervisor; -PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->isAttachedLocked()Z -PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->isEligibleForNewTasks()Z -PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->setDrawn()V PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;-><init>(Lcom/android/server/am/ActivityStackSupervisor;I)V PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->attachStack(Lcom/android/server/am/ActivityStack;I)V PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer; PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getChildCount()I PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getParent()Lcom/android/server/am/ConfigurationContainer; -PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->hasVisibleBehindActivity()Z PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->init(Landroid/view/Display;)V -PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->isPrivate()Z -PLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->activityIdleInternal(Lcom/android/server/am/ActivityRecord;Z)V -PLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/am/ActivityStackSupervisor;->-get0()Ljava/lang/String; -PLcom/android/server/am/ActivityStackSupervisor;->-get5(Lcom/android/server/am/ActivityStackSupervisor;)Lcom/android/server/am/RecentTasks; -PLcom/android/server/am/ActivityStackSupervisor;->-wrap4(Lcom/android/server/am/ActivityStackSupervisor;I)V -PLcom/android/server/am/ActivityStackSupervisor;->acquireLaunchWakelock()V -PLcom/android/server/am/ActivityStackSupervisor;->activityIdleInternalLocked(Landroid/os/IBinder;ZZLandroid/content/res/Configuration;)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->setIsSleeping(Z)V +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->shouldSleep()Z +PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;->-get0(Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)I +PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Ljava/lang/String;I)V +PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;->release()V +PLcom/android/server/am/ActivityStackSupervisor;->-wrap3(Lcom/android/server/am/ActivityStackSupervisor;I)V +PLcom/android/server/am/ActivityStackSupervisor;->-wrap6(Lcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)V +PLcom/android/server/am/ActivityStackSupervisor;->activityRelaunchedLocked(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityStackSupervisor;->activityRelaunchingLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStackSupervisor;->activitySleptLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStackSupervisor;->addStartingWindowsForVisibleActivities(Z)V -PLcom/android/server/am/ActivityStackSupervisor;->allPausedActivitiesComplete()Z -PLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesComplete()Z -PLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesIdle()Z -PLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesVisible()Z PLcom/android/server/am/ActivityStackSupervisor;->anyTaskForIdLocked(I)Lcom/android/server/am/TaskRecord; -PLcom/android/server/am/ActivityStackSupervisor;->anyTaskForIdLocked(III)Lcom/android/server/am/TaskRecord; -PLcom/android/server/am/ActivityStackSupervisor;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;)Z +PLcom/android/server/am/ActivityStackSupervisor;->applySleepTokensLocked(Z)V +PLcom/android/server/am/ActivityStackSupervisor;->beginDeferResume()V PLcom/android/server/am/ActivityStackSupervisor;->calculateDefaultMinimalSizeOfResizeableTasks(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;)V +PLcom/android/server/am/ActivityStackSupervisor;->canPlaceEntityOnDisplay(IZIILandroid/content/pm/ActivityInfo;)Z PLcom/android/server/am/ActivityStackSupervisor;->canUseActivityOptionsLaunchBounds(Landroid/app/ActivityOptions;I)Z -PLcom/android/server/am/ActivityStackSupervisor;->cancelInitializingActivities()V -PLcom/android/server/am/ActivityStackSupervisor;->checkActivityBelongsInStack(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)Z PLcom/android/server/am/ActivityStackSupervisor;->checkFinishBootingLocked()Z -PLcom/android/server/am/ActivityStackSupervisor;->checkReadyForSleepLocked()V -PLcom/android/server/am/ActivityStackSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;ZLcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;Landroid/app/ActivityOptions;)Z +PLcom/android/server/am/ActivityStackSupervisor;->checkReadyForSleepLocked(Z)V PLcom/android/server/am/ActivityStackSupervisor;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;ZZ)V PLcom/android/server/am/ActivityStackSupervisor;->cleanupActivity(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStackSupervisor;->closeSystemDialogsLocked()V PLcom/android/server/am/ActivityStackSupervisor;->comeOutOfSleepIfNeededLocked()V -PLcom/android/server/am/ActivityStackSupervisor;->continueUpdateBounds(I)V +PLcom/android/server/am/ActivityStackSupervisor;->createSleepTokenLocked(Ljava/lang/String;I)Landroid/app/ActivityManagerInternal$SleepToken; +PLcom/android/server/am/ActivityStackSupervisor;->createStack(ILcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;Z)Lcom/android/server/am/ActivityStack; PLcom/android/server/am/ActivityStackSupervisor;->createStackOnDisplay(IIZ)Lcom/android/server/am/ActivityStack; -PLcom/android/server/am/ActivityStackSupervisor;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;IZ)V +PLcom/android/server/am/ActivityStackSupervisor;->endDeferResume()V PLcom/android/server/am/ActivityStackSupervisor;->findActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStackSupervisor;->findTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStackSupervisor;->findTaskToMoveToFrontLocked(Lcom/android/server/am/TaskRecord;ILandroid/app/ActivityOptions;Ljava/lang/String;Z)V -PLcom/android/server/am/ActivityStackSupervisor;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z PLcom/android/server/am/ActivityStackSupervisor;->getActionRestrictionForCallingPackage(Ljava/lang/String;Ljava/lang/String;II)I -PLcom/android/server/am/ActivityStackSupervisor;->getActivityDisplayOrCreateLocked(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; -PLcom/android/server/am/ActivityStackSupervisor;->getAllStackInfosLocked()Ljava/util/ArrayList; PLcom/android/server/am/ActivityStackSupervisor;->getChildAt(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; PLcom/android/server/am/ActivityStackSupervisor;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer; PLcom/android/server/am/ActivityStackSupervisor;->getComponentRestrictionForCallingPackage(Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIZ)I -PLcom/android/server/am/ActivityStackSupervisor;->getDisplayOverrideConfiguration(I)Landroid/content/res/Configuration; -PLcom/android/server/am/ActivityStackSupervisor;->getFocusedStack()Lcom/android/server/am/ActivityStack; PLcom/android/server/am/ActivityStackSupervisor;->getHomeActivity()Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityStackSupervisor;->getHomeActivityForUser(I)Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStackSupervisor;->getLastStack()Lcom/android/server/am/ActivityStack; PLcom/android/server/am/ActivityStackSupervisor;->getLockTaskModeState()I PLcom/android/server/am/ActivityStackSupervisor;->getLockedTaskLocked()Lcom/android/server/am/TaskRecord; PLcom/android/server/am/ActivityStackSupervisor;->getNextTaskIdForUserLocked(I)I -PLcom/android/server/am/ActivityStackSupervisor;->getStack(I)Lcom/android/server/am/ActivityStack; -PLcom/android/server/am/ActivityStackSupervisor;->getStack(IZZ)Lcom/android/server/am/ActivityStack; -PLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(I)Landroid/app/ActivityManager$StackInfo; -PLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(Lcom/android/server/am/ActivityStack;)Landroid/app/ActivityManager$StackInfo; -PLcom/android/server/am/ActivityStackSupervisor;->getStacksOnDefaultDisplay()Ljava/util/ArrayList; -PLcom/android/server/am/ActivityStackSupervisor;->getTasksLocked(ILjava/util/List;IZ)V +PLcom/android/server/am/ActivityStackSupervisor;->getUserInfo(I)Landroid/content/pm/UserInfo; PLcom/android/server/am/ActivityStackSupervisor;->goingToSleepLocked()V -PLcom/android/server/am/ActivityStackSupervisor;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z PLcom/android/server/am/ActivityStackSupervisor;->handleDisplayChanged(I)V PLcom/android/server/am/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/am/TaskRecord;III)V -PLcom/android/server/am/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/am/TaskRecord;IIIZ)V +PLcom/android/server/am/ActivityStackSupervisor;->hasAwakeDisplay()Z PLcom/android/server/am/ActivityStackSupervisor;->invalidateTaskLayers()V -PLcom/android/server/am/ActivityStackSupervisor;->isCurrentProfileLocked(I)Z PLcom/android/server/am/ActivityStackSupervisor;->isDisplayAdded(I)Z -PLcom/android/server/am/ActivityStackSupervisor;->isFocusedStack(Lcom/android/server/am/ActivityStack;)Z -PLcom/android/server/am/ActivityStackSupervisor;->isFrontOfStackList(Lcom/android/server/am/ActivityStack;Ljava/util/List;)Z -PLcom/android/server/am/ActivityStackSupervisor;->isFrontStackOnDisplay(Lcom/android/server/am/ActivityStack;)Z -PLcom/android/server/am/ActivityStackSupervisor;->isInAnyStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityStackSupervisor;->isLastLockedTask(Lcom/android/server/am/TaskRecord;)Z PLcom/android/server/am/ActivityStackSupervisor;->isLockTaskModeViolation(Lcom/android/server/am/TaskRecord;)Z PLcom/android/server/am/ActivityStackSupervisor;->isLockTaskModeViolation(Lcom/android/server/am/TaskRecord;Z)Z -PLcom/android/server/am/ActivityStackSupervisor;->isStackDockedInEffect(I)Z -PLcom/android/server/am/ActivityStackSupervisor;->isStoppingNoHistoryActivity()Z +PLcom/android/server/am/ActivityStackSupervisor;->isLockedTask(Lcom/android/server/am/TaskRecord;)Z PLcom/android/server/am/ActivityStackSupervisor;->logIfTransactionTooLarge(Landroid/content/Intent;Landroid/os/Bundle;)V PLcom/android/server/am/ActivityStackSupervisor;->logStackState()V -PLcom/android/server/am/ActivityStackSupervisor;->moveFocusableActivityStackToFrontLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)Z PLcom/android/server/am/ActivityStackSupervisor;->moveHomeStackTaskToTop(Ljava/lang/String;)Z PLcom/android/server/am/ActivityStackSupervisor;->moveHomeStackToFront(Ljava/lang/String;)V PLcom/android/server/am/ActivityStackSupervisor;->nextTaskIdForUser(II)I -PLcom/android/server/am/ActivityStackSupervisor;->notifyAppTransitionDone()V PLcom/android/server/am/ActivityStackSupervisor;->onDisplayChanged(I)V PLcom/android/server/am/ActivityStackSupervisor;->onLockTaskPackagesUpdatedLocked()V -PLcom/android/server/am/ActivityStackSupervisor;->pauseBackStacks(ZLcom/android/server/am/ActivityRecord;Z)Z -PLcom/android/server/am/ActivityStackSupervisor;->pauseChildStacks(Lcom/android/server/am/ActivityRecord;ZZLcom/android/server/am/ActivityRecord;Z)V -PLcom/android/server/am/ActivityStackSupervisor;->processStoppingActivitiesLocked(Lcom/android/server/am/ActivityRecord;ZZ)Ljava/util/ArrayList; -PLcom/android/server/am/ActivityStackSupervisor;->rankTaskLayersIfNeeded()V -PLcom/android/server/am/ActivityStackSupervisor;->realStartActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ProcessRecord;ZZ)Z -PLcom/android/server/am/ActivityStackSupervisor;->removeChildActivityContainers(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStackSupervisor;->putStacksToSleepLocked(ZZ)Z PLcom/android/server/am/ActivityStackSupervisor;->removeLockedTaskLocked(Lcom/android/server/am/TaskRecord;)V PLcom/android/server/am/ActivityStackSupervisor;->removeSleepTimeouts()V +PLcom/android/server/am/ActivityStackSupervisor;->removeSleepTokenLocked(Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)V PLcom/android/server/am/ActivityStackSupervisor;->removeTaskByIdLocked(IZZ)Z PLcom/android/server/am/ActivityStackSupervisor;->removeTaskByIdLocked(IZZZ)Z -PLcom/android/server/am/ActivityStackSupervisor;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStackSupervisor;->reportActivityLaunchedLocked(ZLcom/android/server/am/ActivityRecord;JJ)V PLcom/android/server/am/ActivityStackSupervisor;->reportActivityVisibleLocked(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStackSupervisor;->reportResumedActivityLocked(Lcom/android/server/am/ActivityRecord;)Z -PLcom/android/server/am/ActivityStackSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo; PLcom/android/server/am/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo; -PLcom/android/server/am/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +PLcom/android/server/am/ActivityStackSupervisor;->restoreRecentTaskLocked(Lcom/android/server/am/TaskRecord;I)Z PLcom/android/server/am/ActivityStackSupervisor;->resumeFocusedStackTopActivityLocked()Z -PLcom/android/server/am/ActivityStackSupervisor;->resumeFocusedStackTopActivityLocked(Lcom/android/server/am/ActivityStack;Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z PLcom/android/server/am/ActivityStackSupervisor;->resumeHomeStackTask(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)Z -PLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleLocked()V -PLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleTimeoutLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStackSupervisor;->scheduleResumeTopActivities()V PLcom/android/server/am/ActivityStackSupervisor;->scheduleSleepTimeout()V -PLcom/android/server/am/ActivityStackSupervisor;->sendWaitingVisibleReportLocked(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/ActivityStackSupervisor;->setDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)V PLcom/android/server/am/ActivityStackSupervisor;->setDockedStackMinimized(Z)V -PLcom/android/server/am/ActivityStackSupervisor;->setFocusStackUnchecked(Ljava/lang/String;Lcom/android/server/am/ActivityStack;)V -PLcom/android/server/am/ActivityStackSupervisor;->setLaunchSource(I)V PLcom/android/server/am/ActivityStackSupervisor;->setNextTaskIdForUserLocked(II)V PLcom/android/server/am/ActivityStackSupervisor;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/am/ActivityStackSupervisor;->startActivityFromRecentsInner(ILandroid/os/Bundle;)I -PLcom/android/server/am/ActivityStackSupervisor;->startSpecificActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V -PLcom/android/server/am/ActivityStackSupervisor;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/ActivityStackSupervisor;->updatePreviousProcessLocked(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStackSupervisor;->updateUIDsPresentOnDisplay()V +PLcom/android/server/am/ActivityStackSupervisor;->updateActivityApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V PLcom/android/server/am/ActivityStackSupervisor;->updateUserStackLocked(ILcom/android/server/am/ActivityStack;)V -PLcom/android/server/am/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/am/TaskRecord;IILandroid/app/ActivityOptions;)V PLcom/android/server/am/ActivityStartInterceptor;->interceptQuietProfileIfNeeded()Z PLcom/android/server/am/ActivityStartInterceptor;->interceptSuspendPackageIfNeed()Z PLcom/android/server/am/ActivityStartInterceptor;->interceptWithConfirmCredentialsIfNeeded(Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Ljava/lang/String;I)Landroid/content/Intent; @@ -5864,260 +8563,154 @@ PLcom/android/server/am/ActivityStarter;->canLaunchIntoFocusedStack(Lcom/android PLcom/android/server/am/ActivityStarter;->clearPendingActivityLaunchesLocked(Ljava/lang/String;)Z PLcom/android/server/am/ActivityStarter;->computeLaunchingTaskFlags()V PLcom/android/server/am/ActivityStarter;->computeSourceStack()V -PLcom/android/server/am/ActivityStarter;->computeStackFocus(Lcom/android/server/am/ActivityRecord;ZLandroid/graphics/Rect;ILandroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack; PLcom/android/server/am/ActivityStarter;->doPendingActivityLaunchesLocked(Z)V -PLcom/android/server/am/ActivityStarter;->getLaunchStack(Lcom/android/server/am/ActivityRecord;ILcom/android/server/am/TaskRecord;Landroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack; PLcom/android/server/am/ActivityStarter;->getOverrideBounds(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;)Landroid/graphics/Rect; PLcom/android/server/am/ActivityStarter;->getReusableIntentActivity()Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityStarter;->getSourceDisplayId(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)I PLcom/android/server/am/ActivityStarter;->isDocumentLaunchesIntoExisting(I)Z PLcom/android/server/am/ActivityStarter;->isValidLaunchStackId(IILcom/android/server/am/ActivityRecord;)Z -PLcom/android/server/am/ActivityStarter;->postStartActivityProcessing(Lcom/android/server/am/ActivityRecord;IILcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)V PLcom/android/server/am/ActivityStarter;->reset()V PLcom/android/server/am/ActivityStarter;->resumeTargetStackIfNeeded()V PLcom/android/server/am/ActivityStarter;->sendNewTaskResultRequestIfNeeded()V PLcom/android/server/am/ActivityStarter;->sendPowerHintForLaunchEndIfNeeded()V -PLcom/android/server/am/ActivityStarter;->sendPowerHintForLaunchStartIfNeeded(Z)V -PLcom/android/server/am/ActivityStarter;->setInitialState(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;ZILcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V -PLcom/android/server/am/ActivityStarter;->setTargetStackAndMoveToFrontIfNeeded(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/ActivityStarter;->setTaskFromIntentActivity(Lcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/ActivityStarter;->setTaskFromReuseOrCreateNewTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityStack;)I PLcom/android/server/am/ActivityStarter;->setTaskFromSourceRecord()I PLcom/android/server/am/ActivityStarter;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/am/ActivityStarter;->startActivity(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I -PLcom/android/server/am/ActivityStarter;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILandroid/app/ActivityOptions;ZZ[Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStackSupervisor$ActivityContainer;Lcom/android/server/am/TaskRecord;)I -PLcom/android/server/am/ActivityStarter;->startActivityMayWait(Landroid/app/IApplicationThread;ILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/app/WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;ZILandroid/app/IActivityContainer;Lcom/android/server/am/TaskRecord;)I -PLcom/android/server/am/ActivityStarter;->startActivityUnchecked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I PLcom/android/server/am/ActivityStarter;->startHomeActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)V PLcom/android/server/am/ActivityStarter;->updateTaskReturnToType(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityStack;)V -PLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;)V -PLcom/android/server/am/AppErrors;->isBadProcessLocked(Landroid/content/pm/ApplicationInfo;)Z PLcom/android/server/am/AppErrors;->loadAppsNotReportingCrashesFromConfigLocked(Ljava/lang/String;)V -PLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(Landroid/content/pm/ApplicationInfo;)V PLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(ZII)V PLcom/android/server/am/BatteryExternalStatsWorker;->extractDeltaLocked(Landroid/net/wifi/WifiActivityEnergyInfo;)Landroid/net/wifi/WifiActivityEnergyInfo; PLcom/android/server/am/BatteryExternalStatsWorker;->scheduleCpuSyncDueToRemovedUid(I)Ljava/util/concurrent/Future; -PLcom/android/server/am/BatteryExternalStatsWorker;->scheduleRunnable(Ljava/lang/Runnable;)V PLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSync(Ljava/lang/String;I)Ljava/util/concurrent/Future; PLcom/android/server/am/BatteryStatsService;->addIsolatedUid(II)V PLcom/android/server/am/BatteryStatsService;->awaitUninterruptibly(Ljava/util/concurrent/Future;)V +PLcom/android/server/am/BatteryStatsService;->doEnableOrDisable(Ljava/io/PrintWriter;I[Ljava/lang/String;Z)I +PLcom/android/server/am/BatteryStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/am/BatteryStatsService;->getPlatformLowPowerStats()Ljava/lang/String; -PLcom/android/server/am/BatteryStatsService;->getService()Lcom/android/internal/app/IBatteryStats; PLcom/android/server/am/BatteryStatsService;->getStatistics()[B +PLcom/android/server/am/BatteryStatsService;->getStatisticsStream()Landroid/os/ParcelFileDescriptor; PLcom/android/server/am/BatteryStatsService;->getSubsystemLowPowerStats()Ljava/lang/String; PLcom/android/server/am/BatteryStatsService;->isCharging()Z -PLcom/android/server/am/BatteryStatsService;->isOnBattery()Z -PLcom/android/server/am/BatteryStatsService;->lambda$-com_android_server_am_BatteryStatsService_30585(IIIIIIII)V -PLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;I)V -PLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;I)V +PLcom/android/server/am/BatteryStatsService;->lambda$-com_android_server_am_BatteryStatsService_32467(IIIIIIII)V PLcom/android/server/am/BatteryStatsService;->noteBleScanResults(Landroid/os/WorkSource;I)V PLcom/android/server/am/BatteryStatsService;->noteBleScanStarted(Landroid/os/WorkSource;Z)V -PLcom/android/server/am/BatteryStatsService;->noteBleScanStopped(Landroid/os/WorkSource;)V -PLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +PLcom/android/server/am/BatteryStatsService;->noteBleScanStopped(Landroid/os/WorkSource;Z)V PLcom/android/server/am/BatteryStatsService;->noteConnectivityChanged(ILjava/lang/String;)V -PLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V -PLcom/android/server/am/BatteryStatsService;->noteFullWifiLockAcquiredFromSource(Landroid/os/WorkSource;)V -PLcom/android/server/am/BatteryStatsService;->noteFullWifiLockReleasedFromSource(Landroid/os/WorkSource;)V PLcom/android/server/am/BatteryStatsService;->noteInteractive(Z)V -PLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;I)V -PLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V -PLcom/android/server/am/BatteryStatsService;->noteNetworkInterfaceType(Ljava/lang/String;I)V PLcom/android/server/am/BatteryStatsService;->noteNetworkStatsEnabled()V PLcom/android/server/am/BatteryStatsService;->notePackageInstalled(Ljava/lang/String;I)V PLcom/android/server/am/BatteryStatsService;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V PLcom/android/server/am/BatteryStatsService;->notePhoneState(I)V -PLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V -PLcom/android/server/am/BatteryStatsService;->noteProcessStart(Ljava/lang/String;I)V PLcom/android/server/am/BatteryStatsService;->noteResetBleScan()V PLcom/android/server/am/BatteryStatsService;->noteScreenBrightness(I)V PLcom/android/server/am/BatteryStatsService;->noteScreenState(I)V -PLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V PLcom/android/server/am/BatteryStatsService;->noteStartCamera(I)V PLcom/android/server/am/BatteryStatsService;->noteStartGps(I)V -PLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V PLcom/android/server/am/BatteryStatsService;->noteStartVideo(I)V -PLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V -PLcom/android/server/am/BatteryStatsService;->noteStopAudio(I)V PLcom/android/server/am/BatteryStatsService;->noteStopCamera(I)V PLcom/android/server/am/BatteryStatsService;->noteStopGps(I)V -PLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V -PLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/am/BatteryStatsService;->noteStopVideo(I)V PLcom/android/server/am/BatteryStatsService;->noteSyncFinish(Ljava/lang/String;I)V PLcom/android/server/am/BatteryStatsService;->noteSyncStart(Ljava/lang/String;I)V -PLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V -PLcom/android/server/am/BatteryStatsService;->noteUserActivity(II)V PLcom/android/server/am/BatteryStatsService;->noteVibratorOff(I)V PLcom/android/server/am/BatteryStatsService;->noteVibratorOn(IJ)V PLcom/android/server/am/BatteryStatsService;->noteWifiMulticastDisabled(I)V PLcom/android/server/am/BatteryStatsService;->noteWifiMulticastEnabled(I)V PLcom/android/server/am/BatteryStatsService;->noteWifiOff()V PLcom/android/server/am/BatteryStatsService;->noteWifiOn()V -PLcom/android/server/am/BatteryStatsService;->noteWifiRadioPowerState(IJI)V PLcom/android/server/am/BatteryStatsService;->noteWifiRssiChanged(I)V PLcom/android/server/am/BatteryStatsService;->noteWifiRunning(Landroid/os/WorkSource;)V -PLcom/android/server/am/BatteryStatsService;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V -PLcom/android/server/am/BatteryStatsService;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V PLcom/android/server/am/BatteryStatsService;->noteWifiState(ILjava/lang/String;)V PLcom/android/server/am/BatteryStatsService;->noteWifiSupplicantStateChanged(IZ)V PLcom/android/server/am/BatteryStatsService;->removeIsolatedUid(II)V -PLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIII)V -PLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;IIZZ)V -PLcom/android/server/am/BroadcastFilter;->toString()Ljava/lang/String; -PLcom/android/server/am/BroadcastQueue$BroadcastHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/am/BroadcastQueue;->backgroundServicesFinishedLocked(I)V -PLcom/android/server/am/BroadcastQueue;->broadcastTimeoutLocked(Z)V -PLcom/android/server/am/BroadcastQueue;->cancelBroadcastTimeoutLocked()V -PLcom/android/server/am/BroadcastQueue;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z -PLcom/android/server/am/BroadcastQueue;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V -PLcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V -PLcom/android/server/am/BroadcastQueue;->getMatchingOrderedReceiver(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord; -PLcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z PLcom/android/server/am/BroadcastQueue;->isSignaturePerm([Ljava/lang/String;)Z -PLcom/android/server/am/BroadcastQueue;->performReceiveLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V -PLcom/android/server/am/BroadcastQueue;->replaceBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord; PLcom/android/server/am/BroadcastQueue;->replaceOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord; -PLcom/android/server/am/BroadcastQueue;->replaceParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord; -PLcom/android/server/am/BroadcastQueue;->ringAdvance(III)I -PLcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V +PLcom/android/server/am/BroadcastQueue;->scheduleTempWhitelistLocked(IJLcom/android/server/am/BroadcastRecord;)V PLcom/android/server/am/BroadcastQueue;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z -PLcom/android/server/am/BroadcastQueue;->setBroadcastTimeoutLocked(J)V -PLcom/android/server/am/BroadcastQueue;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V -PLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZI)V PLcom/android/server/am/BroadcastStats$1;-><init>()V -PLcom/android/server/am/BroadcastStats$ActionEntry;-><init>(Ljava/lang/String;)V -PLcom/android/server/am/BroadcastStats$PackageEntry;-><init>()V PLcom/android/server/am/BroadcastStats$ViolationEntry;-><init>()V PLcom/android/server/am/BroadcastStats;-><init>()V -PLcom/android/server/am/BroadcastStats;->addBackgroundCheckViolation(Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V -PLcom/android/server/am/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I PLcom/android/server/am/CompatModePackages;->handlePackageAddedLocked(Ljava/lang/String;Z)V -PLcom/android/server/am/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration; PLcom/android/server/am/ConfigurationContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration; -PLcom/android/server/am/ConfigurationContainer;->getOverrideConfiguration()Landroid/content/res/Configuration; -PLcom/android/server/am/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V PLcom/android/server/am/ConfigurationContainer;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V -PLcom/android/server/am/ConfigurationContainer;->onParentChanged()V -PLcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/IServiceConnection;IILandroid/app/PendingIntent;)V -PLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V +PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->-get0(Lcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;)I +PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->-set0(Lcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;I)I +PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;-><init>(Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;)V +PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->unlinkFromOwnDeathLocked()V PLcom/android/server/am/ContentProviderRecord;->addExternalProcessHandleLocked(Landroid/os/IBinder;)V -PLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z -PLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/ContentProviderHolder; +PLcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleInternalLocked(Landroid/os/IBinder;)V PLcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z PLcom/android/server/am/CoreSettingsObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/CoreSettingsObserver;->beginObserveCoreSettings()V -PLcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle; PLcom/android/server/am/CoreSettingsObserver;->populateSettings(Landroid/os/Bundle;Ljava/util/Map;)V PLcom/android/server/am/CoreSettingsObserver;->sendCoreSettings()V PLcom/android/server/am/DumpHeapProvider;-><init>()V PLcom/android/server/am/DumpHeapProvider;->onCreate()Z -PLcom/android/server/am/EventLogTags;->writeAmFocusedStack(IIILjava/lang/String;)V PLcom/android/server/am/EventLogTags;->writeAmMeminfo(JJJJJ)V -PLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJ)V -PLcom/android/server/am/EventLogTags;->writeAmSetResumedActivity(ILjava/lang/String;Ljava/lang/String;)V -PLcom/android/server/am/EventLogTags;->writeAmStopActivity(IILjava/lang/String;)V -PLcom/android/server/am/EventLogTags;->writeAmUidActive(I)V PLcom/android/server/am/EventLogTags;->writeAmUidIdle(I)V -PLcom/android/server/am/EventLogTags;->writeAmUidRunning(I)V -PLcom/android/server/am/EventLogTags;->writeAmUidStopped(I)V PLcom/android/server/am/EventLogTags;->writeAmUserStateChanged(II)V -PLcom/android/server/am/IntentBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V -PLcom/android/server/am/KeyguardController;->beginActivityVisibilityUpdate()V +PLcom/android/server/am/InstrumentationReporter$MyThread;-><init>(Lcom/android/server/am/InstrumentationReporter;)V +PLcom/android/server/am/InstrumentationReporter$MyThread;->run()V +PLcom/android/server/am/InstrumentationReporter$Report;-><init>(Lcom/android/server/am/InstrumentationReporter;ILandroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;ILandroid/os/Bundle;)V +PLcom/android/server/am/InstrumentationReporter;->report(Lcom/android/server/am/InstrumentationReporter$Report;)V +PLcom/android/server/am/InstrumentationReporter;->reportFinished(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;ILandroid/os/Bundle;)V PLcom/android/server/am/KeyguardController;->canShowActivityWhileKeyguardShowing(Lcom/android/server/am/ActivityRecord;Z)Z +PLcom/android/server/am/KeyguardController;->canShowWhileOccluded(ZZ)Z PLcom/android/server/am/KeyguardController;->convertTransitFlags(I)I PLcom/android/server/am/KeyguardController;->dismissDockedStackIfNeeded()V -PLcom/android/server/am/KeyguardController;->endActivityVisibilityUpdate()V +PLcom/android/server/am/KeyguardController;->handleDismissKeyguard()V PLcom/android/server/am/KeyguardController;->handleOccludedChanged()V -PLcom/android/server/am/KeyguardController;->isKeyguardLocked()Z -PLcom/android/server/am/KeyguardController;->isKeyguardShowing()Z PLcom/android/server/am/KeyguardController;->keyguardGoingAway(I)V PLcom/android/server/am/KeyguardController;->setKeyguardGoingAway(Z)V PLcom/android/server/am/KeyguardController;->setKeyguardShown(Z)V PLcom/android/server/am/KeyguardController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/am/KeyguardController;->visibilitiesUpdated()V +PLcom/android/server/am/KeyguardController;->updateKeyguardSleepToken()V PLcom/android/server/am/NativeCrashListener;-><init>(Lcom/android/server/am/ActivityManagerService;)V PLcom/android/server/am/NativeCrashListener;->run()V -PLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)V -PLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z -PLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I -PLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/PendingIntentRecord$Key;I)V -PLcom/android/server/am/PendingIntentRecord;->completeFinalize()V PLcom/android/server/am/PendingIntentRecord;->detachCancelListenersLocked()Landroid/os/RemoteCallbackList; -PLcom/android/server/am/PendingIntentRecord;->finalize()V -PLcom/android/server/am/PendingIntentRecord;->sendInner(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;Landroid/app/IActivityContainer;)I -PLcom/android/server/am/PendingIntentRecord;->sendWithResult(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I PLcom/android/server/am/PendingIntentRecord;->setWhitelistDurationLocked(Landroid/os/IBinder;J)V PLcom/android/server/am/ProcessList;->applyDisplaySize(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/am/ProcessList;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String; -PLcom/android/server/am/ProcessList;->computeNextPssTime(IZZZJ)J +PLcom/android/server/am/ProcessList;->getCachedRestoreThresholdKb()J PLcom/android/server/am/ProcessList;->makeOomAdjString(I)Ljava/lang/String; PLcom/android/server/am/ProcessList;->makeProcStateString(I)Ljava/lang/String; +PLcom/android/server/am/ProcessList;->minTimeFromStateChange(Z)J PLcom/android/server/am/ProcessList;->openLmkdSocket()Z -PLcom/android/server/am/ProcessList;->remove(I)V -PLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)V -PLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;ILcom/android/server/am/ProcessStatsService;)Z -PLcom/android/server/am/ProcessRecord;->forceProcessStateUpTo(I)V -PLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;Z)V -PLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V -PLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V -PLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V -PLcom/android/server/am/ProcessRecord;->setPid(I)V -PLcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String; -PLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V PLcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String; -PLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V +PLcom/android/server/am/ProcessStatsService$2;-><init>(Lcom/android/server/am/ProcessStatsService;)V +PLcom/android/server/am/ProcessStatsService$2;->run()V PLcom/android/server/am/ProcessStatsService;->addSysMemUsageLocked(JJJJJ)V -PLcom/android/server/am/ProcessStatsService;->getProcessStateLocked(Ljava/lang/String;IILjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState; -PLcom/android/server/am/ProcessStatsService;->getServiceStateLocked(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState; +PLcom/android/server/am/ProcessStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/am/ProcessStatsService;->dumpInner(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/am/ProcessStatsService;->getCommittedFiles(IZZ)Ljava/util/ArrayList; PLcom/android/server/am/ProcessStatsService;->isMemFactorLowered()Z -PLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z +PLcom/android/server/am/ProcessStatsService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +PLcom/android/server/am/ProcessStatsService;->performWriteState()V +PLcom/android/server/am/ProcessStatsService;->trimHistoricStatesWriteLocked()V +PLcom/android/server/am/ProcessStatsService;->writeStateAsyncLocked()V +PLcom/android/server/am/ProcessStatsService;->writeStateLocked(Z)V +PLcom/android/server/am/ProcessStatsService;->writeStateLocked(ZZ)V PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZILjava/util/ArrayList;)Z -PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z -PLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord; -PLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord; -PLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap; -PLcom/android/server/am/ProviderMap;->getProvidersByName(I)Ljava/util/HashMap; -PLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V -PLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V -PLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V -PLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V -PLcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V -PLcom/android/server/am/ReceiverList;->equals(Ljava/lang/Object;)Z -PLcom/android/server/am/ReceiverList;->hashCode()I -PLcom/android/server/am/ReceiverList;->toString()Ljava/lang/String; -PLcom/android/server/am/RecentTasks;->addLocked(Lcom/android/server/am/TaskRecord;)V PLcom/android/server/am/RecentTasks;->cleanupLocked(I)V +PLcom/android/server/am/RecentTasks;->getTaskDescriptionIcon(Ljava/lang/String;)Landroid/graphics/Bitmap; PLcom/android/server/am/RecentTasks;->loadPersistedTaskIdsForUserLocked(I)V PLcom/android/server/am/RecentTasks;->loadUserRecentsLocked(I)V -PLcom/android/server/am/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/am/TaskRecord;Z)V PLcom/android/server/am/RecentTasks;->onSystemReadyLocked()V PLcom/android/server/am/RecentTasks;->processNextAffiliateChainLocked(I)I -PLcom/android/server/am/RecentTasks;->shouldPersistTaskLocked(Lcom/android/server/am/TaskRecord;)Z -PLcom/android/server/am/RecentTasks;->syncPersistentTaskIdsLocked()V -PLcom/android/server/am/RecentTasks;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord; +PLcom/android/server/am/RecentTasks;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V PLcom/android/server/am/RecentTasks;->taskIdTakenForUserLocked(II)Z -PLcom/android/server/am/RecentTasks;->trimForTaskLocked(Lcom/android/server/am/TaskRecord;Z)I -PLcom/android/server/am/RecentTasks;->usersWithRecentsLoadedLocked()[I PLcom/android/server/am/ServiceRecord$1;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/app/Notification;Ljava/lang/String;III)V PLcom/android/server/am/ServiceRecord$1;->run()V PLcom/android/server/am/ServiceRecord$2;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;I)V PLcom/android/server/am/ServiceRecord$2;->run()V -PLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/am/ActivityManagerService$NeededUriGrants;I)V -PLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V PLcom/android/server/am/ServiceRecord;->cancelNotification()V -PLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V PLcom/android/server/am/ServiceRecord;->forceClearTracker()V -PLcom/android/server/am/ServiceRecord;->getLastStartId()I -PLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState; -PLcom/android/server/am/ServiceRecord;->makeNextStartId()I PLcom/android/server/am/ServiceRecord;->makeRestarting(IJ)V -PLcom/android/server/am/ServiceRecord;->postNotification()V -PLcom/android/server/am/ServiceRecord;->resetRestartCounter()V PLcom/android/server/am/ServiceRecord;->toString()Ljava/lang/String; PLcom/android/server/am/ServiceRecord;->updateWhitelistManager()V -PLcom/android/server/am/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/am/TaskChangeNotificationController;->-get10(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; PLcom/android/server/am/TaskChangeNotificationController;->-get11(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; PLcom/android/server/am/TaskChangeNotificationController;->-get13(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; @@ -6128,9 +8721,6 @@ PLcom/android/server/am/TaskChangeNotificationController;->-get17(Lcom/android/s PLcom/android/server/am/TaskChangeNotificationController;->-get18(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/ActivityStackSupervisor; PLcom/android/server/am/TaskChangeNotificationController;->-get4(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; PLcom/android/server/am/TaskChangeNotificationController;->-get9(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; -PLcom/android/server/am/TaskChangeNotificationController;->-wrap0(Lcom/android/server/am/TaskChangeNotificationController;Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V -PLcom/android/server/am/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V -PLcom/android/server/am/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3225(Landroid/app/ITaskStackListener;Landroid/os/Message;)V PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3334(Landroid/app/ITaskStackListener;Landroid/os/Message;)V PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3467(Landroid/app/ITaskStackListener;Landroid/os/Message;)V @@ -6141,89 +8731,67 @@ PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_s PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_5401(Landroid/app/ITaskStackListener;Landroid/os/Message;)V PLcom/android/server/am/TaskChangeNotificationController;->notifyActivityRequestedOrientationChanged(II)V PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskCreated(ILandroid/content/ComponentName;)V -PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskMovedToFront(I)V PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskRemovalStarted(I)V PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskRemoved(I)V PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V -PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskStackChanged()V PLcom/android/server/am/TaskChangeNotificationController;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V PLcom/android/server/am/TaskPersister$1;-><init>(Lcom/android/server/am/TaskPersister;)V PLcom/android/server/am/TaskPersister$1;->compare(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/TaskRecord;)I PLcom/android/server/am/TaskPersister$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -PLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->run()V +PLcom/android/server/am/TaskPersister$ImageWriteQueueItem;-><init>(Ljava/lang/String;Landroid/graphics/Bitmap;)V PLcom/android/server/am/TaskPersister$TaskWriteQueueItem;-><init>(Lcom/android/server/am/TaskRecord;)V PLcom/android/server/am/TaskPersister$WriteQueueItem;-><init>()V PLcom/android/server/am/TaskPersister$WriteQueueItem;-><init>(Lcom/android/server/am/TaskPersister$WriteQueueItem;)V -PLcom/android/server/am/TaskPersister;->-get0(Lcom/android/server/am/TaskPersister;)J -PLcom/android/server/am/TaskPersister;->-get1(Lcom/android/server/am/TaskPersister;)Lcom/android/server/am/RecentTasks; PLcom/android/server/am/TaskPersister;->-get2(Lcom/android/server/am/TaskPersister;)Lcom/android/server/am/ActivityManagerService; PLcom/android/server/am/TaskPersister;->-set0(Lcom/android/server/am/TaskPersister;J)J +PLcom/android/server/am/TaskPersister;->-wrap0(Ljava/lang/String;)Z PLcom/android/server/am/TaskPersister;->-wrap1(Lcom/android/server/am/TaskPersister;Lcom/android/server/am/TaskRecord;)Ljava/io/StringWriter; PLcom/android/server/am/TaskPersister;->-wrap2(Lcom/android/server/am/TaskPersister;Landroid/util/ArraySet;)V PLcom/android/server/am/TaskPersister;->-wrap3(Lcom/android/server/am/TaskPersister;)V -PLcom/android/server/am/TaskPersister;->getUserImagesDir(I)Ljava/io/File; +PLcom/android/server/am/TaskPersister;->createParentDirectory(Ljava/lang/String;)Z +PLcom/android/server/am/TaskPersister;->getImageFromWriteQueue(Ljava/lang/String;)Landroid/graphics/Bitmap; +PLcom/android/server/am/TaskPersister;->getTaskDescriptionIcon(Ljava/lang/String;)Landroid/graphics/Bitmap; PLcom/android/server/am/TaskPersister;->getUserPersistedTaskIdsFile(I)Ljava/io/File; -PLcom/android/server/am/TaskPersister;->getUserTasksDir(I)Ljava/io/File; PLcom/android/server/am/TaskPersister;->loadPersistedTaskIdsForUser(I)Landroid/util/SparseBooleanArray; -PLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V -PLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[Ljava/io/File;)V PLcom/android/server/am/TaskPersister;->removeThumbnails(Lcom/android/server/am/TaskRecord;)V -PLcom/android/server/am/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List; -PLcom/android/server/am/TaskPersister;->saveToXml(Lcom/android/server/am/TaskRecord;)Ljava/io/StringWriter; +PLcom/android/server/am/TaskPersister;->restoreImage(Ljava/lang/String;)Landroid/graphics/Bitmap; +PLcom/android/server/am/TaskPersister;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V PLcom/android/server/am/TaskPersister;->startPersisting()V PLcom/android/server/am/TaskPersister;->taskIdToTask(ILjava/util/ArrayList;)Lcom/android/server/am/TaskRecord; -PLcom/android/server/am/TaskPersister;->wakeup(Lcom/android/server/am/TaskRecord;Z)V -PLcom/android/server/am/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V -PLcom/android/server/am/TaskPersister;->writeTaskIdsFiles()V PLcom/android/server/am/TaskPersister;->yieldIfQueueTooDeep()V PLcom/android/server/am/TaskRecord;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZIIILjava/lang/String;Ljava/util/ArrayList;JJJZLandroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskThumbnailInfo;IIIIILjava/lang/String;IZZZZII)V -PLcom/android/server/am/TaskRecord;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;I)V -PLcom/android/server/am/TaskRecord;->addActivityAtIndex(ILcom/android/server/am/ActivityRecord;)V -PLcom/android/server/am/TaskRecord;->addActivityToTop(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/TaskRecord;->addStartingWindowsForVisibleActivities(Z)V PLcom/android/server/am/TaskRecord;->autoRemoveFromRecents()Z -PLcom/android/server/am/TaskRecord;->cancelThumbnailTransition()V -PLcom/android/server/am/TaskRecord;->cancelWindowTransition()V PLcom/android/server/am/TaskRecord;->closeRecentsChain()V -PLcom/android/server/am/TaskRecord;->createWindowContainer(ZZ)V +PLcom/android/server/am/TaskRecord;->containsOnlyFullscreenActivities()Z PLcom/android/server/am/TaskRecord;->disposeThumbnail()V -PLcom/android/server/am/TaskRecord;->findEffectiveRootIndex()I -PLcom/android/server/am/TaskRecord;->freeLastThumbnail()V -PLcom/android/server/am/TaskRecord;->getBaseIntent()Landroid/content/Intent; +PLcom/android/server/am/TaskRecord;->findActivityInHistoryLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/TaskRecord;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer; PLcom/android/server/am/TaskRecord;->getChildCount()I -PLcom/android/server/am/TaskRecord;->getLaunchBounds()Landroid/graphics/Rect; +PLcom/android/server/am/TaskRecord;->getLaunchStackId()I PLcom/android/server/am/TaskRecord;->getParent()Lcom/android/server/am/ConfigurationContainer; PLcom/android/server/am/TaskRecord;->getRootActivity()Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/TaskRecord;->getSnapshot(Z)Landroid/app/ActivityManager$TaskSnapshot; -PLcom/android/server/am/TaskRecord;->getStackId()I -PLcom/android/server/am/TaskRecord;->getTaskToReturnTo()I -PLcom/android/server/am/TaskRecord;->getTopActivity()Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/TaskRecord;->getWindowContainerBounds(Landroid/graphics/Rect;)V PLcom/android/server/am/TaskRecord;->getWindowContainerController()Lcom/android/server/wm/TaskWindowContainerController; PLcom/android/server/am/TaskRecord;->isApplicationTask()Z +PLcom/android/server/am/TaskRecord;->isAssistantTask()Z PLcom/android/server/am/TaskRecord;->isClearingToReuseTask()Z -PLcom/android/server/am/TaskRecord;->isHomeTask()Z PLcom/android/server/am/TaskRecord;->isLockTaskWhitelistedLocked()Z PLcom/android/server/am/TaskRecord;->isOverAssistantStack()Z -PLcom/android/server/am/TaskRecord;->isOverHomeStack()Z -PLcom/android/server/am/TaskRecord;->isResizeable()Z -PLcom/android/server/am/TaskRecord;->isResizeable(Z)Z +PLcom/android/server/am/TaskRecord;->isRecentsTask()Z +PLcom/android/server/am/TaskRecord;->isSameIntentFilter(Lcom/android/server/am/ActivityRecord;)Z PLcom/android/server/am/TaskRecord;->okToShowLocked()Z PLcom/android/server/am/TaskRecord;->onParentChanged()V PLcom/android/server/am/TaskRecord;->onSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V PLcom/android/server/am/TaskRecord;->onlyHasTaskOverlayActivities(Z)Z PLcom/android/server/am/TaskRecord;->performClearTaskAtIndexLocked(IZ)V PLcom/android/server/am/TaskRecord;->performClearTaskForReuseLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/TaskRecord;->performClearTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord; PLcom/android/server/am/TaskRecord;->removeActivity(Lcom/android/server/am/ActivityRecord;)Z PLcom/android/server/am/TaskRecord;->removeActivity(Lcom/android/server/am/ActivityRecord;Z)Z PLcom/android/server/am/TaskRecord;->removeTaskActivitiesLocked(Z)V PLcom/android/server/am/TaskRecord;->removeWindowContainer()V PLcom/android/server/am/TaskRecord;->removedFromRecents()V -PLcom/android/server/am/TaskRecord;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V -PLcom/android/server/am/TaskRecord;->setFrontOfTask()V -PLcom/android/server/am/TaskRecord;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V PLcom/android/server/am/TaskRecord;->setIntent(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/TaskRecord;->setLockTaskAuth()V PLcom/android/server/am/TaskRecord;->setMinDimensions(Landroid/content/pm/ActivityInfo;)V @@ -6233,24 +8801,11 @@ PLcom/android/server/am/TaskRecord;->setStack(Lcom/android/server/am/ActivitySta PLcom/android/server/am/TaskRecord;->setTaskToReturnTo(I)V PLcom/android/server/am/TaskRecord;->setTaskToReturnTo(Lcom/android/server/am/ActivityRecord;)V PLcom/android/server/am/TaskRecord;->setWindowContainerController(Lcom/android/server/wm/TaskWindowContainerController;)V -PLcom/android/server/am/TaskRecord;->supportsSplitScreen()Z +PLcom/android/server/am/TaskRecord;->toString()Ljava/lang/String; PLcom/android/server/am/TaskRecord;->topRunningActivityWithStartingWindowLocked()Lcom/android/server/am/ActivityRecord; -PLcom/android/server/am/TaskRecord;->touchActiveTime()V -PLcom/android/server/am/TaskRecord;->updateEffectiveIntent()V -PLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;)Z -PLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z -PLcom/android/server/am/TaskRecord;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect; -PLcom/android/server/am/TaskRecord;->updateTaskDescription()V PLcom/android/server/am/TaskRecord;->validateBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect; PLcom/android/server/am/UidRecord$ChangeItem;-><init>()V -PLcom/android/server/am/UidRecord;-><init>(I)V PLcom/android/server/am/UidRecord;->toString()Ljava/lang/String; -PLcom/android/server/am/UidRecord;->updateHasInternetPermission()V -PLcom/android/server/am/UidRecord;->updateLastDispatchedProcStateSeq(I)V -PLcom/android/server/am/UriPermission;-><init>(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/am/ActivityManagerService$GrantUri;)V -PLcom/android/server/am/UriPermission;->grantModes(ILcom/android/server/am/UriPermissionOwner;)V -PLcom/android/server/am/UriPermission;->revokeModes(IZ)Z -PLcom/android/server/am/UriPermission;->updateModeFlags()V PLcom/android/server/am/UriPermissionOwner$ExternalToken;-><init>(Lcom/android/server/am/UriPermissionOwner;)V PLcom/android/server/am/UriPermissionOwner;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/Object;)V PLcom/android/server/am/UriPermissionOwner;->getExternalTokenLocked()Landroid/os/Binder; @@ -6260,28 +8815,17 @@ PLcom/android/server/am/UriPermissionOwner;->removeUriPermissionsLocked(I)V PLcom/android/server/am/UserController$2;-><init>(Lcom/android/server/am/UserController;I)V PLcom/android/server/am/UserController$2;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V PLcom/android/server/am/UserController$Injector;->broadcastIntentLocked(Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIII)I -PLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I -PLcom/android/server/am/UserController$Injector;->checkComponentPermission(Ljava/lang/String;IIIZ)I -PLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService; PLcom/android/server/am/UserController$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal; PLcom/android/server/am/UserController$Injector;->isRuntimeRestarted()Z PLcom/android/server/am/UserController;->-get0()Ljava/lang/String; PLcom/android/server/am/UserController;->dispatchLockedBootComplete(I)V -PLcom/android/server/am/UserController;->exists(I)Z PLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;Landroid/content/IIntentReceiver;)V PLcom/android/server/am/UserController;->finishUserUnlocked(Lcom/android/server/am/UserState;)V PLcom/android/server/am/UserController;->finishUserUnlockedCompleted(Lcom/android/server/am/UserState;)V PLcom/android/server/am/UserController;->finishUserUnlocking(Lcom/android/server/am/UserState;)V -PLcom/android/server/am/UserController;->getCurrentUser()Landroid/content/pm/UserInfo; -PLcom/android/server/am/UserController;->getCurrentUserIdLocked()I -PLcom/android/server/am/UserController;->getProfileIds(I)Ljava/util/Set; -PLcom/android/server/am/UserController;->getStartedUserArrayLocked()[I PLcom/android/server/am/UserController;->getStorageManager()Landroid/os/storage/IStorageManager; -PLcom/android/server/am/UserController;->getUserInfo(I)Landroid/content/pm/UserInfo; -PLcom/android/server/am/UserController;->hasStartedUserState(I)Z +PLcom/android/server/am/UserController;->getUsers()[I PLcom/android/server/am/UserController;->hasUserRestriction(Ljava/lang/String;I)Z -PLcom/android/server/am/UserController;->isSameProfileGroup(II)Z -PLcom/android/server/am/UserController;->isUserRunningLocked(II)Z PLcom/android/server/am/UserController;->maybeUnlockUser(I)Z PLcom/android/server/am/UserController;->onSystemReady()V PLcom/android/server/am/UserController;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V @@ -6290,7 +8834,6 @@ PLcom/android/server/am/UserController;->sendUserSwitchBroadcastsLocked(II)V PLcom/android/server/am/UserController;->shouldConfirmCredentials(I)Z PLcom/android/server/am/UserController;->startProfilesLocked()V PLcom/android/server/am/UserController;->unlockUserCleared(I[B[BLandroid/os/IProgressListener;)Z -PLcom/android/server/am/UserController;->unsafeConvertIncomingUserLocked(I)I PLcom/android/server/am/UserController;->updateCurrentProfileIdsLocked()V PLcom/android/server/am/UserState;->setState(I)V PLcom/android/server/am/UserState;->setState(II)Z @@ -6300,17 +8843,17 @@ PLcom/android/server/am/VrController;->clearVrRenderThreadLocked(Z)V PLcom/android/server/am/VrController;->hasPersistentVrFlagSet()Z PLcom/android/server/am/VrController;->inVrMode()Z PLcom/android/server/am/VrController;->onSystemReady()V -PLcom/android/server/am/VrController;->onTopProcChangedLocked(Lcom/android/server/am/ProcessRecord;)V -PLcom/android/server/am/VrController;->onVrModeChanged(Lcom/android/server/am/ActivityRecord;)Z -PLcom/android/server/am/VrController;->setVrRenderThreadLocked(IIZ)I PLcom/android/server/am/VrController;->shouldDisableNonVrUiLocked()Z PLcom/android/server/am/VrController;->updateVrRenderThreadLocked(IZ)I +PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;->$m$0()V +PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;-><init>(ILjava/lang/Object;)V +PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;->run()V PLcom/android/server/appwidget/AppWidgetService;-><init>(Landroid/content/Context;)V +PLcom/android/server/appwidget/AppWidgetService;->lambda$-com_android_server_appwidget_AppWidgetService_1563(I)V PLcom/android/server/appwidget/AppWidgetService;->onBootPhase(I)V PLcom/android/server/appwidget/AppWidgetService;->onStart()V PLcom/android/server/appwidget/AppWidgetService;->onUnlockUser(I)V PLcom/android/server/appwidget/AppWidgetServiceImpl$1;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V -PLcom/android/server/appwidget/AppWidgetServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;)V PLcom/android/server/appwidget/AppWidgetServiceImpl$CallbackHandler;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/os/Looper;)V @@ -6320,87 +8863,73 @@ PLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;-><init>(IILjava/lang PLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;->equals(Ljava/lang/Object;)Z PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;-><init>()V PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V -PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->getUserId()I PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedByLockedProfileLocked(Z)Z PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedByQuietProfileLocked(Z)Z PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedBySuspendedPackageLocked(Z)Z -PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;)V -PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)V -PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->hashCode()I +PLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;->run()V PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;)V -PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceCallFromPackage(Ljava/lang/String;)V -PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I -PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getGroupParent(I)I -PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isEnabledGroupProfile(I)Z PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isParentOrProfile(II)Z PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProfileEnabled(I)Z PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProviderInCallerOrInProfileAndWhitelListed(Ljava/lang/String;I)Z PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get0()Z PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get1(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/app/AppOpsManager; -PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get10(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/os/UserManager; -PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get9(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get5(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Ljava/lang/Object; PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap10(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap11(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/content/Intent;I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap14(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap4(Lcom/android/server/appwidget/AppWidgetServiceImpl;IZ)V PLcom/android/server/appwidget/AppWidgetServiceImpl;-><init>(Landroid/content/Context;)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->addProviderLocked(Landroid/content/pm/ResolveInfo;)Z PLcom/android/server/appwidget/AppWidgetServiceImpl;->bindLoadedWidgetsLocked(Ljava/util/List;)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->clearProvidersAndHostsTagsLocked()V PLcom/android/server/appwidget/AppWidgetServiceImpl;->cloneIfLocalBinder(Landroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetProviderInfo; PLcom/android/server/appwidget/AppWidgetServiceImpl;->computeMaximumWidgetBitmapMemory()V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(I)V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I PLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice; PLcom/android/server/appwidget/AppWidgetServiceImpl;->getSavedStateFile(I)Landroid/util/AtomicFile; PLcom/android/server/appwidget/AppWidgetServiceImpl;->getStateFile(I)Ljava/io/File; -PLcom/android/server/appwidget/AppWidgetServiceImpl;->getUidForPackage(Ljava/lang/String;I)I PLcom/android/server/appwidget/AppWidgetServiceImpl;->getWidgetIds(Ljava/util/ArrayList;)[I PLcom/android/server/appwidget/AppWidgetServiceImpl;->isLocalBinder()Z -PLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z PLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithUnlockedParent(I)Z -PLcom/android/server/appwidget/AppWidgetServiceImpl;->isUserRunningAndUnlocked(I)Z PLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupStateLocked([I)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupWidgetProvidersLocked([I)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host; PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupOrAddHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host; -PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider; PLcom/android/server/appwidget/AppWidgetServiceImpl;->onConfigurationChanged()V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->onPackageBroadcastReceived(Landroid/content/Intent;I)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->onStart()V PLcom/android/server/appwidget/AppWidgetServiceImpl;->onUserUnlocked(I)V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->parseProviderInfoXml(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ResolveInfo;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider; PLcom/android/server/appwidget/AppWidgetServiceImpl;->performUpgradeLocked(I)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->pruneHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->queryIntentReceivers(Landroid/content/Intent;I)Ljava/util/List; PLcom/android/server/appwidget/AppWidgetServiceImpl;->readProfileStateFromFileLocked(Ljava/io/FileInputStream;ILjava/util/List;)I PLcom/android/server/appwidget/AppWidgetServiceImpl;->registerBroadcastReceiver()V PLcom/android/server/appwidget/AppWidgetServiceImpl;->registerOnCrossProfileProvidersChangedListener()V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedState(I)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedStateForGroup(I)V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->resolveHostUidLocked(Ljava/lang/String;I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->saveGroupStateAsync(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->saveStateLocked(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyGroupHostsForProvidersChangedLocked(I)V PLcom/android/server/appwidget/AppWidgetServiceImpl;->setSafeMode(Z)V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice; PLcom/android/server/appwidget/AppWidgetServiceImpl;->stopListening(Ljava/lang/String;I)V -PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateProvidersForPackageLocked(Ljava/lang/String;ILjava/util/Set;)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl;->tagProvidersAndHosts()V +PLcom/android/server/audio/AudioEventLogger$StringEvent;-><init>(Ljava/lang/String;)V +PLcom/android/server/audio/AudioEventLogger;-><init>(ILjava/lang/String;)V PLcom/android/server/audio/AudioService$1;-><init>(Lcom/android/server/audio/AudioService;)V PLcom/android/server/audio/AudioService$1;->onError(I)V PLcom/android/server/audio/AudioService$2;-><init>(Lcom/android/server/audio/AudioService;)V -PLcom/android/server/audio/AudioService$2;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V +PLcom/android/server/audio/AudioService$2;->onUidGone(IZ)V PLcom/android/server/audio/AudioService$3;-><init>(Lcom/android/server/audio/AudioService;)V -PLcom/android/server/audio/AudioService$4;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V +PLcom/android/server/audio/AudioService$3;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V +PLcom/android/server/audio/AudioService$4;-><init>(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$5;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V PLcom/android/server/audio/AudioService$AudioHandler;-><init>(Lcom/android/server/audio/AudioService;)V PLcom/android/server/audio/AudioService$AudioHandler;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioHandler;)V -PLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/audio/AudioService$AudioHandler;->onLoadSoundEffects()Z PLcom/android/server/audio/AudioService$AudioHandler;->onPersistSafeVolumeState(I)V -PLcom/android/server/audio/AudioService$AudioHandler;->onPlaySoundEffect(II)V -PLcom/android/server/audio/AudioService$AudioHandler;->persistRingerMode(I)V PLcom/android/server/audio/AudioService$AudioHandler;->persistVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V -PLcom/android/server/audio/AudioService$AudioHandler;->setAllVolumes(Lcom/android/server/audio/AudioService$VolumeStreamState;)V PLcom/android/server/audio/AudioService$AudioHandler;->setDeviceVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V -PLcom/android/server/audio/AudioService$AudioHandler;->setForceUse(II)V +PLcom/android/server/audio/AudioService$AudioHandler;->setForceUse(IILjava/lang/String;)V PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;)V PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;)V PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V @@ -6453,51 +8982,38 @@ PLcom/android/server/audio/AudioService$VolumeStreamState;->-wrap0(Lcom/android/ PLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;I)V PLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;ILcom/android/server/audio/AudioService$VolumeStreamState;)V PLcom/android/server/audio/AudioService$VolumeStreamState;->adjustIndex(IILjava/lang/String;)Z -PLcom/android/server/audio/AudioService$VolumeStreamState;->applyAllVolumes()V PLcom/android/server/audio/AudioService$VolumeStreamState;->applyDeviceVolume_syncVSS(I)V PLcom/android/server/audio/AudioService$VolumeStreamState;->checkFixedVolumeDevices()V -PLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I -PLcom/android/server/audio/AudioService$VolumeStreamState;->getMaxIndex()I PLcom/android/server/audio/AudioService$VolumeStreamState;->getMinIndex()I -PLcom/android/server/audio/AudioService$VolumeStreamState;->getSettingNameForDevice(I)Ljava/lang/String; PLcom/android/server/audio/AudioService$VolumeStreamState;->getStreamType()I PLcom/android/server/audio/AudioService$VolumeStreamState;->getValidIndex(I)I PLcom/android/server/audio/AudioService$VolumeStreamState;->hasIndexForDevice(I)Z -PLcom/android/server/audio/AudioService$VolumeStreamState;->hasValidSettingsName()Z PLcom/android/server/audio/AudioService$VolumeStreamState;->mute(Z)V -PLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)I -PLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V -PLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V -PLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(IILjava/lang/String;)Z PLcom/android/server/audio/AudioService;->-get0()[I PLcom/android/server/audio/AudioService;->-get1()[I PLcom/android/server/audio/AudioService;->-get12(Lcom/android/server/audio/AudioService;)Z PLcom/android/server/audio/AudioService;->-get13(Lcom/android/server/audio/AudioService;)Landroid/bluetooth/BluetoothHeadset; PLcom/android/server/audio/AudioService;->-get15(Lcom/android/server/audio/AudioService;)Ljava/lang/Boolean; PLcom/android/server/audio/AudioService;->-get16(Lcom/android/server/audio/AudioService;)Landroid/util/ArrayMap; -PLcom/android/server/audio/AudioService;->-get17(Lcom/android/server/audio/AudioService;)Landroid/content/ContentResolver; PLcom/android/server/audio/AudioService;->-get2()Ljava/util/List; -PLcom/android/server/audio/AudioService;->-get23(Lcom/android/server/audio/AudioService;)Z -PLcom/android/server/audio/AudioService;->-get24(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/MediaFocusControl; -PLcom/android/server/audio/AudioService;->-get26(Lcom/android/server/audio/AudioService;)Landroid/media/AudioManagerInternal$RingerModeDelegate; -PLcom/android/server/audio/AudioService;->-get28(Lcom/android/server/audio/AudioService;)I -PLcom/android/server/audio/AudioService;->-get29(Lcom/android/server/audio/AudioService;)Ljava/util/ArrayList; +PLcom/android/server/audio/AudioService;->-get24(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get25(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/MediaFocusControl; +PLcom/android/server/audio/AudioService;->-get28(Lcom/android/server/audio/AudioService;)Landroid/media/AudioManagerInternal$RingerModeDelegate; PLcom/android/server/audio/AudioService;->-get3(Lcom/android/server/audio/AudioService;)[[I -PLcom/android/server/audio/AudioService;->-get31(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; -PLcom/android/server/audio/AudioService;->-get32(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; -PLcom/android/server/audio/AudioService;->-get33(Lcom/android/server/audio/AudioService;)Landroid/media/SoundPool; -PLcom/android/server/audio/AudioService;->-get34(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolCallback; -PLcom/android/server/audio/AudioService;->-get35(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolListenerThread; -PLcom/android/server/audio/AudioService;->-get36(Lcom/android/server/audio/AudioService;)Landroid/os/Looper; -PLcom/android/server/audio/AudioService;->-get37(Lcom/android/server/audio/AudioService;)[Lcom/android/server/audio/AudioService$VolumeStreamState; -PLcom/android/server/audio/AudioService;->-get38(Lcom/android/server/audio/AudioService;)Z -PLcom/android/server/audio/AudioService;->-get39(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get30(Lcom/android/server/audio/AudioService;)I +PLcom/android/server/audio/AudioService;->-get31(Lcom/android/server/audio/AudioService;)Ljava/util/ArrayList; +PLcom/android/server/audio/AudioService;->-get33(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; +PLcom/android/server/audio/AudioService;->-get34(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; +PLcom/android/server/audio/AudioService;->-get36(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolCallback; +PLcom/android/server/audio/AudioService;->-get37(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolListenerThread; +PLcom/android/server/audio/AudioService;->-get38(Lcom/android/server/audio/AudioService;)Landroid/os/Looper; PLcom/android/server/audio/AudioService;->-get4(Lcom/android/server/audio/AudioService;)Landroid/bluetooth/BluetoothA2dp; PLcom/android/server/audio/AudioService;->-get40(Lcom/android/server/audio/AudioService;)Z -PLcom/android/server/audio/AudioService;->-get42()I +PLcom/android/server/audio/AudioService;->-get41(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get42(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get45()I PLcom/android/server/audio/AudioService;->-get5(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; PLcom/android/server/audio/AudioService;->-get7(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; -PLcom/android/server/audio/AudioService;->-get9(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$AudioHandler; PLcom/android/server/audio/AudioService;->-set0(Lcom/android/server/audio/AudioService;Landroid/bluetooth/BluetoothA2dp;)Landroid/bluetooth/BluetoothA2dp; PLcom/android/server/audio/AudioService;->-set1(Lcom/android/server/audio/AudioService;[I)[I PLcom/android/server/audio/AudioService;->-set12(Lcom/android/server/audio/AudioService;Landroid/media/SoundPool;)Landroid/media/SoundPool; @@ -6521,7 +9037,7 @@ PLcom/android/server/audio/AudioService;->-wrap35(Lcom/android/server/audio/Audi PLcom/android/server/audio/AudioService;->-wrap36(Lcom/android/server/audio/AudioService;Landroid/content/Intent;)V PLcom/android/server/audio/AudioService;->-wrap38(Landroid/os/Handler;IIIILjava/lang/Object;I)V PLcom/android/server/audio/AudioService;->-wrap4(Lcom/android/server/audio/AudioService;I)I -PLcom/android/server/audio/AudioService;->-wrap40(Lcom/android/server/audio/AudioService;II)V +PLcom/android/server/audio/AudioService;->-wrap40(Lcom/android/server/audio/AudioService;IILjava/lang/String;)V PLcom/android/server/audio/AudioService;->-wrap6(Lcom/android/server/audio/AudioService;III)I PLcom/android/server/audio/AudioService;-><init>(Landroid/content/Context;)V PLcom/android/server/audio/AudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I @@ -6535,7 +9051,6 @@ PLcom/android/server/audio/AudioService;->broadcastVibrateSetting(I)V PLcom/android/server/audio/AudioService;->checkAllAliasStreamVolumes()V PLcom/android/server/audio/AudioService;->checkAllFixedVolumeDevices()V PLcom/android/server/audio/AudioService;->checkAudioSettingsPermission(Ljava/lang/String;)Z -PLcom/android/server/audio/AudioService;->checkForRingerModeChange(IIIZLjava/lang/String;I)I PLcom/android/server/audio/AudioService;->checkMuteAffectedStreams()V PLcom/android/server/audio/AudioService;->checkScoAudioState()V PLcom/android/server/audio/AudioService;->clearAllScoClients(IZ)V @@ -6546,19 +9061,16 @@ PLcom/android/server/audio/AudioService;->enforceSafeMediaVolume(Ljava/lang/Stri PLcom/android/server/audio/AudioService;->enforceVolumeController(Ljava/lang/String;)V PLcom/android/server/audio/AudioService;->ensureValidDirection(I)V PLcom/android/server/audio/AudioService;->ensureValidRingerMode(I)V -PLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V PLcom/android/server/audio/AudioService;->forceVolumeControlStream(ILandroid/os/IBinder;)V PLcom/android/server/audio/AudioService;->getActiveStreamType(I)I PLcom/android/server/audio/AudioService;->getBluetoothHeadset()Z PLcom/android/server/audio/AudioService;->getCurrentUserId()I -PLcom/android/server/audio/AudioService;->getDeviceForStream(I)I -PLcom/android/server/audio/AudioService;->getDevicesForStream(I)I -PLcom/android/server/audio/AudioService;->getDevicesForStream(IZ)I PLcom/android/server/audio/AudioService;->getLastAudibleStreamVolume(I)I PLcom/android/server/audio/AudioService;->getMode()I PLcom/android/server/audio/AudioService;->getRingerModeExternal()I PLcom/android/server/audio/AudioService;->getRingerModeInternal()I PLcom/android/server/audio/AudioService;->getRingtonePlayer()Landroid/media/IRingtonePlayer; +PLcom/android/server/audio/AudioService;->getSafeUsbMediaVolumeIndex()I PLcom/android/server/audio/AudioService;->getStreamMaxVolume(I)I PLcom/android/server/audio/AudioService;->getStreamMinVolume(I)I PLcom/android/server/audio/AudioService;->getStreamVolume(I)I @@ -6567,7 +9079,6 @@ PLcom/android/server/audio/AudioService;->getVibrateSetting(I)I PLcom/android/server/audio/AudioService;->handleConfigurationChanged(Landroid/content/Context;)V PLcom/android/server/audio/AudioService;->initA11yMonitoring()V PLcom/android/server/audio/AudioService;->isAfMusicActiveRecently(I)Z -PLcom/android/server/audio/AudioService;->isAndroidNPlus(Ljava/lang/String;)Z PLcom/android/server/audio/AudioService;->isBluetoothScoOn()Z PLcom/android/server/audio/AudioService;->isCameraSoundForced()Z PLcom/android/server/audio/AudioService;->isInCommunication()Z @@ -6584,6 +9095,7 @@ PLcom/android/server/audio/AudioService;->loadTouchSoundAssets()V PLcom/android/server/audio/AudioService;->muteRingerModeStreams()V PLcom/android/server/audio/AudioService;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V PLcom/android/server/audio/AudioService;->observeDevicesForStreams(I)V +PLcom/android/server/audio/AudioService;->onAccessibilityServicesStateChanged(Landroid/view/accessibility/AccessibilityManager;)V PLcom/android/server/audio/AudioService;->onBroadcastScoConnectionState(I)V PLcom/android/server/audio/AudioService;->onConfigureSafeVolume(ZLjava/lang/String;)V PLcom/android/server/audio/AudioService;->onIndicateSystemReady()V @@ -6591,7 +9103,6 @@ PLcom/android/server/audio/AudioService;->onSystemReady()V PLcom/android/server/audio/AudioService;->playSoundEffect(I)V PLcom/android/server/audio/AudioService;->playSoundEffectVolume(IF)V PLcom/android/server/audio/AudioService;->playerAttributes(ILandroid/media/AudioAttributes;)V -PLcom/android/server/audio/AudioService;->playerEvent(II)V PLcom/android/server/audio/AudioService;->readAndSetLowRamDevice()V PLcom/android/server/audio/AudioService;->readAudioSettings(Z)V PLcom/android/server/audio/AudioService;->readCameraSoundForced()Z @@ -6601,16 +9112,15 @@ PLcom/android/server/audio/AudioService;->readUserRestrictions()V PLcom/android/server/audio/AudioService;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V PLcom/android/server/audio/AudioService;->releasePlayer(I)V PLcom/android/server/audio/AudioService;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I -PLcom/android/server/audio/AudioService;->rescaleIndex(III)I PLcom/android/server/audio/AudioService;->resetBluetoothSco()V -PLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;)V -PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(I)V -PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(Landroid/content/ContentResolver;)V -PLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V +PLcom/android/server/audio/AudioService;->safeMediaVolumeIndex(I)I +PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(ILjava/lang/String;)V +PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(Landroid/content/ContentResolver;Ljava/lang/String;)V PLcom/android/server/audio/AudioService;->sendStickyBroadcastToAll(Landroid/content/Intent;)V PLcom/android/server/audio/AudioService;->sendVolumeUpdate(IIII)V -PLcom/android/server/audio/AudioService;->setBluetoothScoOnInt(Z)V -PLcom/android/server/audio/AudioService;->setForceUseInt_SyncDevices(II)V +PLcom/android/server/audio/AudioService;->setBluetoothA2dpOn(Z)V +PLcom/android/server/audio/AudioService;->setBluetoothScoOnInt(ZLjava/lang/String;)V +PLcom/android/server/audio/AudioService;->setForceUseInt_SyncDevices(IILjava/lang/String;)V PLcom/android/server/audio/AudioService;->setMode(ILandroid/os/IBinder;Ljava/lang/String;)V PLcom/android/server/audio/AudioService;->setModeInt(ILandroid/os/IBinder;ILjava/lang/String;)I PLcom/android/server/audio/AudioService;->setRingerMode(ILjava/lang/String;Z)V @@ -6620,6 +9130,7 @@ PLcom/android/server/audio/AudioService;->setRingerModeInternal(ILjava/lang/Stri PLcom/android/server/audio/AudioService;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V PLcom/android/server/audio/AudioService;->setStreamVolumeInt(IIIZLjava/lang/String;)V PLcom/android/server/audio/AudioService;->setSystemAudioMute(Z)V +PLcom/android/server/audio/AudioService;->setSystemAudioVolume(IIII)V PLcom/android/server/audio/AudioService;->setVolumeController(Landroid/media/IVolumeController;)V PLcom/android/server/audio/AudioService;->setVolumePolicy(Landroid/media/VolumePolicy;)V PLcom/android/server/audio/AudioService;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo; @@ -6627,17 +9138,24 @@ PLcom/android/server/audio/AudioService;->systemReady()V PLcom/android/server/audio/AudioService;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I PLcom/android/server/audio/AudioService;->updateA11yVolumeAlias(Z)V PLcom/android/server/audio/AudioService;->updateDefaultStreamOverrideDelay(Z)V +PLcom/android/server/audio/AudioService;->updateDefaultVolumes()V +PLcom/android/server/audio/AudioService;->updateFlagsForSystemAudio(I)I PLcom/android/server/audio/AudioService;->updateMasterMono(Landroid/content/ContentResolver;)V PLcom/android/server/audio/AudioService;->updateRingerModeAffectedStreams()Z PLcom/android/server/audio/AudioService;->updateStreamVolumeAlias(ZLjava/lang/String;)V PLcom/android/server/audio/AudioService;->volumeAdjustmentAllowedByDnd(II)Z PLcom/android/server/audio/AudioService;->waitForAudioHandlerCreation()V -PLcom/android/server/audio/AudioService;->wouldToggleZenMode(I)Z +PLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;-><init>(IILjava/lang/String;)V +PLcom/android/server/audio/AudioServiceEvents$PhoneStateEvent;-><init>(Ljava/lang/String;II)V +PLcom/android/server/audio/AudioServiceEvents$VolumeEvent;-><init>(IIIILjava/lang/String;)V PLcom/android/server/audio/FocusRequester;-><init>(Landroid/media/AudioAttributes;IILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;Ljava/lang/String;Lcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;Ljava/lang/String;ILcom/android/server/audio/MediaFocusControl;I)V PLcom/android/server/audio/FocusRequester;->finalize()V PLcom/android/server/audio/FocusRequester;->getClientUid()I +PLcom/android/server/audio/FocusRequester;->getGainRequest()I +PLcom/android/server/audio/FocusRequester;->getGrantFlags()I PLcom/android/server/audio/FocusRequester;->handleFocusGainFromRequest(I)V PLcom/android/server/audio/FocusRequester;->hasSameClient(Ljava/lang/String;)Z +PLcom/android/server/audio/FocusRequester;->isLockedFocusOwner()Z PLcom/android/server/audio/FocusRequester;->release()V PLcom/android/server/audio/FocusRequester;->toAudioFocusInfo()Landroid/media/AudioFocusInfo; PLcom/android/server/audio/MediaFocusControl$2;-><init>(Lcom/android/server/audio/MediaFocusControl;Z)V @@ -6652,6 +9170,7 @@ PLcom/android/server/audio/MediaFocusControl;->abandonAudioFocus(Landroid/media/ PLcom/android/server/audio/MediaFocusControl;->canReassignAudioFocus()Z PLcom/android/server/audio/MediaFocusControl;->discardAudioFocusOwner()V PLcom/android/server/audio/MediaFocusControl;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I +PLcom/android/server/audio/MediaFocusControl;->isLockedFocusOwner(Lcom/android/server/audio/FocusRequester;)Z PLcom/android/server/audio/MediaFocusControl;->notifyExtFocusPolicyFocusRequest_syncAf(Landroid/media/AudioFocusInfo;ILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;)Z PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusGrant_syncAf(Landroid/media/AudioFocusInfo;I)V PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusLoss_syncAf(Landroid/media/AudioFocusInfo;Z)V @@ -6660,27 +9179,28 @@ PLcom/android/server/audio/MediaFocusControl;->removeFocusStackEntry(Ljava/lang/ PLcom/android/server/audio/MediaFocusControl;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;II)I PLcom/android/server/audio/MediaFocusControl;->runAudioCheckerForRingOrCallAsync(Z)V PLcom/android/server/audio/MediaFocusControl;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V +PLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;-><init>(ILandroid/media/AudioAttributes;)V PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>()V PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>(Lcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;)V +PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->checkDuck(Landroid/media/AudioPlaybackConfiguration;)V PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->unduckUid(ILjava/util/HashMap;)V +PLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;-><init>(Landroid/media/AudioPlaybackConfiguration;)V PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;-><init>(Landroid/media/IPlaybackConfigDispatcher;Z)V PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->init()Z +PLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;-><init>(II)V PLcom/android/server/audio/PlaybackActivityMonitor;-><init>()V PLcom/android/server/audio/PlaybackActivityMonitor;->checkConfigurationCaller(ILandroid/media/AudioPlaybackConfiguration;I)Z -PLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange()V PLcom/android/server/audio/PlaybackActivityMonitor;->mutePlayersForCall([I)V PLcom/android/server/audio/PlaybackActivityMonitor;->playerAttributes(ILandroid/media/AudioAttributes;I)V PLcom/android/server/audio/PlaybackActivityMonitor;->playerDeath(I)V -PLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(III)V PLcom/android/server/audio/PlaybackActivityMonitor;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;Z)V PLcom/android/server/audio/PlaybackActivityMonitor;->releasePlayer(II)V -PLcom/android/server/audio/PlaybackActivityMonitor;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I PLcom/android/server/audio/PlaybackActivityMonitor;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V PLcom/android/server/audio/PlaybackActivityMonitor;->unmutePlayersForCall()V -PLcom/android/server/audio/RecordingActivityMonitor;-><init>()V +PLcom/android/server/audio/RecordingActivityMonitor;-><init>(Landroid/content/Context;)V PLcom/android/server/audio/RecordingActivityMonitor;->initMonitor()V -PLcom/android/server/audio/RecordingActivityMonitor;->onRecordingConfigurationChanged(III[I)V +PLcom/android/server/audio/RecordingActivityMonitor;->onRecordingConfigurationChanged(IIII[ILjava/lang/String;)V PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;->$m$0()V PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;-><init>(IILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;->run()V @@ -6692,11 +9212,16 @@ PLcom/android/server/autofill/-$Lambda$vJuxjgWyqc7YDAVrm5huZJMbjMg;->onUserRestr PLcom/android/server/autofill/AutofillManagerService$1;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V PLcom/android/server/autofill/AutofillManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/autofill/AutofillManagerService$2;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V +PLcom/android/server/autofill/AutofillManagerService$2;->getActiveAutofillServicePackageName()Ljava/lang/String; +PLcom/android/server/autofill/AutofillManagerService$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/autofill/AutofillManagerService$2;->onPackageUpdateFinished(Ljava/lang/String;I)V PLcom/android/server/autofill/AutofillManagerService$2;->onSomePackagesChanged()V PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->addClient(Landroid/view/autofill/IAutoFillManagerClient;I)I +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->finishSession(II)V +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->getFillEventHistory()Landroid/service/autofill/FillEventHistory; +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->setHasCallback(IIZ)V PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILjava/lang/String;)I -PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V PLcom/android/server/autofill/AutofillManagerService$LocalService;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V PLcom/android/server/autofill/AutofillManagerService$LocalService;-><init>(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/server/autofill/AutofillManagerService$LocalService;)V PLcom/android/server/autofill/AutofillManagerService$LocalService;->onBackKeyPressed()V @@ -6706,12 +9231,10 @@ PLcom/android/server/autofill/AutofillManagerService;->-get2(Lcom/android/server PLcom/android/server/autofill/AutofillManagerService;->-get5(Lcom/android/server/autofill/AutofillManagerService;)Lcom/android/server/autofill/ui/AutoFillUI; PLcom/android/server/autofill/AutofillManagerService;->-wrap2(Lcom/android/server/autofill/AutofillManagerService;I)V PLcom/android/server/autofill/AutofillManagerService;-><init>(Landroid/content/Context;)V -PLcom/android/server/autofill/AutofillManagerService;->getServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl; PLcom/android/server/autofill/AutofillManagerService;->lambda$-com_android_server_autofill_AutofillManagerService_5890(ILandroid/os/Bundle;Landroid/os/Bundle;)V PLcom/android/server/autofill/AutofillManagerService;->onBootPhase(I)V PLcom/android/server/autofill/AutofillManagerService;->onStart()V PLcom/android/server/autofill/AutofillManagerService;->onUnlockUser(I)V -PLcom/android/server/autofill/AutofillManagerService;->peekServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl; PLcom/android/server/autofill/AutofillManagerService;->setDebugLocked(Z)V PLcom/android/server/autofill/AutofillManagerService;->startTrackingPackageChanges()V PLcom/android/server/autofill/AutofillManagerService;->updateCachedServiceLocked(I)V @@ -6719,15 +9242,20 @@ PLcom/android/server/autofill/AutofillManagerService;->updateCachedServiceLocked PLcom/android/server/autofill/AutofillManagerServiceImpl;-><init>(Landroid/content/Context;Ljava/lang/Object;Landroid/util/LocalLog;ILcom/android/server/autofill/ui/AutoFillUI;Z)V PLcom/android/server/autofill/AutofillManagerServiceImpl;->addClientLocked(Landroid/view/autofill/IAutoFillManagerClient;)Z PLcom/android/server/autofill/AutofillManagerServiceImpl;->createSessionByTokenLocked(Landroid/os/IBinder;ILandroid/os/IBinder;ZLjava/lang/String;)Lcom/android/server/autofill/Session; +PLcom/android/server/autofill/AutofillManagerServiceImpl;->destroySessionsLocked()V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->finishSessionLocked(II)V PLcom/android/server/autofill/AutofillManagerServiceImpl;->getComponentNameFromSettings()Ljava/lang/String; +PLcom/android/server/autofill/AutofillManagerServiceImpl;->getFillEventHistory(I)Landroid/service/autofill/FillEventHistory; +PLcom/android/server/autofill/AutofillManagerServiceImpl;->getServiceComponentName()Landroid/content/ComponentName; PLcom/android/server/autofill/AutofillManagerServiceImpl;->isEnabled()Z PLcom/android/server/autofill/AutofillManagerServiceImpl;->isSetupCompletedLocked()Z PLcom/android/server/autofill/AutofillManagerServiceImpl;->pruneAbandonedSessionsLocked()V PLcom/android/server/autofill/AutofillManagerServiceImpl;->removeSessionLocked(I)V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->resetLastResponse()V PLcom/android/server/autofill/AutofillManagerServiceImpl;->sendStateToClients(Z)V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->setHasCallback(IIZ)V PLcom/android/server/autofill/AutofillManagerServiceImpl;->startSessionLocked(Landroid/os/IBinder;ILandroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;ZILjava/lang/String;)I PLcom/android/server/autofill/AutofillManagerServiceImpl;->updateLocked(Z)V -PLcom/android/server/autofill/AutofillManagerServiceImpl;->updateSessionLocked(IILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)Z PLcom/android/server/autofill/Helper;->append(Ljava/lang/StringBuilder;Landroid/os/Bundle;)V PLcom/android/server/autofill/Helper;->bundleToString(Landroid/os/Bundle;)Ljava/lang/String; PLcom/android/server/autofill/RemoteFillService$MyHandler$1;-><init>(Lcom/android/server/autofill/RemoteFillService;)V @@ -6758,8 +9286,8 @@ PLcom/android/server/autofill/RemoteFillService;->-set1(Lcom/android/server/auto PLcom/android/server/autofill/RemoteFillService;->-set2(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;)Lcom/android/server/autofill/RemoteFillService$PendingRequest; PLcom/android/server/autofill/RemoteFillService;->-set3(Lcom/android/server/autofill/RemoteFillService;Z)Z PLcom/android/server/autofill/RemoteFillService;->-wrap1(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;IILandroid/service/autofill/FillResponse;)V -PLcom/android/server/autofill/RemoteFillService;->-wrap5(Lcom/android/server/autofill/RemoteFillService;)V -PLcom/android/server/autofill/RemoteFillService;->-wrap6(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;)V +PLcom/android/server/autofill/RemoteFillService;->-wrap6(Lcom/android/server/autofill/RemoteFillService;)V +PLcom/android/server/autofill/RemoteFillService;->-wrap7(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;)V PLcom/android/server/autofill/RemoteFillService;-><init>(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;)V PLcom/android/server/autofill/RemoteFillService;->cancelCurrentRequest()I PLcom/android/server/autofill/RemoteFillService;->cancelScheduledUnbind()V @@ -6786,11 +9314,12 @@ PLcom/android/server/autofill/Session;->-wrap1(Lcom/android/server/autofill/Sess PLcom/android/server/autofill/Session;-><init>(Lcom/android/server/autofill/AutofillManagerServiceImpl;Lcom/android/server/autofill/ui/AutoFillUI;Landroid/content/Context;Lcom/android/internal/os/HandlerCaller;ILjava/lang/Object;IILandroid/os/IBinder;Landroid/os/IBinder;ZLandroid/content/ComponentName;Ljava/lang/String;)V PLcom/android/server/autofill/Session;->cancelCurrentRequestLocked()V PLcom/android/server/autofill/Session;->destroyLocked()Lcom/android/server/autofill/RemoteFillService; -PLcom/android/server/autofill/Session;->fillContextWithAllowedValues(Landroid/service/autofill/FillContext;I)V -PLcom/android/server/autofill/Session;->getIdsOfAllViewStates()[Landroid/view/autofill/AutofillId; +PLcom/android/server/autofill/Session;->fillContextWithAllowedValuesLocked(Landroid/service/autofill/FillContext;I)V +PLcom/android/server/autofill/Session;->getClient()Landroid/view/autofill/IAutoFillManagerClient; +PLcom/android/server/autofill/Session;->getIdsOfAllViewStatesLocked()[Landroid/view/autofill/AutofillId; PLcom/android/server/autofill/Session;->getUiForShowing()Lcom/android/server/autofill/ui/AutoFillUI; -PLcom/android/server/autofill/Session;->hideAllUiIfOwnedByMe()V PLcom/android/server/autofill/Session;->isIgnoredLocked(Landroid/view/autofill/AutofillId;)Z +PLcom/android/server/autofill/Session;->isSaveUiPending()Z PLcom/android/server/autofill/Session;->notifyUnavailableToClient()V PLcom/android/server/autofill/Session;->onFillRequestSuccess(ILandroid/service/autofill/FillResponse;ILjava/lang/String;)V PLcom/android/server/autofill/Session;->removeSelf()V @@ -6804,45 +9333,50 @@ PLcom/android/server/autofill/ViewState;->maybeCallOnFillReady(I)V PLcom/android/server/autofill/ViewState;->setCurrentValue(Landroid/view/autofill/AutofillValue;)V PLcom/android/server/autofill/ViewState;->setState(I)V PLcom/android/server/autofill/ViewState;->update(Landroid/view/autofill/AutofillValue;Landroid/graphics/Rect;I)V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;->$m$0()V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;->run()V PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;->$m$0()V PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;-><init>(BLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;->run()V PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$0()V PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$1()V +PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$2()V PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$3()V PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->run()V PLcom/android/server/autofill/ui/AutoFillUI;-><init>(Landroid/content/Context;)V PLcom/android/server/autofill/ui/AutoFillUI;->clearCallback(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->destroyAll(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->destroyAllUiThread(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->destroySaveUiUiThread(ILandroid/view/autofill/IAutoFillManagerClient;)V PLcom/android/server/autofill/ui/AutoFillUI;->filterFillUi(Ljava/lang/String;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V PLcom/android/server/autofill/ui/AutoFillUI;->hideAll(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V PLcom/android/server/autofill/ui/AutoFillUI;->hideAllUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->hideFillUi(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V PLcom/android/server/autofill/ui/AutoFillUI;->hideFillUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V PLcom/android/server/autofill/ui/AutoFillUI;->hideSaveUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V -PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_11492(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V -PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3066(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V -PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3386(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V -PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_4666(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Ljava/lang/String;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_12395(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_12645(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3226(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3546(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_4552(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_4826(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Ljava/lang/String;)V PLcom/android/server/autofill/ui/AutoFillUI;->setCallback(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V PLcom/android/server/autofill/ui/OverlayControl;-><init>(Landroid/content/Context;)V PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;->$m$0()V PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;-><init>(BLjava/lang/Object;)V PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;->run()V PLcom/android/server/backup/BackupManagerService$1;-><init>(Lcom/android/server/backup/BackupManagerService;)V -PLcom/android/server/backup/BackupManagerService$1;->run()V PLcom/android/server/backup/BackupManagerService$2;-><init>(Lcom/android/server/backup/BackupManagerService;)V PLcom/android/server/backup/BackupManagerService$2;->onTransportBound(Lcom/android/internal/backup/IBackupTransport;)Z PLcom/android/server/backup/BackupManagerService$3;-><init>(Lcom/android/server/backup/BackupManagerService;)V -PLcom/android/server/backup/BackupManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/backup/BackupManagerService$4;-><init>(Lcom/android/server/backup/BackupManagerService;J)V PLcom/android/server/backup/BackupManagerService$4;->run()V -PLcom/android/server/backup/BackupManagerService$7;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V -PLcom/android/server/backup/BackupManagerService$7;->run()V PLcom/android/server/backup/BackupManagerService$8;-><init>(Lcom/android/server/backup/BackupManagerService;Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V PLcom/android/server/backup/BackupManagerService$8;->onSuccess(Ljava/lang/String;)V PLcom/android/server/backup/BackupManagerService$BackupHandler;-><init>(Lcom/android/server/backup/BackupManagerService;Landroid/os/Looper;)V PLcom/android/server/backup/BackupManagerService$BackupHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/backup/BackupManagerService$BackupRequest;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V PLcom/android/server/backup/BackupManagerService$FullBackupEntry;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;J)V PLcom/android/server/backup/BackupManagerService$FullBackupEntry;->compareTo(Lcom/android/server/backup/BackupManagerService$FullBackupEntry;)I PLcom/android/server/backup/BackupManagerService$FullBackupEntry;->compareTo(Ljava/lang/Object;)I @@ -6858,56 +9392,40 @@ PLcom/android/server/backup/BackupManagerService;->-get3(Lcom/android/server/bac PLcom/android/server/backup/BackupManagerService;->-get6(Lcom/android/server/backup/BackupManagerService;)Lcom/android/server/backup/TransportManager; PLcom/android/server/backup/BackupManagerService;->-wrap11(I)Z PLcom/android/server/backup/BackupManagerService;->-wrap17(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V -PLcom/android/server/backup/BackupManagerService;->-wrap18(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V PLcom/android/server/backup/BackupManagerService;->-wrap23(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V +PLcom/android/server/backup/BackupManagerService;->-wrap25(Lcom/android/server/backup/BackupManagerService;)V PLcom/android/server/backup/BackupManagerService;->-wrap5(Landroid/content/pm/PackageInfo;)Z PLcom/android/server/backup/BackupManagerService;->-wrap9(I)Z PLcom/android/server/backup/BackupManagerService;-><init>(Landroid/content/Context;Lcom/android/server/backup/Trampoline;)V PLcom/android/server/backup/BackupManagerService;->addPackageParticipantsLocked([Ljava/lang/String;)V -PLcom/android/server/backup/BackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V -PLcom/android/server/backup/BackupManagerService;->allAgentPackages()Ljava/util/List; PLcom/android/server/backup/BackupManagerService;->appGetsFullBackup(Landroid/content/pm/PackageInfo;)Z -PLcom/android/server/backup/BackupManagerService;->appIsDisabled(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z -PLcom/android/server/backup/BackupManagerService;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z PLcom/android/server/backup/BackupManagerService;->backupSettingMigrated(I)Z -PLcom/android/server/backup/BackupManagerService;->dataChanged(Ljava/lang/String;)V -PLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;)V -PLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V -PLcom/android/server/backup/BackupManagerService;->dequeueFullBackupLocked(Ljava/lang/String;)V PLcom/android/server/backup/BackupManagerService;->enqueueFullBackup(Ljava/lang/String;J)V -PLcom/android/server/backup/BackupManagerService;->getAvailableRestoreToken(Ljava/lang/String;)J PLcom/android/server/backup/BackupManagerService;->getCurrentTransport()Ljava/lang/String; PLcom/android/server/backup/BackupManagerService;->initPackageTracking()V PLcom/android/server/backup/BackupManagerService;->isBackupEnabled()Z -PLcom/android/server/backup/BackupManagerService;->lambda$-com_android_server_backup_BackupManagerService_56323()V +PLcom/android/server/backup/BackupManagerService;->lambda$-com_android_server_backup_BackupManagerService_56585()V PLcom/android/server/backup/BackupManagerService;->parseLeftoverJournals()V PLcom/android/server/backup/BackupManagerService;->readBackupEnableState(I)Z -PLcom/android/server/backup/BackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList; -PLcom/android/server/backup/BackupManagerService;->restoreAtInstall(Ljava/lang/String;I)V +PLcom/android/server/backup/BackupManagerService;->removePackageFromSetLocked(Ljava/util/HashSet;Ljava/lang/String;)V +PLcom/android/server/backup/BackupManagerService;->removePackageParticipantsLocked([Ljava/lang/String;I)V PLcom/android/server/backup/BackupManagerService;->scheduleNextFullBackupJob(J)V PLcom/android/server/backup/BackupManagerService;->selectBackupTransportAsync(Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V PLcom/android/server/backup/BackupManagerService;->setBackupEnabled(Z)V PLcom/android/server/backup/BackupManagerService;->updateStateForTransport(Ljava/lang/String;)V PLcom/android/server/backup/BackupManagerService;->writeBackupEnableState(ZI)V PLcom/android/server/backup/BackupManagerService;->writeFullBackupScheduleAsync()V -PLcom/android/server/backup/BackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V PLcom/android/server/backup/FullBackupJob;->schedule(Landroid/content/Context;J)V PLcom/android/server/backup/KeyValueBackupJob;->cancel(Landroid/content/Context;)V -PLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;)V -PLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;J)V -PLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;)Ljava/util/List; PLcom/android/server/backup/Trampoline;-><init>(Landroid/content/Context;)V PLcom/android/server/backup/Trampoline;->createBackupManagerService()Lcom/android/server/backup/BackupManagerServiceInterface; PLcom/android/server/backup/Trampoline;->createService()Lcom/android/server/backup/BackupManagerServiceInterface; -PLcom/android/server/backup/Trampoline;->dataChanged(Ljava/lang/String;)V PLcom/android/server/backup/Trampoline;->getCurrentTransport()Ljava/lang/String; PLcom/android/server/backup/Trampoline;->getSuppressFile()Ljava/io/File; PLcom/android/server/backup/Trampoline;->initialize(I)V PLcom/android/server/backup/Trampoline;->isBackupDisabled()Z PLcom/android/server/backup/Trampoline;->isBackupEnabled()Z -PLcom/android/server/backup/Trampoline;->isBackupServiceActive(I)Z PLcom/android/server/backup/Trampoline;->isRefactoredServiceEnabled()Z -PLcom/android/server/backup/Trampoline;->restoreAtInstall(Ljava/lang/String;I)V PLcom/android/server/backup/Trampoline;->selectBackupTransportAsync(Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V PLcom/android/server/backup/Trampoline;->setBackupEnabled(Z)V PLcom/android/server/backup/TransportManager$RebindOnTimeoutHandler;-><init>(Lcom/android/server/backup/TransportManager;Landroid/os/Looper;)V @@ -6919,8 +9437,12 @@ PLcom/android/server/backup/TransportManager$TransportConnection;-><init>(Lcom/a PLcom/android/server/backup/TransportManager$TransportConnection;->addListener(Landroid/app/backup/SelectBackupTransportCallback;)V PLcom/android/server/backup/TransportManager$TransportConnection;->bindIfUnbound()V PLcom/android/server/backup/TransportManager$TransportConnection;->getBinder()Lcom/android/internal/backup/IBackupTransport; +PLcom/android/server/backup/TransportManager$TransportConnection;->getRebindTimeout()J PLcom/android/server/backup/TransportManager$TransportConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->scheduleRebindTimeout(Landroid/content/ComponentName;)V PLcom/android/server/backup/TransportManager;->-get0(Lcom/android/server/backup/TransportManager;)Ljava/util/Map; +PLcom/android/server/backup/TransportManager;->-get1(Lcom/android/server/backup/TransportManager;)Landroid/content/Context; PLcom/android/server/backup/TransportManager;->-get2(Lcom/android/server/backup/TransportManager;)Landroid/os/Handler; PLcom/android/server/backup/TransportManager;->-get3(Lcom/android/server/backup/TransportManager;)Lcom/android/server/backup/TransportManager$TransportBoundListener; PLcom/android/server/backup/TransportManager;->-get4(Lcom/android/server/backup/TransportManager;)Ljava/lang/Object; @@ -6928,7 +9450,6 @@ PLcom/android/server/backup/TransportManager;-><init>(Landroid/content/Context;L PLcom/android/server/backup/TransportManager;->bindToAllInternal(Ljava/lang/String;[Ljava/lang/String;)V PLcom/android/server/backup/TransportManager;->bindToTransport(Landroid/content/ComponentName;Landroid/content/ServiceConnection;)Z PLcom/android/server/backup/TransportManager;->ensureTransportReady(Landroid/content/ComponentName;Landroid/app/backup/SelectBackupTransportCallback;)V -PLcom/android/server/backup/TransportManager;->getCurrentTransportBinder()Lcom/android/internal/backup/IBackupTransport; PLcom/android/server/backup/TransportManager;->getCurrentTransportName()Ljava/lang/String; PLcom/android/server/backup/TransportManager;->getTransportBinder(Ljava/lang/String;)Lcom/android/internal/backup/IBackupTransport; PLcom/android/server/backup/TransportManager;->isTransportTrusted(Landroid/content/ComponentName;)Z @@ -6940,10 +9461,14 @@ PLcom/android/server/backup/TransportManager;->selectTransport(Ljava/lang/String PLcom/android/server/backup/TransportManager;->tryBindTransport(Landroid/content/ComponentName;)V PLcom/android/server/camera/CameraServiceProxy$1;-><init>(Lcom/android/server/camera/CameraServiceProxy;)V PLcom/android/server/camera/CameraServiceProxy$2;-><init>(Lcom/android/server/camera/CameraServiceProxy;)V -PLcom/android/server/camera/CameraServiceProxy$2;->notifyCameraState(Ljava/lang/String;I)V +PLcom/android/server/camera/CameraServiceProxy$2;->notifyCameraState(Ljava/lang/String;IILjava/lang/String;)V +PLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;-><init>(ILjava/lang/String;)V +PLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;->markCompleted()V PLcom/android/server/camera/CameraServiceProxy;->-wrap0(I)Ljava/lang/String; -PLcom/android/server/camera/CameraServiceProxy;->-wrap3(Lcom/android/server/camera/CameraServiceProxy;Ljava/lang/String;I)V +PLcom/android/server/camera/CameraServiceProxy;->-wrap1(I)Ljava/lang/String; +PLcom/android/server/camera/CameraServiceProxy;->-wrap4(Lcom/android/server/camera/CameraServiceProxy;Ljava/lang/String;IILjava/lang/String;)V PLcom/android/server/camera/CameraServiceProxy;-><init>(Landroid/content/Context;)V +PLcom/android/server/camera/CameraServiceProxy;->cameraFacingToString(I)Ljava/lang/String; PLcom/android/server/camera/CameraServiceProxy;->cameraStateToString(I)Ljava/lang/String; PLcom/android/server/camera/CameraServiceProxy;->getEnabledUserHandles(I)Ljava/util/Set; PLcom/android/server/camera/CameraServiceProxy;->notifyMediaserverLocked(ILjava/util/Set;)Z @@ -6952,10 +9477,19 @@ PLcom/android/server/camera/CameraServiceProxy;->onStart()V PLcom/android/server/camera/CameraServiceProxy;->onStartUser(I)V PLcom/android/server/camera/CameraServiceProxy;->switchUserLocked(I)V PLcom/android/server/camera/CameraServiceProxy;->toArray(Ljava/util/Collection;)[I -PLcom/android/server/camera/CameraServiceProxy;->updateActivityCount(Ljava/lang/String;I)V +PLcom/android/server/camera/CameraServiceProxy;->updateActivityCount(Ljava/lang/String;IILjava/lang/String;)V +PLcom/android/server/camera/CameraStatsJobService;->schedule(Landroid/content/Context;)V PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;)V PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;Lcom/android/server/clipboard/ClipboardService$ClipboardImpl;)V +PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V +PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +PLcom/android/server/clipboard/ClipboardService$ListenerInfo;-><init>(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;)V +PLcom/android/server/clipboard/ClipboardService$PerUserClipboard;-><init>(Lcom/android/server/clipboard/ClipboardService;I)V +PLcom/android/server/clipboard/ClipboardService;->-wrap0(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;I)Z +PLcom/android/server/clipboard/ClipboardService;->-wrap1(Lcom/android/server/clipboard/ClipboardService;)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard; PLcom/android/server/clipboard/ClipboardService;-><init>(Landroid/content/Context;)V +PLcom/android/server/clipboard/ClipboardService;->getClipboard()Lcom/android/server/clipboard/ClipboardService$PerUserClipboard; +PLcom/android/server/clipboard/ClipboardService;->getClipboard(I)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard; PLcom/android/server/clipboard/ClipboardService;->onStart()V PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;->$m$1(Ljava/lang/Object;)Ljava/lang/Object; PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;-><init>(B)V @@ -6963,18 +9497,9 @@ PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;->apply(Ljav PLcom/android/server/companion/CompanionDeviceManagerService$1;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V PLcom/android/server/companion/CompanionDeviceManagerService$1;->onPackageModified(Ljava/lang/String;)V PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V -PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCallerIsSystemOr(Ljava/lang/String;I)V -PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkUsesFeature(Ljava/lang/String;I)V -PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List; -PLcom/android/server/companion/CompanionDeviceManagerService;->-wrap3()Z -PLcom/android/server/companion/CompanionDeviceManagerService;->-wrap4()I -PLcom/android/server/companion/CompanionDeviceManagerService;->-wrap6(Lcom/android/server/companion/CompanionDeviceManagerService;ILjava/lang/String;)Ljava/util/ArrayList; PLcom/android/server/companion/CompanionDeviceManagerService;-><init>(Landroid/content/Context;)V -PLcom/android/server/companion/CompanionDeviceManagerService;->getStorageFileForUser(I)Landroid/util/AtomicFile; -PLcom/android/server/companion/CompanionDeviceManagerService;->isCallerSystem()Z -PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$-com_android_server_companion_CompanionDeviceManagerService_22134(Ljava/lang/Integer;)Landroid/util/AtomicFile; +PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$-com_android_server_companion_CompanionDeviceManagerService_22200(Ljava/lang/Integer;)Landroid/util/AtomicFile; PLcom/android/server/companion/CompanionDeviceManagerService;->onStart()V -PLcom/android/server/companion/CompanionDeviceManagerService;->readAllAssociations(ILjava/lang/String;)Ljava/util/ArrayList; PLcom/android/server/companion/CompanionDeviceManagerService;->registerPackageMonitor()V PLcom/android/server/connectivity/-$Lambda$MsbVMSDQhSjxBVLOF10aov6ySH4;->$m$0(Ljava/lang/Object;)I PLcom/android/server/connectivity/-$Lambda$MsbVMSDQhSjxBVLOF10aov6ySH4;-><init>()V @@ -7002,6 +9527,7 @@ PLcom/android/server/connectivity/IpConnectivityMetrics;->makeRateLimitingBucket PLcom/android/server/connectivity/IpConnectivityMetrics;->onBootPhase(I)V PLcom/android/server/connectivity/IpConnectivityMetrics;->onStart()V PLcom/android/server/connectivity/KeepaliveTracker;-><init>(Landroid/os/Handler;)V +PLcom/android/server/connectivity/KeepaliveTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V PLcom/android/server/connectivity/KeepaliveTracker;->handleCheckKeepalivesStillValid(Lcom/android/server/connectivity/NetworkAgentInfo;)V PLcom/android/server/connectivity/LingerMonitor;-><init>(Landroid/content/Context;Lcom/android/server/connectivity/NetworkNotificationManager;IJ)V PLcom/android/server/connectivity/LingerMonitor;->makeTransportToNameMap()Ljava/util/HashMap; @@ -7010,41 +9536,24 @@ PLcom/android/server/connectivity/MockableSystemProperties;->get(Ljava/lang/Stri PLcom/android/server/connectivity/MockableSystemProperties;->getBoolean(Ljava/lang/String;Z)Z PLcom/android/server/connectivity/MockableSystemProperties;->getInt(Ljava/lang/String;I)I PLcom/android/server/connectivity/MockableSystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/connectivity/Nat464Xlat;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/os/Handler;Lcom/android/server/connectivity/NetworkAgentInfo;)V -PLcom/android/server/connectivity/Nat464Xlat;->fixupLinkProperties(Landroid/net/LinkProperties;)V -PLcom/android/server/connectivity/Nat464Xlat;->isStarted()Z PLcom/android/server/connectivity/Nat464Xlat;->requiresClat(Lcom/android/server/connectivity/NetworkAgentInfo;)Z -PLcom/android/server/connectivity/Nat464Xlat;->start()V -PLcom/android/server/connectivity/Nat464Xlat;->stop()V PLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/content/Context;)V PLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/net/ConnectivityManager;)V PLcom/android/server/connectivity/NetdEventListenerService;->getTransports(I)J PLcom/android/server/connectivity/NetdEventListenerService;->makeConnectStats(I)Landroid/net/metrics/ConnectStats; PLcom/android/server/connectivity/NetdEventListenerService;->makeDnsEvent(I)Landroid/net/metrics/DnsEvent; -PLcom/android/server/connectivity/NetdEventListenerService;->maybeVerboseLog(Ljava/lang/String;[Ljava/lang/Object;)V -PLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V -PLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V PLcom/android/server/connectivity/NetworkAgentInfo;->-getandroid-net-NetworkRequest$TypeSwitchesValues()[I PLcom/android/server/connectivity/NetworkAgentInfo;-><init>(Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;Landroid/net/Network;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/content/Context;Landroid/os/Handler;Landroid/net/NetworkMisc;Landroid/net/NetworkRequest;Lcom/android/server/ConnectivityService;)V PLcom/android/server/connectivity/NetworkAgentInfo;->addRequest(Landroid/net/NetworkRequest;)Z -PLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore()I -PLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore(Z)I +PLcom/android/server/connectivity/NetworkAgentInfo;->dumpLingerTimers(Ljava/io/PrintWriter;)V PLcom/android/server/connectivity/NetworkAgentInfo;->ignoreWifiUnvalidationPenalty()Z -PLcom/android/server/connectivity/NetworkAgentInfo;->isBackgroundNetwork()Z -PLcom/android/server/connectivity/NetworkAgentInfo;->isLingering()Z -PLcom/android/server/connectivity/NetworkAgentInfo;->isSatisfyingRequest(I)Z -PLcom/android/server/connectivity/NetworkAgentInfo;->isVPN()Z +PLcom/android/server/connectivity/NetworkAgentInfo;->maybeStopClat()V PLcom/android/server/connectivity/NetworkAgentInfo;->name()Ljava/lang/String; -PLcom/android/server/connectivity/NetworkAgentInfo;->numForegroundNetworkRequests()I -PLcom/android/server/connectivity/NetworkAgentInfo;->numNetworkRequests()I -PLcom/android/server/connectivity/NetworkAgentInfo;->numRequestNetworkRequests()I +PLcom/android/server/connectivity/NetworkAgentInfo;->numBackgroundNetworkRequests()I PLcom/android/server/connectivity/NetworkAgentInfo;->removeRequest(I)V -PLcom/android/server/connectivity/NetworkAgentInfo;->requestAt(I)Landroid/net/NetworkRequest; -PLcom/android/server/connectivity/NetworkAgentInfo;->satisfies(Landroid/net/NetworkRequest;)Z -PLcom/android/server/connectivity/NetworkAgentInfo;->setCurrentScore(I)V PLcom/android/server/connectivity/NetworkAgentInfo;->toString()Ljava/lang/String; PLcom/android/server/connectivity/NetworkAgentInfo;->unlingerRequest(Landroid/net/NetworkRequest;)Z -PLcom/android/server/connectivity/NetworkAgentInfo;->updateLingerTimer()V +PLcom/android/server/connectivity/NetworkAgentInfo;->updateClat(Landroid/os/INetworkManagementService;)V PLcom/android/server/connectivity/NetworkAgentInfo;->updateRequestCounts(ZLandroid/net/NetworkRequest;)V PLcom/android/server/connectivity/NetworkMonitor$1ProbeThread;-><init>(Lcom/android/server/connectivity/NetworkMonitor;ZLandroid/net/ProxyInfo;Ljava/net/URL;Ljava/net/URL;Ljava/util/concurrent/CountDownLatch;)V PLcom/android/server/connectivity/NetworkMonitor$1ProbeThread;->result()Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult; @@ -7067,16 +9576,19 @@ PLcom/android/server/connectivity/NetworkMonitor$EvaluationResult;-><init>(Ljava PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;-><init>(Lcom/android/server/connectivity/NetworkMonitor;)V PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;-><init>(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;)V PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;->exit()V +PLcom/android/server/connectivity/NetworkMonitor$OneAddressPerFamilyNetwork;-><init>(Landroid/net/Network;)V +PLcom/android/server/connectivity/NetworkMonitor$OneAddressPerFamilyNetwork;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress; PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;-><init>(Lcom/android/server/connectivity/NetworkMonitor;)V PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;-><init>(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$ValidatedState;)V PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;->enter()V PLcom/android/server/connectivity/NetworkMonitor$ValidationStage;-><init>(Ljava/lang/String;IZ)V -PLcom/android/server/connectivity/NetworkMonitor;->-get11(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/server/connectivity/NetworkAgentInfo; -PLcom/android/server/connectivity/NetworkMonitor;->-get12(Lcom/android/server/connectivity/NetworkMonitor;)I +PLcom/android/server/connectivity/NetworkMonitor;->-get10(Lcom/android/server/connectivity/NetworkMonitor;)I +PLcom/android/server/connectivity/NetworkMonitor;->-get12(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/server/connectivity/NetworkAgentInfo; PLcom/android/server/connectivity/NetworkMonitor;->-get13(Lcom/android/server/connectivity/NetworkMonitor;)I -PLcom/android/server/connectivity/NetworkMonitor;->-get14(Lcom/android/server/connectivity/NetworkMonitor;)Z -PLcom/android/server/connectivity/NetworkMonitor;->-get15(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/internal/util/State; -PLcom/android/server/connectivity/NetworkMonitor;->-get16(Lcom/android/server/connectivity/NetworkMonitor;)I +PLcom/android/server/connectivity/NetworkMonitor;->-get14(Lcom/android/server/connectivity/NetworkMonitor;)I +PLcom/android/server/connectivity/NetworkMonitor;->-get15(Lcom/android/server/connectivity/NetworkMonitor;)Z +PLcom/android/server/connectivity/NetworkMonitor;->-get16(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/internal/util/State; +PLcom/android/server/connectivity/NetworkMonitor;->-get17(Lcom/android/server/connectivity/NetworkMonitor;)I PLcom/android/server/connectivity/NetworkMonitor;->-get2(Lcom/android/server/connectivity/NetworkMonitor;)Landroid/os/Handler; PLcom/android/server/connectivity/NetworkMonitor;->-get4(Lcom/android/server/connectivity/NetworkMonitor;)Landroid/net/NetworkRequest; PLcom/android/server/connectivity/NetworkMonitor;->-get6(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/internal/util/State; @@ -7117,17 +9629,14 @@ PLcom/android/server/connectivity/PacManager$1;-><init>(Lcom/android/server/conn PLcom/android/server/connectivity/PacManager$PacRefreshIntentReceiver;-><init>(Lcom/android/server/connectivity/PacManager;)V PLcom/android/server/connectivity/PacManager;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V PLcom/android/server/connectivity/PermissionMonitor$1;-><init>(Lcom/android/server/connectivity/PermissionMonitor;)V -PLcom/android/server/connectivity/PermissionMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/connectivity/PermissionMonitor;->-wrap0(Lcom/android/server/connectivity/PermissionMonitor;Ljava/lang/String;I)V +PLcom/android/server/connectivity/PermissionMonitor;->-wrap1(Lcom/android/server/connectivity/PermissionMonitor;I)V PLcom/android/server/connectivity/PermissionMonitor;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;)V -PLcom/android/server/connectivity/PermissionMonitor;->hasNetworkPermission(Landroid/content/pm/PackageInfo;)Z PLcom/android/server/connectivity/PermissionMonitor;->hasRestrictedNetworkPermission(Landroid/content/pm/PackageInfo;)Z PLcom/android/server/connectivity/PermissionMonitor;->highestPermissionForUid(Ljava/lang/Boolean;Ljava/lang/String;)Ljava/lang/Boolean; PLcom/android/server/connectivity/PermissionMonitor;->log(Ljava/lang/String;)V PLcom/android/server/connectivity/PermissionMonitor;->onAppAdded(Ljava/lang/String;I)V -PLcom/android/server/connectivity/PermissionMonitor;->startMonitoring()V -PLcom/android/server/connectivity/PermissionMonitor;->toIntArray(Ljava/util/List;)[I -PLcom/android/server/connectivity/PermissionMonitor;->update(Ljava/util/Set;Ljava/util/Map;Z)V +PLcom/android/server/connectivity/PermissionMonitor;->onAppRemoved(I)V PLcom/android/server/connectivity/Tethering$3;-><init>(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;)V PLcom/android/server/connectivity/Tethering$3;->updateInterfaceState(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V PLcom/android/server/connectivity/Tethering$3;->updateLinkProperties(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V @@ -7139,18 +9648,23 @@ PLcom/android/server/connectivity/Tethering$StateReceiver;->onReceive(Landroid/c PLcom/android/server/connectivity/Tethering$TetherMasterSM$ErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->excludeDownstreamInterface(Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->sendOffloadExemptPrefixes()V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->sendOffloadExemptPrefixes(Ljava/util/Set;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetDnsForwardersErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingDisabledErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingEnabledErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM$StartTetheringErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM$StopTetheringErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V -PLcom/android/server/connectivity/Tethering$TetherMasterSM$TetherMasterUtilState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM$TetherModeAliveState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM;->-get1(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)Ljava/util/ArrayList; PLcom/android/server/connectivity/Tethering$TetherMasterSM;->-wrap1(Lcom/android/server/connectivity/Tethering$TetherMasterSM;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM;-><init>(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Landroid/os/Looper;)V PLcom/android/server/connectivity/Tethering$TetherMasterSM;->handleInterfaceServingStateInactive(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V PLcom/android/server/connectivity/Tethering$TetherState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V PLcom/android/server/connectivity/Tethering;->-get10(Lcom/android/server/connectivity/Tethering;)Lcom/android/internal/util/StateMachine; +PLcom/android/server/connectivity/Tethering;->-get11(Lcom/android/server/connectivity/Tethering;)Lcom/android/server/connectivity/tethering/UpstreamNetworkMonitor; PLcom/android/server/connectivity/Tethering;->-get3(Lcom/android/server/connectivity/Tethering;)Ljava/util/HashSet; PLcom/android/server/connectivity/Tethering;->-get4(Lcom/android/server/connectivity/Tethering;)Landroid/net/util/SharedLog; PLcom/android/server/connectivity/Tethering;->-get6(Lcom/android/server/connectivity/Tethering;)Lcom/android/server/connectivity/tethering/OffloadController; @@ -7158,12 +9672,14 @@ PLcom/android/server/connectivity/Tethering;->-get7(Lcom/android/server/connecti PLcom/android/server/connectivity/Tethering;->-get8(Lcom/android/server/connectivity/Tethering;)Z PLcom/android/server/connectivity/Tethering;->-set1(Lcom/android/server/connectivity/Tethering;Z)Z PLcom/android/server/connectivity/Tethering;->-set2(Lcom/android/server/connectivity/Tethering;Z)Z -PLcom/android/server/connectivity/Tethering;->-wrap11(Lcom/android/server/connectivity/Tethering;)V -PLcom/android/server/connectivity/Tethering;->-wrap5(Lcom/android/server/connectivity/Tethering;Lcom/android/internal/util/State;I)V -PLcom/android/server/connectivity/Tethering;->-wrap6(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V -PLcom/android/server/connectivity/Tethering;->-wrap7(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V +PLcom/android/server/connectivity/Tethering;->-wrap13(Lcom/android/server/connectivity/Tethering;)V +PLcom/android/server/connectivity/Tethering;->-wrap6(Lcom/android/server/connectivity/Tethering;Lcom/android/internal/util/State;I)V +PLcom/android/server/connectivity/Tethering;->-wrap8(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V +PLcom/android/server/connectivity/Tethering;->-wrap9(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V PLcom/android/server/connectivity/Tethering;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/os/Looper;Lcom/android/server/connectivity/MockableSystemProperties;Lcom/android/server/connectivity/tethering/TetheringDependencies;)V +PLcom/android/server/connectivity/Tethering;->argsContain([Ljava/lang/String;Ljava/lang/String;)Z PLcom/android/server/connectivity/Tethering;->clearTetheredNotification()V +PLcom/android/server/connectivity/Tethering;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/connectivity/Tethering;->getConnectivityManager()Landroid/net/ConnectivityManager; PLcom/android/server/connectivity/Tethering;->hasTetherableConfiguration()Z PLcom/android/server/connectivity/Tethering;->ifaceNameToType(Ljava/lang/String;)I @@ -7171,14 +9687,16 @@ PLcom/android/server/connectivity/Tethering;->interfaceAdded(Ljava/lang/String;) PLcom/android/server/connectivity/Tethering;->interfaceLinkStateChanged(Ljava/lang/String;Z)V PLcom/android/server/connectivity/Tethering;->interfaceRemoved(Ljava/lang/String;)V PLcom/android/server/connectivity/Tethering;->interfaceStatusChanged(Ljava/lang/String;Z)V +PLcom/android/server/connectivity/Tethering;->logMessage(Lcom/android/internal/util/State;I)V PLcom/android/server/connectivity/Tethering;->makeControlCallback(Ljava/lang/String;)Lcom/android/server/connectivity/tethering/IControlsTethering; -PLcom/android/server/connectivity/Tethering;->maybeLogMessage(Lcom/android/internal/util/State;I)V PLcom/android/server/connectivity/Tethering;->maybeTrackNewInterfaceLocked(Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering;->maybeTrackNewInterfaceLocked(Ljava/lang/String;I)V PLcom/android/server/connectivity/Tethering;->notifyInterfaceStateChange(Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V PLcom/android/server/connectivity/Tethering;->notifyLinkPropertiesChanged(Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V PLcom/android/server/connectivity/Tethering;->sendTetherStateChangedBroadcast()V PLcom/android/server/connectivity/Tethering;->stopTrackingInterfaceLocked(Ljava/lang/String;)V PLcom/android/server/connectivity/Tethering;->updateConfiguration()V +PLcom/android/server/connectivity/Tethering;->upstreamWanted()Z PLcom/android/server/connectivity/Vpn$1;-><init>(Lcom/android/server/connectivity/Vpn;)V PLcom/android/server/connectivity/Vpn$2;-><init>(Lcom/android/server/connectivity/Vpn;)V PLcom/android/server/connectivity/Vpn$SystemServices;-><init>(Landroid/content/Context;)V @@ -7193,10 +9711,8 @@ PLcom/android/server/connectivity/Vpn;->getAppUid(Ljava/lang/String;I)I PLcom/android/server/connectivity/Vpn;->getUnderlyingNetworks()[Landroid/net/Network; PLcom/android/server/connectivity/Vpn;->getVpnConfig()Lcom/android/internal/net/VpnConfig; PLcom/android/server/connectivity/Vpn;->getVpnInfo()Lcom/android/internal/net/VpnInfo; -PLcom/android/server/connectivity/Vpn;->isBlockingUid(I)Z PLcom/android/server/connectivity/Vpn;->isCurrentPreparedPackage(Ljava/lang/String;)Z PLcom/android/server/connectivity/Vpn;->isNullOrLegacyVpn(Ljava/lang/String;)Z -PLcom/android/server/connectivity/Vpn;->isRunningLocked()Z PLcom/android/server/connectivity/Vpn;->loadAlwaysOnPackage()V PLcom/android/server/connectivity/Vpn;->maybeRegisterPackageChangeReceiverLocked(Ljava/lang/String;)V PLcom/android/server/connectivity/Vpn;->setAllowOnlyVpnForUids(ZLjava/util/Collection;)Z @@ -7206,16 +9722,33 @@ PLcom/android/server/connectivity/Vpn;->setVpnForcedWithExemptionsLocked(ZLjava/ PLcom/android/server/connectivity/Vpn;->startAlwaysOnVpn()Z PLcom/android/server/connectivity/Vpn;->unregisterPackageChangeReceiverLocked()V PLcom/android/server/connectivity/Vpn;->updateAlwaysOnNotification(Landroid/net/NetworkInfo$DetailedState;)V +PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;->$m$0()V +PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;-><init>(Ljava/lang/Object;)V +PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;->run()V PLcom/android/server/connectivity/tethering/IControlsTethering;-><init>()V +PLcom/android/server/connectivity/tethering/IControlsTethering;->getStateString(I)Ljava/lang/String; PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;-><init>(Ljava/util/ArrayList;Landroid/net/util/SharedLog;)V PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->findDownstream(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)Lcom/android/server/connectivity/tethering/IPv6TetheringCoordinator$Downstream; PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->generateUniqueLocalPrefix()[B PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->removeActiveDownstream(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->stopIPv6TetheringOn(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V -PLcom/android/server/connectivity/tethering/OffloadController;-><init>(Landroid/os/Handler;Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;Landroid/content/ContentResolver;Landroid/net/util/SharedLog;)V +PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;-><init>(Lcom/android/server/connectivity/tethering/OffloadController;)V +PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;-><init>(Lcom/android/server/connectivity/tethering/OffloadController;Lcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;)V +PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->lambda$-com_android_server_connectivity_tethering_OffloadController$OffloadTetheringStatsProvider_9732()V +PLcom/android/server/connectivity/tethering/OffloadController;->-get0(Lcom/android/server/connectivity/tethering/OffloadController;)Ljava/util/concurrent/ConcurrentHashMap; +PLcom/android/server/connectivity/tethering/OffloadController;->-get1(Lcom/android/server/connectivity/tethering/OffloadController;)Landroid/os/Handler; +PLcom/android/server/connectivity/tethering/OffloadController;->-wrap3(Lcom/android/server/connectivity/tethering/OffloadController;)V +PLcom/android/server/connectivity/tethering/OffloadController;-><init>(Landroid/os/Handler;Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;Landroid/content/ContentResolver;Landroid/os/INetworkManagementService;Landroid/net/util/SharedLog;)V +PLcom/android/server/connectivity/tethering/OffloadController;->currentUpstreamInterface()Ljava/lang/String; +PLcom/android/server/connectivity/tethering/OffloadController;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/connectivity/tethering/OffloadController;->isOffloadDisabled()Z +PLcom/android/server/connectivity/tethering/OffloadController;->maybeUpdateStats(Ljava/lang/String;)V PLcom/android/server/connectivity/tethering/OffloadController;->removeDownstreamInterface(Ljava/lang/String;)V +PLcom/android/server/connectivity/tethering/OffloadController;->setLocalPrefixes(Ljava/util/Set;)V PLcom/android/server/connectivity/tethering/OffloadController;->started()Z +PLcom/android/server/connectivity/tethering/OffloadController;->updateStatsForCurrentUpstream()V PLcom/android/server/connectivity/tethering/OffloadHardwareInterface;-><init>(Landroid/os/Handler;Landroid/net/util/SharedLog;)V +PLcom/android/server/connectivity/tethering/OffloadHardwareInterface;->getDefaultTetherOffloadDisabled()I PLcom/android/server/connectivity/tethering/SimChangeListener;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)V PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$BaseServingState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$InitialState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V @@ -7225,18 +9758,23 @@ PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$LocalHot PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$TetheredState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$UnavailableState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap2(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Lcom/android/internal/util/State;I)V -PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap3(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;I)V -PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap5(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap4(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;I)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap8(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;-><init>(Ljava/lang/String;Landroid/os/Looper;ILandroid/net/util/SharedLog;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Lcom/android/server/connectivity/tethering/IControlsTethering;)V PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->interfaceName()Ljava/lang/String; PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->interfaceType()I PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->lastError()I -PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->maybeLogMessage(Lcom/android/internal/util/State;I)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->logMessage(Lcom/android/internal/util/State;I)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->resetLinkProperties()V PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->sendInterfaceState(I)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->sendLinkProperties()V PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->updateUpstreamIPv6LinkProperties(Landroid/net/LinkProperties;)V PLcom/android/server/connectivity/tethering/TetheringConfiguration;-><init>(Landroid/content/Context;Landroid/net/util/SharedLog;)V PLcom/android/server/connectivity/tethering/TetheringConfiguration;->checkDunRequired(Landroid/content/Context;)I +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->containsOneOf(Ljava/util/ArrayList;[Ljava/lang/Integer;)Z PLcom/android/server/connectivity/tethering/TetheringConfiguration;->copy([Ljava/lang/String;)[Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dumpStringArray(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;)V PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dunCheckString(I)Ljava/lang/String; PLcom/android/server/connectivity/tethering/TetheringConfiguration;->getDhcpRanges(Landroid/content/Context;)[Ljava/lang/String; PLcom/android/server/connectivity/tethering/TetheringConfiguration;->getUpstreamIfaceTypes(Landroid/content/Context;I)Ljava/util/Collection; @@ -7246,57 +9784,49 @@ PLcom/android/server/connectivity/tethering/TetheringConfiguration;->isWifi(Ljav PLcom/android/server/connectivity/tethering/TetheringConfiguration;->makeString([Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/connectivity/tethering/TetheringConfiguration;->matchesDownstreamRegexs(Ljava/lang/String;[Ljava/lang/String;)Z PLcom/android/server/connectivity/tethering/TetheringConfiguration;->preferredUpstreamNames(Ljava/util/Collection;)[Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->prependIfNotPresent(Ljava/util/ArrayList;I)V PLcom/android/server/connectivity/tethering/TetheringConfiguration;->toString()Ljava/lang/String; PLcom/android/server/connectivity/tethering/TetheringDependencies;-><init>()V PLcom/android/server/connectivity/tethering/TetheringDependencies;->getOffloadHardwareInterface(Landroid/os/Handler;Landroid/net/util/SharedLog;)Lcom/android/server/connectivity/tethering/OffloadHardwareInterface; -PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/util/StateMachine;ILandroid/net/util/SharedLog;)V +PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Landroid/net/util/SharedLog;I)V +PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->getLocalPrefixes()Ljava/util/Set; PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->updateMobileRequiresDun(Z)V -PLcom/android/server/content/-$Lambda$doNli3wDRrwDz12cAoe6lOOQskA;-><init>(Ljava/lang/Object;)V +PLcom/android/server/content/-$Lambda$doNli3wDRrwDz12cAoe6lOOQskA$2;-><init>(Ljava/lang/Object;)V +PLcom/android/server/content/-$Lambda$doNli3wDRrwDz12cAoe6lOOQskA;-><init>(B)V PLcom/android/server/content/ContentService$1;-><init>(Lcom/android/server/content/ContentService;)V -PLcom/android/server/content/ContentService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/content/ContentService$3;-><init>(Lcom/android/server/content/ContentService;)V PLcom/android/server/content/ContentService$Lifecycle;-><init>(Landroid/content/Context;)V PLcom/android/server/content/ContentService$Lifecycle;->onBootPhase(I)V PLcom/android/server/content/ContentService$Lifecycle;->onStart()V -PLcom/android/server/content/ContentService$ObserverCall;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZI)V -PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->-get0(Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;)I -PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V -PLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V -PLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V +PLcom/android/server/content/ContentService$Lifecycle;->onStartUser(I)V +PLcom/android/server/content/ContentService$Lifecycle;->onUnlockUser(I)V PLcom/android/server/content/ContentService;->-get0(Lcom/android/server/content/ContentService;)Landroid/util/SparseArray; PLcom/android/server/content/ContentService;->-wrap0(Lcom/android/server/content/ContentService;ILjava/lang/String;Landroid/net/Uri;)V PLcom/android/server/content/ContentService;-><init>(Landroid/content/Context;Z)V PLcom/android/server/content/ContentService;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V PLcom/android/server/content/ContentService;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V PLcom/android/server/content/ContentService;->clampPeriod(J)J -PLcom/android/server/content/ContentService;->enforceCrossUserPermission(ILjava/lang/String;)V -PLcom/android/server/content/ContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I -PLcom/android/server/content/ContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I -PLcom/android/server/content/ContentService;->getMasterSyncAutomatically()Z -PLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z -PLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;)Ljava/lang/String; -PLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; -PLcom/android/server/content/ContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z -PLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z -PLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager; -PLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I -PLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V -PLcom/android/server/content/ContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z -PLcom/android/server/content/ContentService;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z +PLcom/android/server/content/ContentService;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType; +PLcom/android/server/content/ContentService;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType; PLcom/android/server/content/ContentService;->normalizeSyncable(I)I -PLcom/android/server/content/ContentService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +PLcom/android/server/content/ContentService;->onStartUser(I)V +PLcom/android/server/content/ContentService;->onUnlockUser(I)V PLcom/android/server/content/ContentService;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +PLcom/android/server/content/ContentService;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V PLcom/android/server/content/ContentService;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V PLcom/android/server/content/ContentService;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V PLcom/android/server/content/ContentService;->syncAsUser(Landroid/content/SyncRequest;I)V PLcom/android/server/content/ContentService;->systemReady()V -PLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V PLcom/android/server/content/SyncJobService;-><init>()V -PLcom/android/server/content/SyncJobService;->callJobFinished(IZ)V +PLcom/android/server/content/SyncJobService;->callJobFinished(IZLjava/lang/String;)V PLcom/android/server/content/SyncJobService;->onStartCommand(Landroid/content/Intent;II)I -PLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z PLcom/android/server/content/SyncJobService;->onStopJob(Landroid/app/job/JobParameters;)Z PLcom/android/server/content/SyncJobService;->sendMessage(Landroid/os/Message;)V +PLcom/android/server/content/SyncLogger$RotatingFileLogger;-><init>()V +PLcom/android/server/content/SyncLogger$RotatingFileLogger;->enabled()Z +PLcom/android/server/content/SyncLogger$RotatingFileLogger;->purgeOldLogs()V +PLcom/android/server/content/SyncLogger;-><init>()V +PLcom/android/server/content/SyncLogger;->getInstance()Lcom/android/server/content/SyncLogger; PLcom/android/server/content/SyncManager$10;-><init>(Lcom/android/server/content/SyncManager;)V PLcom/android/server/content/SyncManager$11;-><init>(Lcom/android/server/content/SyncManager;)V PLcom/android/server/content/SyncManager$13;-><init>(Lcom/android/server/content/SyncManager;Landroid/content/Intent;)V @@ -7311,11 +9841,9 @@ PLcom/android/server/content/SyncManager$5;-><init>(Lcom/android/server/content/ PLcom/android/server/content/SyncManager$6;-><init>(Lcom/android/server/content/SyncManager;)V PLcom/android/server/content/SyncManager$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/content/SyncManager$7;-><init>(Lcom/android/server/content/SyncManager;)V -PLcom/android/server/content/SyncManager$7;->run()V PLcom/android/server/content/SyncManager$8;-><init>(Lcom/android/server/content/SyncManager;)V PLcom/android/server/content/SyncManager$9;-><init>(Lcom/android/server/content/SyncManager;)V PLcom/android/server/content/SyncManager$ActiveSyncContext;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;JI)V -PLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z PLcom/android/server/content/SyncManager$ActiveSyncContext;->close()V PLcom/android/server/content/SyncManager$ActiveSyncContext;->onFinished(Landroid/content/SyncResult;)V PLcom/android/server/content/SyncManager$ActiveSyncContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V @@ -7326,27 +9854,19 @@ PLcom/android/server/content/SyncManager$SyncHandler;->-wrap0(Lcom/android/serve PLcom/android/server/content/SyncManager$SyncHandler;-><init>(Lcom/android/server/content/SyncManager;Landroid/os/Looper;)V PLcom/android/server/content/SyncManager$SyncHandler;->checkIfDeviceReady()V PLcom/android/server/content/SyncManager$SyncHandler;->closeActiveSyncContext(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V -PLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I -PLcom/android/server/content/SyncManager$SyncHandler;->deferSyncH(Lcom/android/server/content/SyncOperation;J)V -PLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z +PLcom/android/server/content/SyncManager$SyncHandler;->deferActiveSyncH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager$SyncHandler;->deferSyncH(Lcom/android/server/content/SyncOperation;JLjava/lang/String;)V PLcom/android/server/content/SyncManager$SyncHandler;->findActiveSyncContextH(I)Lcom/android/server/content/SyncManager$ActiveSyncContext; PLcom/android/server/content/SyncManager$SyncHandler;->getSyncWakeLock(Lcom/android/server/content/SyncOperation;)Landroid/os/PowerManager$WakeLock; -PLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V PLcom/android/server/content/SyncManager$SyncHandler;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;)J PLcom/android/server/content/SyncManager$SyncHandler;->maybeUpdateSyncPeriodH(Lcom/android/server/content/SyncOperation;JJ)V PLcom/android/server/content/SyncManager$SyncHandler;->onBootCompleted()V -PLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;)V -PLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V -PLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V -PLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V +PLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V PLcom/android/server/content/SyncManager$SyncHandler;->stopSyncEvent(JLcom/android/server/content/SyncOperation;Ljava/lang/String;IIJ)V -PLcom/android/server/content/SyncManager$SyncHandler;->tryEnqueueMessageUntilReadyToRun(Landroid/os/Message;)Z PLcom/android/server/content/SyncManager$SyncHandler;->updateOrAddPeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V PLcom/android/server/content/SyncManager$SyncHandler;->updateRunningAccountsH(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V PLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;)V PLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$SyncTimeTracker;)V -PLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V PLcom/android/server/content/SyncManager$UpdatePeriodicSyncMessagePayload;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V PLcom/android/server/content/SyncManager;->-get1(Lcom/android/server/content/SyncManager;)Lcom/android/internal/app/IBatteryStats; PLcom/android/server/content/SyncManager;->-get10(Lcom/android/server/content/SyncManager;)Z @@ -7354,12 +9874,12 @@ PLcom/android/server/content/SyncManager;->-get11(Lcom/android/server/content/Sy PLcom/android/server/content/SyncManager;->-get12(Lcom/android/server/content/SyncManager;)Z PLcom/android/server/content/SyncManager;->-get13(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncManager$SyncHandler; PLcom/android/server/content/SyncManager;->-get14(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncJobService; -PLcom/android/server/content/SyncManager;->-get15(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager$WakeLock; PLcom/android/server/content/SyncManager;->-get16(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncStorageEngine; PLcom/android/server/content/SyncManager;->-get2(Lcom/android/server/content/SyncManager;)Z PLcom/android/server/content/SyncManager;->-get3(Lcom/android/server/content/SyncManager;)Landroid/content/Context; PLcom/android/server/content/SyncManager;->-get4(Lcom/android/server/content/SyncManager;)Z -PLcom/android/server/content/SyncManager;->-get6(Lcom/android/server/content/SyncManager;)Z +PLcom/android/server/content/SyncManager;->-get5(Lcom/android/server/content/SyncManager;)Z +PLcom/android/server/content/SyncManager;->-get6(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncLogger; PLcom/android/server/content/SyncManager;->-get7(Lcom/android/server/content/SyncManager;)Landroid/app/NotificationManager; PLcom/android/server/content/SyncManager;->-get9(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager; PLcom/android/server/content/SyncManager;->-set0(Lcom/android/server/content/SyncManager;Z)Z @@ -7367,61 +9887,54 @@ PLcom/android/server/content/SyncManager;->-set1(Lcom/android/server/content/Syn PLcom/android/server/content/SyncManager;->-set2(Lcom/android/server/content/SyncManager;Z)Z PLcom/android/server/content/SyncManager;->-set4(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;)[Landroid/accounts/AccountAndUser; PLcom/android/server/content/SyncManager;->-set6(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncJobService;)Lcom/android/server/content/SyncJobService; -PLcom/android/server/content/SyncManager;->-wrap0(Lcom/android/server/content/SyncManager;)Landroid/app/job/JobScheduler; -PLcom/android/server/content/SyncManager;->-wrap10(Lcom/android/server/content/SyncManager;)V -PLcom/android/server/content/SyncManager;->-wrap11(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V -PLcom/android/server/content/SyncManager;->-wrap17(Lcom/android/server/content/SyncManager;I)V -PLcom/android/server/content/SyncManager;->-wrap18(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V -PLcom/android/server/content/SyncManager;->-wrap2(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z -PLcom/android/server/content/SyncManager;->-wrap23(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;J)V -PLcom/android/server/content/SyncManager;->-wrap24(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V -PLcom/android/server/content/SyncManager;->-wrap25(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V -PLcom/android/server/content/SyncManager;->-wrap26(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V -PLcom/android/server/content/SyncManager;->-wrap28(Lcom/android/server/content/SyncManager;)V -PLcom/android/server/content/SyncManager;->-wrap5(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z -PLcom/android/server/content/SyncManager;->-wrap6(Lcom/android/server/content/SyncManager;)Z -PLcom/android/server/content/SyncManager;->-wrap7(Lcom/android/server/content/SyncManager;Landroid/accounts/Account;ILjava/lang/String;)I +PLcom/android/server/content/SyncManager;->-wrap1(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z +PLcom/android/server/content/SyncManager;->-wrap10(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->-wrap11(Lcom/android/server/content/SyncManager;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->-wrap12(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->-wrap13(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager;->-wrap18(Lcom/android/server/content/SyncManager;I)V +PLcom/android/server/content/SyncManager;->-wrap19(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V +PLcom/android/server/content/SyncManager;->-wrap2(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +PLcom/android/server/content/SyncManager;->-wrap24(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;J)V +PLcom/android/server/content/SyncManager;->-wrap25(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V +PLcom/android/server/content/SyncManager;->-wrap26(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V +PLcom/android/server/content/SyncManager;->-wrap27(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V +PLcom/android/server/content/SyncManager;->-wrap29(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager;->-wrap4(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z +PLcom/android/server/content/SyncManager;->-wrap6(Lcom/android/server/content/SyncManager;Landroid/accounts/Account;ILjava/lang/String;)I PLcom/android/server/content/SyncManager;->-wrap8(Lcom/android/server/content/SyncManager;)Ljava/util/List; PLcom/android/server/content/SyncManager;-><init>(Landroid/content/Context;Z)V -PLcom/android/server/content/SyncManager;->canAccessAccount(Landroid/accounts/Account;Ljava/lang/String;I)Z +PLcom/android/server/content/SyncManager;->cancelJob(Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V PLcom/android/server/content/SyncManager;->cleanupJobs()V -PLcom/android/server/content/SyncManager;->clearAllBackoffs()V -PLcom/android/server/content/SyncManager;->clearBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V +PLcom/android/server/content/SyncManager;->clearAllBackoffs(Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->clearBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V PLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;)I -PLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;Z)I PLcom/android/server/content/SyncManager;->containsAccountAndUser([Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z -PLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List; +PLcom/android/server/content/SyncManager;->doDatabaseCleanup()V PLcom/android/server/content/SyncManager;->getConnectivityManager()Landroid/net/ConnectivityManager; -PLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I PLcom/android/server/content/SyncManager;->getJobScheduler()Landroid/app/job/JobScheduler; -PLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; -PLcom/android/server/content/SyncManager;->getSyncStorageEngine()Lcom/android/server/content/SyncStorageEngine; +PLcom/android/server/content/SyncManager;->getJobStats()Ljava/lang/String; PLcom/android/server/content/SyncManager;->getTotalBytesTransferredByUid(I)J PLcom/android/server/content/SyncManager;->getUnusedJobIdH()I +PLcom/android/server/content/SyncManager;->isAdapterDelayed(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z PLcom/android/server/content/SyncManager;->isDeviceProvisioned()Z -PLcom/android/server/content/SyncManager;->isJobIdInUseLockedH(ILjava/util/List;)Z PLcom/android/server/content/SyncManager;->isSyncStillActiveH(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z +PLcom/android/server/content/SyncManager;->onStartUser(I)V +PLcom/android/server/content/SyncManager;->onUnlockUser(I)V PLcom/android/server/content/SyncManager;->onUserUnlocked(I)V PLcom/android/server/content/SyncManager;->postMonitorSyncProgressMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V PLcom/android/server/content/SyncManager;->postScheduleSyncMessage(Lcom/android/server/content/SyncOperation;J)V -PLcom/android/server/content/SyncManager;->readDataConnectionState()Z -PLcom/android/server/content/SyncManager;->removePeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;)V -PLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V -PLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;)V +PLcom/android/server/content/SyncManager;->removePeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V PLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;I)V -PLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V PLcom/android/server/content/SyncManager;->sendSyncFinishedOrCanceledMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V -PLcom/android/server/content/SyncManager;->setAuthorityPendingState(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V PLcom/android/server/content/SyncManager;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V PLcom/android/server/content/SyncManager;->syncExtrasEquals(Landroid/os/Bundle;Landroid/os/Bundle;Z)Z PLcom/android/server/content/SyncManager;->updateOrAddPeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V PLcom/android/server/content/SyncManager;->updateRunningAccounts(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V -PLcom/android/server/content/SyncManager;->verifyJobScheduler()V PLcom/android/server/content/SyncManager;->whiteListExistingSyncAdaptersIfNeeded()V PLcom/android/server/content/SyncOperation;-><init>(Landroid/accounts/Account;IILjava/lang/String;IILjava/lang/String;Landroid/os/Bundle;Z)V PLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;Z)V -PLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJ)V -PLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V +PLcom/android/server/content/SyncOperation;->extrasToString(Landroid/os/Bundle;)Ljava/lang/String; PLcom/android/server/content/SyncOperation;->findPriority()I PLcom/android/server/content/SyncOperation;->ignoreBackoff()Z PLcom/android/server/content/SyncOperation;->isConflict(Lcom/android/server/content/SyncOperation;)Z @@ -7431,8 +9944,6 @@ PLcom/android/server/content/SyncOperation;->isIgnoreSettings()Z PLcom/android/server/content/SyncOperation;->isInitialization()Z PLcom/android/server/content/SyncOperation;->isNotAllowedOnMetered()Z PLcom/android/server/content/SyncOperation;->toEventLog(I)[Ljava/lang/Object; -PLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle; -PLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String; PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;-><init>(Landroid/content/Context;)V PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->isAccountValid(Landroid/accounts/Account;I)Z PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->isAuthorityValid(Ljava/lang/String;I)Z @@ -7440,8 +9951,6 @@ PLcom/android/server/content/SyncStorageEngine$AccountInfo;-><init>(Landroid/acc PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;I)V PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;->defaultInitialisation()V PLcom/android/server/content/SyncStorageEngine$DayStats;-><init>(I)V -PLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V -PLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z PLcom/android/server/content/SyncStorageEngine$SyncHistoryItem;-><init>()V PLcom/android/server/content/SyncStorageEngine;->-get0()Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener; PLcom/android/server/content/SyncStorageEngine;-><init>(Landroid/content/Context;Ljava/io/File;)V @@ -7450,35 +9959,25 @@ PLcom/android/server/content/SyncStorageEngine;->addStatusChangeListener(ILandro PLcom/android/server/content/SyncStorageEngine;->calculateDefaultFlexTime(J)J PLcom/android/server/content/SyncStorageEngine;->clearAllBackoffsLocked()V PLcom/android/server/content/SyncStorageEngine;->createAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +PLcom/android/server/content/SyncStorageEngine;->doDatabaseCleanup([Landroid/accounts/Account;I)V PLcom/android/server/content/SyncStorageEngine;->getAuthority(I)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; -PLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; -PLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair; PLcom/android/server/content/SyncStorageEngine;->getCurrentDayLocked()I -PLcom/android/server/content/SyncStorageEngine;->getCurrentSyncs(I)Ljava/util/List; -PLcom/android/server/content/SyncStorageEngine;->getCurrentSyncsLocked(I)Ljava/util/List; PLcom/android/server/content/SyncStorageEngine;->getDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;)J -PLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I -PLcom/android/server/content/SyncStorageEngine;->getMasterSyncAutomatically(I)Z -PLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; PLcom/android/server/content/SyncStorageEngine;->getOrCreateSyncStatusLocked(I)Landroid/content/SyncStatusInfo; PLcom/android/server/content/SyncStorageEngine;->getSingleton()Lcom/android/server/content/SyncStorageEngine; -PLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;)Z +PLcom/android/server/content/SyncStorageEngine;->handleMessage(Landroid/os/Message;)V PLcom/android/server/content/SyncStorageEngine;->init(Landroid/content/Context;)V PLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J -PLcom/android/server/content/SyncStorageEngine;->isSyncActive(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z -PLcom/android/server/content/SyncStorageEngine;->isSyncPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z PLcom/android/server/content/SyncStorageEngine;->markPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;Z)V PLcom/android/server/content/SyncStorageEngine;->maybeDeleteLegacyPendingInfoLocked(Ljava/io/File;)V PLcom/android/server/content/SyncStorageEngine;->maybeMigrateSettingsForRenamedAuthorities()Z -PLcom/android/server/content/SyncStorageEngine;->parseAuthority(Lorg/xmlpull/v1/XmlPullParser;ILcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; PLcom/android/server/content/SyncStorageEngine;->parseListenForTickles(Lorg/xmlpull/v1/XmlPullParser;)V -PLcom/android/server/content/SyncStorageEngine;->readAccountInfoLocked()V PLcom/android/server/content/SyncStorageEngine;->readAndDeleteLegacyAccountInfoLocked()V PLcom/android/server/content/SyncStorageEngine;->readStatisticsLocked()V PLcom/android/server/content/SyncStorageEngine;->readStatusLocked()V PLcom/android/server/content/SyncStorageEngine;->removeActiveSync(Landroid/content/SyncInfo;I)V +PLcom/android/server/content/SyncStorageEngine;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V PLcom/android/server/content/SyncStorageEngine;->reportActiveChange()V -PLcom/android/server/content/SyncStorageEngine;->reportChange(I)V PLcom/android/server/content/SyncStorageEngine;->restoreAllPeriodicSyncs()Z PLcom/android/server/content/SyncStorageEngine;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V PLcom/android/server/content/SyncStorageEngine;->setIsSyncable(Landroid/accounts/Account;ILjava/lang/String;I)V @@ -7488,15 +9987,17 @@ PLcom/android/server/content/SyncStorageEngine;->setPeriodicSyncAddedListener(Lc PLcom/android/server/content/SyncStorageEngine;->setSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;Z)V PLcom/android/server/content/SyncStorageEngine;->setSyncableStateForEndPoint(Lcom/android/server/content/SyncStorageEngine$EndPoint;I)V PLcom/android/server/content/SyncStorageEngine;->shouldGrantSyncAdaptersAccountAccess()Z -PLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJ)V -PLcom/android/server/content/SyncStorageEngine;->writeAccountInfoLocked()V PLcom/android/server/content/SyncStorageEngine;->writeStatisticsLocked()V -PLcom/android/server/content/SyncStorageEngine;->writeStatusLocked()V +PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;->$m$0()V +PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;-><init>(ILjava/lang/Object;)V +PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;->run()V PLcom/android/server/devicepolicy/CertificateMonitor$1;-><init>(Lcom/android/server/devicepolicy/CertificateMonitor;)V PLcom/android/server/devicepolicy/CertificateMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/devicepolicy/CertificateMonitor;->-wrap0(Lcom/android/server/devicepolicy/CertificateMonitor;Landroid/os/UserHandle;)V PLcom/android/server/devicepolicy/CertificateMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Landroid/os/Handler;)V PLcom/android/server/devicepolicy/CertificateMonitor;->getInstalledCaCertificates(Landroid/os/UserHandle;)Ljava/util/List; +PLcom/android/server/devicepolicy/CertificateMonitor;->lambda$-com_android_server_devicepolicy_CertificateMonitor_5174(I)V +PLcom/android/server/devicepolicy/CertificateMonitor;->onCertificateApprovalsChanged(I)V PLcom/android/server/devicepolicy/CertificateMonitor;->updateInstalledCertificates(Landroid/os/UserHandle;)V PLcom/android/server/devicepolicy/DeviceAdminServiceController;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyConstants;)V PLcom/android/server/devicepolicy/DevicePolicyConstants;-><init>(Ljava/lang/String;)V @@ -7507,18 +10008,17 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService$3;-><init>(Lcom/and PLcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$4;I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;->run()V PLcom/android/server/devicepolicy/DevicePolicyManagerService$4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V -PLcom/android/server/devicepolicy/DevicePolicyManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;IZ)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$8;->run()V PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;-><init>(Landroid/app/admin/DeviceAdminInfo;Z)V -PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUid()I PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUserHandle()Landroid/os/UserHandle; PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->hasParentActiveAdmin()Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->hasUserRestrictions()Z PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writePackageListToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/List;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;-><init>(I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;-><init>(Landroid/content/Context;)V -PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J -PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getAlarmManager()Landroid/app/AlarmManager; PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getDevicePolicyFilePathForSystemUser()Ljava/lang/String; PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIActivityManager()Landroid/app/IActivityManager; @@ -7540,7 +10040,7 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settings PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetString(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsSecureGetIntForUser(Ljava/lang/String;II)I PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->storageManagerIsFileBasedEncryptionEnabled()Z -PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;-><init>(Landroid/content/Context;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onBootPhase(I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStart()V @@ -7548,46 +10048,40 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStart PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUnlockUser(I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->addOnCrossProfileWidgetProvidersChangeListener(Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;)V -PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveAdminWithPolicy(II)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->register()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap18(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap3(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap7(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap8(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->cleanUpOldUsers()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceDeviceOwnerOrManageUsers()V -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceFullCrossUsersPermission(I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceManageUsers()V -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceSystemUserOrPermissionIfCrossUser(ILjava/lang/String;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceNotManagedProfile(ILjava/lang/String;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceUserUnlocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceUserUnlocked(IZ)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureCallerPackage(Ljava/lang/String;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureDeviceOwnerUserStarted()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->findAdmin(Landroid/content/ComponentName;IZ)Landroid/app/admin/DeviceAdminInfo; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->findOwnerComponentIfNecessaryLocked()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAcceptedCaCertificates(Landroid/os/UserHandle;)Ljava/util/Set; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminWithPolicyForUidLocked(Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(IZ)Ljava/util/List; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;I)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;IZ)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraRestrictionScopeLocked(IZ)I PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getEncryptionStatus()I PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeepUninstalledPackagesLocked()Ljava/util/List; -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOwnerComponent(I)Landroid/content/ComponentName; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordExpirationLocked(Landroid/content/ComponentName;IZ)J -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwner(I)Landroid/content/ComponentName; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordQuality(Landroid/content/ComponentName;IZ)I PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getScreenCaptureDisabled(Landroid/content/ComponentName;I)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getStorageEncryptionStatus(Ljava/lang/String;I)I PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy; -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo; PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePackagesChanged(Ljava/lang/String;I)V @@ -7595,15 +10089,13 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePasswordExp PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleStartUser(I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleUnlockUser(I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasDeviceOwner()Z -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActiveAdminWithPolicyForUserLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;II)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActivePasswordSufficientForUserLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;IZ)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminActive(Landroid/content/ComponentName;I)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallerWithSystemUid()Z -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwner(Landroid/content/ComponentName;I)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isLockTaskPermitted(Ljava/lang/String;)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(I)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabledInternalLocked()Z -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Landroid/content/ComponentName;I)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadOwners()V @@ -7612,11 +10104,18 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeJournaledFile PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultDeviceOwnerUserRestrictionsLocked()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultProfileOwnerUserRestrictions()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateUserRestrictionsIfNecessaryLocked()V -PLcom/android/server/devicepolicy/DevicePolicyManagerService;->notifyPendingSystemUpdate(Landroid/app/admin/SystemUpdateInfo;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onInstalledCertificatesChanged(Landroid/os/UserHandle;Ljava/util/Collection;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onLockSettingsReady()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushUserRestrictions(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeCaApprovalsIfNeeded(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportPasswordChanged(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->saveSettingsLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandForLockscreenPoliciesLocked(Ljava/lang/String;II)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(Ljava/lang/String;IILandroid/os/Bundle;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandToSelfAndProfilesLocked(Ljava/lang/String;IILandroid/os/Bundle;)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminEnabledBroadcastLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendChangedNotification(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDeviceOwnerSystemPropertyLocked()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setExpirationAlarmCheckLocked(Landroid/content/Context;IZ)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->startOwnerService(ILjava/lang/String;)V @@ -7624,9 +10123,12 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService;->systemReady(I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateDeviceOwnerLocked()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateLockTaskPackagesLocked(Ljava/util/List;I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateMaximumTimeToLockLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordExpirationsLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordValidityCheckpointLocked(I)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateScreenCaptureDisabledInWindowManager(IZ)V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateUserSetupCompleteAndPaired()V PLcom/android/server/devicepolicy/DevicePolicyManagerService;->validatePasswordOwnerLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->validateQualityConstant(I)V PLcom/android/server/devicepolicy/Owners$DeviceOwnerReadWriter;-><init>(Lcom/android/server/devicepolicy/Owners;)V PLcom/android/server/devicepolicy/Owners$FileReadWriter;-><init>(Ljava/io/File;)V PLcom/android/server/devicepolicy/Owners$FileReadWriter;->readFromFileLocked()V @@ -7637,43 +10139,28 @@ PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerFileWithTestOverride()L PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserRestrictionsNeedsMigration()Z PLcom/android/server/devicepolicy/Owners;->getLegacyConfigFileWithTestOverride()Ljava/io/File; -PLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName; PLcom/android/server/devicepolicy/Owners;->getProfileOwnerFileWithTestOverride(I)Ljava/io/File; PLcom/android/server/devicepolicy/Owners;->getProfileOwnerKeys()Ljava/util/Set; PLcom/android/server/devicepolicy/Owners;->getProfileOwnerUserRestrictionsNeedsMigration(I)Z PLcom/android/server/devicepolicy/Owners;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy; -PLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z PLcom/android/server/devicepolicy/Owners;->hasProfileOwner(I)Z PLcom/android/server/devicepolicy/Owners;->isDeviceOwnerUserId(I)Z PLcom/android/server/devicepolicy/Owners;->load()V PLcom/android/server/devicepolicy/Owners;->pushToPackageManagerLocked()V PLcom/android/server/devicepolicy/Owners;->readLegacyOwnerFileLocked(Ljava/io/File;)Z -PLcom/android/server/devicepolicy/Owners;->saveSystemUpdateInfo(Landroid/app/admin/SystemUpdateInfo;)Z PLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V -PLcom/android/server/display/-$Lambda$pe87L53A2dvYIZSUUR6Usyk2Zwo;-><init>()V PLcom/android/server/display/AutomaticBrightnessController$1;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V PLcom/android/server/display/AutomaticBrightnessController$1;->onAccuracyChanged(Landroid/hardware/Sensor;I)V PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;-><init>(JI)V -PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V -PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V +PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->clear()V PLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;-><init>(Lcom/android/server/display/AutomaticBrightnessController;Landroid/os/Looper;)V -PLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/display/AutomaticBrightnessController;->-get0(Lcom/android/server/display/AutomaticBrightnessController;)Z -PLcom/android/server/display/AutomaticBrightnessController;->-wrap0(Lcom/android/server/display/AutomaticBrightnessController;)V -PLcom/android/server/display/AutomaticBrightnessController;->-wrap1(Lcom/android/server/display/AutomaticBrightnessController;JF)V -PLcom/android/server/display/AutomaticBrightnessController;->-wrap2(Lcom/android/server/display/AutomaticBrightnessController;)V PLcom/android/server/display/AutomaticBrightnessController;-><init>(Lcom/android/server/display/AutomaticBrightnessController$Callbacks;Landroid/os/Looper;Landroid/hardware/SensorManager;Landroid/util/Spline;IIIFIIJJZIFLcom/android/server/display/HysteresisLevels;)V PLcom/android/server/display/AutomaticBrightnessController;->adjustLightSensorRate(I)V -PLcom/android/server/display/AutomaticBrightnessController;->applyLightSensorMeasurement(JF)V PLcom/android/server/display/AutomaticBrightnessController;->clampScreenBrightness(I)I -PLcom/android/server/display/AutomaticBrightnessController;->collectBrightnessAdjustmentSample()V -PLcom/android/server/display/AutomaticBrightnessController;->configure(ZFZZ)V PLcom/android/server/display/AutomaticBrightnessController;->getAutomaticScreenBrightness()I -PLcom/android/server/display/AutomaticBrightnessController;->prepareBrightnessAdjustmentSample()V PLcom/android/server/display/AutomaticBrightnessController;->setAmbientLux(F)V PLcom/android/server/display/AutomaticBrightnessController;->setLightSensorEnabled(Z)Z PLcom/android/server/display/AutomaticBrightnessController;->setScreenAutoBrightnessAdjustment(F)Z -PLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux()V PLcom/android/server/display/AutomaticBrightnessController;->updateAutoBrightness(Z)V PLcom/android/server/display/ColorFade;-><init>(I)V PLcom/android/server/display/ColorFade;->createNativeFloatBuffer(I)Ljava/nio/FloatBuffer; @@ -7683,25 +10170,16 @@ PLcom/android/server/display/DisplayDevice;->performTraversalInTransactionLocked PLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V PLcom/android/server/display/DisplayDevice;->setLayerStackInTransactionLocked(I)V PLcom/android/server/display/DisplayDevice;->setProjectionInTransactionLocked(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V -PLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds()[I PLcom/android/server/display/DisplayManagerService$BinderService;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; -PLcom/android/server/display/DisplayManagerService$CallbackRecord;->binderDied()V PLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)V -PLcom/android/server/display/DisplayManagerService$Injector;->getVirtualDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)Lcom/android/server/display/VirtualDisplayAdapter; PLcom/android/server/display/DisplayManagerService$LocalService$1;-><init>(Lcom/android/server/display/DisplayManagerService$LocalService;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)V -PLcom/android/server/display/DisplayManagerService$LocalService$1;->requestDisplayState(II)V PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo; PLcom/android/server/display/DisplayManagerService$LocalService;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V PLcom/android/server/display/DisplayManagerService$LocalService;->initPowerManagement(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;)V PLcom/android/server/display/DisplayManagerService$LocalService;->isProximitySensorAvailable()Z -PLcom/android/server/display/DisplayManagerService$LocalService;->performTraversalInTransactionFromWindowManager()V -PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V -PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V -PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIZ)V PLcom/android/server/display/DisplayManagerService;->-get0(Lcom/android/server/display/DisplayManagerService;)Landroid/content/Context; PLcom/android/server/display/DisplayManagerService;->-get1(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport; PLcom/android/server/display/DisplayManagerService;->-get10(Lcom/android/server/display/DisplayManagerService;)Landroid/view/WindowManagerInternal; -PLcom/android/server/display/DisplayManagerService;->-get2(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayPowerController; PLcom/android/server/display/DisplayManagerService;->-get3(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport; PLcom/android/server/display/DisplayManagerService;->-get4(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/input/InputManagerInternal; PLcom/android/server/display/DisplayManagerService;->-get6(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport; @@ -7709,33 +10187,18 @@ PLcom/android/server/display/DisplayManagerService;->-get7(Lcom/android/server/d PLcom/android/server/display/DisplayManagerService;->-get8(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList; PLcom/android/server/display/DisplayManagerService;->-get9(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList; PLcom/android/server/display/DisplayManagerService;->-set0(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayPowerController;)Lcom/android/server/display/DisplayPowerController; -PLcom/android/server/display/DisplayManagerService;->-wrap0(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus; -PLcom/android/server/display/DisplayManagerService;->-wrap11(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V -PLcom/android/server/display/DisplayManagerService;->-wrap15(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V -PLcom/android/server/display/DisplayManagerService;->-wrap17(Lcom/android/server/display/DisplayManagerService;)V -PLcom/android/server/display/DisplayManagerService;->-wrap24(Lcom/android/server/display/DisplayManagerService;II)V -PLcom/android/server/display/DisplayManagerService;->-wrap28(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V -PLcom/android/server/display/DisplayManagerService;->-wrap29(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V -PLcom/android/server/display/DisplayManagerService;->-wrap31(Lcom/android/server/display/DisplayManagerService;IZFIZ)V -PLcom/android/server/display/DisplayManagerService;->-wrap4(Lcom/android/server/display/DisplayManagerService;I)[I -PLcom/android/server/display/DisplayManagerService;->applyGlobalDisplayStateLocked(Ljava/util/List;)V +PLcom/android/server/display/DisplayManagerService;->-wrap1(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus; +PLcom/android/server/display/DisplayManagerService;->-wrap12(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V +PLcom/android/server/display/DisplayManagerService;->-wrap18(Lcom/android/server/display/DisplayManagerService;)V PLcom/android/server/display/DisplayManagerService;->clearViewportsLocked()V PLcom/android/server/display/DisplayManagerService;->configureDisplayInTransactionLocked(Lcom/android/server/display/DisplayDevice;)V PLcom/android/server/display/DisplayManagerService;->findLogicalDisplayForDeviceLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay; -PLcom/android/server/display/DisplayManagerService;->getDisplayIdsInternal(I)[I PLcom/android/server/display/DisplayManagerService;->getNonOverrideDisplayInfoInternal(ILandroid/view/DisplayInfo;)V PLcom/android/server/display/DisplayManagerService;->getWifiDisplayStatusInternal()Landroid/hardware/display/WifiDisplayStatus; -PLcom/android/server/display/DisplayManagerService;->onCallbackDied(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V -PLcom/android/server/display/DisplayManagerService;->performTraversalInTransactionFromWindowManagerInternal()V PLcom/android/server/display/DisplayManagerService;->performTraversalInTransactionLocked()V PLcom/android/server/display/DisplayManagerService;->registerAdditionalDisplayAdapters()V PLcom/android/server/display/DisplayManagerService;->registerOverlayDisplayAdapterLocked()V -PLcom/android/server/display/DisplayManagerService;->registerVirtualDisplayAdapterLocked()V PLcom/android/server/display/DisplayManagerService;->registerWifiDisplayAdapterLocked()V -PLcom/android/server/display/DisplayManagerService;->requestGlobalDisplayStateInternal(II)V -PLcom/android/server/display/DisplayManagerService;->setDisplayAccessUIDsInternal(Landroid/util/SparseArray;)V -PLcom/android/server/display/DisplayManagerService;->setDisplayInfoOverrideFromWindowManagerInternal(ILandroid/view/DisplayInfo;)V -PLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIZ)V PLcom/android/server/display/DisplayManagerService;->setViewportLocked(Landroid/hardware/display/DisplayViewport;Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V PLcom/android/server/display/DisplayManagerService;->setupSchedulerPolicies()V PLcom/android/server/display/DisplayManagerService;->shouldRegisterNonEssentialDisplayAdaptersLocked()Z @@ -7753,13 +10216,10 @@ PLcom/android/server/display/DisplayPowerController$5;-><init>(Lcom/android/serv PLcom/android/server/display/DisplayPowerController$6;-><init>(Lcom/android/server/display/DisplayPowerController;)V PLcom/android/server/display/DisplayPowerController$7;-><init>(Lcom/android/server/display/DisplayPowerController;)V PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;-><init>(Lcom/android/server/display/DisplayPowerController;Landroid/os/Looper;)V -PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/display/DisplayPowerController;->-get0(Lcom/android/server/display/DisplayPowerController;)Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks; PLcom/android/server/display/DisplayPowerController;->-wrap3(Lcom/android/server/display/DisplayPowerController;)V PLcom/android/server/display/DisplayPowerController;->-wrap6(Lcom/android/server/display/DisplayPowerController;)V PLcom/android/server/display/DisplayPowerController;-><init>(Landroid/content/Context;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayBlanker;)V -PLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(II)V -PLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IZ)V PLcom/android/server/display/DisplayPowerController;->clampAbsoluteBrightness(I)I PLcom/android/server/display/DisplayPowerController;->clampScreenBrightness(I)I PLcom/android/server/display/DisplayPowerController;->createAutoBrightnessSpline([I[I)Landroid/util/Spline; @@ -7768,47 +10228,24 @@ PLcom/android/server/display/DisplayPowerController;->isProximitySensorAvailable PLcom/android/server/display/DisplayPowerController;->normalizeAbsoluteBrightness(I)F PLcom/android/server/display/DisplayPowerController;->sendOnStateChangedWithWakelock()V PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerState()V -PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V PLcom/android/server/display/DisplayPowerController;->setProximitySensorEnabled(Z)V +PLcom/android/server/display/DisplayPowerController;->setReportedScreenState(I)V PLcom/android/server/display/DisplayPowerController;->setScreenState(I)Z PLcom/android/server/display/DisplayPowerController;->unblockScreenOn()V PLcom/android/server/display/DisplayPowerController;->updateBrightness()V -PLcom/android/server/display/DisplayPowerController;->updatePowerState()V PLcom/android/server/display/DisplayPowerState$1;-><init>(Ljava/lang/String;)V PLcom/android/server/display/DisplayPowerState$2;-><init>(Ljava/lang/String;)V -PLcom/android/server/display/DisplayPowerState$2;->setValue(Lcom/android/server/display/DisplayPowerState;I)V -PLcom/android/server/display/DisplayPowerState$2;->setValue(Ljava/lang/Object;I)V PLcom/android/server/display/DisplayPowerState$3;-><init>(Lcom/android/server/display/DisplayPowerState;)V -PLcom/android/server/display/DisplayPowerState$3;->run()V PLcom/android/server/display/DisplayPowerState$4;-><init>(Lcom/android/server/display/DisplayPowerState;)V PLcom/android/server/display/DisplayPowerState$PhotonicModulator;-><init>(Lcom/android/server/display/DisplayPowerState;)V -PLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V -PLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(II)Z -PLcom/android/server/display/DisplayPowerState;->-get0()Z -PLcom/android/server/display/DisplayPowerState;->-get1(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayBlanker; -PLcom/android/server/display/DisplayPowerState;->-get3(Lcom/android/server/display/DisplayPowerState;)F -PLcom/android/server/display/DisplayPowerState;->-get5(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayPowerState$PhotonicModulator; -PLcom/android/server/display/DisplayPowerState;->-get6(Lcom/android/server/display/DisplayPowerState;)I -PLcom/android/server/display/DisplayPowerState;->-get7(Lcom/android/server/display/DisplayPowerState;)I -PLcom/android/server/display/DisplayPowerState;->-set2(Lcom/android/server/display/DisplayPowerState;Z)Z -PLcom/android/server/display/DisplayPowerState;->-set3(Lcom/android/server/display/DisplayPowerState;Z)Z -PLcom/android/server/display/DisplayPowerState;->-wrap0(Lcom/android/server/display/DisplayPowerState;)V -PLcom/android/server/display/DisplayPowerState;->-wrap1(Lcom/android/server/display/DisplayPowerState;)V PLcom/android/server/display/DisplayPowerState;-><init>(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;)V -PLcom/android/server/display/DisplayPowerState;->dismissColorFade()V PLcom/android/server/display/DisplayPowerState;->getColorFadeLevel()F PLcom/android/server/display/DisplayPowerState;->getScreenBrightness()I -PLcom/android/server/display/DisplayPowerState;->getScreenState()I -PLcom/android/server/display/DisplayPowerState;->invokeCleanListenerIfNeeded()V -PLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V -PLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V PLcom/android/server/display/DisplayPowerState;->setColorFadeLevel(F)V -PLcom/android/server/display/DisplayPowerState;->setScreenBrightness(I)V PLcom/android/server/display/DisplayPowerState;->waitUntilClean(Ljava/lang/Runnable;)Z PLcom/android/server/display/DisplayTransformManager;->applyColorMatrix([F)V PLcom/android/server/display/DisplayTransformManager;->computeColorMatrixLocked()[F PLcom/android/server/display/DisplayTransformManager;->getColorMatrix(I)[F -PLcom/android/server/display/DisplayTransformManager;->setColorMatrix(I[F)V PLcom/android/server/display/DisplayTransformManager;->setDaltonizerMode(I)V PLcom/android/server/display/HysteresisLevels;-><init>([I[I[I)V PLcom/android/server/display/HysteresisLevels;->getBrighteningThreshold(F)F @@ -7821,19 +10258,14 @@ PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestMod PLcom/android/server/display/LogicalDisplay;->configureDisplayInTransactionLocked(Lcom/android/server/display/DisplayDevice;Z)V PLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I PLcom/android/server/display/LogicalDisplay;->getNonOverrideDisplayInfoLocked(Landroid/view/DisplayInfo;)V -PLcom/android/server/display/LogicalDisplay;->getRequestedModeIdLocked()I -PLcom/android/server/display/LogicalDisplay;->hasContentLocked()Z -PLcom/android/server/display/LogicalDisplay;->setDisplayInfoOverrideFromWindowManagerLocked(Landroid/view/DisplayInfo;)Z PLcom/android/server/display/LogicalDisplay;->setHasContentLocked(Z)V PLcom/android/server/display/NightDisplayService$1;-><init>(Lcom/android/server/display/NightDisplayService;)V PLcom/android/server/display/NightDisplayService$3;-><init>(Lcom/android/server/display/NightDisplayService;Lcom/android/server/display/DisplayTransformManager;)V -PLcom/android/server/display/NightDisplayService$3;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V PLcom/android/server/display/NightDisplayService$4;-><init>(Lcom/android/server/display/NightDisplayService;Lcom/android/server/display/DisplayTransformManager;[F)V PLcom/android/server/display/NightDisplayService$4;->onAnimationCancel(Landroid/animation/Animator;)V PLcom/android/server/display/NightDisplayService$4;->onAnimationEnd(Landroid/animation/Animator;)V PLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;-><init>()V PLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;-><init>(Lcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;)V -PLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; PLcom/android/server/display/NightDisplayService;->-set0(Lcom/android/server/display/NightDisplayService;Landroid/animation/ValueAnimator;)Landroid/animation/ValueAnimator; PLcom/android/server/display/NightDisplayService;-><init>(Landroid/content/Context;)V PLcom/android/server/display/NightDisplayService;->applyTint(Z)V @@ -7855,29 +10287,11 @@ PLcom/android/server/display/OverlayDisplayAdapter;->registerLocked()V PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevices()V PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevicesLocked()V PLcom/android/server/display/RampAnimator$1;-><init>(Lcom/android/server/display/RampAnimator;)V -PLcom/android/server/display/RampAnimator$1;->run()V -PLcom/android/server/display/RampAnimator;->-get0(Lcom/android/server/display/RampAnimator;)F -PLcom/android/server/display/RampAnimator;->-get1(Lcom/android/server/display/RampAnimator;)Landroid/view/Choreographer; -PLcom/android/server/display/RampAnimator;->-get2(Lcom/android/server/display/RampAnimator;)I -PLcom/android/server/display/RampAnimator;->-get3(Lcom/android/server/display/RampAnimator;)J PLcom/android/server/display/RampAnimator;->-get4(Lcom/android/server/display/RampAnimator;)Lcom/android/server/display/RampAnimator$Listener; -PLcom/android/server/display/RampAnimator;->-get5(Lcom/android/server/display/RampAnimator;)Ljava/lang/Object; -PLcom/android/server/display/RampAnimator;->-get6(Lcom/android/server/display/RampAnimator;)Landroid/util/IntProperty; -PLcom/android/server/display/RampAnimator;->-get7(Lcom/android/server/display/RampAnimator;)I -PLcom/android/server/display/RampAnimator;->-get8(Lcom/android/server/display/RampAnimator;)I -PLcom/android/server/display/RampAnimator;->-set0(Lcom/android/server/display/RampAnimator;F)F PLcom/android/server/display/RampAnimator;->-set1(Lcom/android/server/display/RampAnimator;Z)Z -PLcom/android/server/display/RampAnimator;->-set2(Lcom/android/server/display/RampAnimator;I)I -PLcom/android/server/display/RampAnimator;->-set3(Lcom/android/server/display/RampAnimator;J)J -PLcom/android/server/display/RampAnimator;->-wrap0(Lcom/android/server/display/RampAnimator;)V PLcom/android/server/display/RampAnimator;-><init>(Ljava/lang/Object;Landroid/util/IntProperty;)V -PLcom/android/server/display/RampAnimator;->animateTo(II)Z PLcom/android/server/display/RampAnimator;->isAnimating()Z -PLcom/android/server/display/RampAnimator;->postAnimationCallback()V PLcom/android/server/display/RampAnimator;->setListener(Lcom/android/server/display/RampAnimator$Listener;)V -PLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V -PLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;)V -PLcom/android/server/display/VirtualDisplayAdapter;->registerLocked()V PLcom/android/server/dreams/DreamController$1;-><init>(Lcom/android/server/dreams/DreamController;)V PLcom/android/server/dreams/DreamController$2;-><init>(Lcom/android/server/dreams/DreamController;)V PLcom/android/server/dreams/DreamController;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/dreams/DreamController$Listener;)V @@ -7893,7 +10307,6 @@ PLcom/android/server/dreams/DreamManagerService$BinderService;->isDreaming()Z PLcom/android/server/dreams/DreamManagerService$DreamHandler;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Looper;)V PLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;)V PLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$LocalService;)V -PLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z PLcom/android/server/dreams/DreamManagerService;->-get5(Lcom/android/server/dreams/DreamManagerService;)Ljava/lang/Object; PLcom/android/server/dreams/DreamManagerService;->-wrap15(Lcom/android/server/dreams/DreamManagerService;Z)V PLcom/android/server/dreams/DreamManagerService;->-wrap17(Lcom/android/server/dreams/DreamManagerService;)V @@ -7913,22 +10326,30 @@ PLcom/android/server/dreams/DreamManagerService;->validateDream(Landroid/content PLcom/android/server/dreams/DreamManagerService;->writePulseGestureEnabled()V PLcom/android/server/emergency/EmergencyAffordanceService$1;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V PLcom/android/server/emergency/EmergencyAffordanceService$2;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/emergency/EmergencyAffordanceService$3;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V PLcom/android/server/emergency/EmergencyAffordanceService$3;->onSubscriptionsChanged()V PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;Landroid/os/Looper;)V PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/emergency/EmergencyAffordanceService;->-get0(Lcom/android/server/emergency/EmergencyAffordanceService;)Lcom/android/server/emergency/EmergencyAffordanceService$MyHandler; +PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap0(Lcom/android/server/emergency/EmergencyAffordanceService;)Z PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap1(Lcom/android/server/emergency/EmergencyAffordanceService;)Z PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap3(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap4(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap5(Lcom/android/server/emergency/EmergencyAffordanceService;)V PLcom/android/server/emergency/EmergencyAffordanceService;-><init>(Landroid/content/Context;)V PLcom/android/server/emergency/EmergencyAffordanceService;->handleInitializeState()V PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateCellInfo()Z PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateSimSubscriptionInfo()Z +PLcom/android/server/emergency/EmergencyAffordanceService;->mccRequiresEmergencyAffordance(I)Z PLcom/android/server/emergency/EmergencyAffordanceService;->onBootPhase(I)V PLcom/android/server/emergency/EmergencyAffordanceService;->onStart()V +PLcom/android/server/emergency/EmergencyAffordanceService;->requestCellScan()V +PLcom/android/server/emergency/EmergencyAffordanceService;->setNetworkNeedsEmergencyAffordance(Z)V PLcom/android/server/emergency/EmergencyAffordanceService;->setSimNeedsEmergencyAffordance(Z)V PLcom/android/server/emergency/EmergencyAffordanceService;->simNeededAffordanceBefore()Z PLcom/android/server/emergency/EmergencyAffordanceService;->startScanning()V +PLcom/android/server/emergency/EmergencyAffordanceService;->stopScanning()V PLcom/android/server/emergency/EmergencyAffordanceService;->updateEmergencyAffordanceNeeded()V PLcom/android/server/fingerprint/-$Lambda$NsdFXKe2P39OH-qCAY_zqOMIIsg;->$m$0()V PLcom/android/server/fingerprint/-$Lambda$NsdFXKe2P39OH-qCAY_zqOMIIsg;-><init>(Ljava/lang/Object;)V @@ -7964,6 +10385,7 @@ PLcom/android/server/fingerprint/FingerprintService;->getEnrolledFingerprints(I) PLcom/android/server/fingerprint/FingerprintService;->getFingerprintDaemon()Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint; PLcom/android/server/fingerprint/FingerprintService;->getUserOrWorkProfileId(Ljava/lang/String;I)I PLcom/android/server/fingerprint/FingerprintService;->hasEnrolledFingerprints(I)Z +PLcom/android/server/fingerprint/FingerprintService;->isCurrentUserOrProfile(I)Z PLcom/android/server/fingerprint/FingerprintService;->isKeyguard(Ljava/lang/String;)Z PLcom/android/server/fingerprint/FingerprintService;->isWorkProfile(I)Z PLcom/android/server/fingerprint/FingerprintService;->listenForUserSwitches()V @@ -7980,8 +10402,6 @@ PLcom/android/server/fingerprint/FingerprintsUserState;->getCopy(Ljava/util/Arra PLcom/android/server/fingerprint/FingerprintsUserState;->getFileForUser(I)Ljava/io/File; PLcom/android/server/fingerprint/FingerprintsUserState;->getFingerprints()Ljava/util/List; PLcom/android/server/fingerprint/FingerprintsUserState;->readStateSyncLocked()V -PLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V -PLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z PLcom/android/server/firewall/IntentFirewall;->checkStartActivity(Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z PLcom/android/server/input/InputApplicationHandle;-><init>(Ljava/lang/Object;)V PLcom/android/server/input/InputApplicationHandle;->finalize()V @@ -7994,12 +10414,11 @@ PLcom/android/server/input/InputManagerService$2;-><init>(Lcom/android/server/in PLcom/android/server/input/InputManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/input/InputManagerService$3;-><init>(Lcom/android/server/input/InputManagerService;)V PLcom/android/server/input/InputManagerService$5;-><init>(Lcom/android/server/input/InputManagerService;Ljava/util/HashSet;)V -PLcom/android/server/input/InputManagerService$5;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;-><init>(Lcom/android/server/input/InputManagerService;ILandroid/hardware/input/IInputDevicesChangedListener;)V PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->binderDied()V +PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->notifyInputDevicesChanged([I)V PLcom/android/server/input/InputManagerService$InputManagerHandler;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/Looper;)V PLcom/android/server/input/InputManagerService$InputManagerHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/input/InputManagerService$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;)V PLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService$LocalService;)V PLcom/android/server/input/InputManagerService$LocalService;->onInputMethodSubtypeChanged(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V @@ -8015,44 +10434,29 @@ PLcom/android/server/input/InputManagerService;->-wrap5(Lcom/android/server/inpu PLcom/android/server/input/InputManagerService;->-wrap9(Lcom/android/server/input/InputManagerService;I)V PLcom/android/server/input/InputManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/input/InputManagerService;->checkInjectEventsPermission(II)Z -PLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V PLcom/android/server/input/InputManagerService;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; -PLcom/android/server/input/InputManagerService;->getCurrentKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String; PLcom/android/server/input/InputManagerService;->getDeviceAlias(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/input/InputManagerService;->getDoubleTapTimeout()I -PLcom/android/server/input/InputManagerService;->getExcludedDeviceNames()[Ljava/lang/String; PLcom/android/server/input/InputManagerService;->getHoverTapSlop()I PLcom/android/server/input/InputManagerService;->getHoverTapTimeout()I -PLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/InputDevice; -PLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I PLcom/android/server/input/InputManagerService;->getInputDevices()[Landroid/view/InputDevice; PLcom/android/server/input/InputManagerService;->getKeyCodeState(III)I PLcom/android/server/input/InputManagerService;->getKeyRepeatDelay()I PLcom/android/server/input/InputManagerService;->getKeyRepeatTimeout()I -PLcom/android/server/input/InputManagerService;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String; -PLcom/android/server/input/InputManagerService;->getLayoutDescriptor(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String; -PLcom/android/server/input/InputManagerService;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList; PLcom/android/server/input/InputManagerService;->getLongPressTimeout()I PLcom/android/server/input/InputManagerService;->getPointerSpeedSetting()I PLcom/android/server/input/InputManagerService;->getScanCodeState(III)I PLcom/android/server/input/InputManagerService;->getShowTouchesSetting(I)I -PLcom/android/server/input/InputManagerService;->getSwitchState(III)I PLcom/android/server/input/InputManagerService;->getTouchCalibrationForInputDevice(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration; PLcom/android/server/input/InputManagerService;->getVirtualKeyQuietTimeMillis()I PLcom/android/server/input/InputManagerService;->handleSwitchInputMethodSubtype(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V PLcom/android/server/input/InputManagerService;->handleSwitchKeyboardLayout(Landroid/hardware/input/InputDeviceIdentifier;Lcom/android/internal/inputmethod/InputMethodSubtypeHandle;)V PLcom/android/server/input/InputManagerService;->hasKeys(II[I[Z)Z -PLcom/android/server/input/InputManagerService;->injectInputEvent(Landroid/view/InputEvent;I)Z -PLcom/android/server/input/InputManagerService;->injectInputEventInternal(Landroid/view/InputEvent;II)Z -PLcom/android/server/input/InputManagerService;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J -PLcom/android/server/input/InputManagerService;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I -PLcom/android/server/input/InputManagerService;->monitor()V PLcom/android/server/input/InputManagerService;->monitorInput(Ljava/lang/String;)Landroid/view/InputChannel; PLcom/android/server/input/InputManagerService;->notifyConfigurationChanged(J)V PLcom/android/server/input/InputManagerService;->notifyInputDevicesChanged([Landroid/view/InputDevice;)V PLcom/android/server/input/InputManagerService;->onInputDevicesChangedListenerDied(I)V PLcom/android/server/input/InputManagerService;->registerAccessibilityLargePointerSettingObserver()V -PLcom/android/server/input/InputManagerService;->registerInputChannel(Landroid/view/InputChannel;Lcom/android/server/input/InputWindowHandle;)V PLcom/android/server/input/InputManagerService;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V PLcom/android/server/input/InputManagerService;->registerPointerSpeedSettingObserver()V PLcom/android/server/input/InputManagerService;->registerShowTouchesSettingObserver()V @@ -8063,217 +10467,134 @@ PLcom/android/server/input/InputManagerService;->setDisplayViewportsInternal(Lan PLcom/android/server/input/InputManagerService;->setFocusedApplication(Lcom/android/server/input/InputApplicationHandle;)V PLcom/android/server/input/InputManagerService;->setInputDispatchMode(ZZ)V PLcom/android/server/input/InputManagerService;->setPointerSpeedUnchecked(I)V -PLcom/android/server/input/InputManagerService;->setSystemUiVisibility(I)V PLcom/android/server/input/InputManagerService;->setWindowManagerCallbacks(Lcom/android/server/input/InputManagerService$WindowManagerCallbacks;)V PLcom/android/server/input/InputManagerService;->setWiredAccessoryCallbacks(Lcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;)V PLcom/android/server/input/InputManagerService;->start()V PLcom/android/server/input/InputManagerService;->systemRunning()V PLcom/android/server/input/InputManagerService;->unregisterInputChannel(Landroid/view/InputChannel;)V PLcom/android/server/input/InputManagerService;->updateAccessibilityLargePointerFromSettings()V -PLcom/android/server/input/InputManagerService;->updateKeyboardLayouts()V PLcom/android/server/input/InputManagerService;->updatePointerSpeedFromSettings()V PLcom/android/server/input/InputManagerService;->updateShowTouchesFromSettings()V -PLcom/android/server/input/InputManagerService;->visitAllKeyboardLayouts(Lcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V -PLcom/android/server/input/InputWindowHandle;-><init>(Lcom/android/server/input/InputApplicationHandle;Ljava/lang/Object;Landroid/view/IWindow;I)V -PLcom/android/server/input/InputWindowHandle;->finalize()V PLcom/android/server/input/PersistentDataStore;-><init>()V PLcom/android/server/input/PersistentDataStore;->clearState()V -PLcom/android/server/input/PersistentDataStore;->getCurrentKeyboardLayout(Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/input/PersistentDataStore;->getInputDeviceState(Ljava/lang/String;Z)Lcom/android/server/input/PersistentDataStore$InputDeviceState; PLcom/android/server/input/PersistentDataStore;->getTouchCalibration(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration; PLcom/android/server/input/PersistentDataStore;->load()V -PLcom/android/server/input/PersistentDataStore;->loadIfNeeded()V PLcom/android/server/input/PersistentDataStore;->removeUninstalledKeyboardLayouts(Ljava/util/Set;)Z PLcom/android/server/input/PersistentDataStore;->saveIfNeeded()V PLcom/android/server/input/PersistentDataStore;->switchKeyboardLayout(Ljava/lang/String;Lcom/android/internal/inputmethod/InputMethodSubtypeHandle;)Z +PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8$1;-><init>(Ljava/lang/Object;)V PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;->$m$0(Ljava/lang/Object;Ljava/lang/Object;)I PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;-><init>()V PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/job/GrantedUriPermissions;->checkGrantFlags(I)Z PLcom/android/server/job/JobPackageTracker$DataSet;-><init>()V -PLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;J)V -PLcom/android/server/job/JobPackageTracker$DataSet;->decActiveTop(ILjava/lang/String;J)V -PLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V -PLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry; -PLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry; -PLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J +PLcom/android/server/job/JobPackageTracker$DataSet;->decActiveTop(ILjava/lang/String;JI)V +PLcom/android/server/job/JobPackageTracker$DataSet;->finish(Lcom/android/server/job/JobPackageTracker$DataSet;J)V PLcom/android/server/job/JobPackageTracker$DataSet;->incActive(ILjava/lang/String;J)V PLcom/android/server/job/JobPackageTracker$DataSet;->incActiveTop(ILjava/lang/String;J)V -PLcom/android/server/job/JobPackageTracker$DataSet;->incPending(ILjava/lang/String;J)V PLcom/android/server/job/JobPackageTracker$PackageEntry;-><init>()V PLcom/android/server/job/JobPackageTracker$PackageEntry;->getActiveTime(J)J PLcom/android/server/job/JobPackageTracker$PackageEntry;->getPendingTime(J)J PLcom/android/server/job/JobPackageTracker;-><init>()V -PLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;)V -PLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F -PLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/JobPackageTracker;->noteConcurrency(II)V -PLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/JobPackageTracker;->noteNonpending(Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V +PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;-><init>()V +PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;-><init>(Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;)V +PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;->toString()Ljava/lang/String; PLcom/android/server/job/JobSchedulerService$1;-><init>(Lcom/android/server/job/JobSchedulerService;)V PLcom/android/server/job/JobSchedulerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/job/JobSchedulerService$2;-><init>(Lcom/android/server/job/JobSchedulerService;)V PLcom/android/server/job/JobSchedulerService$2;->onUidGone(IZ)V PLcom/android/server/job/JobSchedulerService$2;->onUidIdle(IZ)V -PLcom/android/server/job/JobSchedulerService$2;->onUidStateChanged(IIJ)V PLcom/android/server/job/JobSchedulerService$3;-><init>(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$4;-><init>(Lcom/android/server/job/JobSchedulerService;)V PLcom/android/server/job/JobSchedulerService$Constants;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/os/Handler;)V PLcom/android/server/job/JobSchedulerService$Constants;->start(Landroid/content/ContentResolver;)V PLcom/android/server/job/JobSchedulerService$Constants;->updateConstants()V PLcom/android/server/job/JobSchedulerService$JobHandler;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/os/Looper;)V -PLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;-><init>(Lcom/android/server/job/JobSchedulerService;)V PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->canPersistJobs(II)Z -PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(I)V -PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancelAll()V -PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(ILandroid/app/job/JobInfo;)V PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getAllPendingJobs()Ljava/util/List; -PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(I)Landroid/app/job/JobInfo; -PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Landroid/app/job/JobInfo;)I -PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I PLcom/android/server/job/JobSchedulerService$LocalService$1;-><init>(Lcom/android/server/job/JobSchedulerService$LocalService;Ljava/util/List;)V -PLcom/android/server/job/JobSchedulerService$LocalService$1;->process(Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/JobSchedulerService$LocalService;-><init>(Lcom/android/server/job/JobSchedulerService;)V -PLcom/android/server/job/JobSchedulerService$LocalService;->getSystemScheduledPendingJobs()Ljava/util/List; +PLcom/android/server/job/JobSchedulerService$LocalService;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats; PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;-><init>(Lcom/android/server/job/JobSchedulerService;)V PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcess()V PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->reset()V PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;-><init>(Lcom/android/server/job/JobSchedulerService;)V PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->postProcess()V -PLcom/android/server/job/JobSchedulerService;->-wrap0(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)Z PLcom/android/server/job/JobSchedulerService;->-wrap2(Lcom/android/server/job/JobSchedulerService;Landroid/content/Intent;)Ljava/lang/String; PLcom/android/server/job/JobSchedulerService;->-wrap4(Lcom/android/server/job/JobSchedulerService;)V -PLcom/android/server/job/JobSchedulerService;->-wrap5(Lcom/android/server/job/JobSchedulerService;)V -PLcom/android/server/job/JobSchedulerService;->-wrap6(Lcom/android/server/job/JobSchedulerService;)V PLcom/android/server/job/JobSchedulerService;-><init>(Landroid/content/Context;)V -PLcom/android/server/job/JobSchedulerService;->addOrderedItem(Ljava/util/ArrayList;Ljava/lang/Object;Ljava/util/Comparator;)V -PLcom/android/server/job/JobSchedulerService;->adjustJobPriority(ILcom/android/server/job/controllers/JobStatus;)I -PLcom/android/server/job/JobSchedulerService;->cancelJob(II)V -PLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Ljava/lang/String;)V PLcom/android/server/job/JobSchedulerService;->cancelJobsForNonExistentUsers()V -PLcom/android/server/job/JobSchedulerService;->cancelJobsForUid(ILjava/lang/String;)V -PLcom/android/server/job/JobSchedulerService;->evaluateJobPriorityLocked(Lcom/android/server/job/controllers/JobStatus;)I -PLcom/android/server/job/JobSchedulerService;->findJobContextIdFromMap(Lcom/android/server/job/controllers/JobStatus;[Lcom/android/server/job/controllers/JobStatus;)I +PLcom/android/server/job/JobSchedulerService;->cancelJobsForPackageAndUid(Ljava/lang/String;I)V PLcom/android/server/job/JobSchedulerService;->getJobStore()Lcom/android/server/job/JobStore; PLcom/android/server/job/JobSchedulerService;->getLock()Ljava/lang/Object; PLcom/android/server/job/JobSchedulerService;->getPackageName(Landroid/content/Intent;)Ljava/lang/String; -PLcom/android/server/job/JobSchedulerService;->getPendingJob(II)Landroid/app/job/JobInfo; -PLcom/android/server/job/JobSchedulerService;->getPendingJobs(I)Ljava/util/List; -PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus; PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus; -PLcom/android/server/job/JobSchedulerService;->lambda$-com_android_server_job_JobSchedulerService_21790(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)I +PLcom/android/server/job/JobSchedulerService;->lambda$-com_android_server_job_JobSchedulerService_21827(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)I PLcom/android/server/job/JobSchedulerService;->maybeQueueReadyJobsForExecutionLocked()V -PLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V -PLcom/android/server/job/JobSchedulerService;->noteJobsNonpending(Ljava/util/List;)V PLcom/android/server/job/JobSchedulerService;->noteJobsPending(Ljava/util/List;)V PLcom/android/server/job/JobSchedulerService;->onBootPhase(I)V PLcom/android/server/job/JobSchedulerService;->onControllerStateChanged()V -PLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V PLcom/android/server/job/JobSchedulerService;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/JobSchedulerService;->onStart()V PLcom/android/server/job/JobSchedulerService;->onStartUser(I)V PLcom/android/server/job/JobSchedulerService;->onUnlockUser(I)V -PLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V -PLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;)I -PLcom/android/server/job/JobSchedulerService;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)Z -PLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z -PLcom/android/server/job/JobSchedulerService;->updateUidState(II)V -PLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V -PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStopMessage(IZ)V -PLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V +PLcom/android/server/job/JobServiceContext$JobCallback;->completeWork(II)Z +PLcom/android/server/job/JobServiceContext$JobCallback;->dequeueWork(I)Landroid/app/job/JobWorkItem; PLcom/android/server/job/JobServiceContext$JobServiceHandler;-><init>(Lcom/android/server/job/JobServiceContext;Landroid/os/Looper;)V PLcom/android/server/job/JobServiceContext;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobCompletedListener;Landroid/os/Looper;)V PLcom/android/server/job/JobServiceContext;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Landroid/os/Looper;)V -PLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V +PLcom/android/server/job/JobServiceContext;->assertCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)V PLcom/android/server/job/JobServiceContext;->cancelExecutingJobLocked(ILjava/lang/String;)V -PLcom/android/server/job/JobServiceContext;->clearPreferredUid()V -PLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V -PLcom/android/server/job/JobServiceContext;->doAcknowledgeStartMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V PLcom/android/server/job/JobServiceContext;->doAcknowledgeStopMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V -PLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V -PLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V PLcom/android/server/job/JobServiceContext;->doCancelLocked(ILjava/lang/String;)V -PLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V -PLcom/android/server/job/JobServiceContext;->doServiceBoundLocked()V -PLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;)Z -PLcom/android/server/job/JobServiceContext;->getPreferredUid()I PLcom/android/server/job/JobServiceContext;->handleCancelLocked(Ljava/lang/String;)V -PLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V -PLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V -PLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V -PLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V -PLcom/android/server/job/JobServiceContext;->removeOpTimeOutLocked()V -PLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V PLcom/android/server/job/JobServiceContext;->sendStopMessageLocked(Ljava/lang/String;)V -PLcom/android/server/job/JobServiceContext;->verifyCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z +PLcom/android/server/job/JobStore$1$1;-><init>(Lcom/android/server/job/JobStore$1;Ljava/util/List;)V +PLcom/android/server/job/JobStore$1;-><init>(Lcom/android/server/job/JobStore;)V PLcom/android/server/job/JobStore$JobSet;-><init>()V -PLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z -PLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z -PLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I -PLcom/android/server/job/JobStore$JobSet;->forEachJob(ILcom/android/server/job/JobStore$JobStatusFunctor;)V -PLcom/android/server/job/JobStore$JobSet;->get(II)Lcom/android/server/job/controllers/JobStatus; -PLcom/android/server/job/JobStore$JobSet;->getJobsByUid(I)Ljava/util/List; -PLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z PLcom/android/server/job/JobStore$JobSet;->removeJobsOfNonUsers([I)V -PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;-><init>(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$JobSet;)V -PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildBuilderFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/job/JobInfo$Builder; -PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V +PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;-><init>(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$JobSet;Z)V PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->maybeBuildBackoffPolicyFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V -PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(Ljava/io/FileInputStream;)Ljava/util/List; -PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V -PLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable$1;-><init>(Lcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;Ljava/util/List;)V -PLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;-><init>(Lcom/android/server/job/JobStore;)V -PLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;-><init>(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;)V -PLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->run()V PLcom/android/server/job/JobStore;->-get0(Lcom/android/server/job/JobStore;)Landroid/util/AtomicFile; PLcom/android/server/job/JobStore;->-set0(Lcom/android/server/job/JobStore;I)I +PLcom/android/server/job/JobStore;->-wrap0(Landroid/util/Pair;J)Landroid/util/Pair; PLcom/android/server/job/JobStore;-><init>(Landroid/content/Context;Ljava/lang/Object;Ljava/io/File;)V -PLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)Z -PLcom/android/server/job/JobStore;->containsJob(Lcom/android/server/job/controllers/JobStatus;)Z -PLcom/android/server/job/JobStore;->countJobsForUid(I)I PLcom/android/server/job/JobStore;->forEachJob(ILcom/android/server/job/JobStore$JobStatusFunctor;)V -PLcom/android/server/job/JobStore;->forEachJob(Lcom/android/server/job/JobStore$JobStatusFunctor;)V -PLcom/android/server/job/JobStore;->getJobByUidAndJobId(II)Lcom/android/server/job/controllers/JobStatus; PLcom/android/server/job/JobStore;->getJobsByUid(I)Ljava/util/List; +PLcom/android/server/job/JobStore;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats; PLcom/android/server/job/JobStore;->initAndGet(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/JobStore; -PLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V -PLcom/android/server/job/JobStore;->readJobMapFromDisk(Lcom/android/server/job/JobStore$JobSet;)V -PLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z +PLcom/android/server/job/JobStore;->jobTimesInflatedValid()Z +PLcom/android/server/job/JobStore;->readJobMapFromDisk(Lcom/android/server/job/JobStore$JobSet;Z)V PLcom/android/server/job/JobStore;->removeJobsOfNonUsers([I)V PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;-><init>(Lcom/android/server/job/controllers/AppIdleController;)V PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;-><init>(Lcom/android/server/job/controllers/AppIdleController;Lcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;)V -PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->onParoleStateChanged(Z)V PLcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc;-><init>(Lcom/android/server/job/controllers/AppIdleController;)V -PLcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc;->process(Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc;-><init>(ILjava/lang/String;Z)V PLcom/android/server/job/controllers/AppIdleController;->-get0(Lcom/android/server/job/controllers/AppIdleController;)Lcom/android/server/job/JobSchedulerService; PLcom/android/server/job/controllers/AppIdleController;->-get1(Lcom/android/server/job/controllers/AppIdleController;)Landroid/app/usage/UsageStatsManagerInternal; PLcom/android/server/job/controllers/AppIdleController;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/content/Context;Ljava/lang/Object;)V PLcom/android/server/job/controllers/AppIdleController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/AppIdleController; -PLcom/android/server/job/controllers/AppIdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/controllers/AppIdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V PLcom/android/server/job/controllers/AppIdleController;->setAppIdleParoleOn(Z)V PLcom/android/server/job/controllers/BatteryController$ChargingTracker;-><init>(Lcom/android/server/job/controllers/BatteryController;)V PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->isBatteryNotLow()Z PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->isOnStablePower()Z +PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->onReceiveInternal(Landroid/content/Intent;)V PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->startTracking()V +PLcom/android/server/job/controllers/BatteryController;->-wrap0(Lcom/android/server/job/controllers/BatteryController;)V PLcom/android/server/job/controllers/BatteryController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V PLcom/android/server/job/controllers/BatteryController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/BatteryController; -PLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V PLcom/android/server/job/controllers/ConnectivityController$1;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V PLcom/android/server/job/controllers/ConnectivityController$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V PLcom/android/server/job/controllers/ConnectivityController$2;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V PLcom/android/server/job/controllers/ConnectivityController$2;->onMeteredIfacesChanged([Ljava/lang/String;)V PLcom/android/server/job/controllers/ConnectivityController$2;->onUidRulesChanged(II)V -PLcom/android/server/job/controllers/ConnectivityController;->-wrap0(Lcom/android/server/job/controllers/ConnectivityController;ILandroid/net/NetworkCapabilities;)V +PLcom/android/server/job/controllers/ConnectivityController;->-wrap0(Lcom/android/server/job/controllers/ConnectivityController;I)V PLcom/android/server/job/controllers/ConnectivityController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V PLcom/android/server/job/controllers/ConnectivityController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/ConnectivityController; -PLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V PLcom/android/server/job/controllers/ContentObserverController$JobInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->detachLocked()V PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->scheduleLocked()V @@ -8285,86 +10606,52 @@ PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;- PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;->run()V PLcom/android/server/job/controllers/ContentObserverController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V PLcom/android/server/job/controllers/ContentObserverController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/ContentObserverController; -PLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V -PLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/controllers/ContentObserverController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/controllers/DeviceIdleJobsController$1;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V PLcom/android/server/job/controllers/DeviceIdleJobsController$2;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V PLcom/android/server/job/controllers/DeviceIdleJobsController;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/content/Context;Ljava/lang/Object;)V PLcom/android/server/job/controllers/DeviceIdleJobsController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/DeviceIdleJobsController; -PLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z -PLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V -PLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/controllers/IdleController$IdlenessTracker;-><init>(Lcom/android/server/job/controllers/IdleController;)V PLcom/android/server/job/controllers/IdleController$IdlenessTracker;->isIdle()Z PLcom/android/server/job/controllers/IdleController$IdlenessTracker;->startTracking()V PLcom/android/server/job/controllers/IdleController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V PLcom/android/server/job/controllers/IdleController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/IdleController; PLcom/android/server/job/controllers/IdleController;->initIdleStateTracking()V -PLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V -PLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;JJ)V -PLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJI)V -PLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z -PLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;)Lcom/android/server/job/controllers/JobStatus; -PLcom/android/server/job/controllers/JobStatus;->getBatteryName()Ljava/lang/String; +PLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;JJJJLandroid/util/Pair;)V +PLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJIJJ)V +PLcom/android/server/job/controllers/JobStatus;->clearPersistedUtcTimes()V +PLcom/android/server/job/controllers/JobStatus;->completeWorkLocked(Landroid/app/IActivityManager;I)Z PLcom/android/server/job/controllers/JobStatus;->getTag()Ljava/lang/String; PLcom/android/server/job/controllers/JobStatus;->getTriggerContentMaxDelay()J PLcom/android/server/job/controllers/JobStatus;->getTriggerContentUpdateDelay()J -PLcom/android/server/job/controllers/JobStatus;->getUserId()I -PLcom/android/server/job/controllers/JobStatus;->hasConnectivityConstraint()Z -PLcom/android/server/job/controllers/JobStatus;->hasContentTriggerConstraint()Z PLcom/android/server/job/controllers/JobStatus;->hasExecutingWorkLocked()Z -PLcom/android/server/job/controllers/JobStatus;->hasPowerConstraint()Z -PLcom/android/server/job/controllers/JobStatus;->hasStorageNotLowConstraint()Z PLcom/android/server/job/controllers/JobStatus;->hasWorkLocked()Z PLcom/android/server/job/controllers/JobStatus;->isPreparedLocked()Z -PLcom/android/server/job/controllers/JobStatus;->matches(II)Z -PLcom/android/server/job/controllers/JobStatus;->prepareLocked(Landroid/app/IActivityManager;)V -PLcom/android/server/job/controllers/JobStatus;->setAppNotIdleConstraintSatisfied(Z)Z PLcom/android/server/job/controllers/JobStatus;->setBatteryNotLowConstraintSatisfied(Z)Z PLcom/android/server/job/controllers/JobStatus;->setChargingConstraintSatisfied(Z)Z -PLcom/android/server/job/controllers/JobStatus;->setConnectivityConstraintSatisfied(Z)Z PLcom/android/server/job/controllers/JobStatus;->setContentTriggerConstraintSatisfied(Z)Z PLcom/android/server/job/controllers/JobStatus;->setDeadlineConstraintSatisfied(Z)Z -PLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(ZZ)Z PLcom/android/server/job/controllers/JobStatus;->setIdleConstraintSatisfied(Z)Z -PLcom/android/server/job/controllers/JobStatus;->setMeteredConstraintSatisfied(Z)Z -PLcom/android/server/job/controllers/JobStatus;->setNotRoamingConstraintSatisfied(Z)Z -PLcom/android/server/job/controllers/JobStatus;->setTimingDelayConstraintSatisfied(Z)Z -PLcom/android/server/job/controllers/JobStatus;->setTrackingController(I)V -PLcom/android/server/job/controllers/JobStatus;->setUnmeteredConstraintSatisfied(Z)Z -PLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Landroid/app/IActivityManager;Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/controllers/JobStatus;->ungrantWorkList(Landroid/app/IActivityManager;Ljava/util/ArrayList;)V -PLcom/android/server/job/controllers/JobStatus;->unprepareLocked(Landroid/app/IActivityManager;)V +PLcom/android/server/job/controllers/JobStatus;->ungrantWorkItem(Landroid/app/IActivityManager;Landroid/app/job/JobWorkItem;)V PLcom/android/server/job/controllers/StateController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V -PLcom/android/server/job/controllers/StateController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/controllers/StateController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V PLcom/android/server/job/controllers/StorageController$StorageTracker;-><init>(Lcom/android/server/job/controllers/StorageController;)V PLcom/android/server/job/controllers/StorageController$StorageTracker;->startTracking()V PLcom/android/server/job/controllers/StorageController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V PLcom/android/server/job/controllers/StorageController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/StorageController; -PLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V -PLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V PLcom/android/server/job/controllers/TimeController$1;-><init>(Lcom/android/server/job/controllers/TimeController;)V +PLcom/android/server/job/controllers/TimeController$1;->onAlarm()V PLcom/android/server/job/controllers/TimeController$2;-><init>(Lcom/android/server/job/controllers/TimeController;)V PLcom/android/server/job/controllers/TimeController$2;->onAlarm()V +PLcom/android/server/job/controllers/TimeController;->-wrap0(Lcom/android/server/job/controllers/TimeController;)V PLcom/android/server/job/controllers/TimeController;->-wrap1(Lcom/android/server/job/controllers/TimeController;)V PLcom/android/server/job/controllers/TimeController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V PLcom/android/server/job/controllers/TimeController;->canStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z -PLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V PLcom/android/server/job/controllers/TimeController;->ensureAlarmServiceLocked()V -PLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z PLcom/android/server/job/controllers/TimeController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/TimeController; -PLcom/android/server/job/controllers/TimeController;->maybeAdjustAlarmTime(J)J -PLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V PLcom/android/server/job/controllers/TimeController;->maybeUpdateAlarmsLocked(JJI)V PLcom/android/server/job/controllers/TimeController;->setDeadlineExpiredAlarmLocked(JI)V -PLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JI)V -PLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;JI)V -PLcom/android/server/lights/LightsService$LightImpl;->setColor(I)V PLcom/android/server/lights/LightsService$LightImpl;->turnOff()V PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$0(I)Z PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$1(I)Z @@ -8380,10 +10667,14 @@ PLcom/android/server/location/ActivityRecognitionProxy;-><init>(Landroid/content PLcom/android/server/location/ActivityRecognitionProxy;->bindProvider()V PLcom/android/server/location/ActivityRecognitionProxy;->createAndBind(Landroid/content/Context;Landroid/os/Handler;ZLandroid/hardware/location/ActivityRecognitionHardware;III)Lcom/android/server/location/ActivityRecognitionProxy; PLcom/android/server/location/ComprehensiveCountryDetector$1;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V +PLcom/android/server/location/ComprehensiveCountryDetector$1;->onCountryDetected(Landroid/location/Country;)V PLcom/android/server/location/ComprehensiveCountryDetector$2;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;Landroid/location/Country;Landroid/location/Country;ZZ)V PLcom/android/server/location/ComprehensiveCountryDetector$2;->run()V PLcom/android/server/location/ComprehensiveCountryDetector$3;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V PLcom/android/server/location/ComprehensiveCountryDetector$4;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->-set1(Lcom/android/server/location/ComprehensiveCountryDetector;Landroid/location/Country;)Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->-wrap0(Lcom/android/server/location/ComprehensiveCountryDetector;ZZ)Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->-wrap2(Lcom/android/server/location/ComprehensiveCountryDetector;)V PLcom/android/server/location/ComprehensiveCountryDetector;-><init>(Landroid/content/Context;)V PLcom/android/server/location/ComprehensiveCountryDetector;->addPhoneStateListener()V PLcom/android/server/location/ComprehensiveCountryDetector;->addToLogs(Landroid/location/Country;)V @@ -8398,26 +10689,30 @@ PLcom/android/server/location/ComprehensiveCountryDetector;->getSimBasedCountry( PLcom/android/server/location/ComprehensiveCountryDetector;->isAirplaneModeOff()Z PLcom/android/server/location/ComprehensiveCountryDetector;->isGeoCoderImplemented()Z PLcom/android/server/location/ComprehensiveCountryDetector;->isNetworkCountryCodeAvailable()Z +PLcom/android/server/location/ComprehensiveCountryDetector;->notifyIfCountryChanged(Landroid/location/Country;Landroid/location/Country;)V PLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetection(Landroid/location/Country;Landroid/location/Country;ZZ)V PLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetectionAsync(Landroid/location/Country;Landroid/location/Country;ZZ)V PLcom/android/server/location/ComprehensiveCountryDetector;->scheduleLocationRefresh()V PLcom/android/server/location/ComprehensiveCountryDetector;->setCountryListener(Landroid/location/CountryListener;)V PLcom/android/server/location/ComprehensiveCountryDetector;->startLocationBasedDetector(Landroid/location/CountryListener;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->stopLocationBasedDetector()V PLcom/android/server/location/ContextHubService;-><init>(Landroid/content/Context;)V -PLcom/android/server/location/ContextHubService;->addAppInstance(IIJI)I PLcom/android/server/location/ContextHubService;->checkPermissions()V -PLcom/android/server/location/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I PLcom/android/server/location/ContextHubService;->getContextHubHandles()[I PLcom/android/server/location/ContextHubService;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo; -PLcom/android/server/location/ContextHubService;->onMessageReceipt([I[B)I +PLcom/android/server/location/ContextHubService;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo; PLcom/android/server/location/ContextHubService;->registerCallback(Landroid/hardware/location/IContextHubCallback;)I PLcom/android/server/location/ContextHubService;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I PLcom/android/server/location/CountryDetectorBase;-><init>(Landroid/content/Context;)V +PLcom/android/server/location/CountryDetectorBase;->notifyListener(Landroid/location/Country;)V PLcom/android/server/location/CountryDetectorBase;->setCountryListener(Landroid/location/CountryListener;)V PLcom/android/server/location/FlpHardwareProvider;->isSupported()Z PLcom/android/server/location/GeocoderProxy;-><init>(Landroid/content/Context;IIILandroid/os/Handler;)V PLcom/android/server/location/GeocoderProxy;->bind()Z PLcom/android/server/location/GeocoderProxy;->createAndBind(Landroid/content/Context;IIILandroid/os/Handler;)Lcom/android/server/location/GeocoderProxy; +PLcom/android/server/location/GeocoderProxy;->getConnectedPackageName()Ljava/lang/String; +PLcom/android/server/location/GeocoderProxy;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; +PLcom/android/server/location/GeocoderProxy;->getService()Landroid/location/IGeocodeProvider; PLcom/android/server/location/GeofenceManager$1;-><init>(Lcom/android/server/location/GeofenceManager;Landroid/os/Handler;)V PLcom/android/server/location/GeofenceManager$GeofenceHandler;-><init>(Lcom/android/server/location/GeofenceManager;)V PLcom/android/server/location/GeofenceManager;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationBlacklist;)V @@ -8450,9 +10745,9 @@ PLcom/android/server/location/GnssLocationProvider$11;->isAvailableInPlatform()Z PLcom/android/server/location/GnssLocationProvider$11;->isGpsEnabled()Z PLcom/android/server/location/GnssLocationProvider$12;-><init>(Lcom/android/server/location/GnssLocationProvider;)V PLcom/android/server/location/GnssLocationProvider$12;->run()V -PLcom/android/server/location/GnssLocationProvider$14;-><init>(Lcom/android/server/location/GnssLocationProvider;)V -PLcom/android/server/location/GnssLocationProvider$15;-><init>(Lcom/android/server/location/GnssLocationProvider;)V PLcom/android/server/location/GnssLocationProvider$16;-><init>(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$17;-><init>(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$18;-><init>(Lcom/android/server/location/GnssLocationProvider;)V PLcom/android/server/location/GnssLocationProvider$1;-><init>(Lcom/android/server/location/GnssLocationProvider;)V PLcom/android/server/location/GnssLocationProvider$1;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;)V PLcom/android/server/location/GnssLocationProvider$1;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V @@ -8467,11 +10762,11 @@ PLcom/android/server/location/GnssLocationProvider$6;-><init>(Lcom/android/serve PLcom/android/server/location/GnssLocationProvider$6;->isHardwareGeofenceSupported()Z PLcom/android/server/location/GnssLocationProvider$7;-><init>(Lcom/android/server/location/GnssLocationProvider;)V PLcom/android/server/location/GnssLocationProvider$8;-><init>(Lcom/android/server/location/GnssLocationProvider;)V -PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_24960(I)Z -PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25037(I)Z -PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25109(I)Z -PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25183(I)Z -PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25279(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25217(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25294(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25366(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25440(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25536(I)Z PLcom/android/server/location/GnssLocationProvider$9;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Handler;)V PLcom/android/server/location/GnssLocationProvider$9;->isAvailableInPlatform()Z PLcom/android/server/location/GnssLocationProvider$9;->isGpsEnabled()Z @@ -8480,24 +10775,24 @@ PLcom/android/server/location/GnssLocationProvider$BackOff;->reset()V PLcom/android/server/location/GnssLocationProvider$GpsRequest;-><init>(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;-><init>(Lcom/android/server/location/GnssLocationProvider;)V PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;-><init>(Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/GnssLocationProvider$NetworkLocationListener;)V +PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;->onLocationChanged(Landroid/location/Location;)V PLcom/android/server/location/GnssLocationProvider$ProviderHandler;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Looper;)V PLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleInitialize()V -PLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/location/GnssLocationProvider;->-get0()Z PLcom/android/server/location/GnssLocationProvider;->-get1(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/BroadcastReceiver; -PLcom/android/server/location/GnssLocationProvider;->-get11(Lcom/android/server/location/GnssLocationProvider;)Landroid/net/ConnectivityManager$NetworkCallback; -PLcom/android/server/location/GnssLocationProvider;->-get12(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssLocationProvider$BackOff; -PLcom/android/server/location/GnssLocationProvider;->-get13(Lcom/android/server/location/GnssLocationProvider;)Landroid/util/NtpTrustedTime; -PLcom/android/server/location/GnssLocationProvider;->-get14(Lcom/android/server/location/GnssLocationProvider;)Z -PLcom/android/server/location/GnssLocationProvider;->-get15(Lcom/android/server/location/GnssLocationProvider;)Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener; -PLcom/android/server/location/GnssLocationProvider;->-get16(Lcom/android/server/location/GnssLocationProvider;)Ljava/util/Properties; -PLcom/android/server/location/GnssLocationProvider;->-get17(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/PowerManager$WakeLock; +PLcom/android/server/location/GnssLocationProvider;->-get10(Lcom/android/server/location/GnssLocationProvider;)I +PLcom/android/server/location/GnssLocationProvider;->-get11(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssStatusListenerHelper; +PLcom/android/server/location/GnssLocationProvider;->-get13(Lcom/android/server/location/GnssLocationProvider;)Landroid/net/ConnectivityManager$NetworkCallback; +PLcom/android/server/location/GnssLocationProvider;->-get14(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssLocationProvider$BackOff; +PLcom/android/server/location/GnssLocationProvider;->-get15(Lcom/android/server/location/GnssLocationProvider;)Landroid/util/NtpTrustedTime; +PLcom/android/server/location/GnssLocationProvider;->-get16(Lcom/android/server/location/GnssLocationProvider;)Z +PLcom/android/server/location/GnssLocationProvider;->-get17(Lcom/android/server/location/GnssLocationProvider;)Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener; +PLcom/android/server/location/GnssLocationProvider;->-get18(Lcom/android/server/location/GnssLocationProvider;)Ljava/util/Properties; +PLcom/android/server/location/GnssLocationProvider;->-get19(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/PowerManager$WakeLock; PLcom/android/server/location/GnssLocationProvider;->-get2(Lcom/android/server/location/GnssLocationProvider;)Landroid/net/ConnectivityManager; PLcom/android/server/location/GnssLocationProvider;->-get3(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/Context; PLcom/android/server/location/GnssLocationProvider;->-get4(Lcom/android/server/location/GnssLocationProvider;)I -PLcom/android/server/location/GnssLocationProvider;->-get7(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/Handler; -PLcom/android/server/location/GnssLocationProvider;->-get8(Lcom/android/server/location/GnssLocationProvider;)I -PLcom/android/server/location/GnssLocationProvider;->-get9(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssStatusListenerHelper; +PLcom/android/server/location/GnssLocationProvider;->-get9(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/Handler; PLcom/android/server/location/GnssLocationProvider;->-set1(Lcom/android/server/location/GnssLocationProvider;I)I PLcom/android/server/location/GnssLocationProvider;->-wrap1()Z PLcom/android/server/location/GnssLocationProvider;->-wrap11(I)Z @@ -8511,6 +10806,7 @@ PLcom/android/server/location/GnssLocationProvider;->-wrap25(Lcom/android/server PLcom/android/server/location/GnssLocationProvider;->-wrap26(Lcom/android/server/location/GnssLocationProvider;)V PLcom/android/server/location/GnssLocationProvider;->-wrap29(Lcom/android/server/location/GnssLocationProvider;Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V PLcom/android/server/location/GnssLocationProvider;->-wrap3()Z +PLcom/android/server/location/GnssLocationProvider;->-wrap30(Lcom/android/server/location/GnssLocationProvider;Landroid/location/Location;)V PLcom/android/server/location/GnssLocationProvider;->-wrap31(Lcom/android/server/location/GnssLocationProvider;Landroid/net/Network;)V PLcom/android/server/location/GnssLocationProvider;->-wrap34(Lcom/android/server/location/GnssLocationProvider;JJI)V PLcom/android/server/location/GnssLocationProvider;->-wrap38(Lcom/android/server/location/GnssLocationProvider;Landroid/content/Context;Ljava/util/Properties;)V @@ -8548,21 +10844,17 @@ PLcom/android/server/location/GnssLocationProvider;->loadPropertiesFromFile(Ljav PLcom/android/server/location/GnssLocationProvider;->loadPropertiesFromResource(Landroid/content/Context;Ljava/util/Properties;)V PLcom/android/server/location/GnssLocationProvider;->messageIdAsString(I)Ljava/lang/String; PLcom/android/server/location/GnssLocationProvider;->reloadGpsProperties(Landroid/content/Context;Ljava/util/Properties;)V -PLcom/android/server/location/GnssLocationProvider;->reportNmea(J)V PLcom/android/server/location/GnssLocationProvider;->reportStatus(I)V -PLcom/android/server/location/GnssLocationProvider;->reportSvStatus()V PLcom/android/server/location/GnssLocationProvider;->requestUtcTime()V -PLcom/android/server/location/GnssLocationProvider;->sendMessage(IILjava/lang/Object;)V PLcom/android/server/location/GnssLocationProvider;->setEngineCapabilities(I)V PLcom/android/server/location/GnssLocationProvider;->setGnssYearOfHardware(I)V +PLcom/android/server/location/GnssLocationProvider;->setLocationExtras(Landroid/os/Bundle;)V PLcom/android/server/location/GnssLocationProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V PLcom/android/server/location/GnssLocationProvider;->setSuplHostPort(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/location/GnssLocationProvider;->startNavigating(Z)V PLcom/android/server/location/GnssLocationProvider;->stopNavigating()V PLcom/android/server/location/GnssLocationProvider;->subscriptionOrSimChanged(Landroid/content/Context;)V PLcom/android/server/location/GnssLocationProvider;->updateClientUids(Landroid/os/WorkSource;)V -PLcom/android/server/location/GnssLocationProvider;->updateRequirements()V -PLcom/android/server/location/GnssLocationProvider;->updateStatus(IIII)V PLcom/android/server/location/GnssLocationProvider;->xtraDownloadRequest()V PLcom/android/server/location/GnssMeasurementsProvider;-><init>(Landroid/os/Handler;)V PLcom/android/server/location/GnssMeasurementsProvider;->onCapabilitiesUpdated(Z)V @@ -8578,38 +10870,45 @@ PLcom/android/server/location/GnssStatusListenerHelper$1;->execute(Landroid/os/I PLcom/android/server/location/GnssStatusListenerHelper$2;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;)V PLcom/android/server/location/GnssStatusListenerHelper$2;->execute(Landroid/location/IGnssStatusListener;)V PLcom/android/server/location/GnssStatusListenerHelper$2;->execute(Landroid/os/IInterface;)V -PLcom/android/server/location/GnssStatusListenerHelper$4;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;I[I[F[F[F[F)V -PLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/location/IGnssStatusListener;)V -PLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/os/IInterface;)V -PLcom/android/server/location/GnssStatusListenerHelper$5;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;JLjava/lang/String;)V -PLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/location/IGnssStatusListener;)V -PLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/os/IInterface;)V PLcom/android/server/location/GnssStatusListenerHelper;-><init>(Landroid/os/Handler;)V PLcom/android/server/location/GnssStatusListenerHelper;->getHandlerOperation(I)Lcom/android/server/location/RemoteListenerHelper$ListenerOperation; -PLcom/android/server/location/GnssStatusListenerHelper;->onNmeaReceived(JLjava/lang/String;)V PLcom/android/server/location/GnssStatusListenerHelper;->onStatusChanged(Z)V -PLcom/android/server/location/GnssStatusListenerHelper;->onSvStatusChanged(I[I[F[F[F[F)V PLcom/android/server/location/GnssStatusListenerHelper;->registerWithService()Z +PLcom/android/server/location/GnssStatusListenerHelper;->unregisterFromService()V PLcom/android/server/location/LocationBasedCountryDetector$1;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;)V PLcom/android/server/location/LocationBasedCountryDetector$2;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;)V +PLcom/android/server/location/LocationBasedCountryDetector$2;->run()V +PLcom/android/server/location/LocationBasedCountryDetector$3;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;Landroid/location/Location;)V +PLcom/android/server/location/LocationBasedCountryDetector$3;->run()V +PLcom/android/server/location/LocationBasedCountryDetector;->-wrap0(Lcom/android/server/location/LocationBasedCountryDetector;Landroid/location/Location;)V PLcom/android/server/location/LocationBasedCountryDetector;-><init>(Landroid/content/Context;)V PLcom/android/server/location/LocationBasedCountryDetector;->detectCountry()Landroid/location/Country; +PLcom/android/server/location/LocationBasedCountryDetector;->getCountryFromLocation(Landroid/location/Location;)Ljava/lang/String; PLcom/android/server/location/LocationBasedCountryDetector;->getEnabledProviders()Ljava/util/List; +PLcom/android/server/location/LocationBasedCountryDetector;->getLastKnownLocation()Landroid/location/Location; PLcom/android/server/location/LocationBasedCountryDetector;->getQueryLocationTimeout()J PLcom/android/server/location/LocationBasedCountryDetector;->isAcceptableProvider(Ljava/lang/String;)Z +PLcom/android/server/location/LocationBasedCountryDetector;->queryCountryCode(Landroid/location/Location;)V PLcom/android/server/location/LocationBasedCountryDetector;->registerListener(Ljava/lang/String;Landroid/location/LocationListener;)V +PLcom/android/server/location/LocationBasedCountryDetector;->stop()V +PLcom/android/server/location/LocationBasedCountryDetector;->unregisterListener(Landroid/location/LocationListener;)V PLcom/android/server/location/LocationBlacklist;-><init>(Landroid/content/Context;Landroid/os/Handler;)V PLcom/android/server/location/LocationBlacklist;->getStringArrayLocked(Ljava/lang/String;)[Ljava/lang/String; -PLcom/android/server/location/LocationBlacklist;->inWhitelist(Ljava/lang/String;)Z PLcom/android/server/location/LocationBlacklist;->init()V -PLcom/android/server/location/LocationBlacklist;->isBlacklisted(Ljava/lang/String;)Z PLcom/android/server/location/LocationBlacklist;->reloadBlacklist()V PLcom/android/server/location/LocationBlacklist;->reloadBlacklistLocked()V PLcom/android/server/location/LocationFudger$1;-><init>(Lcom/android/server/location/LocationFudger;Landroid/os/Handler;)V PLcom/android/server/location/LocationFudger;-><init>(Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/location/LocationFudger;->addCoarseLocationExtraLocked(Landroid/location/Location;)Landroid/location/Location; +PLcom/android/server/location/LocationFudger;->createCoarseLocked(Landroid/location/Location;)Landroid/location/Location; PLcom/android/server/location/LocationFudger;->loadCoarseAccuracy()F +PLcom/android/server/location/LocationFudger;->metersToDegreesLatitude(D)D +PLcom/android/server/location/LocationFudger;->metersToDegreesLongitude(DD)D PLcom/android/server/location/LocationFudger;->nextOffsetLocked()D PLcom/android/server/location/LocationFudger;->setAccuracyInMetersLocked(F)V +PLcom/android/server/location/LocationFudger;->updateRandomOffsetLocked()V +PLcom/android/server/location/LocationFudger;->wrapLatitude(D)D +PLcom/android/server/location/LocationFudger;->wrapLongitude(D)D PLcom/android/server/location/LocationProviderProxy$1;-><init>(Lcom/android/server/location/LocationProviderProxy;)V PLcom/android/server/location/LocationProviderProxy$1;->run()V PLcom/android/server/location/LocationProviderProxy;->-get0()Z @@ -8623,9 +10922,13 @@ PLcom/android/server/location/LocationProviderProxy;-><init>(Landroid/content/Co PLcom/android/server/location/LocationProviderProxy;->bind()Z PLcom/android/server/location/LocationProviderProxy;->createAndBind(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Handler;)Lcom/android/server/location/LocationProviderProxy; PLcom/android/server/location/LocationProviderProxy;->enable()V -PLcom/android/server/location/LocationProviderProxy;->getName()Ljava/lang/String; +PLcom/android/server/location/LocationProviderProxy;->getConnectedPackageName()Ljava/lang/String; +PLcom/android/server/location/LocationProviderProxy;->getProperties()Lcom/android/internal/location/ProviderProperties; PLcom/android/server/location/LocationProviderProxy;->getService()Lcom/android/internal/location/ILocationProvider; +PLcom/android/server/location/LocationProviderProxy;->getStatus(Landroid/os/Bundle;)I +PLcom/android/server/location/LocationProviderProxy;->getStatusUpdateTime()J PLcom/android/server/location/LocationProviderProxy;->isEnabled()Z +PLcom/android/server/location/LocationProviderProxy;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->equals(Ljava/lang/Object;)Z PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->hashCode()I @@ -8641,23 +10944,35 @@ PLcom/android/server/location/LocationRequestStatistics;->stopRequesting(Ljava/l PLcom/android/server/location/PassiveProvider;-><init>(Landroid/location/ILocationManager;)V PLcom/android/server/location/PassiveProvider;->getName()Ljava/lang/String; PLcom/android/server/location/PassiveProvider;->getProperties()Lcom/android/internal/location/ProviderProperties; +PLcom/android/server/location/PassiveProvider;->getStatus(Landroid/os/Bundle;)I +PLcom/android/server/location/PassiveProvider;->getStatusUpdateTime()J PLcom/android/server/location/PassiveProvider;->isEnabled()Z PLcom/android/server/location/PassiveProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V -PLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;-><init>(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V -PLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;->run()V +PLcom/android/server/location/PassiveProvider;->updateLocation(Landroid/location/Location;)V +PLcom/android/server/location/RemoteListenerHelper$1;-><init>(Lcom/android/server/location/RemoteListenerHelper;)V +PLcom/android/server/location/RemoteListenerHelper$1;->run()V +PLcom/android/server/location/RemoteListenerHelper$2;-><init>(Lcom/android/server/location/RemoteListenerHelper;)V +PLcom/android/server/location/RemoteListenerHelper$2;->run()V PLcom/android/server/location/RemoteListenerHelper$LinkedListener;-><init>(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;)V -PLcom/android/server/location/RemoteListenerHelper$LinkedListener;->getUnderlyingListener()Landroid/os/IInterface; +PLcom/android/server/location/RemoteListenerHelper$LinkedListener;->binderDied()V +PLcom/android/server/location/RemoteListenerHelper;->-get1(Lcom/android/server/location/RemoteListenerHelper;)Z +PLcom/android/server/location/RemoteListenerHelper;->-get3(Lcom/android/server/location/RemoteListenerHelper;)Ljava/lang/String; +PLcom/android/server/location/RemoteListenerHelper;->-set0(Lcom/android/server/location/RemoteListenerHelper;Z)Z PLcom/android/server/location/RemoteListenerHelper;-><init>(Landroid/os/Handler;Ljava/lang/String;)V PLcom/android/server/location/RemoteListenerHelper;->addListener(Landroid/os/IInterface;)Z PLcom/android/server/location/RemoteListenerHelper;->calculateCurrentResultUnsafe()I -PLcom/android/server/location/RemoteListenerHelper;->foreach(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V -PLcom/android/server/location/RemoteListenerHelper;->foreachUnsafe(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V -PLcom/android/server/location/RemoteListenerHelper;->post(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V PLcom/android/server/location/RemoteListenerHelper;->removeListener(Landroid/os/IInterface;)V PLcom/android/server/location/RemoteListenerHelper;->setSupported(Z)V -PLcom/android/server/location/RemoteListenerHelper;->tryRegister()Z -PLcom/android/server/location/RemoteListenerHelper;->tryUpdateRegistrationWithService()Z +PLcom/android/server/location/RemoteListenerHelper;->tryRegister()V +PLcom/android/server/location/RemoteListenerHelper;->tryUnregister()V +PLcom/android/server/location/RemoteListenerHelper;->tryUpdateRegistrationWithService()V PLcom/android/server/location/RemoteListenerHelper;->updateResult()V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;->$m$0()V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;->run()V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;->$m$0()V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;-><init>(ILjava/lang/Object;)V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;->run()V PLcom/android/server/locksettings/LockSettingsService$1;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V PLcom/android/server/locksettings/LockSettingsService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/locksettings/LockSettingsService$2;-><init>(Lcom/android/server/locksettings/LockSettingsService;I)V @@ -8665,6 +10980,7 @@ PLcom/android/server/locksettings/LockSettingsService$2;->run()V PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->isProvisioned()Z PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->onSystemReady()V +PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->updateRegistration()V PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;)V PLcom/android/server/locksettings/LockSettingsService$Injector$1;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;Lcom/android/server/locksettings/LockSettingsStorage;)V @@ -8682,6 +10998,7 @@ PLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuthTr PLcom/android/server/locksettings/LockSettingsService$Injector;->getSyntheticPasswordManager(Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/SyntheticPasswordManager; PLcom/android/server/locksettings/LockSettingsService$Injector;->getUserManager()Landroid/os/UserManager; PLcom/android/server/locksettings/LockSettingsService$Lifecycle;-><init>(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onBootPhase(I)V PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStart()V PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStartUser(I)V PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUnlockUser(I)V @@ -8692,48 +11009,68 @@ PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTrac PLcom/android/server/locksettings/LockSettingsService;->-get0(Lcom/android/server/locksettings/LockSettingsService;)Landroid/content/Context; PLcom/android/server/locksettings/LockSettingsService;->-get1(Lcom/android/server/locksettings/LockSettingsService;)Landroid/os/UserManager; PLcom/android/server/locksettings/LockSettingsService;->-wrap0(Lcom/android/server/locksettings/LockSettingsService;I)Z -PLcom/android/server/locksettings/LockSettingsService;->-wrap1(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V +PLcom/android/server/locksettings/LockSettingsService;->-wrap1(Lcom/android/server/locksettings/LockSettingsService;I)V +PLcom/android/server/locksettings/LockSettingsService;->-wrap2(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V +PLcom/android/server/locksettings/LockSettingsService;->-wrap3(Lcom/android/server/locksettings/LockSettingsService;)V PLcom/android/server/locksettings/LockSettingsService;-><init>(Landroid/content/Context;)V PLcom/android/server/locksettings/LockSettingsService;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;)V +PLcom/android/server/locksettings/LockSettingsService;->addUserKeyAuth(I[B[B)V PLcom/android/server/locksettings/LockSettingsService;->checkPasswordReadPermission(I)V -PLcom/android/server/locksettings/LockSettingsService;->checkReadPermission(Ljava/lang/String;I)V PLcom/android/server/locksettings/LockSettingsService;->checkVoldPassword(I)Z PLcom/android/server/locksettings/LockSettingsService;->checkWritePermission(I)V +PLcom/android/server/locksettings/LockSettingsService;->clearUserKeyProtection(I)V +PLcom/android/server/locksettings/LockSettingsService;->enforceShell()V +PLcom/android/server/locksettings/LockSettingsService;->ensureProfileKeystoreUnlocked(I)V +PLcom/android/server/locksettings/LockSettingsService;->fixateNewestUserKeyAuth(I)V PLcom/android/server/locksettings/LockSettingsService;->getBoolean(Ljava/lang/String;ZI)Z PLcom/android/server/locksettings/LockSettingsService;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService; -PLcom/android/server/locksettings/LockSettingsService;->getLong(Ljava/lang/String;JI)J PLcom/android/server/locksettings/LockSettingsService;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; -PLcom/android/server/locksettings/LockSettingsService;->getStringUnchecked(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; PLcom/android/server/locksettings/LockSettingsService;->getSyntheticPasswordHandleLocked(I)J PLcom/android/server/locksettings/LockSettingsService;->hideEncryptionNotification(Landroid/os/UserHandle;)V +PLcom/android/server/locksettings/LockSettingsService;->isCallerShell()Z PLcom/android/server/locksettings/LockSettingsService;->isSyntheticPasswordBasedCredentialLocked(I)Z PLcom/android/server/locksettings/LockSettingsService;->isUserSecure(I)Z +PLcom/android/server/locksettings/LockSettingsService;->lambda$-com_android_server_locksettings_LockSettingsService_80479(Landroid/app/admin/PasswordMetrics;I)V +PLcom/android/server/locksettings/LockSettingsService;->lambda$-com_android_server_locksettings_LockSettingsService_81027(I)V PLcom/android/server/locksettings/LockSettingsService;->maybeShowEncryptionNotificationForUser(I)V PLcom/android/server/locksettings/LockSettingsService;->migrateOldData()V +PLcom/android/server/locksettings/LockSettingsService;->migrateOldDataAfterSystemReady()V +PLcom/android/server/locksettings/LockSettingsService;->notifyActivePasswordMetricsAvailable(Ljava/lang/String;I)V +PLcom/android/server/locksettings/LockSettingsService;->notifyPasswordChanged(I)V +PLcom/android/server/locksettings/LockSettingsService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V PLcom/android/server/locksettings/LockSettingsService;->onStartUser(I)V PLcom/android/server/locksettings/LockSettingsService;->onUnlockUser(I)V PLcom/android/server/locksettings/LockSettingsService;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V +PLcom/android/server/locksettings/LockSettingsService;->removeKeystoreProfileKey(I)V +PLcom/android/server/locksettings/LockSettingsService;->setBoolean(Ljava/lang/String;ZI)V +PLcom/android/server/locksettings/LockSettingsService;->setKeystorePassword(Ljava/lang/String;I)V +PLcom/android/server/locksettings/LockSettingsService;->setLockCredential(Ljava/lang/String;ILjava/lang/String;II)V +PLcom/android/server/locksettings/LockSettingsService;->setLockCredentialInternal(Ljava/lang/String;ILjava/lang/String;II)V +PLcom/android/server/locksettings/LockSettingsService;->setLong(Ljava/lang/String;JI)V +PLcom/android/server/locksettings/LockSettingsService;->setSeparateProfileChallengeEnabled(IZLjava/lang/String;)V +PLcom/android/server/locksettings/LockSettingsService;->setStringUnchecked(Ljava/lang/String;ILjava/lang/String;)V +PLcom/android/server/locksettings/LockSettingsService;->synchronizeUnifiedWorkChallengeForProfiles(ILjava/util/Map;)V PLcom/android/server/locksettings/LockSettingsService;->systemReady()V PLcom/android/server/locksettings/LockSettingsService;->userPresent(I)V +PLcom/android/server/locksettings/LockSettingsShellCommand;-><init>(Landroid/content/Context;Lcom/android/internal/widget/LockPatternUtils;)V +PLcom/android/server/locksettings/LockSettingsShellCommand;->checkCredential()Z +PLcom/android/server/locksettings/LockSettingsShellCommand;->onCommand(Ljava/lang/String;)I +PLcom/android/server/locksettings/LockSettingsShellCommand;->parseArgs()V +PLcom/android/server/locksettings/LockSettingsShellCommand;->runClear()V PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>()V PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;)V -PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z -PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I -PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->set(ILjava/lang/String;I)Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey; PLcom/android/server/locksettings/LockSettingsStorage$Cache;->-wrap0(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)I PLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>()V PLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)V -PLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z PLcom/android/server/locksettings/LockSettingsStorage$Cache;->getVersion()I PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasFile(Ljava/lang/String;)Z -PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasKeyValue(Ljava/lang/String;I)Z PLcom/android/server/locksettings/LockSettingsStorage$Cache;->isFetched(I)Z -PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object; PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekFile(Ljava/lang/String;)[B -PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; PLcom/android/server/locksettings/LockSettingsStorage$Cache;->put(ILjava/lang/String;Ljava/lang/Object;I)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFile(Ljava/lang/String;[B)V PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFileIfUnchanged(Ljava/lang/String;[BI)V PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putIfUnchanged(ILjava/lang/String;Ljava/lang/Object;II)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValue(Ljava/lang/String;Ljava/lang/String;I)V PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValueIfUnchanged(Ljava/lang/String;Ljava/lang/Object;II)V PLcom/android/server/locksettings/LockSettingsStorage$Cache;->setFetched(I)V PLcom/android/server/locksettings/LockSettingsStorage$CredentialHash;-><init>([BII)V @@ -8743,7 +11080,9 @@ PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;-><init>(La PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;->setCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V PLcom/android/server/locksettings/LockSettingsStorage;->-get0()Ljava/lang/Object; PLcom/android/server/locksettings/LockSettingsStorage;-><init>(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsStorage;->deleteFile(Ljava/lang/String;)V PLcom/android/server/locksettings/LockSettingsStorage;->getBaseZeroLockPatternFilename(I)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsStorage;->getChildProfileLockFile(I)Ljava/lang/String; PLcom/android/server/locksettings/LockSettingsStorage;->getLegacyLockPasswordFilename(I)Ljava/lang/String; PLcom/android/server/locksettings/LockSettingsStorage;->getLegacyLockPatternFilename(I)Ljava/lang/String; PLcom/android/server/locksettings/LockSettingsStorage;->getLockCredentialFilePathForUser(ILjava/lang/String;)Ljava/lang/String; @@ -8756,10 +11095,14 @@ PLcom/android/server/locksettings/LockSettingsStorage;->hasPattern(I)Z PLcom/android/server/locksettings/LockSettingsStorage;->prefetchUser(I)V PLcom/android/server/locksettings/LockSettingsStorage;->readCredentialHash(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash; PLcom/android/server/locksettings/LockSettingsStorage;->readFile(Ljava/lang/String;)[B -PLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; PLcom/android/server/locksettings/LockSettingsStorage;->readPasswordHashIfExists(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash; PLcom/android/server/locksettings/LockSettingsStorage;->readPatternHashIfExists(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash; +PLcom/android/server/locksettings/LockSettingsStorage;->removeChildProfileLock(I)V PLcom/android/server/locksettings/LockSettingsStorage;->setDatabaseOnCreateCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V +PLcom/android/server/locksettings/LockSettingsStorage;->writeCredentialHash(Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;I)V +PLcom/android/server/locksettings/LockSettingsStorage;->writeFile(Ljava/lang/String;[B)V +PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Ljava/lang/String;Ljava/lang/String;I)V PLcom/android/server/locksettings/LockSettingsStrongAuth$1;-><init>(Lcom/android/server/locksettings/LockSettingsStrongAuth;)V PLcom/android/server/locksettings/LockSettingsStrongAuth$1;->handleMessage(Landroid/os/Message;)V PLcom/android/server/locksettings/LockSettingsStrongAuth;->-wrap0(Lcom/android/server/locksettings/LockSettingsStrongAuth;Landroid/app/trust/IStrongAuthTracker;)V @@ -8772,12 +11115,17 @@ PLcom/android/server/locksettings/LockSettingsStrongAuth;->notifyStrongAuthTrack PLcom/android/server/locksettings/LockSettingsStrongAuth;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V PLcom/android/server/locksettings/LockSettingsStrongAuth;->reportUnlock(I)V PLcom/android/server/locksettings/LockSettingsStrongAuth;->requireStrongAuth(II)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->systemReady()V PLcom/android/server/locksettings/SyntheticPasswordManager;-><init>(Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/UserManager;)V PLcom/android/server/locksettings/SyntheticPasswordManager;->getWeaverService()Landroid/hardware/weaver/V1_0/IWeaver; PLcom/android/server/locksettings/SyntheticPasswordManager;->initWeaverService()V -PLcom/android/server/media/AudioPlaybackMonitor;-><init>(Landroid/content/Context;Landroid/media/IAudioService;Lcom/android/server/media/AudioPlaybackMonitor$OnAudioPlaybackStartedListener;)V -PLcom/android/server/media/AudioPlaybackMonitor;->dispatchPlaybackConfigChange(Ljava/util/List;)V +PLcom/android/server/media/AudioPlaybackMonitor;-><init>(Landroid/content/Context;Landroid/media/IAudioService;)V +PLcom/android/server/media/AudioPlaybackMonitor;->cleanUpAudioPlaybackUids(I)V +PLcom/android/server/media/AudioPlaybackMonitor;->getInstance(Landroid/content/Context;Landroid/media/IAudioService;)Lcom/android/server/media/AudioPlaybackMonitor; PLcom/android/server/media/AudioPlaybackMonitor;->getSortedAudioPlaybackClientUids()Landroid/util/IntArray; +PLcom/android/server/media/AudioPlaybackMonitor;->isPlaybackActive(I)Z +PLcom/android/server/media/AudioPlaybackMonitor;->registerOnAudioPlaybackStartedListener(Lcom/android/server/media/AudioPlaybackMonitor$OnAudioPlaybackStartedListener;)V +PLcom/android/server/media/AudioPlaybackMonitor;->registerOnAudioPlayerActiveStateChangedListener(Lcom/android/server/media/AudioPlaybackMonitor$OnAudioPlayerActiveStateChangedListener;)V PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;-><init>(Lcom/android/server/media/MediaResourceMonitorService;)V PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->getPackageNamesFromPid(I)[Ljava/lang/String; PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->notifyResourceGranted(II)V @@ -8785,8 +11133,12 @@ PLcom/android/server/media/MediaResourceMonitorService;->-get0()Z PLcom/android/server/media/MediaResourceMonitorService;-><init>(Landroid/content/Context;)V PLcom/android/server/media/MediaResourceMonitorService;->onStart()V PLcom/android/server/media/MediaRouterService$1;-><init>(Lcom/android/server/media/MediaRouterService;)V -PLcom/android/server/media/MediaRouterService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V -PLcom/android/server/media/MediaRouterService$ClientRecord;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;Landroid/media/IMediaRouterClient;ILjava/lang/String;Z)V +PLcom/android/server/media/MediaRouterService$1;->onAudioPlayerActiveStateChanged(IZ)V +PLcom/android/server/media/MediaRouterService$2;-><init>(Lcom/android/server/media/MediaRouterService;)V +PLcom/android/server/media/MediaRouterService$2;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V +PLcom/android/server/media/MediaRouterService$3;-><init>(Lcom/android/server/media/MediaRouterService;)V +PLcom/android/server/media/MediaRouterService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/media/MediaRouterService$ClientRecord;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;Landroid/media/IMediaRouterClient;IILjava/lang/String;Z)V PLcom/android/server/media/MediaRouterService$ClientRecord;->binderDied()V PLcom/android/server/media/MediaRouterService$ClientRecord;->dispose()V PLcom/android/server/media/MediaRouterService$ClientRecord;->getState()Landroid/media/MediaRouterClientState; @@ -8801,8 +11153,10 @@ PLcom/android/server/media/MediaRouterService$UserHandler;->start()V PLcom/android/server/media/MediaRouterService$UserHandler;->updateClientState()V PLcom/android/server/media/MediaRouterService$UserHandler;->updateDiscoveryRequest()V PLcom/android/server/media/MediaRouterService$UserRecord;-><init>(Lcom/android/server/media/MediaRouterService;I)V -PLcom/android/server/media/MediaRouterService;->-get0(Lcom/android/server/media/MediaRouterService;)Landroid/content/Context; -PLcom/android/server/media/MediaRouterService;->-get1(Lcom/android/server/media/MediaRouterService;)Ljava/lang/Object; +PLcom/android/server/media/MediaRouterService;->-get0(Lcom/android/server/media/MediaRouterService;)Lcom/android/server/media/AudioPlaybackMonitor; +PLcom/android/server/media/MediaRouterService;->-get1(Lcom/android/server/media/MediaRouterService;)Landroid/content/Context; +PLcom/android/server/media/MediaRouterService;->-get2(Lcom/android/server/media/MediaRouterService;)Ljava/lang/Object; +PLcom/android/server/media/MediaRouterService;->-set0(Lcom/android/server/media/MediaRouterService;Z)Z PLcom/android/server/media/MediaRouterService;-><init>(Landroid/content/Context;)V PLcom/android/server/media/MediaRouterService;->clientDied(Lcom/android/server/media/MediaRouterService$ClientRecord;)V PLcom/android/server/media/MediaRouterService;->disposeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;Z)V @@ -8811,9 +11165,13 @@ PLcom/android/server/media/MediaRouterService;->getState(Landroid/media/IMediaRo PLcom/android/server/media/MediaRouterService;->getStateLocked(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState; PLcom/android/server/media/MediaRouterService;->initializeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;)V PLcom/android/server/media/MediaRouterService;->initializeUserLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V +PLcom/android/server/media/MediaRouterService;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z +PLcom/android/server/media/MediaRouterService;->isPlaybackActiveLocked(Landroid/media/IMediaRouterClient;)Z PLcom/android/server/media/MediaRouterService;->monitor()V PLcom/android/server/media/MediaRouterService;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V -PLcom/android/server/media/MediaRouterService;->registerClientLocked(Landroid/media/IMediaRouterClient;ILjava/lang/String;IZ)V +PLcom/android/server/media/MediaRouterService;->registerClientLocked(Landroid/media/IMediaRouterClient;IILjava/lang/String;IZ)V +PLcom/android/server/media/MediaRouterService;->restoreBluetoothA2dp()V +PLcom/android/server/media/MediaRouterService;->restoreRoute(I)V PLcom/android/server/media/MediaRouterService;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V PLcom/android/server/media/MediaRouterService;->setDiscoveryRequestLocked(Landroid/media/IMediaRouterClient;IZ)V PLcom/android/server/media/MediaRouterService;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V @@ -8827,7 +11185,6 @@ PLcom/android/server/media/MediaSessionRecord$ControllerStub;-><init>(Lcom/andro PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getMetadata()Landroid/media/MediaMetadata; PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPackageName()Ljava/lang/String; PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPlaybackState()Landroid/media/session/PlaybackState; -PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getQueue()Landroid/content/pm/ParceledListSlice; PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getVolumeAttributes()Landroid/media/session/ParcelableVolumeInfo; PLcom/android/server/media/MediaSessionRecord$ControllerStub;->registerCallbackListener(Landroid/media/session/ISessionControllerCallback;)V PLcom/android/server/media/MediaSessionRecord$ControllerStub;->unregisterCallbackListener(Landroid/media/session/ISessionControllerCallback;)V @@ -8844,14 +11201,12 @@ PLcom/android/server/media/MediaSessionRecord$SessionStub;-><init>(Lcom/android/ PLcom/android/server/media/MediaSessionRecord$SessionStub;->destroy()V PLcom/android/server/media/MediaSessionRecord$SessionStub;->getController()Landroid/media/session/ISessionController; PLcom/android/server/media/MediaSessionRecord$SessionStub;->setActive(Z)V -PLcom/android/server/media/MediaSessionRecord$SessionStub;->setExtras(Landroid/os/Bundle;)V PLcom/android/server/media/MediaSessionRecord$SessionStub;->setFlags(I)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setLaunchPendingIntent(Landroid/app/PendingIntent;)V PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMetadata(Landroid/media/MediaMetadata;)V PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackState(Landroid/media/session/PlaybackState;)V PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V -PLcom/android/server/media/MediaSessionRecord$SessionStub;->setQueue(Landroid/content/pm/ParceledListSlice;)V -PLcom/android/server/media/MediaSessionRecord$SessionStub;->setQueueTitle(Ljava/lang/CharSequence;)V -PLcom/android/server/media/MediaSessionRecord$SessionStub;->setRatingType(I)V PLcom/android/server/media/MediaSessionRecord;->-get0()Z PLcom/android/server/media/MediaSessionRecord;->-get1(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/AudioAttributes; PLcom/android/server/media/MediaSessionRecord;->-get11(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$MessageHandler; @@ -8859,7 +11214,6 @@ PLcom/android/server/media/MediaSessionRecord;->-get13(Lcom/android/server/media PLcom/android/server/media/MediaSessionRecord;->-get15(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/MediaMetadata; PLcom/android/server/media/MediaSessionRecord;->-get17(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/String; PLcom/android/server/media/MediaSessionRecord;->-get18(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState; -PLcom/android/server/media/MediaSessionRecord;->-get19(Lcom/android/server/media/MediaSessionRecord;)Landroid/content/pm/ParceledListSlice; PLcom/android/server/media/MediaSessionRecord;->-get2(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/AudioManager; PLcom/android/server/media/MediaSessionRecord;->-get22(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionService; PLcom/android/server/media/MediaSessionRecord;->-get26(Lcom/android/server/media/MediaSessionRecord;)I @@ -8868,42 +11222,41 @@ PLcom/android/server/media/MediaSessionRecord;->-get6(Lcom/android/server/media/ PLcom/android/server/media/MediaSessionRecord;->-get8(Lcom/android/server/media/MediaSessionRecord;)Z PLcom/android/server/media/MediaSessionRecord;->-set0(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)Landroid/media/AudioAttributes; PLcom/android/server/media/MediaSessionRecord;->-set10(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/PlaybackState;)Landroid/media/session/PlaybackState; -PLcom/android/server/media/MediaSessionRecord;->-set11(Lcom/android/server/media/MediaSessionRecord;Landroid/content/pm/ParceledListSlice;)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/media/MediaSessionRecord;->-set12(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/CharSequence;)Ljava/lang/CharSequence; -PLcom/android/server/media/MediaSessionRecord;->-set13(Lcom/android/server/media/MediaSessionRecord;I)I PLcom/android/server/media/MediaSessionRecord;->-set15(Lcom/android/server/media/MediaSessionRecord;I)I -PLcom/android/server/media/MediaSessionRecord;->-set2(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Bundle;)Landroid/os/Bundle; PLcom/android/server/media/MediaSessionRecord;->-set3(Lcom/android/server/media/MediaSessionRecord;J)J PLcom/android/server/media/MediaSessionRecord;->-set4(Lcom/android/server/media/MediaSessionRecord;Z)Z +PLcom/android/server/media/MediaSessionRecord;->-set5(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent; PLcom/android/server/media/MediaSessionRecord;->-set7(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent; +PLcom/android/server/media/MediaSessionRecord;->-set8(Lcom/android/server/media/MediaSessionRecord;Landroid/media/MediaMetadata;)Landroid/media/MediaMetadata; PLcom/android/server/media/MediaSessionRecord;->-wrap0(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState; PLcom/android/server/media/MediaSessionRecord;->-wrap1(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;)I PLcom/android/server/media/MediaSessionRecord;->-wrap2(Lcom/android/server/media/MediaSessionRecord;I)Ljava/lang/String; -PLcom/android/server/media/MediaSessionRecord;->-wrap4(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionRecord;->-wrap5(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionRecord;->-wrap6(Lcom/android/server/media/MediaSessionRecord;)V -PLcom/android/server/media/MediaSessionRecord;->-wrap7(Lcom/android/server/media/MediaSessionRecord;)V -PLcom/android/server/media/MediaSessionRecord;->-wrap8(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionRecord;->-wrap9(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionRecord;-><init>(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Lcom/android/server/media/MediaSessionService;Landroid/os/Looper;)V +PLcom/android/server/media/MediaSessionRecord;->binderDied()V PLcom/android/server/media/MediaSessionRecord;->getCallback()Landroid/media/session/ISessionCallback; PLcom/android/server/media/MediaSessionRecord;->getControllerBinder()Landroid/media/session/ISessionController; PLcom/android/server/media/MediaSessionRecord;->getControllerHolderIndexForCb(Landroid/media/session/ISessionControllerCallback;)I PLcom/android/server/media/MediaSessionRecord;->getFlags()J +PLcom/android/server/media/MediaSessionRecord;->getMediaButtonReceiver()Landroid/app/PendingIntent; +PLcom/android/server/media/MediaSessionRecord;->getPackageName()Ljava/lang/String; PLcom/android/server/media/MediaSessionRecord;->getPackageName(I)Ljava/lang/String; +PLcom/android/server/media/MediaSessionRecord;->getPlaybackState()Landroid/media/session/PlaybackState; PLcom/android/server/media/MediaSessionRecord;->getPlaybackType()I PLcom/android/server/media/MediaSessionRecord;->getSessionBinder()Landroid/media/session/ISession; -PLcom/android/server/media/MediaSessionRecord;->getStateWithUpdatedPosition()Landroid/media/session/PlaybackState; +PLcom/android/server/media/MediaSessionRecord;->getUid()I PLcom/android/server/media/MediaSessionRecord;->getUserId()I PLcom/android/server/media/MediaSessionRecord;->isActive()Z PLcom/android/server/media/MediaSessionRecord;->isPlaybackActive()Z PLcom/android/server/media/MediaSessionRecord;->onDestroy()V -PLcom/android/server/media/MediaSessionRecord;->pushExtrasUpdate()V +PLcom/android/server/media/MediaSessionRecord;->pushMetadataUpdate()V PLcom/android/server/media/MediaSessionRecord;->pushPlaybackStateUpdate()V -PLcom/android/server/media/MediaSessionRecord;->pushQueueTitleUpdate()V -PLcom/android/server/media/MediaSessionRecord;->pushQueueUpdate()V PLcom/android/server/media/MediaSessionRecord;->pushSessionDestroyed()V PLcom/android/server/media/MediaSessionRecord;->toString()Ljava/lang/String; PLcom/android/server/media/MediaSessionService$1;-><init>(Lcom/android/server/media/MediaSessionService;)V +PLcom/android/server/media/MediaSessionService$1;->onAudioPlaybackStarted(I)V PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get0(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/ICallback; PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get1(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get10(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionStack; @@ -8912,7 +11265,9 @@ PLcom/android/server/media/MediaSessionService$FullUserRecord;->-set0(Lcom/andro PLcom/android/server/media/MediaSessionService$FullUserRecord;->-wrap1(Lcom/android/server/media/MediaSessionService$FullUserRecord;)V PLcom/android/server/media/MediaSessionService$FullUserRecord;-><init>(Lcom/android/server/media/MediaSessionService;I)V PLcom/android/server/media/MediaSessionService$FullUserRecord;->getMediaButtonSessionLocked()Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionService$FullUserRecord;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionService$FullUserRecord;->pushAddressedPlayerChangedLocked()V +PLcom/android/server/media/MediaSessionService$FullUserRecord;->rememberMediaButtonReceiverLocked(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionService$MessageHandler;-><init>(Lcom/android/server/media/MediaSessionService;)V PLcom/android/server/media/MediaSessionService$MessageHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/media/MediaSessionService$MessageHandler;->postSessionsChanged(I)V @@ -8927,8 +11282,8 @@ PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->createSessio PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchAdjustVolumeLocked(III)V PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEvent(Landroid/view/KeyEvent;IZ)V PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEventLocked(Landroid/view/KeyEvent;IZ)V -PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List; PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->isValidLocalStreamType(I)Z +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->setCallback(Landroid/media/session/ICallback;)V PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->verifySessionsRequest(Landroid/content/ComponentName;III)I @@ -8941,12 +11296,12 @@ PLcom/android/server/media/MediaSessionService$SettingsObserver;-><init>(Lcom/an PLcom/android/server/media/MediaSessionService$SettingsObserver;->observe()V PLcom/android/server/media/MediaSessionService;->-get0(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/AudioPlaybackMonitor; PLcom/android/server/media/MediaSessionService;->-get1(Lcom/android/server/media/MediaSessionService;)Landroid/media/IAudioService; -PLcom/android/server/media/MediaSessionService;->-get11(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList; +PLcom/android/server/media/MediaSessionService;->-get12(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList; PLcom/android/server/media/MediaSessionService;->-get2(Lcom/android/server/media/MediaSessionService;)Landroid/content/ContentResolver; PLcom/android/server/media/MediaSessionService;->-get3(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$FullUserRecord; PLcom/android/server/media/MediaSessionService;->-get5(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionRecord; PLcom/android/server/media/MediaSessionService;->-get6(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$MessageHandler; -PLcom/android/server/media/MediaSessionService;->-get8(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object; +PLcom/android/server/media/MediaSessionService;->-get9(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object; PLcom/android/server/media/MediaSessionService;->-set0(Lcom/android/server/media/MediaSessionService;Landroid/media/IRemoteVolumeController;)Landroid/media/IRemoteVolumeController; PLcom/android/server/media/MediaSessionService;->-wrap0(Lcom/android/server/media/MediaSessionService;)Z PLcom/android/server/media/MediaSessionService;->-wrap1(Lcom/android/server/media/MediaSessionService;IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;)Lcom/android/server/media/MediaSessionRecord; @@ -8968,10 +11323,8 @@ PLcom/android/server/media/MediaSessionService;->enforcePackageName(Ljava/lang/S PLcom/android/server/media/MediaSessionService;->enforcePhoneStatePermission(II)V PLcom/android/server/media/MediaSessionService;->enforceSystemUiPermission(Ljava/lang/String;II)V PLcom/android/server/media/MediaSessionService;->findIndexOfSessionsListenerLocked(Landroid/media/session/IActiveSessionsListener;)I -PLcom/android/server/media/MediaSessionService;->getActiveSessionsLocked(I)Ljava/util/List; PLcom/android/server/media/MediaSessionService;->getAudioService()Landroid/media/IAudioService; PLcom/android/server/media/MediaSessionService;->getCallingPackageName(I)Ljava/lang/String; -PLcom/android/server/media/MediaSessionService;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionService$FullUserRecord; PLcom/android/server/media/MediaSessionService;->isCurrentVolumeController(II)Z PLcom/android/server/media/MediaSessionService;->isGlobalPriorityActiveLocked()Z PLcom/android/server/media/MediaSessionService;->monitor()V @@ -8980,7 +11333,7 @@ PLcom/android/server/media/MediaSessionService;->onSessionPlaystateChanged(Lcom/ PLcom/android/server/media/MediaSessionService;->onStart()V PLcom/android/server/media/MediaSessionService;->onStartUser(I)V PLcom/android/server/media/MediaSessionService;->pushRemoteVolumeUpdateLocked(I)V -PLcom/android/server/media/MediaSessionService;->pushSessionsChanged(I)V +PLcom/android/server/media/MediaSessionService;->sessionDied(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionService;->updateSession(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionService;->updateUser()V PLcom/android/server/media/MediaSessionStack;-><init>(Lcom/android/server/media/AudioPlaybackMonitor;Lcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;)V @@ -8988,21 +11341,21 @@ PLcom/android/server/media/MediaSessionStack;->addSession(Lcom/android/server/me PLcom/android/server/media/MediaSessionStack;->clearCache(I)V PLcom/android/server/media/MediaSessionStack;->contains(Lcom/android/server/media/MediaSessionRecord;)Z PLcom/android/server/media/MediaSessionStack;->containsState(I[I)Z +PLcom/android/server/media/MediaSessionStack;->findMediaButtonSession(I)Lcom/android/server/media/MediaSessionRecord; PLcom/android/server/media/MediaSessionStack;->getActiveSessions(I)Ljava/util/ArrayList; PLcom/android/server/media/MediaSessionStack;->getDefaultRemoteSession(I)Lcom/android/server/media/MediaSessionRecord; PLcom/android/server/media/MediaSessionStack;->getDefaultVolumeSession()Lcom/android/server/media/MediaSessionRecord; PLcom/android/server/media/MediaSessionStack;->getMediaButtonSession()Lcom/android/server/media/MediaSessionRecord; -PLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/ArrayList; PLcom/android/server/media/MediaSessionStack;->onPlaystateChanged(Lcom/android/server/media/MediaSessionRecord;II)V PLcom/android/server/media/MediaSessionStack;->onSessionStateChange(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionStack;->removeSession(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionStack;->shouldUpdatePriority(II)Z +PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSession(Lcom/android/server/media/MediaSessionRecord;)V PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSessionIfNeeded()V PLcom/android/server/media/RemoteDisplayProviderProxy$1;-><init>(Lcom/android/server/media/RemoteDisplayProviderProxy;)V PLcom/android/server/media/RemoteDisplayProviderProxy;-><init>(Landroid/content/Context;Landroid/content/ComponentName;I)V PLcom/android/server/media/RemoteDisplayProviderProxy;->getDisplayState()Landroid/media/RemoteDisplayState; PLcom/android/server/media/RemoteDisplayProviderProxy;->getFlattenedComponentName()Ljava/lang/String; -PLcom/android/server/media/RemoteDisplayProviderProxy;->hasComponentName(Ljava/lang/String;Ljava/lang/String;)Z PLcom/android/server/media/RemoteDisplayProviderProxy;->rebindIfDisconnected()V PLcom/android/server/media/RemoteDisplayProviderProxy;->setCallback(Lcom/android/server/media/RemoteDisplayProviderProxy$Callback;)V PLcom/android/server/media/RemoteDisplayProviderProxy;->setDiscoveryMode(I)V @@ -9020,7 +11373,6 @@ PLcom/android/server/media/RemoteDisplayProviderWatcher;->-wrap0(Lcom/android/se PLcom/android/server/media/RemoteDisplayProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/RemoteDisplayProviderWatcher$Callback;Landroid/os/Handler;I)V PLcom/android/server/media/RemoteDisplayProviderWatcher;->findProvider(Ljava/lang/String;Ljava/lang/String;)I PLcom/android/server/media/RemoteDisplayProviderWatcher;->hasCaptureVideoPermission(Ljava/lang/String;)Z -PLcom/android/server/media/RemoteDisplayProviderWatcher;->scanPackages()V PLcom/android/server/media/RemoteDisplayProviderWatcher;->start()V PLcom/android/server/media/RemoteDisplayProviderWatcher;->verifyServiceTrusted(Landroid/content/pm/ServiceInfo;)Z PLcom/android/server/media/projection/MediaProjectionManagerService$1;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/media/projection/IMediaProjectionWatcherCallback;)V @@ -9042,7 +11394,6 @@ PLcom/android/server/media/projection/MediaProjectionManagerService;->linkDeathR PLcom/android/server/media/projection/MediaProjectionManagerService;->monitor()V PLcom/android/server/media/projection/MediaProjectionManagerService;->onStart()V PLcom/android/server/midi/MidiService$1;-><init>(Lcom/android/server/midi/MidiService;)V -PLcom/android/server/midi/MidiService$1;->onPackageAdded(Ljava/lang/String;I)V PLcom/android/server/midi/MidiService$1;->onPackageModified(Ljava/lang/String;)V PLcom/android/server/midi/MidiService$Lifecycle;-><init>(Landroid/content/Context;)V PLcom/android/server/midi/MidiService$Lifecycle;->onStart()V @@ -9051,8 +11402,6 @@ PLcom/android/server/midi/MidiService;->-wrap0(Lcom/android/server/midi/MidiServ PLcom/android/server/midi/MidiService;->-wrap1(Lcom/android/server/midi/MidiService;)V PLcom/android/server/midi/MidiService;->-wrap3(Lcom/android/server/midi/MidiService;Ljava/lang/String;)V PLcom/android/server/midi/MidiService;-><init>(Landroid/content/Context;)V -PLcom/android/server/midi/MidiService;->addPackageDeviceServer(Landroid/content/pm/ServiceInfo;)V -PLcom/android/server/midi/MidiService;->addPackageDeviceServers(Ljava/lang/String;)V PLcom/android/server/midi/MidiService;->onUnlockUser()V PLcom/android/server/midi/MidiService;->removePackageDeviceServers(Ljava/lang/String;)V PLcom/android/server/net/-$Lambda$hlRLCZCUKiWKuPbzPq01UpErk2Y;->$m$0()V @@ -9065,29 +11414,19 @@ PLcom/android/server/net/IpConfigStore;->loge(Ljava/lang/String;)V PLcom/android/server/net/IpConfigStore;->readIpAndProxyConfigurations(Ljava/lang/String;)Landroid/util/SparseArray; PLcom/android/server/net/LockdownVpnTracker;->isEnabled()Z PLcom/android/server/net/NetworkIdentitySet;-><init>()V -PLcom/android/server/net/NetworkIdentitySet;-><init>(Ljava/io/DataInputStream;)V -PLcom/android/server/net/NetworkIdentitySet;->readOptionalString(Ljava/io/DataInputStream;)Ljava/lang/String; -PLcom/android/server/net/NetworkIdentitySet;->writeOptionalString(Ljava/io/DataOutputStream;Ljava/lang/String;)V PLcom/android/server/net/NetworkPolicyManagerInternal;-><init>()V PLcom/android/server/net/NetworkPolicyManagerService$10;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V PLcom/android/server/net/NetworkPolicyManagerService$10;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/net/NetworkPolicyManagerService$11;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService$11;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/net/NetworkPolicyManagerService$11;->limitReached(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/net/NetworkPolicyManagerService$12;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService$12;->limitReached(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/net/NetworkPolicyManagerService$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/net/NetworkPolicyManagerService$13;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService$13;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/net/NetworkPolicyManagerService$14;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService$14;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/net/NetworkPolicyManagerService$15;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z PLcom/android/server/net/NetworkPolicyManagerService$16;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService$16;->handleMessage(Landroid/os/Message;)Z PLcom/android/server/net/NetworkPolicyManagerService$17;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService$18;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V PLcom/android/server/net/NetworkPolicyManagerService$1;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService$1;->onUidGone(IZ)V -PLcom/android/server/net/NetworkPolicyManagerService$1;->onUidStateChanged(IIJ)V PLcom/android/server/net/NetworkPolicyManagerService$2;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V PLcom/android/server/net/NetworkPolicyManagerService$3;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V PLcom/android/server/net/NetworkPolicyManagerService$3;->run()V @@ -9101,67 +11440,39 @@ PLcom/android/server/net/NetworkPolicyManagerService$8;-><init>(Lcom/android/ser PLcom/android/server/net/NetworkPolicyManagerService$9;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;)V -PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onParoleStateChanged(Z)V PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;)V PLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;-><init>(I)V -PLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->addProcStateSeqUL(IJ)V -PLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->increaseNext(II)I PLcom/android/server/net/NetworkPolicyManagerService;->-get0(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/content/Context; PLcom/android/server/net/NetworkPolicyManagerService;->-get1(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/os/RemoteCallbackList; -PLcom/android/server/net/NetworkPolicyManagerService;->-get2(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/ArraySet; PLcom/android/server/net/NetworkPolicyManagerService;->-get3(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/net/INetworkStatsService; -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap1(Lcom/android/server/net/NetworkPolicyManagerService;ILjava/lang/String;)Z -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap10(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap10(Lcom/android/server/net/NetworkPolicyManagerService;IZ)V PLcom/android/server/net/NetworkPolicyManagerService;->-wrap11(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap16(Lcom/android/server/net/NetworkPolicyManagerService;ILandroid/util/SparseIntArray;)V -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap17(Lcom/android/server/net/NetworkPolicyManagerService;I)V -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap19(Lcom/android/server/net/NetworkPolicyManagerService;I)V -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap2(II)Z -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap21(Lcom/android/server/net/NetworkPolicyManagerService;)V -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap3(Lcom/android/server/net/NetworkPolicyManagerService;I)Z -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap5(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap8(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;II)V -PLcom/android/server/net/NetworkPolicyManagerService;->-wrap9(Lcom/android/server/net/NetworkPolicyManagerService;IZ)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap12(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap17(Lcom/android/server/net/NetworkPolicyManagerService;ILandroid/util/SparseIntArray;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap18(Lcom/android/server/net/NetworkPolicyManagerService;I)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap22(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap23(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap6(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V PLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/net/INetworkStatsService;Landroid/os/INetworkManagementService;)V PLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/net/INetworkStatsService;Landroid/os/INetworkManagementService;Landroid/content/pm/IPackageManager;Landroid/util/TrustedTime;Ljava/io/File;Z)V PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundWhitelistUidsUL()Z PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundWhitelistUidsUL(I)Z PLcom/android/server/net/NetworkPolicyManagerService;->bindConnectivityManager(Landroid/net/IConnectivityManager;)V PLcom/android/server/net/NetworkPolicyManagerService;->bindNotificationManager(Landroid/app/INotificationManager;)V -PLcom/android/server/net/NetworkPolicyManagerService;->currentTimeMillis()J PLcom/android/server/net/NetworkPolicyManagerService;->dispatchMeteredIfacesChanged(Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V -PLcom/android/server/net/NetworkPolicyManagerService;->dispatchUidRulesChanged(Landroid/net/INetworkPolicyListener;II)V PLcom/android/server/net/NetworkPolicyManagerService;->enableFirewallChainUL(IZ)V PLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL()V -PLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL(ILjava/lang/String;)Z -PLcom/android/server/net/NetworkPolicyManagerService;->getCycleDayFromCarrierConfig(Landroid/os/PersistableBundle;I)I -PLcom/android/server/net/NetworkPolicyManagerService;->getLimitBytesFromCarrierConfig(Landroid/os/PersistableBundle;J)J PLcom/android/server/net/NetworkPolicyManagerService;->getNetworkPolicies(Ljava/lang/String;)[Landroid/net/NetworkPolicy; -PLcom/android/server/net/NetworkPolicyManagerService;->getPlatformDefaultLimitBytes()J -PLcom/android/server/net/NetworkPolicyManagerService;->getPlatformDefaultWarningBytes()J PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackground()Z PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundByCaller()I PLcom/android/server/net/NetworkPolicyManagerService;->getSystemDir()Ljava/io/File; PLcom/android/server/net/NetworkPolicyManagerService;->getUidPolicy(I)I -PLcom/android/server/net/NetworkPolicyManagerService;->getWarningBytesFromCarrierConfig(Landroid/os/PersistableBundle;J)J -PLcom/android/server/net/NetworkPolicyManagerService;->handleUidGone(I)V -PLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissions(I)Z -PLcom/android/server/net/NetworkPolicyManagerService;->hasRule(II)Z PLcom/android/server/net/NetworkPolicyManagerService;->initService(Ljava/util/concurrent/CountDownLatch;)V PLcom/android/server/net/NetworkPolicyManagerService;->isBandwidthControlEnabled()Z -PLcom/android/server/net/NetworkPolicyManagerService;->isTemplateRelevant(Landroid/net/NetworkTemplate;)Z -PLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z -PLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z -PLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(I)Z -PLcom/android/server/net/NetworkPolicyManagerService;->isUidStateForegroundUL(I)Z -PLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForBlacklistRules(I)Z -PLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForWhitelistRules(I)Z -PLcom/android/server/net/NetworkPolicyManagerService;->isWhitelistedBatterySaverUL(IZ)Z -PLcom/android/server/net/NetworkPolicyManagerService;->lambda$-com_android_server_net_NetworkPolicyManagerService_36909(Ljava/util/concurrent/CountDownLatch;)V +PLcom/android/server/net/NetworkPolicyManagerService;->lambda$-com_android_server_net_NetworkPolicyManagerService_37358(Ljava/util/concurrent/CountDownLatch;)V PLcom/android/server/net/NetworkPolicyManagerService;->maybeRefreshTrustedTime()V -PLcom/android/server/net/NetworkPolicyManagerService;->maybeUpdateMobilePolicyCycleNL(I)Z PLcom/android/server/net/NetworkPolicyManagerService;->networkScoreAndNetworkManagementServiceReady()Ljava/util/concurrent/CountDownLatch; PLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL()V PLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL([Landroid/net/NetworkPolicy;)V @@ -9169,55 +11480,35 @@ PLcom/android/server/net/NetworkPolicyManagerService;->onTetheringChanged(Ljava/ PLcom/android/server/net/NetworkPolicyManagerService;->purgePowerSaveTempWhitelistUL()V PLcom/android/server/net/NetworkPolicyManagerService;->readPolicyAL()V PLcom/android/server/net/NetworkPolicyManagerService;->registerListener(Landroid/net/INetworkPolicyListener;)V -PLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)V PLcom/android/server/net/NetworkPolicyManagerService;->setMeteredNetworkWhitelist(IZ)V -PLcom/android/server/net/NetworkPolicyManagerService;->setNetworkTemplateEnabled(Landroid/net/NetworkTemplate;Z)V PLcom/android/server/net/NetworkPolicyManagerService;->setRestrictBackgroundUL(Z)V -PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRule(III)V PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRules(ILandroid/util/SparseIntArray;)V PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesAsync(ILandroid/util/SparseIntArray;I)V PLcom/android/server/net/NetworkPolicyManagerService;->setUidPolicyUncheckedUL(IIZ)V PLcom/android/server/net/NetworkPolicyManagerService;->systemReady(Ljava/util/concurrent/CountDownLatch;)V -PLcom/android/server/net/NetworkPolicyManagerService;->unregisterListener(Landroid/net/INetworkPolicyListener;)V PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V -PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V PLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V PLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveTempWhitelistUL()V PLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveWhitelistUL()V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundRulesOnUidStatusChangedUL(III)V PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictionRulesForUidUL(I)V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(I)V PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForDeviceIdleUL(I)V PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForRestrictPowerUL(I)V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllAppsUL(I)V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleParoleUL()V PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleUL()V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDeviceIdleUL()V PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForGlobalChangeAL(Z)V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(I)V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IIZ)I -PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IIZ)I PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerSaveUL()V PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictBackgroundUL()V PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictPowerUL()V -PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempWhitelistChangeUL()V PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedPowerSaveUL(IZI)V PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedPowerSaveUL(ZILandroid/util/SparseIntArray;)V +PLcom/android/server/net/NetworkPolicyManagerService;->upgradeWifiMeteredOverrideAL()V PLcom/android/server/net/NetworkPolicyManagerService;->writePolicyAL()V -PLcom/android/server/net/NetworkStatsAccess;->isAccessibleToUser(III)Z -PLcom/android/server/net/NetworkStatsCollection$Key;->equals(Ljava/lang/Object;)Z -PLcom/android/server/net/NetworkStatsCollection$Key;->hashCode()I PLcom/android/server/net/NetworkStatsCollection;-><init>(J)V PLcom/android/server/net/NetworkStatsCollection;->getTotalBytes()J PLcom/android/server/net/NetworkStatsCollection;->isDirty()Z -PLcom/android/server/net/NetworkStatsCollection;->noteRecordedHistory(JJJ)V -PLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/DataInputStream;)V PLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/InputStream;)V PLcom/android/server/net/NetworkStatsCollection;->recordCollection(Lcom/android/server/net/NetworkStatsCollection;)V -PLcom/android/server/net/NetworkStatsCollection;->recordHistory(Lcom/android/server/net/NetworkStatsCollection$Key;Landroid/net/NetworkStatsHistory;)V PLcom/android/server/net/NetworkStatsCollection;->reset()V PLcom/android/server/net/NetworkStatsObservers$1;-><init>(Lcom/android/server/net/NetworkStatsObservers;)V PLcom/android/server/net/NetworkStatsObservers$1;->handleMessage(Landroid/os/Message;)Z @@ -9234,11 +11525,8 @@ PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->reset()V PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->shouldWrite()Z PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->write(Ljava/io/OutputStream;)V PLcom/android/server/net/NetworkStatsRecorder;-><init>(Lcom/android/internal/util/FileRotator;Landroid/net/NetworkStats$NonMonotonicObserver;Landroid/os/DropBoxManager;Ljava/lang/String;JZ)V -PLcom/android/server/net/NetworkStatsRecorder;->forcePersistLocked(J)V PLcom/android/server/net/NetworkStatsRecorder;->getOrLoadCompleteLocked()Lcom/android/server/net/NetworkStatsCollection; -PLcom/android/server/net/NetworkStatsRecorder;->getTotalSinceBootLocked(Landroid/net/NetworkTemplate;)Landroid/net/NetworkStats$Entry; PLcom/android/server/net/NetworkStatsRecorder;->loadLocked(JJ)Lcom/android/server/net/NetworkStatsCollection; -PLcom/android/server/net/NetworkStatsRecorder;->maybePersistLocked(J)V PLcom/android/server/net/NetworkStatsRecorder;->setPersistThreshold(J)V PLcom/android/server/net/NetworkStatsService$1;-><init>(Lcom/android/server/net/NetworkStatsService;)V PLcom/android/server/net/NetworkStatsService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V @@ -9285,57 +11573,45 @@ PLcom/android/server/net/NetworkStatsService;->forceUpdateIfaces()V PLcom/android/server/net/NetworkStatsService;->getDefaultBaseDir()Ljava/io/File; PLcom/android/server/net/NetworkStatsService;->getDefaultSystemDir()Ljava/io/File; PLcom/android/server/net/NetworkStatsService;->getMobileIfaces()[Ljava/lang/String; -PLcom/android/server/net/NetworkStatsService;->getNetworkStatsTethering()Landroid/net/NetworkStats; +PLcom/android/server/net/NetworkStatsService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats; PLcom/android/server/net/NetworkStatsService;->getNetworkStatsUidDetail()Landroid/net/NetworkStats; PLcom/android/server/net/NetworkStatsService;->getNetworkStatsXt()Landroid/net/NetworkStats; PLcom/android/server/net/NetworkStatsService;->incrementOperationCount(III)V PLcom/android/server/net/NetworkStatsService;->isBandwidthControlEnabled()Z PLcom/android/server/net/NetworkStatsService;->maybeUpgradeLegacyStatsLocked()V PLcom/android/server/net/NetworkStatsService;->performPoll(I)V -PLcom/android/server/net/NetworkStatsService;->performPollLocked(I)V -PLcom/android/server/net/NetworkStatsService;->performSampleLocked()V -PLcom/android/server/net/NetworkStatsService;->recordSnapshotLocked(J)V PLcom/android/server/net/NetworkStatsService;->registerGlobalAlert()V PLcom/android/server/net/NetworkStatsService;->registerPollAlarmLocked()V PLcom/android/server/net/NetworkStatsService;->setHandler(Landroid/os/Handler;Landroid/os/Handler$Callback;)V -PLcom/android/server/net/NetworkStatsService;->setUidForeground(IZ)V PLcom/android/server/net/NetworkStatsService;->systemReady()V PLcom/android/server/net/NetworkStatsService;->updateIfaces()V PLcom/android/server/net/NetworkStatsService;->updateIfacesLocked()V PLcom/android/server/net/NetworkStatsService;->updatePersistThresholds()V -PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->$m$0(I)Z -PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;-><init>(II)V -PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->apply(I)Z +PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->$m$1()V +PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;-><init>(II)V +PLcom/android/server/notification/AlertRateLimiter;-><init>()V PLcom/android/server/notification/BadgeExtractor;-><init>()V PLcom/android/server/notification/BadgeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V -PLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; PLcom/android/server/notification/BadgeExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V PLcom/android/server/notification/CalendarTracker$1;-><init>(Lcom/android/server/notification/CalendarTracker;Landroid/os/Handler;)V -PLcom/android/server/notification/CalendarTracker$1;->onChange(ZLandroid/net/Uri;)V PLcom/android/server/notification/CalendarTracker$CheckEventResult;-><init>()V -PLcom/android/server/notification/CalendarTracker;->-get0()Z -PLcom/android/server/notification/CalendarTracker;->-get1(Lcom/android/server/notification/CalendarTracker;)Lcom/android/server/notification/CalendarTracker$Callback; PLcom/android/server/notification/CalendarTracker;-><init>(Landroid/content/Context;Landroid/content/Context;)V PLcom/android/server/notification/CalendarTracker;->checkEvent(Landroid/service/notification/ZenModeConfig$EventInfo;J)Lcom/android/server/notification/CalendarTracker$CheckEventResult; PLcom/android/server/notification/CalendarTracker;->getPrimaryCalendars()Landroid/util/ArraySet; -PLcom/android/server/notification/CalendarTracker;->meetsAttendee(Landroid/service/notification/ZenModeConfig$EventInfo;ILjava/lang/String;)Z PLcom/android/server/notification/CalendarTracker;->setCallback(Lcom/android/server/notification/CalendarTracker$Callback;)V PLcom/android/server/notification/CalendarTracker;->setRegistered(Z)V PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;)V PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;Lcom/android/server/notification/ConditionProviders$ConditionRecord;)V -PLcom/android/server/notification/ConditionProviders;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/notification/ManagedServices$UserProfiles;)V +PLcom/android/server/notification/ConditionProviders;-><init>(Landroid/content/Context;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V PLcom/android/server/notification/ConditionProviders;->addSystemProvider(Lcom/android/server/notification/SystemConditionProviderService;)V PLcom/android/server/notification/ConditionProviders;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface; PLcom/android/server/notification/ConditionProviders;->checkServiceToken(Landroid/service/notification/IConditionProvider;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; PLcom/android/server/notification/ConditionProviders;->ensureRecordExists(Landroid/content/ComponentName;Landroid/net/Uri;Landroid/service/notification/IConditionProvider;)V -PLcom/android/server/notification/ConditionProviders;->getConfig()Lcom/android/server/notification/ManagedServices$Config; -PLcom/android/server/notification/ConditionProviders;->getRecordLocked(Landroid/net/Uri;Landroid/content/ComponentName;Z)Lcom/android/server/notification/ConditionProviders$ConditionRecord; PLcom/android/server/notification/ConditionProviders;->getSystemProviders()Ljava/lang/Iterable; PLcom/android/server/notification/ConditionProviders;->isSystemProviderEnabled(Ljava/lang/String;)Z -PLcom/android/server/notification/ConditionProviders;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet; PLcom/android/server/notification/ConditionProviders;->notifyConditions(Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V PLcom/android/server/notification/ConditionProviders;->onBootPhaseAppsCanStart()V -PLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;)V +PLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;[I)V PLcom/android/server/notification/ConditionProviders;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V PLcom/android/server/notification/ConditionProviders;->onUserSwitched(I)V PLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)Landroid/service/notification/IConditionProvider; @@ -9355,15 +11631,12 @@ PLcom/android/server/notification/CountdownConditionProvider;->isValidConditionI PLcom/android/server/notification/CountdownConditionProvider;->onBootComplete()V PLcom/android/server/notification/CountdownConditionProvider;->onConnected()V PLcom/android/server/notification/EventConditionProvider$1;-><init>(Lcom/android/server/notification/EventConditionProvider;)V -PLcom/android/server/notification/EventConditionProvider$1;->onChanged()V PLcom/android/server/notification/EventConditionProvider$2;-><init>(Lcom/android/server/notification/EventConditionProvider;)V PLcom/android/server/notification/EventConditionProvider$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/notification/EventConditionProvider$3;-><init>(Lcom/android/server/notification/EventConditionProvider;)V PLcom/android/server/notification/EventConditionProvider$3;->run()V PLcom/android/server/notification/EventConditionProvider$4;-><init>(Lcom/android/server/notification/EventConditionProvider;)V PLcom/android/server/notification/EventConditionProvider;->-get0()Z -PLcom/android/server/notification/EventConditionProvider;->-get1(Lcom/android/server/notification/EventConditionProvider;)Ljava/lang/Runnable; -PLcom/android/server/notification/EventConditionProvider;->-get2(Lcom/android/server/notification/EventConditionProvider;)Landroid/os/Handler; PLcom/android/server/notification/EventConditionProvider;->-wrap0(Lcom/android/server/notification/EventConditionProvider;)V PLcom/android/server/notification/EventConditionProvider;->-wrap1(Lcom/android/server/notification/EventConditionProvider;)V PLcom/android/server/notification/EventConditionProvider;-><init>()V @@ -9381,55 +11654,41 @@ PLcom/android/server/notification/EventConditionProvider;->reloadTrackers()V PLcom/android/server/notification/EventConditionProvider;->rescheduleAlarm(JJ)V PLcom/android/server/notification/EventConditionProvider;->setRegistered(Z)V PLcom/android/server/notification/GlobalSortKeyComparator;-><init>()V -PLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I PLcom/android/server/notification/GroupHelper;-><init>(Lcom/android/server/notification/GroupHelper$Callback;)V PLcom/android/server/notification/GroupHelper;->adjustAutogroupingSummary(ILjava/lang/String;Ljava/lang/String;Z)V PLcom/android/server/notification/GroupHelper;->maybeUngroup(Landroid/service/notification/StatusBarNotification;ZI)V -PLcom/android/server/notification/GroupHelper;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;)V +PLcom/android/server/notification/GroupHelper;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Z)V PLcom/android/server/notification/GroupHelper;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V PLcom/android/server/notification/ImportanceExtractor;-><init>()V PLcom/android/server/notification/ImportanceExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V -PLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; PLcom/android/server/notification/ImportanceExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V PLcom/android/server/notification/ManagedServices$1;-><init>(Lcom/android/server/notification/ManagedServices;Ljava/lang/String;IZI)V PLcom/android/server/notification/ManagedServices$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V -PLcom/android/server/notification/ManagedServices$Config;-><init>()V PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)V -PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->getOwner()Lcom/android/server/notification/ManagedServices; -PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z -PLcom/android/server/notification/ManagedServices$SettingRestoredReceiver;-><init>(Lcom/android/server/notification/ManagedServices;)V -PLcom/android/server/notification/ManagedServices$SettingsObserver;->-wrap0(Lcom/android/server/notification/ManagedServices$SettingsObserver;)V -PLcom/android/server/notification/ManagedServices$SettingsObserver;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/Handler;)V -PLcom/android/server/notification/ManagedServices$SettingsObserver;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/Handler;Lcom/android/server/notification/ManagedServices$SettingsObserver;)V -PLcom/android/server/notification/ManagedServices$SettingsObserver;->observe()V -PLcom/android/server/notification/ManagedServices$SettingsObserver;->update(Landroid/net/Uri;)V PLcom/android/server/notification/ManagedServices$UserProfiles;-><init>()V PLcom/android/server/notification/ManagedServices$UserProfiles;->getCurrentProfileIds()[I PLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z PLcom/android/server/notification/ManagedServices$UserProfiles;->updateCache(Landroid/content/Context;)V -PLcom/android/server/notification/ManagedServices;->-get0(Lcom/android/server/notification/ManagedServices;)Lcom/android/server/notification/ManagedServices$Config; -PLcom/android/server/notification/ManagedServices;->-get1(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet; +PLcom/android/server/notification/ManagedServices;->-get1(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList; PLcom/android/server/notification/ManagedServices;->-get2(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList; -PLcom/android/server/notification/ManagedServices;->-get3(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList; PLcom/android/server/notification/ManagedServices;->-wrap0(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; -PLcom/android/server/notification/ManagedServices;->-wrap3(Lcom/android/server/notification/ManagedServices;Z)V -PLcom/android/server/notification/ManagedServices;->-wrap4(Lcom/android/server/notification/ManagedServices;)V -PLcom/android/server/notification/ManagedServices;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;)V +PLcom/android/server/notification/ManagedServices;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V +PLcom/android/server/notification/ManagedServices;->addApprovedList(Ljava/lang/String;IZ)V PLcom/android/server/notification/ManagedServices;->checkNotNull(Landroid/os/IInterface;)V PLcom/android/server/notification/ManagedServices;->checkServiceTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +PLcom/android/server/notification/ManagedServices;->getApprovedValue(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/notification/ManagedServices;->getCaption()Ljava/lang/String; -PLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; -PLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List; -PLcom/android/server/notification/ManagedServices;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet; +PLcom/android/server/notification/ManagedServices;->getPackageName(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/notification/ManagedServices;->isComponentEnabledForCurrentProfiles(Landroid/content/ComponentName;)Z +PLcom/android/server/notification/ManagedServices;->loadComponentNamesFromValues(Landroid/util/ArraySet;I)Landroid/util/ArraySet; PLcom/android/server/notification/ManagedServices;->newServiceInfo(Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; PLcom/android/server/notification/ManagedServices;->onBootPhaseAppsCanStart()V -PLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;)V PLcom/android/server/notification/ManagedServices;->onUserSwitched(I)V PLcom/android/server/notification/ManagedServices;->onUserUnlocked(I)V PLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;I)Ljava/util/Set; -PLcom/android/server/notification/ManagedServices;->rebindServices(Z)V -PLcom/android/server/notification/ManagedServices;->rebuildRestoredPackages()V +PLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;II)Ljava/util/Set; +PLcom/android/server/notification/ManagedServices;->readXml(Lorg/xmlpull/v1/XmlPullParser;)V PLcom/android/server/notification/ManagedServices;->registerService(Landroid/content/ComponentName;I)V PLcom/android/server/notification/ManagedServices;->registerService(Landroid/os/IInterface;Landroid/content/ComponentName;I)V PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Landroid/os/IInterface;Landroid/content/ComponentName;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; @@ -9437,32 +11696,28 @@ PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Lcom/and PLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;I)V PLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;IZ)V PLcom/android/server/notification/ManagedServices;->removeServiceLocked(I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; -PLcom/android/server/notification/ManagedServices;->restoredSettingName(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/notification/ManagedServices;->setComponentState(Landroid/content/ComponentName;Z)V +PLcom/android/server/notification/ManagedServices;->setPackageOrComponentEnabled(Ljava/lang/String;IZZ)V PLcom/android/server/notification/ManagedServices;->unregisterServiceLocked(Landroid/content/ComponentName;I)V +PLcom/android/server/notification/NotificationAdjustmentExtractor;-><init>()V +PLcom/android/server/notification/NotificationAdjustmentExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/NotificationAdjustmentExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/NotificationChannelExtractor;-><init>()V +PLcom/android/server/notification/NotificationChannelExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/NotificationChannelExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V PLcom/android/server/notification/NotificationComparator$1;-><init>(Lcom/android/server/notification/NotificationComparator;)V PLcom/android/server/notification/NotificationComparator;-><init>(Landroid/content/Context;)V -PLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -PLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z -PLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z -PLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z -PLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z -PLcom/android/server/notification/NotificationComparator;->isOngoing(Lcom/android/server/notification/NotificationRecord;)Z -PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;-><init>(Lcom/android/server/notification/NotificationIntrusivenessExtractor;Ljava/lang/String;J)V -PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->work()V PLcom/android/server/notification/NotificationIntrusivenessExtractor;-><init>()V PLcom/android/server/notification/NotificationIntrusivenessExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V -PLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; PLcom/android/server/notification/NotificationIntrusivenessExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V -PLcom/android/server/notification/NotificationManagerService$11;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationManagerService$11;->run()V -PLcom/android/server/notification/NotificationManagerService$12;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;ILjava/lang/String;IIIIZ)V -PLcom/android/server/notification/NotificationManagerService$12;->run()V -PLcom/android/server/notification/NotificationManagerService$13;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;IIIIZLjava/lang/String;)V -PLcom/android/server/notification/NotificationManagerService$13;->lambda$-com_android_server_notification_NotificationManagerService$13_194652(III)Z +PLcom/android/server/notification/NotificationManagerService$10;-><init>(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$11;-><init>(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$11;->removeAutoGroupSummary(ILjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$13;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V PLcom/android/server/notification/NotificationManagerService$13;->run()V -PLcom/android/server/notification/NotificationManagerService$15;-><init>(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$15;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;IIIIZLjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$15;->lambda$-com_android_server_notification_NotificationManagerService$15_208265(III)Z +PLcom/android/server/notification/NotificationManagerService$17;-><init>(Lcom/android/server/notification/NotificationManagerService;)V PLcom/android/server/notification/NotificationManagerService$1;-><init>(Lcom/android/server/notification/NotificationManagerService;)V PLcom/android/server/notification/NotificationManagerService$1;->clearEffects()V PLcom/android/server/notification/NotificationManagerService$1;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V @@ -9472,241 +11727,172 @@ PLcom/android/server/notification/NotificationManagerService$1;->onPanelRevealed PLcom/android/server/notification/NotificationManagerService$1;->onSetDisabled(I)V PLcom/android/server/notification/NotificationManagerService$2;-><init>(Lcom/android/server/notification/NotificationManagerService;)V PLcom/android/server/notification/NotificationManagerService$3;-><init>(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/notification/NotificationManagerService$4;-><init>(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V -PLcom/android/server/notification/NotificationManagerService$5$1;-><init>(Lcom/android/server/notification/NotificationManagerService$5;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V -PLcom/android/server/notification/NotificationManagerService$5$1;->run()V PLcom/android/server/notification/NotificationManagerService$5;-><init>(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService$5;->areNotificationsEnabled(Ljava/lang/String;)Z -PLcom/android/server/notification/NotificationManagerService$5;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z -PLcom/android/server/notification/NotificationManagerService$5;->cancelAllNotifications(Ljava/lang/String;I)V -PLcom/android/server/notification/NotificationManagerService$5;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V -PLcom/android/server/notification/NotificationManagerService$5;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V -PLcom/android/server/notification/NotificationManagerService$5;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V -PLcom/android/server/notification/NotificationManagerService$5;->enforceSystemOrSystemUI(Ljava/lang/String;)V -PLcom/android/server/notification/NotificationManagerService$5;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V -PLcom/android/server/notification/NotificationManagerService$5;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/notification/NotificationManagerService$5;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/notification/NotificationManagerService$5;->getEffectsSuppressor()Landroid/content/ComponentName; -PLcom/android/server/notification/NotificationManagerService$5;->getNotificationChannel(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel; -PLcom/android/server/notification/NotificationManagerService$5;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/notification/NotificationManagerService$5;->getNotificationChannels(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/notification/NotificationManagerService$5;->getZenMode()I -PLcom/android/server/notification/NotificationManagerService$5;->getZenModeConfig()Landroid/service/notification/ZenModeConfig; -PLcom/android/server/notification/NotificationManagerService$5;->isSystemConditionProviderEnabled(Ljava/lang/String;)Z -PLcom/android/server/notification/NotificationManagerService$5;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V -PLcom/android/server/notification/NotificationManagerService$5;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V -PLcom/android/server/notification/NotificationManagerService$5;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V -PLcom/android/server/notification/NotificationManagerService$5;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification; -PLcom/android/server/notification/NotificationManagerService$5;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V -PLcom/android/server/notification/NotificationManagerService$5;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V PLcom/android/server/notification/NotificationManagerService$6;-><init>(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService$6;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V +PLcom/android/server/notification/NotificationManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/notification/NotificationManagerService$7$1;-><init>(Lcom/android/server/notification/NotificationManagerService$7;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V +PLcom/android/server/notification/NotificationManagerService$7$1;->run()V PLcom/android/server/notification/NotificationManagerService$7;-><init>(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService$7;->onConfigChanged()V +PLcom/android/server/notification/NotificationManagerService$7;->areNotificationsEnabled(Ljava/lang/String;)Z +PLcom/android/server/notification/NotificationManagerService$7;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z +PLcom/android/server/notification/NotificationManagerService$7;->cancelAllNotifications(Ljava/lang/String;I)V +PLcom/android/server/notification/NotificationManagerService$7;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$7;->enforcePolicyAccess(ILjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$7;->enforceSystemOrSystemUI(Ljava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$7;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V +PLcom/android/server/notification/NotificationManagerService$7;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;I)V +PLcom/android/server/notification/NotificationManagerService$7;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/notification/NotificationManagerService$7;->getEffectsSuppressor()Landroid/content/ComponentName; +PLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannels(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/notification/NotificationManagerService$7;->getZenMode()I +PLcom/android/server/notification/NotificationManagerService$7;->getZenModeConfig()Landroid/service/notification/ZenModeConfig; +PLcom/android/server/notification/NotificationManagerService$7;->getZenRules()Ljava/util/List; +PLcom/android/server/notification/NotificationManagerService$7;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V +PLcom/android/server/notification/NotificationManagerService$7;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V +PLcom/android/server/notification/NotificationManagerService$7;->requestBindListener(Landroid/content/ComponentName;)V +PLcom/android/server/notification/NotificationManagerService$7;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V +PLcom/android/server/notification/NotificationManagerService$7;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification; +PLcom/android/server/notification/NotificationManagerService$7;->setNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;IZ)V +PLcom/android/server/notification/NotificationManagerService$7;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V +PLcom/android/server/notification/NotificationManagerService$7;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V PLcom/android/server/notification/NotificationManagerService$8;-><init>(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService$8;->removeAutoGroupSummary(ILjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$8;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V PLcom/android/server/notification/NotificationManagerService$9;-><init>(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$9;->onConfigChanged()V PLcom/android/server/notification/NotificationManagerService$Archive;-><init>(I)V PLcom/android/server/notification/NotificationManagerService$Archive;->record(Landroid/service/notification/StatusBarNotification;)V PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;ILcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->run()V -PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;-><init>(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getConfig()Lcom/android/server/notification/ManagedServices$Config; +PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/IPackageManager;)V PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isEnabled()Z PLcom/android/server/notification/NotificationManagerService$NotificationListeners$2;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V PLcom/android/server/notification/NotificationManagerService$NotificationListeners$2;->run()V PLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V PLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;->run()V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners$7;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners$7;->run()V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners$8;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners$8;->run()V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap3(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap5(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap2(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap4(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/IPackageManager;)V PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface; -PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getConfig()Lcom/android/server/notification/ManagedServices$Config; PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getOnNotificationPostedTrim(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)I -PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z -PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$-com_android_server_notification_NotificationManagerService$NotificationListeners_243589(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPosted(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V -PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;)V PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemoved(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemovedLocked(Landroid/service/notification/StatusBarNotification;I)V PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V -PLcom/android/server/notification/NotificationManagerService$PolicyAccess;-><init>(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService$PolicyAccess;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$PolicyAccess;)V -PLcom/android/server/notification/NotificationManagerService$PolicyAccess;->getGrantedPackages()Landroid/util/ArraySet; -PLcom/android/server/notification/NotificationManagerService$PolicyAccess;->put(Ljava/lang/String;Z)V PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Landroid/service/notification/StatusBarNotification;)V PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;->run()V PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V -PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->run()V PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V -PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestReconsideration(Lcom/android/server/notification/RankingReconsideration;)V -PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestSort(Z)V PLcom/android/server/notification/NotificationManagerService$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Handler;)V PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->observe()V PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;)V PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;-><init>(Landroid/service/notification/StatusBarNotification;)V PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification; +PLcom/android/server/notification/NotificationManagerService$ToastRecord;-><init>(ILjava/lang/String;Landroid/app/ITransientNotification;ILandroid/os/Binder;)V PLcom/android/server/notification/NotificationManagerService$TrimCache;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)V PLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification; PLcom/android/server/notification/NotificationManagerService$WorkerHandler;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V -PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/notification/NotificationManagerService;->-get1()I -PLcom/android/server/notification/NotificationManagerService;->-get10(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/Handler; -PLcom/android/server/notification/NotificationManagerService;->-get16(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners; -PLcom/android/server/notification/NotificationManagerService;->-get17(Lcom/android/server/notification/NotificationManagerService;)F -PLcom/android/server/notification/NotificationManagerService;->-get18(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationAssistants; -PLcom/android/server/notification/NotificationManagerService;->-get19(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/Light; +PLcom/android/server/notification/NotificationManagerService;->-get10(Lcom/android/server/notification/NotificationManagerService;)Ljava/util/List; +PLcom/android/server/notification/NotificationManagerService;->-get11(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper; +PLcom/android/server/notification/NotificationManagerService;->-get12(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$WorkerHandler; +PLcom/android/server/notification/NotificationManagerService;->-get19(Lcom/android/server/notification/NotificationManagerService;)F PLcom/android/server/notification/NotificationManagerService;->-get2()I -PLcom/android/server/notification/NotificationManagerService;->-get20(Lcom/android/server/notification/NotificationManagerService;)Z -PLcom/android/server/notification/NotificationManagerService;->-get21(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/IPackageManager; -PLcom/android/server/notification/NotificationManagerService;->-get24(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/RankingHelper; -PLcom/android/server/notification/NotificationManagerService;->-get25(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver; -PLcom/android/server/notification/NotificationManagerService;->-get26(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper; -PLcom/android/server/notification/NotificationManagerService;->-get27(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats; -PLcom/android/server/notification/NotificationManagerService;->-get28(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles; -PLcom/android/server/notification/NotificationManagerService;->-get30(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ZenModeHelper; -PLcom/android/server/notification/NotificationManagerService;->-get4(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/usage/UsageStatsManagerInternal; -PLcom/android/server/notification/NotificationManagerService;->-get7(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders; -PLcom/android/server/notification/NotificationManagerService;->-get8(Lcom/android/server/notification/NotificationManagerService;)Ljava/util/List; -PLcom/android/server/notification/NotificationManagerService;->-get9(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper; +PLcom/android/server/notification/NotificationManagerService;->-get20(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/Light; +PLcom/android/server/notification/NotificationManagerService;->-get21(Lcom/android/server/notification/NotificationManagerService;)Z +PLcom/android/server/notification/NotificationManagerService;->-get22(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/IPackageManager; +PLcom/android/server/notification/NotificationManagerService;->-get26(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver; +PLcom/android/server/notification/NotificationManagerService;->-get28(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats; +PLcom/android/server/notification/NotificationManagerService;->-get29(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles; +PLcom/android/server/notification/NotificationManagerService;->-get3(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/ActivityManager; +PLcom/android/server/notification/NotificationManagerService;->-get30(Lcom/android/server/notification/NotificationManagerService;)Landroid/view/WindowManagerInternal; +PLcom/android/server/notification/NotificationManagerService;->-get5(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/usage/UsageStatsManagerInternal; +PLcom/android/server/notification/NotificationManagerService;->-get7(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationAssistants; +PLcom/android/server/notification/NotificationManagerService;->-get9(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders; PLcom/android/server/notification/NotificationManagerService;->-set1(Lcom/android/server/notification/NotificationManagerService;Z)Z -PLcom/android/server/notification/NotificationManagerService;->-set4(Lcom/android/server/notification/NotificationManagerService;F)F +PLcom/android/server/notification/NotificationManagerService;->-set2(Lcom/android/server/notification/NotificationManagerService;F)F PLcom/android/server/notification/NotificationManagerService;->-wrap0(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate; -PLcom/android/server/notification/NotificationManagerService;->-wrap12(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap13(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap14(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;Z)V -PLcom/android/server/notification/NotificationManagerService;->-wrap15(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZI)V -PLcom/android/server/notification/NotificationManagerService;->-wrap17(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap19(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap2(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z -PLcom/android/server/notification/NotificationManagerService;->-wrap20(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap21(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap1(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z +PLcom/android/server/notification/NotificationManagerService;->-wrap10(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String; +PLcom/android/server/notification/NotificationManagerService;->-wrap13(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap14(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V +PLcom/android/server/notification/NotificationManagerService;->-wrap15(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap16(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap19(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap2(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Z +PLcom/android/server/notification/NotificationManagerService;->-wrap21(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;)V PLcom/android/server/notification/NotificationManagerService;->-wrap22(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap26(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V -PLcom/android/server/notification/NotificationManagerService;->-wrap29(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap3(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z -PLcom/android/server/notification/NotificationManagerService;->-wrap30(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap31(Lcom/android/server/notification/NotificationManagerService;)V -PLcom/android/server/notification/NotificationManagerService;->-wrap8(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String; +PLcom/android/server/notification/NotificationManagerService;->-wrap23(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap24(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap28(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V +PLcom/android/server/notification/NotificationManagerService;->-wrap34(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap4(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +PLcom/android/server/notification/NotificationManagerService;->-wrap6(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z PLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/notification/NotificationManagerService;->applyZenModeLocked(Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationManagerService;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsByListLocked(Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;)V PLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsInt(IILjava/lang/String;Ljava/lang/String;IIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V -PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenLocked(Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;Z)V -PLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V -PLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZI)V -PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V -PLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;)Z -PLcom/android/server/notification/NotificationManagerService;->clamp(III)I +PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenByListLocked(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V +PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenLocked(Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V +PLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService;->cancelToastLocked(I)V +PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystem()V +PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrShell()V PLcom/android/server/notification/NotificationManagerService;->clearAutogroupSummaryLocked(ILjava/lang/String;)V PLcom/android/server/notification/NotificationManagerService;->clearLightsLocked()V PLcom/android/server/notification/NotificationManagerService;->clearSoundLocked()V PLcom/android/server/notification/NotificationManagerService;->clearVibrateLocked()V PLcom/android/server/notification/NotificationManagerService;->disableNotificationEffects(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String; -PLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V PLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord; -PLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord; -PLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord; -PLcom/android/server/notification/NotificationManagerService;->findNotificationRecordIndexLocked(Lcom/android/server/notification/NotificationRecord;)I PLcom/android/server/notification/NotificationManagerService;->getCompanionManager()Landroid/companion/ICompanionDeviceManager; +PLcom/android/server/notification/NotificationManagerService;->getGroupHelper()Lcom/android/server/notification/GroupHelper; PLcom/android/server/notification/NotificationManagerService;->getLongArray(Landroid/content/res/Resources;II[J)[J PLcom/android/server/notification/NotificationManagerService;->handleGroupedNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V -PLcom/android/server/notification/NotificationManagerService;->handleRankingReconsideration(Landroid/os/Message;)V -PLcom/android/server/notification/NotificationManagerService;->handleRankingSort(Landroid/os/Message;)V -PLcom/android/server/notification/NotificationManagerService;->handleSavePolicyFile()V -PLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I -PLcom/android/server/notification/NotificationManagerService;->init(Landroid/os/Looper;Landroid/content/pm/IPackageManager;Landroid/content/pm/PackageManager;Lcom/android/server/lights/LightsManager;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Landroid/companion/ICompanionDeviceManager;Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/NotificationManagerService;->handleTimeout(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V +PLcom/android/server/notification/NotificationManagerService;->hasAutoGroupSummaryLocked(Landroid/service/notification/StatusBarNotification;)Z +PLcom/android/server/notification/NotificationManagerService;->indexOfToastLocked(Ljava/lang/String;Landroid/app/ITransientNotification;)I +PLcom/android/server/notification/NotificationManagerService;->indexOfToastPackageLocked(Ljava/lang/String;)I +PLcom/android/server/notification/NotificationManagerService;->init(Landroid/os/Looper;Landroid/content/pm/IPackageManager;Landroid/content/pm/PackageManager;Lcom/android/server/lights/LightsManager;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ConditionProviders;Landroid/companion/ICompanionDeviceManager;Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/NotificationUsageStats;Landroid/util/AtomicFile;Landroid/app/ActivityManager;Lcom/android/server/notification/GroupHelper;)V PLcom/android/server/notification/NotificationManagerService;->isBlocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationUsageStats;)Z PLcom/android/server/notification/NotificationManagerService;->isCallerInstantApp(Ljava/lang/String;)Z -PLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z -PLcom/android/server/notification/NotificationManagerService;->isNotificationForCurrentUser(Lcom/android/server/notification/NotificationRecord;)Z PLcom/android/server/notification/NotificationManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z -PLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z -PLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +PLcom/android/server/notification/NotificationManagerService;->keepProcessAliveIfNeededLocked(I)V PLcom/android/server/notification/NotificationManagerService;->listenForCallState()V PLcom/android/server/notification/NotificationManagerService;->loadPolicyFile()V -PLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;I)Z PLcom/android/server/notification/NotificationManagerService;->onBootPhase(I)V PLcom/android/server/notification/NotificationManagerService;->onStart()V PLcom/android/server/notification/NotificationManagerService;->readPolicyXml(Ljava/io/InputStream;Z)V PLcom/android/server/notification/NotificationManagerService;->recordCallerLocked(Lcom/android/server/notification/NotificationRecord;)V PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z +PLcom/android/server/notification/NotificationManagerService;->removeFromNotificationListsLocked(Lcom/android/server/notification/NotificationRecord;)Z PLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;II)I -PLcom/android/server/notification/NotificationManagerService;->savePolicyFile()V +PLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V PLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationManagerService;->sendAccessibilityEvent(Landroid/app/Notification;Ljava/lang/CharSequence;)V +PLcom/android/server/notification/NotificationManagerService;->showNextToastLocked()V PLcom/android/server/notification/NotificationManagerService;->updateLightsLocked()V -PLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;Z)V -PLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V -PLcom/android/server/notification/NotificationRecord;->applyUserImportance()V PLcom/android/server/notification/NotificationRecord;->calculateAttributes()Landroid/media/AudioAttributes; -PLcom/android/server/notification/NotificationRecord;->calculateImportance()I -PLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light; PLcom/android/server/notification/NotificationRecord;->calculateRankingTimeMs(J)J PLcom/android/server/notification/NotificationRecord;->calculateSound()Landroid/net/Uri; PLcom/android/server/notification/NotificationRecord;->calculateVibration()[J -PLcom/android/server/notification/NotificationRecord;->canShowBadge()Z PLcom/android/server/notification/NotificationRecord;->copyRankingInformation(Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationRecord;->getAuthoritativeRank()I -PLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel; PLcom/android/server/notification/NotificationRecord;->getChannelIdLogTag()Ljava/lang/String; -PLcom/android/server/notification/NotificationRecord;->getContactAffinity()F PLcom/android/server/notification/NotificationRecord;->getExposureMs(J)I -PLcom/android/server/notification/NotificationRecord;->getFlags()I -PLcom/android/server/notification/NotificationRecord;->getFreshnessMs(J)I -PLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String; PLcom/android/server/notification/NotificationRecord;->getGroupLogTag()Ljava/lang/String; -PLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence; -PLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String; -PLcom/android/server/notification/NotificationRecord;->getLastIntrusive()J PLcom/android/server/notification/NotificationRecord;->getLifespanMs(J)I PLcom/android/server/notification/NotificationRecord;->getLight()Lcom/android/server/notification/NotificationRecord$Light; -PLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker; -PLcom/android/server/notification/NotificationRecord;->getPackagePriority()I -PLcom/android/server/notification/NotificationRecord;->getPackageVisibilityOverride()I -PLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList; -PLcom/android/server/notification/NotificationRecord;->getRankingTimeMs()J -PLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList; -PLcom/android/server/notification/NotificationRecord;->getSuppressedVisualEffects()I -PLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle; -PLcom/android/server/notification/NotificationRecord;->getUserExplanation()Ljava/lang/String; -PLcom/android/server/notification/NotificationRecord;->getUserId()I PLcom/android/server/notification/NotificationRecord;->isCategory(Ljava/lang/String;)Z -PLcom/android/server/notification/NotificationRecord;->isIntercepted()Z PLcom/android/server/notification/NotificationRecord;->isPreChannelsNotification()Z -PLcom/android/server/notification/NotificationRecord;->isRecentlyIntrusive()Z PLcom/android/server/notification/NotificationRecord;->isSeen()Z -PLcom/android/server/notification/NotificationRecord;->setAuthoritativeRank(I)V PLcom/android/server/notification/NotificationRecord;->setContactAffinity(F)V -PLcom/android/server/notification/NotificationRecord;->setGlobalSortKey(Ljava/lang/String;)V PLcom/android/server/notification/NotificationRecord;->setIntercepted(Z)Z -PLcom/android/server/notification/NotificationRecord;->setPackagePriority(I)V -PLcom/android/server/notification/NotificationRecord;->setPackageVisibilityOverride(I)V -PLcom/android/server/notification/NotificationRecord;->setRecentlyIntrusive(Z)V PLcom/android/server/notification/NotificationRecord;->setSeen()V -PLcom/android/server/notification/NotificationRecord;->setShowBadge(Z)V PLcom/android/server/notification/NotificationRecord;->setSuppressedVisualEffects(I)V -PLcom/android/server/notification/NotificationRecord;->setUserImportance(I)V -PLcom/android/server/notification/NotificationRecord;->setVisibility(ZI)V PLcom/android/server/notification/NotificationRecord;->shortenTag(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/notification/NotificationUsageStats$1;-><init>(Lcom/android/server/notification/NotificationUsageStats;Landroid/os/Looper;)V PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;-><init>(Landroid/content/Context;Ljava/lang/String;)V -PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->getEnqueueRate(J)F PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->updateInterarrivalEstimate(J)V -PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><init>(Landroid/content/Context;Ljava/lang/String;)V -PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->increment(I)V PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$1;-><init>(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;Landroid/os/Looper;)V PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$1;->handleMessage(Landroid/os/Message;)V PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$2;-><init>(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V @@ -9715,10 +11901,8 @@ PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;-><init>(Land PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logPosted(Lcom/android/server/notification/NotificationRecord;)V PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logRemoved(Lcom/android/server/notification/NotificationRecord;)V PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->pruneIfNecessary(Landroid/database/sqlite/SQLiteDatabase;)V -PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationDetails(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationIdentifiers(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putPosttimeVisibility(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V -PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->writeEvent(JILcom/android/server/notification/NotificationRecord;)V PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;-><init>()V PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->finish()V PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentAirtimeExpandedMs()J @@ -9730,47 +11914,27 @@ PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateFrom(Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;)V PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateVisiblyExpandedStats()V PLcom/android/server/notification/NotificationUsageStats;-><init>(Landroid/content/Context;)V -PLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Lcom/android/server/notification/NotificationRecord;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; -PLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; PLcom/android/server/notification/NotificationUsageStats;->getAppEnqueueRate(Ljava/lang/String;)F PLcom/android/server/notification/NotificationUsageStats;->registerEnqueuedByApp(Ljava/lang/String;)V -PLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V PLcom/android/server/notification/NotificationUsageStats;->registerPostedByApp(Lcom/android/server/notification/NotificationRecord;)V PLcom/android/server/notification/NotificationUsageStats;->registerRemovedByApp(Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationUsageStats;->registerUpdatedByApp(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V -PLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V PLcom/android/server/notification/PriorityExtractor;-><init>()V PLcom/android/server/notification/PriorityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V -PLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; PLcom/android/server/notification/PriorityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V PLcom/android/server/notification/PropConfig;->getStringArray(Landroid/content/Context;Ljava/lang/String;I)[Ljava/lang/String; PLcom/android/server/notification/RankingHelper$Record;-><init>()V PLcom/android/server/notification/RankingHelper$Record;-><init>(Lcom/android/server/notification/RankingHelper$Record;)V PLcom/android/server/notification/RankingHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/NotificationUsageStats;[Ljava/lang/String;)V -PLcom/android/server/notification/RankingHelper;->badgingEnabled(Landroid/os/UserHandle;)Z -PLcom/android/server/notification/RankingHelper;->canShowBadge(Ljava/lang/String;I)Z +PLcom/android/server/notification/RankingHelper;->clearLockedFields(Landroid/app/NotificationChannel;)V PLcom/android/server/notification/RankingHelper;->createDefaultChannelIfNeeded(Lcom/android/server/notification/RankingHelper$Record;)V -PLcom/android/server/notification/RankingHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V -PLcom/android/server/notification/RankingHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;Z)V PLcom/android/server/notification/RankingHelper;->deleteDefaultChannelIfNeeded(Lcom/android/server/notification/RankingHelper$Record;)V -PLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/RankingHelper;->deleteNotificationChannel(Ljava/lang/String;ILjava/lang/String;)V PLcom/android/server/notification/RankingHelper;->getChannelLog(Landroid/app/NotificationChannel;Ljava/lang/String;)Landroid/metrics/LogMaker; PLcom/android/server/notification/RankingHelper;->getImportance(Ljava/lang/String;I)I -PLcom/android/server/notification/RankingHelper;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel; PLcom/android/server/notification/RankingHelper;->getNotificationChannelGroups(Ljava/lang/String;I)Ljava/util/Collection; PLcom/android/server/notification/RankingHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/notification/RankingHelper;->getOrCreateRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record; -PLcom/android/server/notification/RankingHelper;->getRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record; -PLcom/android/server/notification/RankingHelper;->indexOf(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;)I -PLcom/android/server/notification/RankingHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)V -PLcom/android/server/notification/RankingHelper;->safeBool(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Z)Z PLcom/android/server/notification/RankingHelper;->shouldHaveDefaultChannel(Lcom/android/server/notification/RankingHelper$Record;)Z PLcom/android/server/notification/RankingHelper;->updateBadgingEnabled()V -PLcom/android/server/notification/RankingHelper;->updateConfig()V -PLcom/android/server/notification/RankingReconsideration;-><init>(Ljava/lang/String;J)V -PLcom/android/server/notification/RankingReconsideration;->getDelay(Ljava/util/concurrent/TimeUnit;)J -PLcom/android/server/notification/RankingReconsideration;->getKey()Ljava/lang/String; -PLcom/android/server/notification/RankingReconsideration;->run()V PLcom/android/server/notification/RateEstimator;-><init>()V PLcom/android/server/notification/RateEstimator;->getInterarrivalEstimate(J)D PLcom/android/server/notification/RateEstimator;->getRate(J)F @@ -9810,37 +11974,28 @@ PLcom/android/server/notification/ScheduleConditionProvider;->updateAlarm(JJ)V PLcom/android/server/notification/SnoozeHelper$1;-><init>(Lcom/android/server/notification/SnoozeHelper;)V PLcom/android/server/notification/SnoozeHelper;-><init>(Landroid/content/Context;Lcom/android/server/notification/SnoozeHelper$Callback;Lcom/android/server/notification/ManagedServices$UserProfiles;)V PLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;)Z -PLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z PLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection; PLcom/android/server/notification/SnoozeHelper;->isSnoozed(ILjava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/notification/SnoozeHelper;->repostGroupSummary(Ljava/lang/String;ILjava/lang/String;)V PLcom/android/server/notification/SystemConditionProviderService;-><init>()V PLcom/android/server/notification/SystemConditionProviderService;->formatDuration(J)Ljava/lang/String; PLcom/android/server/notification/SystemConditionProviderService;->ts(J)Ljava/lang/String; PLcom/android/server/notification/ValidateNotificationPeople$1;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/os/Handler;)V PLcom/android/server/notification/ValidateNotificationPeople;-><init>()V -PLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context; -PLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String; PLcom/android/server/notification/ValidateNotificationPeople;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V -PLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; PLcom/android/server/notification/ValidateNotificationPeople;->setConfig(Lcom/android/server/notification/RankingConfig;)V -PLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; -PLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[F)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration; PLcom/android/server/notification/VisibilityExtractor;-><init>()V PLcom/android/server/notification/VisibilityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V -PLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; PLcom/android/server/notification/VisibilityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V PLcom/android/server/notification/ZenLog;->append(ILjava/lang/String;)V -PLcom/android/server/notification/ZenLog;->ringerModeToString(I)Ljava/lang/String; PLcom/android/server/notification/ZenLog;->subscribeResult(Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)Ljava/lang/String; PLcom/android/server/notification/ZenLog;->traceConfig(Ljava/lang/String;Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;)V -PLcom/android/server/notification/ZenLog;->traceSetRingerModeInternal(IILjava/lang/String;II)V PLcom/android/server/notification/ZenLog;->traceSetZenMode(ILjava/lang/String;)V PLcom/android/server/notification/ZenLog;->traceSubscribe(Landroid/net/Uri;Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)V PLcom/android/server/notification/ZenLog;->typeToString(I)Ljava/lang/String; PLcom/android/server/notification/ZenLog;->zenModeToString(I)Ljava/lang/String; PLcom/android/server/notification/ZenModeConditions;-><init>(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ConditionProviders;)V PLcom/android/server/notification/ZenModeConditions;->evaluateConfig(Landroid/service/notification/ZenModeConfig;Z)V -PLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Z)V PLcom/android/server/notification/ZenModeConditions;->onBootComplete()V PLcom/android/server/notification/ZenModeConditions;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V PLcom/android/server/notification/ZenModeConditions;->onServiceAdded(Landroid/content/ComponentName;)V @@ -9852,7 +12007,6 @@ PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;-><init>(Lcom/a PLcom/android/server/notification/ZenModeFiltering;-><init>(Landroid/content/Context;)V PLcom/android/server/notification/ZenModeFiltering;->isCall(Lcom/android/server/notification/NotificationRecord;)Z PLcom/android/server/notification/ZenModeFiltering;->isDefaultPhoneApp(Ljava/lang/String;)Z -PLcom/android/server/notification/ZenModeFiltering;->isSystem(Lcom/android/server/notification/NotificationRecord;)Z PLcom/android/server/notification/ZenModeFiltering;->shouldIntercept(ILandroid/service/notification/ZenModeConfig;Lcom/android/server/notification/NotificationRecord;)Z PLcom/android/server/notification/ZenModeHelper$Callback;-><init>()V PLcom/android/server/notification/ZenModeHelper$Callback;->onConfigChanged()V @@ -9879,11 +12033,11 @@ PLcom/android/server/notification/ZenModeHelper;->-wrap1(Lcom/android/server/not PLcom/android/server/notification/ZenModeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/notification/ConditionProviders;)V PLcom/android/server/notification/ZenModeHelper;->addCallback(Lcom/android/server/notification/ZenModeHelper$Callback;)V PLcom/android/server/notification/ZenModeHelper;->appendDefaultEventRules(Landroid/service/notification/ZenModeConfig;)V +PLcom/android/server/notification/ZenModeHelper;->appendDefaultRules(Landroid/service/notification/ZenModeConfig;)V PLcom/android/server/notification/ZenModeHelper;->appendDefaultScheduleRules(Landroid/service/notification/ZenModeConfig;)V PLcom/android/server/notification/ZenModeHelper;->applyConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)V -PLcom/android/server/notification/ZenModeHelper;->applyRestrictions()V -PLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZI)V PLcom/android/server/notification/ZenModeHelper;->applyZenToRingerMode()V +PLcom/android/server/notification/ZenModeHelper;->canManageAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Z PLcom/android/server/notification/ZenModeHelper;->cleanUpZenRules()V PLcom/android/server/notification/ZenModeHelper;->computeZenMode()I PLcom/android/server/notification/ZenModeHelper;->dispatchOnConfigChanged()V @@ -9892,6 +12046,7 @@ PLcom/android/server/notification/ZenModeHelper;->getConfig()Landroid/service/no PLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy(Landroid/service/notification/ZenModeConfig;)Landroid/app/NotificationManager$Policy; PLcom/android/server/notification/ZenModeHelper;->getZenMode()I PLcom/android/server/notification/ZenModeHelper;->getZenModeListenerInterruptionFilter()I +PLcom/android/server/notification/ZenModeHelper;->getZenRules()Ljava/util/List; PLcom/android/server/notification/ZenModeHelper;->initZenMode()V PLcom/android/server/notification/ZenModeHelper;->isCall(Lcom/android/server/notification/NotificationRecord;)Z PLcom/android/server/notification/ZenModeHelper;->loadConfigForUser(ILjava/lang/String;)V @@ -9903,10 +12058,10 @@ PLcom/android/server/notification/ZenModeHelper;->readXml(Lorg/xmlpull/v1/XmlPul PLcom/android/server/notification/ZenModeHelper;->setConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;)V PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;)Z PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)Z +PLcom/android/server/notification/ZenModeHelper;->setDefaultZenRules(Landroid/content/Context;)V PLcom/android/server/notification/ZenModeHelper;->setZenModeSetting(I)V PLcom/android/server/notification/ZenModeHelper;->shouldIntercept(Lcom/android/server/notification/NotificationRecord;)Z PLcom/android/server/notification/ZenModeHelper;->updateRingerModeAffectedStreams()V -PLcom/android/server/notification/ZenModeHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V PLcom/android/server/oemlock/OemLock;-><init>()V PLcom/android/server/oemlock/OemLockService$1;-><init>(Lcom/android/server/oemlock/OemLockService;)V PLcom/android/server/oemlock/OemLockService$1;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V @@ -9923,12 +12078,6 @@ PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$1;->get()Ljava/lang PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;->$m$0(Ljava/lang/Object;)I PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;-><init>()V PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;->applyAsInt(Ljava/lang/Object;)I -PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->$m$0(Ljava/lang/Object;)Z -PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;-><init>(Ljava/lang/Object;)V -PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->test(Ljava/lang/Object;)Z -PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->$m$0(Ljava/lang/Object;)Z -PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;-><init>(I)V -PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->test(Ljava/lang/Object;)Z PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$0(Ljava/lang/Object;)Ljava/lang/Object; PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$1(Ljava/lang/Object;)Ljava/lang/Object; PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$2(Ljava/lang/Object;)Ljava/lang/Object; @@ -9943,21 +12092,20 @@ PLcom/android/server/om/IdmapManager;->createIdmap(Landroid/content/pm/PackageIn PLcom/android/server/om/IdmapManager;->getIdmapPath(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/om/IdmapManager;->idmapExists(Landroid/content/pm/PackageInfo;I)Z PLcom/android/server/om/OverlayManagerService$1;-><init>(Lcom/android/server/om/OverlayManagerService;)V -PLcom/android/server/om/OverlayManagerService$1;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; -PLcom/android/server/om/OverlayManagerService$1;->handleIncomingUser(ILjava/lang/String;)I PLcom/android/server/om/OverlayManagerService$OverlayChangeListener;-><init>(Lcom/android/server/om/OverlayManagerService;)V PLcom/android/server/om/OverlayManagerService$OverlayChangeListener;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$OverlayChangeListener;)V PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;-><init>()V PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->cachePackageInfo(Ljava/lang/String;ILandroid/content/pm/PackageInfo;)V +PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->forgetPackageInfo(Ljava/lang/String;I)V PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getCachedPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getOverlayPackages(I)Ljava/util/List; PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo; PLcom/android/server/om/OverlayManagerService$PackageReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;)V PLcom/android/server/om/OverlayManagerService$PackageReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$PackageReceiver;)V -PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageAdded(Ljava/lang/String;[I)V PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageChanged(Ljava/lang/String;[I)V -PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageUpgraded(Ljava/lang/String;[I)V +PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageUpgrading(Ljava/lang/String;[I)V PLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;)V PLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$UserReceiver;)V PLcom/android/server/om/OverlayManagerService;->-get0(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayManagerServiceImpl; @@ -9968,7 +12116,7 @@ PLcom/android/server/om/OverlayManagerService;-><init>(Landroid/content/Context; PLcom/android/server/om/OverlayManagerService;->getDefaultOverlayPackages()Ljava/util/Set; PLcom/android/server/om/OverlayManagerService;->initIfNeeded()V PLcom/android/server/om/OverlayManagerService;->isOverlayPackage(Landroid/content/pm/PackageInfo;)Z -PLcom/android/server/om/OverlayManagerService;->lambda$-com_android_server_om_OverlayManagerService_30951()V +PLcom/android/server/om/OverlayManagerService;->lambda$-com_android_server_om_OverlayManagerService_31270()V PLcom/android/server/om/OverlayManagerService;->lambda$-com_android_server_om_OverlayManagerService_9907()V PLcom/android/server/om/OverlayManagerService;->onBootPhase(I)V PLcom/android/server/om/OverlayManagerService;->onStart()V @@ -9976,16 +12124,16 @@ PLcom/android/server/om/OverlayManagerService;->onSwitchUser(I)V PLcom/android/server/om/OverlayManagerService;->restoreSettings()V PLcom/android/server/om/OverlayManagerService;->schedulePersistSettings()V PLcom/android/server/om/OverlayManagerService;->updateAssets(ILjava/util/List;)V -PLcom/android/server/om/OverlayManagerService;->updateOverlayPaths(ILjava/util/List;)V PLcom/android/server/om/OverlayManagerServiceImpl;-><init>(Lcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;Lcom/android/server/om/IdmapManager;Lcom/android/server/om/OverlayManagerSettings;Ljava/util/Set;Lcom/android/server/om/OverlayManagerServiceImpl$OverlayChangeListener;)V PLcom/android/server/om/OverlayManagerServiceImpl;->calculateNewState(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)I -PLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPackageNames(Ljava/lang/String;I)Ljava/util/List; PLcom/android/server/om/OverlayManagerServiceImpl;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; -PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageAdded(Ljava/lang/String;I)V PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageChanged(Ljava/lang/String;I)V +PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageUpgraded(Ljava/lang/String;I)V +PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageUpgrading(Ljava/lang/String;I)V PLcom/android/server/om/OverlayManagerServiceImpl;->updateAllOverlaysForTarget(Ljava/lang/String;ILandroid/content/pm/PackageInfo;)Z PLcom/android/server/om/OverlayManagerServiceImpl;->updateOverlaysForUser(I)Ljava/util/ArrayList; PLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)Z +PLcom/android/server/om/OverlayManagerSettings$BadKeyException;-><init>(Ljava/lang/String;I)V PLcom/android/server/om/OverlayManagerSettings$Serializer;->persist(Ljava/util/ArrayList;Ljava/io/OutputStream;)V PLcom/android/server/om/OverlayManagerSettings$Serializer;->persistRow(Lcom/android/internal/util/FastXmlSerializer;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V PLcom/android/server/om/OverlayManagerSettings$Serializer;->restore(Ljava/util/ArrayList;Ljava/io/InputStream;)V @@ -9993,21 +12141,17 @@ PLcom/android/server/om/OverlayManagerSettings$Serializer;->restoreRow(Lorg/xmlp PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get0(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get1(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get2(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z -PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get4(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get5(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get6(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; -PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get7(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap0(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo; PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap1(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap6(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap7(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I -PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap9(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; PLcom/android/server/om/OverlayManagerSettings$SettingsItem;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZZI)V PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getOverlayInfo()Landroid/content/om/OverlayInfo; PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getState()I -PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetPackageName()Ljava/lang/String; PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getUserId()I PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->isEnabled()Z PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setBaseCodePath(Ljava/lang/String;)Z @@ -10017,52 +12161,33 @@ PLcom/android/server/om/OverlayManagerSettings;->-com_android_server_om_OverlayM PLcom/android/server/om/OverlayManagerSettings;->-com_android_server_om_OverlayManagerSettings-mthref-3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I PLcom/android/server/om/OverlayManagerSettings;-><init>()V PLcom/android/server/om/OverlayManagerSettings;->getEnabled(Ljava/lang/String;I)Z -PLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; -PLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(Ljava/lang/String;I)Ljava/util/List; PLcom/android/server/om/OverlayManagerSettings;->getOverlaysForUser(I)Landroid/util/ArrayMap; PLcom/android/server/om/OverlayManagerSettings;->getState(Ljava/lang/String;I)I PLcom/android/server/om/OverlayManagerSettings;->getUsers()[I -PLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19551(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z -PLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19778(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z PLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_6314(Landroid/content/om/OverlayInfo;)Ljava/lang/String; PLcom/android/server/om/OverlayManagerSettings;->persist(Ljava/io/OutputStream;)V PLcom/android/server/om/OverlayManagerSettings;->restore(Ljava/io/InputStream;)V -PLcom/android/server/om/OverlayManagerSettings;->select(Ljava/lang/String;I)I -PLcom/android/server/om/OverlayManagerSettings;->selectWhereTarget(Ljava/lang/String;I)Ljava/util/stream/Stream; -PLcom/android/server/om/OverlayManagerSettings;->selectWhereUser(I)Ljava/util/stream/Stream; PLcom/android/server/om/OverlayManagerSettings;->setBaseCodePath(Ljava/lang/String;ILjava/lang/String;)Z PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerial()Ljava/lang/String; PLcom/android/server/os/SchedulingPolicyService;-><init>()V PLcom/android/server/os/SchedulingPolicyService;->isPermitted()Z PLcom/android/server/os/SchedulingPolicyService;->requestPriority(IIIZ)I -PLcom/android/server/pm/-$Lambda$4qJi2sHY5X4ys3rtlAQIsVPSn60;->$m$1(Ljava/lang/Object;)V -PLcom/android/server/pm/-$Lambda$4qJi2sHY5X4ys3rtlAQIsVPSn60;-><init>(BLjava/lang/Object;)V -PLcom/android/server/pm/-$Lambda$4qJi2sHY5X4ys3rtlAQIsVPSn60;->accept(Ljava/lang/Object;)V PLcom/android/server/pm/-$Lambda$KFbchFEqJgs_hY1HweauKRNA_ds;-><init>(BLjava/lang/Object;)V -PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->$m$1(Ljava/lang/Object;)V PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;-><init>(BILjava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->accept(Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;->$m$6(Ljava/lang/Object;)V PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;-><init>(B)V +PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;->accept(Ljava/lang/Object;)V PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$0()V -PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$1()V -PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$2()V PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$3()V -PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;-><init>(BILjava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->run()V PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$1()V PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$2()V PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$3()V PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;-><init>(BLjava/lang/Object;)V PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->run()V -PLcom/android/server/pm/-$Lambda$kozCdtU4hxwnpbopzC6ZLMsBV5E$2;->$m$1()V -PLcom/android/server/pm/-$Lambda$kozCdtU4hxwnpbopzC6ZLMsBV5E$2;-><init>(BIJLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/pm/-$Lambda$kozCdtU4hxwnpbopzC6ZLMsBV5E$2;->run()V PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;->$m$0()V PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;-><init>(IJLjava/lang/Object;)V PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;->run()V -PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->$m$0(Ljava/lang/Object;)Z PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;-><init>(IJLjava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->test(Ljava/lang/Object;)Z PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;->$m$0(Ljava/lang/Object;)V PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;-><init>(IIIIJLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;->accept(Ljava/lang/Object;)V @@ -10077,32 +12202,30 @@ PLcom/android/server/pm/-$Lambda$s_oh3oeib-Exts1l3lS2Euiarsw;->test(Ljava/lang/O PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;->$m$3(Ljava/lang/Object;Ljava/lang/Object;)I PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;-><init>(B)V PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -PLcom/android/server/pm/AbstractStatsBase;->getFile()Landroid/util/AtomicFile; -PLcom/android/server/pm/AbstractStatsBase;->read(Ljava/lang/Object;)V +PLcom/android/server/pm/AbstractStatsBase$1;-><init>(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/String;Ljava/lang/Object;)V +PLcom/android/server/pm/AbstractStatsBase$1;->run()V +PLcom/android/server/pm/AbstractStatsBase;->-get0(Lcom/android/server/pm/AbstractStatsBase;)Ljava/util/concurrent/atomic/AtomicBoolean; +PLcom/android/server/pm/AbstractStatsBase;->-get1(Lcom/android/server/pm/AbstractStatsBase;)Ljava/util/concurrent/atomic/AtomicLong; +PLcom/android/server/pm/AbstractStatsBase;->-wrap0(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/Object;)V +PLcom/android/server/pm/AbstractStatsBase;->writeImpl(Ljava/lang/Object;)V PLcom/android/server/pm/BackgroundDexOptService$1;-><init>(Lcom/android/server/pm/BackgroundDexOptService;Ljava/lang/String;Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V PLcom/android/server/pm/BackgroundDexOptService$1;->run()V PLcom/android/server/pm/BackgroundDexOptService;->-wrap1(Lcom/android/server/pm/BackgroundDexOptService;Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V PLcom/android/server/pm/BackgroundDexOptService;-><init>()V -PLcom/android/server/pm/BackgroundDexOptService;->getBatteryLevel()I +PLcom/android/server/pm/BackgroundDexOptService;->getDowngradeUnusedAppsThresholdInMillis()J PLcom/android/server/pm/BackgroundDexOptService;->getLowStorageThreshold(Landroid/content/Context;)J +PLcom/android/server/pm/BackgroundDexOptService;->isBackgroundDexoptDisabled()Z PLcom/android/server/pm/BackgroundDexOptService;->notifyPackageChanged(Ljava/lang/String;)V PLcom/android/server/pm/BackgroundDexOptService;->notifyPinService(Landroid/util/ArraySet;)V PLcom/android/server/pm/BackgroundDexOptService;->onStartJob(Landroid/app/job/JobParameters;)Z -PLcom/android/server/pm/BackgroundDexOptService;->postBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V PLcom/android/server/pm/BackgroundDexOptService;->runPostBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)Z PLcom/android/server/pm/BackgroundDexOptService;->schedule(Landroid/content/Context;)V PLcom/android/server/pm/BasePermission;->isDevelopment()Z PLcom/android/server/pm/BasePermission;->isRuntime()Z -PLcom/android/server/pm/CompilerStats$PackageStats;-><init>(Ljava/lang/String;)V +PLcom/android/server/pm/CompilerStats$PackageStats;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V PLcom/android/server/pm/CompilerStats$PackageStats;->getStoredPathFromCodePath(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/pm/CompilerStats$PackageStats;->setCompileTime(Ljava/lang/String;J)V -PLcom/android/server/pm/CompilerStats;->createPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; -PLcom/android/server/pm/CompilerStats;->getOrCreatePackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; -PLcom/android/server/pm/CompilerStats;->maybeWriteAsync()Z -PLcom/android/server/pm/CompilerStats;->read()V -PLcom/android/server/pm/CompilerStats;->read(Ljava/io/Reader;)Z -PLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Object;)V -PLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Void;)V +PLcom/android/server/pm/CompilerStats;->getPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; PLcom/android/server/pm/DefaultPermissionGrantPolicy$1;->handleMessage(Landroid/os/Message;)V PLcom/android/server/pm/DefaultPermissionGrantPolicy$DefaultPermissionGrant;-><init>(Ljava/lang/String;Z)V PLcom/android/server/pm/DefaultPermissionGrantPolicy;->-get0(Lcom/android/server/pm/DefaultPermissionGrantPolicy;)Landroid/util/ArrayMap; @@ -10128,43 +12251,43 @@ PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setSyncAdapterPackagesPro PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setVoiceInteractionPackagesProviderLPw(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V PLcom/android/server/pm/EphemeralResolverConnection$ConnectionException;-><init>(I)V PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1;-><init>(Lcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;)V -PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1;->sendResult(Landroid/os/Bundle;)V PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->-wrap0(Lcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;Ljava/lang/Object;I)V PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;-><init>()V -PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->getEphemeralResolveInfoList(Landroid/app/IInstantAppResolver;[ILjava/lang/String;)Ljava/util/List; PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/EphemeralResolverConnection;)V PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/EphemeralResolverConnection;Lcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;)V PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V PLcom/android/server/pm/EphemeralResolverConnection;->-get0()J PLcom/android/server/pm/EphemeralResolverConnection;->-get1()Z -PLcom/android/server/pm/EphemeralResolverConnection;->-get2(Lcom/android/server/pm/EphemeralResolverConnection;)Ljava/lang/Object; -PLcom/android/server/pm/EphemeralResolverConnection;->-set0(Lcom/android/server/pm/EphemeralResolverConnection;Z)Z +PLcom/android/server/pm/EphemeralResolverConnection;->-get2(Lcom/android/server/pm/EphemeralResolverConnection;)I +PLcom/android/server/pm/EphemeralResolverConnection;->-get3(Lcom/android/server/pm/EphemeralResolverConnection;)Ljava/lang/Object; +PLcom/android/server/pm/EphemeralResolverConnection;->-set0(Lcom/android/server/pm/EphemeralResolverConnection;I)I PLcom/android/server/pm/EphemeralResolverConnection;->-set1(Lcom/android/server/pm/EphemeralResolverConnection;Landroid/app/IInstantAppResolver;)Landroid/app/IInstantAppResolver; +PLcom/android/server/pm/EphemeralResolverConnection;->-wrap0(Lcom/android/server/pm/EphemeralResolverConnection;)V PLcom/android/server/pm/EphemeralResolverConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Ljava/lang/String;)V -PLcom/android/server/pm/EphemeralResolverConnection;->bindLocked(Ljava/lang/String;)V -PLcom/android/server/pm/EphemeralResolverConnection;->getInstantAppResolveInfoList([ILjava/lang/String;)Ljava/util/List; -PLcom/android/server/pm/EphemeralResolverConnection;->getRemoteInstanceLazy(Ljava/lang/String;)Landroid/app/IInstantAppResolver; -PLcom/android/server/pm/EphemeralResolverConnection;->throwIfCalledOnMainThread()V +PLcom/android/server/pm/EphemeralResolverConnection;->bind(Ljava/lang/String;)Landroid/app/IInstantAppResolver; +PLcom/android/server/pm/EphemeralResolverConnection;->binderDied()V +PLcom/android/server/pm/EphemeralResolverConnection;->handleBinderDiedLocked()V PLcom/android/server/pm/EphemeralResolverConnection;->waitForBindLocked(Ljava/lang/String;)V PLcom/android/server/pm/Installer$InstallerException;-><init>(Ljava/lang/String;)V PLcom/android/server/pm/Installer$InstallerException;->from(Ljava/lang/Exception;)Lcom/android/server/pm/Installer$InstallerException; PLcom/android/server/pm/Installer;->assertValidInstructionSet(Ljava/lang/String;)V -PLcom/android/server/pm/Installer;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J +PLcom/android/server/pm/Installer;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V +PLcom/android/server/pm/Installer;->clearAppProfiles(Ljava/lang/String;)V PLcom/android/server/pm/Installer;->createOatDir(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/pm/Installer;->createUserData(Ljava/lang/String;III)V -PLcom/android/server/pm/Installer;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/pm/Installer;->fixupAppData(Ljava/lang/String;I)V +PLcom/android/server/pm/Installer;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V PLcom/android/server/pm/Installer;->getUserSize(Ljava/lang/String;II[ILandroid/content/pm/PackageStats;)V PLcom/android/server/pm/Installer;->idmap(Ljava/lang/String;Ljava/lang/String;I)V PLcom/android/server/pm/Installer;->isQuotaSupported(Ljava/lang/String;)Z PLcom/android/server/pm/Installer;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V PLcom/android/server/pm/Installer;->markBootComplete(Ljava/lang/String;)V PLcom/android/server/pm/Installer;->rmPackageDir(Ljava/lang/String;)V +PLcom/android/server/pm/Installer;->rmdex(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/pm/Installer;->setAppQuota(Ljava/lang/String;IIJ)V PLcom/android/server/pm/Installer;->setWarnIfHeld(Ljava/lang/Object;)V PLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationDir(Ljava/lang/String;I)Ljava/io/File; PLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationsDir(I)Ljava/io/File; -PLcom/android/server/pm/InstantAppRegistry;->grantInstantAccessLPw(ILandroid/content/Intent;II)V PLcom/android/server/pm/InstantAppRegistry;->isInstantAccessGranted(III)Z PLcom/android/server/pm/InstantAppRegistry;->onPackageInstalledLPw(Landroid/content/pm/PackageParser$Package;[I)V PLcom/android/server/pm/InstantAppRegistry;->parseMetadataFile(Ljava/io/File;)Lcom/android/server/pm/InstantAppRegistry$UninstalledInstantAppState; @@ -10172,81 +12295,28 @@ PLcom/android/server/pm/InstantAppRegistry;->peekInstantCookieFile(Ljava/lang/St PLcom/android/server/pm/InstantAppRegistry;->peekOrParseUninstalledInstantAppInfo(Ljava/lang/String;I)Landroid/content/pm/InstantAppInfo; PLcom/android/server/pm/InstantAppRegistry;->propagateInstantAppPermissionsIfNeeded(Ljava/lang/String;I)V PLcom/android/server/pm/InstantAppRegistry;->removeUninstalledInstantAppStateLPw(Ljava/util/function/Predicate;I)V -PLcom/android/server/pm/InstantAppResolver;->doInstantAppResolutionPhaseOne(Landroid/content/Context;Lcom/android/server/pm/EphemeralResolverConnection;Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/AuxiliaryResolveInfo; -PLcom/android/server/pm/InstantAppResolver;->getLogger()Lcom/android/internal/logging/MetricsLogger; -PLcom/android/server/pm/InstantAppResolver;->logMetrics(IJLjava/lang/String;I)V -PLcom/android/server/pm/InstructionSets;->getAllDexCodeInstructionSets()[Ljava/lang/String; -PLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Landroid/content/pm/ApplicationInfo;)[Ljava/lang/String; -PLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSets([Ljava/lang/String;)[Ljava/lang/String; -PLcom/android/server/pm/InstructionSets;->getPreferredInstructionSet()Ljava/lang/String; -PLcom/android/server/pm/InstructionSets;->getPrimaryInstructionSet(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String; -PLcom/android/server/pm/KeySetHandle;-><init>(J)V -PLcom/android/server/pm/KeySetHandle;-><init>(JI)V -PLcom/android/server/pm/KeySetHandle;->getId()J -PLcom/android/server/pm/KeySetHandle;->getRefCountLPr()I -PLcom/android/server/pm/KeySetHandle;->setRefCountLPw(I)V -PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;)V -PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;)V -PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JLjava/security/PublicKey;)V -PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->getKey()Ljava/security/PublicKey; -PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->incrRefCountLPw()V -PLcom/android/server/pm/KeySetManagerService;->addKeySetLPw(Landroid/util/ArraySet;)Lcom/android/server/pm/KeySetHandle; -PLcom/android/server/pm/KeySetManagerService;->addPublicKeyLPw(Ljava/security/PublicKey;)J -PLcom/android/server/pm/KeySetManagerService;->addRefCountsFromSavedPackagesLPw(Landroid/util/ArrayMap;)V -PLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Landroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/KeySetManagerService;->addSigningKeySetToPackageLPw(Lcom/android/server/pm/PackageSetting;Landroid/util/ArraySet;)V -PLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Landroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/KeySetManagerService;->encodePublicKey(Ljava/security/PublicKey;)Ljava/lang/String; -PLcom/android/server/pm/KeySetManagerService;->getFreeKeySetIDLPw()J -PLcom/android/server/pm/KeySetManagerService;->getFreePublicKeyIdLPw()J -PLcom/android/server/pm/KeySetManagerService;->getIdForPublicKeyLPr(Ljava/security/PublicKey;)J -PLcom/android/server/pm/KeySetManagerService;->getIdFromKeyIdsLPr(Ljava/util/Set;)J -PLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet; -PLcom/android/server/pm/KeySetManagerService;->readKeySetListLPw(Lorg/xmlpull/v1/XmlPullParser;)V -PLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;)V -PLcom/android/server/pm/KeySetManagerService;->readKeysLPw(Lorg/xmlpull/v1/XmlPullParser;)V -PLcom/android/server/pm/KeySetManagerService;->readPublicKeyLPw(Lorg/xmlpull/v1/XmlPullParser;)V -PLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lorg/xmlpull/v1/XmlSerializer;)V -PLcom/android/server/pm/KeySetManagerService;->writeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;)V -PLcom/android/server/pm/KeySetManagerService;->writePublicKeysLPr(Lorg/xmlpull/v1/XmlSerializer;)V +PLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Lcom/android/server/pm/PackageSetting;)[Ljava/lang/String; PLcom/android/server/pm/LauncherAppsService$BroadcastCookie;-><init>(Landroid/os/UserHandle;Ljava/lang/String;)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->lambda$-com_android_server_pm_LauncherAppsService$LauncherAppsImpl$MyPackageMonitor_38233(Ljava/lang/String;I)V -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChanged(Ljava/lang/String;I)V -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-get0(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList; PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-get1(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Landroid/content/pm/ShortcutServiceInternal; PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-wrap0(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;-><init>(Landroid/content/Context;)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;ILjava/lang/String;)Z -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;)Z PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->ensureShortcutPermission(Ljava/lang/String;)V -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfo(Ljava/lang/String;Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo; PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getCallingUserId()I PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcutIconFd(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor; PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasShortcutHostPermission(Ljava/lang/String;)Z -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectCallingUserId()I -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isEnabledProfileOf(Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(I)Z -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(Landroid/os/UserHandle;)Z -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->pinShortcuts(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->postToPackageMonitorHandler(Ljava/lang/Runnable;)V -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo; PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startWatchingPackageBroadcasts()V PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;)V PLcom/android/server/pm/LauncherAppsService;-><init>(Landroid/content/Context;)V @@ -10254,38 +12324,21 @@ PLcom/android/server/pm/LauncherAppsService;->onStart()V PLcom/android/server/pm/OtaDexoptService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V PLcom/android/server/pm/OtaDexoptService;->main(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/OtaDexoptService; PLcom/android/server/pm/OtaDexoptService;->moveAbArtifacts(Lcom/android/server/pm/Installer;)V -PLcom/android/server/pm/PackageDexOptimizer;->acquireWakeLockLI(I)J PLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptFlags(I)I PLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptNeeded(I)I -PLcom/android/server/pm/PackageDexOptimizer;->canOptimizePackage(Landroid/content/pm/PackageParser$Package;)Z PLcom/android/server/pm/PackageDexOptimizer;->createOatDirIfSupported(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/pm/PackageDexOptimizer;->dexOptPath(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;IILcom/android/server/pm/CompilerStats$PackageStats;)I -PLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)I -PLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Z)I -PLcom/android/server/pm/PackageDexOptimizer;->getDexoptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I PLcom/android/server/pm/PackageDexOptimizer;->getOatDir(Ljava/io/File;)Ljava/io/File; -PLcom/android/server/pm/PackageDexOptimizer;->getRealCompilerFilter(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Ljava/lang/String; -PLcom/android/server/pm/PackageDexOptimizer;->getSharedLibrariesPath([Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/pm/PackageDexOptimizer;->getSplitDependencies(Landroid/content/pm/PackageParser$Package;)[Ljava/lang/String; -PLcom/android/server/pm/PackageDexOptimizer;->performDexOpt(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;ZZ)I -PLcom/android/server/pm/PackageDexOptimizer;->performDexOptLI(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;ZZ)I PLcom/android/server/pm/PackageDexOptimizer;->printDexoptFlags(I)Ljava/lang/String; -PLcom/android/server/pm/PackageDexOptimizer;->releaseWakeLockLI(J)V PLcom/android/server/pm/PackageDexOptimizer;->systemReady()V -PLcom/android/server/pm/PackageInstallerService$1;-><init>()V PLcom/android/server/pm/PackageInstallerService$1;->accept(Ljava/io/File;Ljava/lang/String;)Z PLcom/android/server/pm/PackageInstallerService$2;-><init>(Lcom/android/server/pm/PackageInstallerService;)V PLcom/android/server/pm/PackageInstallerService$2;->run()V PLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap0(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIZ)V PLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap2(Lcom/android/server/pm/PackageInstallerService$Callbacks;II)V -PLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap3(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIF)V PLcom/android/server/pm/PackageInstallerService$Callbacks;-><init>(Landroid/os/Looper;)V -PLcom/android/server/pm/PackageInstallerService$Callbacks;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/pm/PackageInstallerService$Callbacks;->invokeCallback(Landroid/content/pm/IPackageInstallerCallback;Landroid/os/Message;)V PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionActiveChanged(IIZ)V PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionCreated(II)V PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionFinished(IIZ)V -PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionProgressChanged(IIF)V PLcom/android/server/pm/PackageInstallerService$Callbacks;->register(Landroid/content/pm/IPackageInstallerCallback;I)V PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Lcom/android/server/pm/PackageInstallerSession;)V PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;->run()V @@ -10293,11 +12346,9 @@ PLcom/android/server/pm/PackageInstallerService$InternalCallback;-><init>(Lcom/a PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionActiveChanged(Lcom/android/server/pm/PackageInstallerSession;Z)V PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionFinished(Lcom/android/server/pm/PackageInstallerSession;Z)V PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionPrepared(Lcom/android/server/pm/PackageInstallerSession;)V -PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionProgressChanged(Lcom/android/server/pm/PackageInstallerSession;F)V PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionSealedBlocking(Lcom/android/server/pm/PackageInstallerSession;)V PLcom/android/server/pm/PackageInstallerService$PackageInstallObserverAdapter;-><init>(Landroid/content/Context;Landroid/content/IntentSender;IZI)V PLcom/android/server/pm/PackageInstallerService$PackageInstallObserverAdapter;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V -PLcom/android/server/pm/PackageInstallerService;->-get0(Lcom/android/server/pm/PackageInstallerService;)Lcom/android/server/pm/PackageInstallerService$Callbacks; PLcom/android/server/pm/PackageInstallerService;->-get1(Lcom/android/server/pm/PackageInstallerService;)Landroid/os/Handler; PLcom/android/server/pm/PackageInstallerService;->-get2(Lcom/android/server/pm/PackageInstallerService;)Landroid/util/SparseArray; PLcom/android/server/pm/PackageInstallerService;->-wrap1(Lcom/android/server/pm/PackageInstallerService;I)Ljava/io/File; @@ -10305,20 +12356,16 @@ PLcom/android/server/pm/PackageInstallerService;->-wrap2(Lcom/android/server/pm/ PLcom/android/server/pm/PackageInstallerService;->-wrap3(Lcom/android/server/pm/PackageInstallerService;)V PLcom/android/server/pm/PackageInstallerService;->-wrap4(Lcom/android/server/pm/PackageInstallerService;)V PLcom/android/server/pm/PackageInstallerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V -PLcom/android/server/pm/PackageInstallerService;->abandonSession(I)V PLcom/android/server/pm/PackageInstallerService;->addHistoricalSessionLocked(Lcom/android/server/pm/PackageInstallerSession;)V PLcom/android/server/pm/PackageInstallerService;->allocateSessionIdLocked()I PLcom/android/server/pm/PackageInstallerService;->buildAppIconFile(I)Ljava/io/File; PLcom/android/server/pm/PackageInstallerService;->buildStageDir(Ljava/lang/String;IZ)Ljava/io/File; PLcom/android/server/pm/PackageInstallerService;->buildStagingDir(Ljava/lang/String;Z)Ljava/io/File; PLcom/android/server/pm/PackageInstallerService;->createSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I -PLcom/android/server/pm/PackageInstallerService;->createSessionInternal(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I PLcom/android/server/pm/PackageInstallerService;->getAllSessions(I)Landroid/content/pm/ParceledListSlice; PLcom/android/server/pm/PackageInstallerService;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; PLcom/android/server/pm/PackageInstallerService;->getSessionCount(Landroid/util/SparseArray;I)I -PLcom/android/server/pm/PackageInstallerService;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo; PLcom/android/server/pm/PackageInstallerService;->isCallingUidOwner(Lcom/android/server/pm/PackageInstallerSession;)Z -PLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z PLcom/android/server/pm/PackageInstallerService;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet; PLcom/android/server/pm/PackageInstallerService;->onSecureContainersAvailable()V PLcom/android/server/pm/PackageInstallerService;->openSession(I)Landroid/content/pm/IPackageInstallerSession; @@ -10328,10 +12375,7 @@ PLcom/android/server/pm/PackageInstallerService;->readSessionsLocked()V PLcom/android/server/pm/PackageInstallerService;->reconcileStagesLocked(Ljava/lang/String;Z)V PLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V PLcom/android/server/pm/PackageInstallerService;->systemReady()V -PLcom/android/server/pm/PackageInstallerService;->writeGrantedRuntimePermissions(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V -PLcom/android/server/pm/PackageInstallerService;->writeSessionLocked(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageInstallerSession;)V PLcom/android/server/pm/PackageInstallerService;->writeSessionsAsync()V -PLcom/android/server/pm/PackageInstallerService;->writeSessionsLocked()V PLcom/android/server/pm/PackageInstallerSession$1;-><init>()V PLcom/android/server/pm/PackageInstallerSession$1;->accept(Ljava/io/File;)Z PLcom/android/server/pm/PackageInstallerSession$2;-><init>()V @@ -10341,70 +12385,61 @@ PLcom/android/server/pm/PackageInstallerSession$3;->handleMessage(Landroid/os/Me PLcom/android/server/pm/PackageInstallerSession$4;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V PLcom/android/server/pm/PackageInstallerSession$4;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V PLcom/android/server/pm/PackageInstallerSession;->-get0(Lcom/android/server/pm/PackageInstallerSession;)Ljava/lang/Object; -PLcom/android/server/pm/PackageInstallerSession;->-get1(Lcom/android/server/pm/PackageInstallerSession;)Lcom/android/server/pm/PackageManagerService; -PLcom/android/server/pm/PackageInstallerSession;->-set0(Lcom/android/server/pm/PackageInstallerSession;Landroid/content/pm/IPackageInstallObserver2;)Landroid/content/pm/IPackageInstallObserver2; -PLcom/android/server/pm/PackageInstallerSession;->-wrap0(Lcom/android/server/pm/PackageInstallerSession;Landroid/content/pm/PackageInfo;Landroid/content/pm/ApplicationInfo;)V +PLcom/android/server/pm/PackageInstallerSession;->-wrap0(Lcom/android/server/pm/PackageInstallerSession;)V PLcom/android/server/pm/PackageInstallerSession;->-wrap1(Lcom/android/server/pm/PackageInstallerSession;)V PLcom/android/server/pm/PackageInstallerSession;->-wrap2(Lcom/android/server/pm/PackageInstallerSession;ILjava/lang/String;Landroid/os/Bundle;)V PLcom/android/server/pm/PackageInstallerSession;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;IILjava/lang/String;ILandroid/content/pm/PackageInstaller$SessionParams;JLjava/io/File;Ljava/lang/String;ZZ)V -PLcom/android/server/pm/PackageInstallerSession;->assertApkConsistent(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;)V -PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotSealed(Ljava/lang/String;)V +PLcom/android/server/pm/PackageInstallerSession;->assertApkConsistentLocked(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;)V +PLcom/android/server/pm/PackageInstallerSession;->assertNoWriteFileTransfersOpenLocked()V +PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotCommittedOrDestroyedLocked(Ljava/lang/String;)V +PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotDestroyedLocked(Ljava/lang/String;)V +PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotSealedLocked(Ljava/lang/String;)V PLcom/android/server/pm/PackageInstallerSession;->close()V -PLcom/android/server/pm/PackageInstallerSession;->commit(Landroid/content/IntentSender;)V -PLcom/android/server/pm/PackageInstallerSession;->commitLocked(Landroid/content/pm/PackageInfo;Landroid/content/pm/ApplicationInfo;)V -PLcom/android/server/pm/PackageInstallerSession;->computeProgressLocked(Z)V +PLcom/android/server/pm/PackageInstallerSession;->closeInternal(Z)V +PLcom/android/server/pm/PackageInstallerSession;->commit(Landroid/content/IntentSender;Z)V +PLcom/android/server/pm/PackageInstallerSession;->commitLocked()V PLcom/android/server/pm/PackageInstallerSession;->destroyInternal()V PLcom/android/server/pm/PackageInstallerSession;->dispatchSessionFinished(ILjava/lang/String;Landroid/os/Bundle;)V PLcom/android/server/pm/PackageInstallerSession;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V -PLcom/android/server/pm/PackageInstallerSession;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;)V PLcom/android/server/pm/PackageInstallerSession;->extractNativeLibraries(Ljava/io/File;Ljava/lang/String;)V -PLcom/android/server/pm/PackageInstallerSession;->generateInfo()Landroid/content/pm/PackageInstaller$SessionInfo; -PLcom/android/server/pm/PackageInstallerSession;->generateInfo(Z)Landroid/content/pm/PackageInstaller$SessionInfo; -PLcom/android/server/pm/PackageInstallerSession;->getNames()[Ljava/lang/String; +PLcom/android/server/pm/PackageInstallerSession;->getInstallerUid()I +PLcom/android/server/pm/PackageInstallerSession;->isInstallerDeviceOwnerLocked()Z PLcom/android/server/pm/PackageInstallerSession;->isPrepared()Z PLcom/android/server/pm/PackageInstallerSession;->isSealed()Z +PLcom/android/server/pm/PackageInstallerSession;->needToAskForPermissionsLocked()Z PLcom/android/server/pm/PackageInstallerSession;->open()V PLcom/android/server/pm/PackageInstallerSession;->openWrite(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor; -PLcom/android/server/pm/PackageInstallerSession;->openWriteInternal(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor; -PLcom/android/server/pm/PackageInstallerSession;->resolveStageDir()Ljava/io/File; -PLcom/android/server/pm/PackageInstallerSession;->setClientProgress(F)V -PLcom/android/server/pm/PackageInstallerSession;->validateInstallLocked(Landroid/content/pm/PackageInfo;Landroid/content/pm/ApplicationInfo;)V -PLcom/android/server/pm/PackageKeySetData;->getAliases()Landroid/util/ArrayMap; -PLcom/android/server/pm/PackageKeySetData;->getProperSigningKeySet()J -PLcom/android/server/pm/PackageKeySetData;->isUsingUpgradeKeySets()Z -PLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;)V -PLcom/android/server/pm/PackageManagerService$18;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Landroid/content/ContentResolver;)V -PLcom/android/server/pm/PackageManagerService$18;->onChange(Z)V -PLcom/android/server/pm/PackageManagerService$19;-><init>(Lcom/android/server/pm/PackageManagerService;)V -PLcom/android/server/pm/PackageManagerService$19;->getMountMode(ILjava/lang/String;)I -PLcom/android/server/pm/PackageManagerService$19;->hasExternalStorage(ILjava/lang/String;)Z +PLcom/android/server/pm/PackageInstallerSession;->resolveStageDirLocked()Ljava/io/File; +PLcom/android/server/pm/PackageInstallerSession;->sealAndValidateLocked(Landroid/content/pm/PackageInfo;)V +PLcom/android/server/pm/PackageInstallerSession;->writeGrantedRuntimePermissionsLocked(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V +PLcom/android/server/pm/PackageKeySetData;->isUsingDefinedKeySets()Z +PLcom/android/server/pm/PackageManagerService$19;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Landroid/content/ContentResolver;)V +PLcom/android/server/pm/PackageManagerService$19;->onChange(Z)V PLcom/android/server/pm/PackageManagerService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V -PLcom/android/server/pm/PackageManagerService$3;->compare(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I -PLcom/android/server/pm/PackageManagerService$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -PLcom/android/server/pm/PackageManagerService$5;-><init>(Lcom/android/server/pm/PackageManagerService;[ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ILandroid/content/IIntentReceiver;)V -PLcom/android/server/pm/PackageManagerService$5;->run()V -PLcom/android/server/pm/PackageManagerService$6;-><init>(Lcom/android/server/pm/PackageManagerService;ILcom/android/server/pm/PackageManagerService$InstallArgs;)V -PLcom/android/server/pm/PackageManagerService$6;->run()V -PLcom/android/server/pm/PackageManagerService$8;-><init>(Lcom/android/server/pm/PackageManagerService;)V -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)Landroid/util/ArrayMap; -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->adjustPriority(Ljava/util/List;Landroid/content/pm/PackageParser$ActivityIntentInfo;)V -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->findMatchingActivity(Ljava/util/List;Landroid/content/pm/ActivityInfo;)Landroid/content/pm/PackageParser$Activity; -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->getIntentListSubset(Ljava/util/List;Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;Ljava/util/Iterator;)V -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isProtectedAction(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/IntentFilter; -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ActivityIntentInfo; -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->sortResults(Ljava/util/List;)V +PLcom/android/server/pm/PackageManagerService$20;-><init>(Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/PackageManagerService$6;-><init>(Lcom/android/server/pm/PackageManagerService;[ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ILandroid/content/IIntentReceiver;)V +PLcom/android/server/pm/PackageManagerService$7;-><init>(Lcom/android/server/pm/PackageManagerService;ILcom/android/server/pm/PackageManagerService$InstallArgs;)V +PLcom/android/server/pm/PackageManagerService$7;->run()V +PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$SchemesIterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V +PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$SchemesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator; PLcom/android/server/pm/PackageManagerService$DefaultContainerConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/pm/PackageManagerService$DumpState;-><init>()V +PLcom/android/server/pm/PackageManagerService$DumpState;->getSharedUser()Lcom/android/server/pm/SharedUserSetting; +PLcom/android/server/pm/PackageManagerService$DumpState;->getTitlePrinted()Z +PLcom/android/server/pm/PackageManagerService$DumpState;->isOptionEnabled(I)Z +PLcom/android/server/pm/PackageManagerService$DumpState;->onTitlePrinted()Z +PLcom/android/server/pm/PackageManagerService$DumpState;->setOptionEnabled(I)V +PLcom/android/server/pm/PackageManagerService$DumpState;->setSharedUser(Lcom/android/server/pm/SharedUserSetting;)V +PLcom/android/server/pm/PackageManagerService$DumpState;->setTitlePrinted(Z)V PLcom/android/server/pm/PackageManagerService$FileInstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)V +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->cleanUp()Z +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->cleanUpResourcesLI()V PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->copyApk(Lcom/android/internal/app/IMediaContainerService;Z)I PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doCopyApk(Lcom/android/internal/app/IMediaContainerService;Z)I +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPostDeleteLI(Z)Z PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPostInstall(II)I PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPreInstall(I)I -PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->getCodePath()Ljava/lang/String; PLcom/android/server/pm/PackageManagerService$HandlerParams;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/UserHandle;)V PLcom/android/server/pm/PackageManagerService$HandlerParams;->getUser()Landroid/os/UserHandle; @@ -10413,13 +12448,9 @@ PLcom/android/server/pm/PackageManagerService$HandlerParams;->setTraceMethod(Lja PLcom/android/server/pm/PackageManagerService$HandlerParams;->startCopy()Z PLcom/android/server/pm/PackageManagerService$IFVerificationParams;-><init>(Landroid/content/pm/PackageParser$Package;ZII)V PLcom/android/server/pm/PackageManagerService$InstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILjava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;I[[Ljava/security/cert/Certificate;I)V -PLcom/android/server/pm/PackageManagerService$InstallArgs;->getUser()Landroid/os/UserHandle; PLcom/android/server/pm/PackageManagerService$InstallArgs;->isFwdLocked()Z -PLcom/android/server/pm/PackageManagerService$InstallParams$1;-><init>(Lcom/android/server/pm/PackageManagerService$InstallParams;I)V -PLcom/android/server/pm/PackageManagerService$InstallParams$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/pm/PackageManagerService$InstallParams;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILjava/lang/String;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$VerificationInfo;Landroid/os/UserHandle;Ljava/lang/String;[Ljava/lang/String;[[Ljava/security/cert/Certificate;I)V PLcom/android/server/pm/PackageManagerService$InstallParams;->handleReturnCode()V -PLcom/android/server/pm/PackageManagerService$InstallParams;->handleStartCopy()V PLcom/android/server/pm/PackageManagerService$InstallParams;->installLocationPolicy(Landroid/content/pm/PackageInfoLite;)I PLcom/android/server/pm/PackageManagerService$InstallParams;->isForwardLocked()Z PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/content/Context;Landroid/content/ComponentName;)V @@ -10427,36 +12458,25 @@ PLcom/android/server/pm/PackageManagerService$MoveCallbacks;->register(Landroid/ PLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->addListenerLocked(Landroid/content/pm/IOnPermissionsChangeListener;)V PLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->removeListenerLocked(Landroid/content/pm/IOnPermissionsChangeListener;)V PLcom/android/server/pm/PackageManagerService$OriginInfo;-><init>(Ljava/io/File;Ljava/lang/String;ZZ)V +PLcom/android/server/pm/PackageManagerService$OriginInfo;->fromNothing()Lcom/android/server/pm/PackageManagerService$OriginInfo; PLcom/android/server/pm/PackageManagerService$OriginInfo;->fromStagedFile(Ljava/io/File;)Lcom/android/server/pm/PackageManagerService$OriginInfo; PLcom/android/server/pm/PackageManagerService$PackageFreezer;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ILjava/lang/String;)V PLcom/android/server/pm/PackageManagerService$PackageFreezer;->close()V PLcom/android/server/pm/PackageManagerService$PackageFreezer;->finalize()V PLcom/android/server/pm/PackageManagerService$PackageHandler;->connectToService()Z PLcom/android/server/pm/PackageManagerService$PackageHandler;->disconnectService()V -PLcom/android/server/pm/PackageManagerService$PackageHandler;->doHandleMessage(Landroid/os/Message;)V -PLcom/android/server/pm/PackageManagerService$PackageHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;-><init>()V PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;->setReturnCode(I)V PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;)V PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->addIsolatedUid(II)V -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canAccessInstantApps(II)Z -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getActivityInfo(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getApplicationInfo(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo; PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName; -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getOverlayPackages(I)Ljava/util/List; PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageInfo(Ljava/lang/String;III)Landroid/content/pm/PackageInfo; PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSetupWizardPackageName()Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getTargetPackageNames(I)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getUidTargetSdkVersion(I)I -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageEphemeral(ILjava/lang/String;)Z -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackagePersistent(Ljava/lang/String;)Z PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->queryIntentActivities(Landroid/content/Intent;III)Ljava/util/List; PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDialerAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V -PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILjava/lang/String;Ljava/util/List;)Z PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setExternalSourcesPolicy(Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;)V PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setLocationPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSimCallManagerPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V @@ -10464,13 +12484,14 @@ PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSm PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSyncAdapterPackagesprovider(Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;)V PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setVoiceInteractionPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->wasPackageEverLaunched(Ljava/lang/String;I)Z -PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService$PackageManagerNative;-><init>(Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerNative;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageManagerNative;)V PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPackagesLocked(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/List; PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPathsLocked(Ljava/util/Collection;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->findStaticOverlayPackages()V -PLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;-><init>(Lcom/android/server/pm/PackageSender;)V +PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->populateUsers([ILcom/android/server/pm/PackageSetting;)V +PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcastInternal(Z)V +PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcasts(Z)V PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->clear()V PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->get(ILjava/lang/String;)Ljava/util/ArrayList; PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->getOrAllocate(I)Landroid/util/ArrayMap; @@ -10481,414 +12502,227 @@ PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdA PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdCount()I PLcom/android/server/pm/PackageManagerService$PostInstallData;-><init>(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver;)Landroid/util/ArrayMap; -PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->addProvider(Landroid/content/pm/PackageParser$Provider;)V -PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/IntentFilter; -PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ProviderIntentInfo; PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->removeProvider(Landroid/content/pm/PackageParser$Provider;)V PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->sortResults(Ljava/util/List;)V -PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)Landroid/util/ArrayMap; -PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/IntentFilter; -PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ServiceIntentInfo; -PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->sortResults(Ljava/util/List;)V PLcom/android/server/pm/PackageManagerService$VerificationInfo;-><init>(Landroid/net/Uri;Landroid/net/Uri;II)V PLcom/android/server/pm/PackageManagerService;->-get0()Z -PLcom/android/server/pm/PackageManagerService;->-get11(Lcom/android/server/pm/PackageManagerService;)I -PLcom/android/server/pm/PackageManagerService;->-get12(Lcom/android/server/pm/PackageManagerService;)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->-get13()Ljava/util/Comparator; -PLcom/android/server/pm/PackageManagerService;->-get2()Ljava/util/Set; +PLcom/android/server/pm/PackageManagerService;->-get1()[I PLcom/android/server/pm/PackageManagerService;->-get3(Lcom/android/server/pm/PackageManagerService;)Lcom/android/internal/app/IMediaContainerService; PLcom/android/server/pm/PackageManagerService;->-get4(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageManagerService$DefaultContainerConnection; -PLcom/android/server/pm/PackageManagerService;->-get5(Lcom/android/server/pm/PackageManagerService;)Z PLcom/android/server/pm/PackageManagerService;->-get6(Lcom/android/server/pm/PackageManagerService;)Landroid/util/ArraySet; -PLcom/android/server/pm/PackageManagerService;->-get7(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/InstantAppRegistry; PLcom/android/server/pm/PackageManagerService;->-set0(Lcom/android/server/pm/PackageManagerService;Lcom/android/internal/app/IMediaContainerService;)Lcom/android/internal/app/IMediaContainerService; PLcom/android/server/pm/PackageManagerService;->-set1(Lcom/android/server/pm/PackageManagerService;Z)Z -PLcom/android/server/pm/PackageManagerService;->-set3(Lcom/android/server/pm/PackageManagerService;I)I -PLcom/android/server/pm/PackageManagerService;->-wrap0(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName; -PLcom/android/server/pm/PackageManagerService;->-wrap1(Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; +PLcom/android/server/pm/PackageManagerService;->-wrap11(Landroid/content/pm/PackageParser$Package;)Z PLcom/android/server/pm/PackageManagerService;->-wrap12(Lcom/android/server/pm/PackageManagerService;III)Z -PLcom/android/server/pm/PackageManagerService;->-wrap13(Lcom/android/server/pm/PackageManagerService;I)Z -PLcom/android/server/pm/PackageManagerService;->-wrap14(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/DeviceIdleController$LocalService; PLcom/android/server/pm/PackageManagerService;->-wrap15(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs; -PLcom/android/server/pm/PackageManagerService;->-wrap18(Lcom/android/server/pm/PackageManagerService;I)I PLcom/android/server/pm/PackageManagerService;->-wrap19(Lcom/android/server/pm/PackageManagerService;Ljava/io/File;Ljava/lang/String;)Ljava/io/File; -PLcom/android/server/pm/PackageManagerService;->-wrap2(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo; -PLcom/android/server/pm/PackageManagerService;->-wrap22(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/PackageInfoLite;Ljava/util/List;Lcom/android/server/pm/PackageVerificationState;)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->-wrap23(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIIZ)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->-wrap24(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->-wrap25(Lcom/android/server/pm/PackageManagerService;)J -PLcom/android/server/pm/PackageManagerService;->-wrap26(Lcom/android/server/pm/PackageManagerService;ILandroid/net/Uri;ILandroid/os/UserHandle;)V +PLcom/android/server/pm/PackageManagerService;->-wrap23(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List; PLcom/android/server/pm/PackageManagerService;->-wrap3(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo; -PLcom/android/server/pm/PackageManagerService;->-wrap32(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V +PLcom/android/server/pm/PackageManagerService;->-wrap32(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V PLcom/android/server/pm/PackageManagerService;->-wrap33(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V +PLcom/android/server/pm/PackageManagerService;->-wrap34(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IILjava/lang/String;)V PLcom/android/server/pm/PackageManagerService;->-wrap4(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IIII)Landroid/content/pm/PackageInfo; PLcom/android/server/pm/PackageManagerService;->-wrap40(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V -PLcom/android/server/pm/PackageManagerService;->-wrap47(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZLjava/util/ArrayList;I)V +PLcom/android/server/pm/PackageManagerService;->-wrap46(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZLjava/util/ArrayList;I)V PLcom/android/server/pm/PackageManagerService;->-wrap5(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo; -PLcom/android/server/pm/PackageManagerService;->-wrap52(Lcom/android/server/pm/PackageManagerService;IIZLandroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/PackageManagerService;->-wrap6(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; -PLcom/android/server/pm/PackageManagerService;->-wrap7(Lcom/android/server/pm/PackageManagerService;II)Z +PLcom/android/server/pm/PackageManagerService;->-wrap51(Lcom/android/server/pm/PackageManagerService;IIZLandroid/content/pm/PackageParser$Package;)V PLcom/android/server/pm/PackageManagerService;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V -PLcom/android/server/pm/PackageManagerService;->addSharedLibrariesLPw(Ljava/util/List;[I[Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageParser$Package;ZLandroid/util/ArraySet;)Landroid/util/ArraySet; -PLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPr(Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry;Landroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/PackageManagerService;->adjustCpuAbisForSharedUserLPw(Ljava/util/Set;Landroid/content/pm/PackageParser$Package;)V +PLcom/android/server/pm/PackageManagerService;->adjustPermissionProtectionFlagsLPr(ILjava/lang/String;I)I PLcom/android/server/pm/PackageManagerService;->apkHasCode(Ljava/lang/String;)Z -PLcom/android/server/pm/PackageManagerService;->applyPolicy(Landroid/content/pm/PackageParser$Package;I)V PLcom/android/server/pm/PackageManagerService;->applyPostContentProviderResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List; +PLcom/android/server/pm/PackageManagerService;->arrayToString([I)Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->assertCodePolicy(Landroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/PackageManagerService;->assertPackageIsValid(Landroid/content/pm/PackageParser$Package;II)V -PLcom/android/server/pm/PackageManagerService;->assertPackageKnownAndInstalled(Ljava/lang/String;Ljava/lang/String;I)V -PLcom/android/server/pm/PackageManagerService;->broadcastPackageVerified(ILandroid/net/Uri;ILandroid/os/UserHandle;)V -PLcom/android/server/pm/PackageManagerService;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService;->canViewInstantApps(II)Z -PLcom/android/server/pm/PackageManagerService;->checkDefaultBrowser()V +PLcom/android/server/pm/PackageManagerService;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->checkPackageFrozen(Ljava/lang/String;)V -PLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Ljava/lang/String;I)V -PLcom/android/server/pm/PackageManagerService;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I -PLcom/android/server/pm/PackageManagerService;->chooseBestActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Landroid/content/pm/ResolveInfo; -PLcom/android/server/pm/PackageManagerService;->collectAbsoluteCodePaths()Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;Ljava/io/File;I)V +PLcom/android/server/pm/PackageManagerService;->clearAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V +PLcom/android/server/pm/PackageManagerService;->clearAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V +PLcom/android/server/pm/PackageManagerService;->clearAppProfilesLIF(Landroid/content/pm/PackageParser$Package;I)V +PLcom/android/server/pm/PackageManagerService;->clearAppProfilesLeafLIF(Landroid/content/pm/PackageParser$Package;)V PLcom/android/server/pm/PackageManagerService;->createInstallArgs(Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs; -PLcom/android/server/pm/PackageManagerService;->deleteTempPackageFiles()V -PLcom/android/server/pm/PackageManagerService;->deriveAbiOverride(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->createInstallArgsForExisting(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lcom/android/server/pm/PackageManagerService$InstallArgs; +PLcom/android/server/pm/PackageManagerService;->deleteInstalledPackageLIF(Lcom/android/server/pm/PackageSetting;ZI[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/PackageParser$Package;)Z +PLcom/android/server/pm/PackageManagerService;->deletePackageLIF(Ljava/lang/String;Landroid/os/UserHandle;Z[IILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/PackageParser$Package;)Z PLcom/android/server/pm/PackageManagerService;->derivePackageAbi(Landroid/content/pm/PackageParser$Package;Ljava/io/File;Ljava/lang/String;ZLjava/io/File;)V +PLcom/android/server/pm/PackageManagerService;->disableSystemPackageLPw(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)Z PLcom/android/server/pm/PackageManagerService;->enableSystemUserPackages()V PLcom/android/server/pm/PackageManagerService;->enforceDeclaredAsUsedAndRuntimeOrDevelopmentPermission(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/BasePermission;)V PLcom/android/server/pm/PackageManagerService;->enforceGrantRevokeRuntimePermissionPermissions(Ljava/lang/String;)V -PLcom/android/server/pm/PackageManagerService;->enforceShellRestriction(Ljava/lang/String;II)V PLcom/android/server/pm/PackageManagerService;->enforceSystemOrPhoneCaller(Ljava/lang/String;)V PLcom/android/server/pm/PackageManagerService;->enforceSystemOrRoot(Ljava/lang/String;)V PLcom/android/server/pm/PackageManagerService;->extrasForInstallResult(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)Landroid/os/Bundle; -PLcom/android/server/pm/PackageManagerService;->filterCandidatesWithDomainPreferredActivitiesLPr(Landroid/content/Intent;ILjava/util/List;Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;I)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List; PLcom/android/server/pm/PackageManagerService;->findPersistentPreferredActivityLP(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;ZI)Landroid/content/pm/ResolveInfo; PLcom/android/server/pm/PackageManagerService;->findPreferredActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;IZZZI)Landroid/content/pm/ResolveInfo; -PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibraries(Landroid/content/pm/PackageParser$Package;)Ljava/util/List; PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrariesRecursive(Landroid/content/pm/PackageParser$Package;Ljava/util/ArrayList;Ljava/util/Set;)V PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrariesRecursive(Ljava/util/ArrayList;[ILjava/util/ArrayList;Ljava/util/Set;)V PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrary(Ljava/lang/String;I)Landroid/content/pm/PackageParser$Package; -PLcom/android/server/pm/PackageManagerService;->finishPackageInstall(IZ)V PLcom/android/server/pm/PackageManagerService;->fixUpInstallReason(Ljava/lang/String;II)I PLcom/android/server/pm/PackageManagerService;->freeStorage(Ljava/lang/String;JI)V -PLcom/android/server/pm/PackageManagerService;->freeStorageAndNotify(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V PLcom/android/server/pm/PackageManagerService;->freezePackage(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer; PLcom/android/server/pm/PackageManagerService;->freezePackageForInstall(Ljava/lang/String;IILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer; PLcom/android/server/pm/PackageManagerService;->freezePackageForInstall(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer; PLcom/android/server/pm/PackageManagerService;->generateApplicationInfoFromSettingsLPw(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo; PLcom/android/server/pm/PackageManagerService;->generatePermissionInfo(Lcom/android/server/pm/BasePermission;I)Landroid/content/pm/PermissionInfo; -PLcom/android/server/pm/PackageManagerService;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; -PLcom/android/server/pm/PackageManagerService;->getActivityInfoInternal(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; PLcom/android/server/pm/PackageManagerService;->getBlockUninstallForUser(Ljava/lang/String;I)Z -PLcom/android/server/pm/PackageManagerService;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I -PLcom/android/server/pm/PackageManagerService;->getDefaultBrowserPackageName(I)Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService;->getDefaultHomeActivity(I)Landroid/content/ComponentName; -PLcom/android/server/pm/PackageManagerService;->getDeviceIdleController()Lcom/android/server/DeviceIdleController$LocalService; +PLcom/android/server/pm/PackageManagerService;->getChangedPackages(II)Landroid/content/pm/ChangedPackages; +PLcom/android/server/pm/PackageManagerService;->getCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; PLcom/android/server/pm/PackageManagerService;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName; PLcom/android/server/pm/PackageManagerService;->getHomeIntent()Landroid/content/Intent; -PLcom/android/server/pm/PackageManagerService;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->getInstantAppAndroidId(Ljava/lang/String;I)Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->getInstantAppInstallerLPr()Landroid/content/pm/ActivityInfo; PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverLPr()Landroid/util/Pair; PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverSettingsLPr(Landroid/content/ComponentName;)Landroid/content/ComponentName; +PLcom/android/server/pm/PackageManagerService;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo; PLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifierComponentNameLPr()Landroid/content/ComponentName; -PLcom/android/server/pm/PackageManagerService;->getLastModifiedTime(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)J -PLcom/android/server/pm/PackageManagerService;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->getNameForUid(I)Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->getNextCodePath(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; -PLcom/android/server/pm/PackageManagerService;->getOptimizablePackages()Landroid/util/ArraySet; -PLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/CompilerStats$PackageStats; -PLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; -PLcom/android/server/pm/PackageManagerService;->getPackageGids(Ljava/lang/String;II)[I -PLcom/android/server/pm/PackageManagerService;->getPackageInstaller()Landroid/content/pm/IPackageInstaller; +PLcom/android/server/pm/PackageManagerService;->getParentOrChildPackageChangedSharedUser(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;I)I -PLcom/android/server/pm/PackageManagerService;->getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; +PLcom/android/server/pm/PackageManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; PLcom/android/server/pm/PackageManagerService;->getPersistentApplications(I)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/PackageManagerService;->getPersistentApplicationsInternal(I)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo; -PLcom/android/server/pm/PackageManagerService;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; +PLcom/android/server/pm/PackageManagerService;->getPreviousCodePaths(Ljava/lang/String;)Ljava/util/List; PLcom/android/server/pm/PackageManagerService;->getRequiredButNotReallyRequiredVerifierLPr()Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->getRequiredInstallerLPr()Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->getRequiredSharedLibraryLPr(Ljava/lang/String;I)Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->getRequiredUninstallerLPr()Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/Settings$VersionInfo; -PLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageName()Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService;->getSharedLibraryEntryLPr(Ljava/lang/String;I)Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry; -PLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName()Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->getSettingsProblemFile()Ljava/io/File; PLcom/android/server/pm/PackageManagerService;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/PackageManagerService;->getSystemSharedLibraryNames()[Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService;->getUidTargetSdkVersionLockedLPr(I)I PLcom/android/server/pm/PackageManagerService;->getUnknownSourcesSettings()I -PLcom/android/server/pm/PackageManagerService;->getVerificationTimeout()J -PLcom/android/server/pm/PackageManagerService;->getVolumeUuidForPackage(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; PLcom/android/server/pm/PackageManagerService;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V +PLcom/android/server/pm/PackageManagerService;->grantRequestedRuntimePermissions(Landroid/content/pm/PackageParser$Package;[I[Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->grantRequestedRuntimePermissionsForUser(Landroid/content/pm/PackageParser$Package;I[Ljava/lang/String;)V PLcom/android/server/pm/PackageManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V PLcom/android/server/pm/PackageManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;IZ)V -PLcom/android/server/pm/PackageManagerService;->handlePackagePostInstall(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V PLcom/android/server/pm/PackageManagerService;->hasDomainURLs(Landroid/content/pm/PackageParser$Package;)Z -PLcom/android/server/pm/PackageManagerService;->hasNonNegativePriority(Ljava/util/List;)Z -PLcom/android/server/pm/PackageManagerService;->hasPermission(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z -PLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z PLcom/android/server/pm/PackageManagerService;->hasSystemUidErrors()Z -PLcom/android/server/pm/PackageManagerService;->hasWebURI(Landroid/content/Intent;)Z -PLcom/android/server/pm/PackageManagerService;->installNewPackageLIF(Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V +PLcom/android/server/pm/PackageManagerService;->installForwardLocked(I)Z PLcom/android/server/pm/PackageManagerService;->installOnExternalAsec(I)Z -PLcom/android/server/pm/PackageManagerService;->installPackageLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V PLcom/android/server/pm/PackageManagerService;->installPackageTracedLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V PLcom/android/server/pm/PackageManagerService;->installStage(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Landroid/content/pm/IPackageInstallObserver2;Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;ILandroid/os/UserHandle;[[Ljava/security/cert/Certificate;)V -PLcom/android/server/pm/PackageManagerService;->isCompatSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z -PLcom/android/server/pm/PackageManagerService;->isEphemeralDisabled()Z -PLcom/android/server/pm/PackageManagerService;->isExternal(Landroid/content/pm/PackageParser$Package;)Z -PLcom/android/server/pm/PackageManagerService;->isExternal(Lcom/android/server/pm/PackageSetting;)Z PLcom/android/server/pm/PackageManagerService;->isExternalMediaAvailable()Z PLcom/android/server/pm/PackageManagerService;->isFirstBoot()Z -PLcom/android/server/pm/PackageManagerService;->isInstantAppAllowed(Landroid/content/Intent;Ljava/util/List;IZ)Z PLcom/android/server/pm/PackageManagerService;->isMultiArch(Landroid/content/pm/ApplicationInfo;)Z -PLcom/android/server/pm/PackageManagerService;->isNewPlatformPermissionForPackage(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;)Z PLcom/android/server/pm/PackageManagerService;->isOnlyCoreApps()Z PLcom/android/server/pm/PackageManagerService;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;I)Z -PLcom/android/server/pm/PackageManagerService;->isPrivilegedApp(Landroid/content/pm/PackageParser$Package;)Z -PLcom/android/server/pm/PackageManagerService;->isProtectedBroadcast(Ljava/lang/String;)Z -PLcom/android/server/pm/PackageManagerService;->isRecoverSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z PLcom/android/server/pm/PackageManagerService;->isSafeMode()Z PLcom/android/server/pm/PackageManagerService;->isStorageLow()Z -PLcom/android/server/pm/PackageManagerService;->isSystemApp(Landroid/content/pm/PackageParser$Package;)Z -PLcom/android/server/pm/PackageManagerService;->isUidPrivileged(I)Z -PLcom/android/server/pm/PackageManagerService;->isUpdatedSystemApp(Lcom/android/server/pm/PackageSetting;)Z PLcom/android/server/pm/PackageManagerService;->isUpgrade()Z PLcom/android/server/pm/PackageManagerService;->isUserRestricted(ILjava/lang/String;)Z PLcom/android/server/pm/PackageManagerService;->isVerificationEnabled(III)Z -PLcom/android/server/pm/PackageManagerService;->lambda$-com_android_server_pm_PackageManagerService_135654(Ljava/util/List;I)V -PLcom/android/server/pm/PackageManagerService;->lambda$-com_android_server_pm_PackageManagerService_193108(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V +PLcom/android/server/pm/PackageManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V PLcom/android/server/pm/PackageManagerService;->loadMediaPackages(Landroid/util/ArrayMap;[IZ)V -PLcom/android/server/pm/PackageManagerService;->locationIsPrivileged(Ljava/io/File;)Z -PLcom/android/server/pm/PackageManagerService;->logAppProcessStartIfNeeded(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V -PLcom/android/server/pm/PackageManagerService;->matchComponentForVerifier(Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName; -PLcom/android/server/pm/PackageManagerService;->matchVerifiers(Landroid/content/pm/PackageInfoLite;Ljava/util/List;Lcom/android/server/pm/PackageVerificationState;)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->maybeAddInstantAppInstaller(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->maybeMigrateAppDataLIF(Landroid/content/pm/PackageParser$Package;I)Z -PLcom/android/server/pm/PackageManagerService;->normalizePackageNameLPr(Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/pm/PackageManagerService;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/lang/String;)V -PLcom/android/server/pm/PackageManagerService;->packageIsBrowser(Ljava/lang/String;I)Z -PLcom/android/server/pm/PackageManagerService;->performDexOptInternalWithDependenciesLI(Landroid/content/pm/PackageParser$Package;ZLjava/lang/String;ZZ)I -PLcom/android/server/pm/PackageManagerService;->performDexOptTraced(Ljava/lang/String;ZLjava/lang/String;ZZ)I -PLcom/android/server/pm/PackageManagerService;->performDexOptWithStatus(Ljava/lang/String;ZIZZ)I +PLcom/android/server/pm/PackageManagerService;->maybeThrowExceptionForMultiArchCopy(Ljava/lang/String;I)V +PLcom/android/server/pm/PackageManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V +PLcom/android/server/pm/PackageManagerService;->packageFlagsToInstallFlags(Lcom/android/server/pm/PackageSetting;)I PLcom/android/server/pm/PackageManagerService;->performFstrimIfNeeded()V PLcom/android/server/pm/PackageManagerService;->prepareAppDataAfterInstallLIF(Landroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/PackageManagerService;->prepareAppDataAndMigrateLIF(Landroid/content/pm/PackageParser$Package;IIZ)V -PLcom/android/server/pm/PackageManagerService;->prepareAppDataContentsLeafLIF(Landroid/content/pm/PackageParser$Package;II)V -PLcom/android/server/pm/PackageManagerService;->prepareAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V -PLcom/android/server/pm/PackageManagerService;->prepareAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V -PLcom/android/server/pm/PackageManagerService;->preparePackageParserCache(Z)Ljava/io/File; PLcom/android/server/pm/PackageManagerService;->processPendingInstall(Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V -PLcom/android/server/pm/PackageManagerService;->queryCrossProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo; -PLcom/android/server/pm/PackageManagerService;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptionsInternal(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; PLcom/android/server/pm/PackageManagerService;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/PackageManagerService;->queryIntentContentProvidersInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; -PLcom/android/server/pm/PackageManagerService;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/PackageManagerService;->querySkipCurrentProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; PLcom/android/server/pm/PackageManagerService;->reconcileAppsData(IIZ)V PLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZ)V -PLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List; PLcom/android/server/pm/PackageManagerService;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V +PLcom/android/server/pm/PackageManagerService;->removeCodePathLI(Ljava/io/File;)V +PLcom/android/server/pm/PackageManagerService;->removeDexFiles(Ljava/util/List;[Ljava/lang/String;)V PLcom/android/server/pm/PackageManagerService;->removeOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V -PLcom/android/server/pm/PackageManagerService;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V -PLcom/android/server/pm/PackageManagerService;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; -PLcom/android/server/pm/PackageManagerService;->resolveIntentInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo; -PLcom/android/server/pm/PackageManagerService;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +PLcom/android/server/pm/PackageManagerService;->removePackageDataLIF(Lcom/android/server/pm/PackageSetting;[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;IZ)V +PLcom/android/server/pm/PackageManagerService;->removePackageLI(Landroid/content/pm/PackageParser$Package;Z)V +PLcom/android/server/pm/PackageManagerService;->removePackageLI(Lcom/android/server/pm/PackageSetting;Z)V +PLcom/android/server/pm/PackageManagerService;->replaceNonSystemPackageLIF(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;[ILjava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V +PLcom/android/server/pm/PackageManagerService;->replaceSystemPackageLIF(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;[ILjava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V +PLcom/android/server/pm/PackageManagerService;->resolveUserIds(I)[I PLcom/android/server/pm/PackageManagerService;->scanAvailableAsecs()V -PLcom/android/server/pm/PackageManagerService;->scanDirLI(Ljava/io/File;IIJ)V -PLcom/android/server/pm/PackageManagerService;->scanDirTracedLI(Ljava/io/File;IIJ)V -PLcom/android/server/pm/PackageManagerService;->scanPackageInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; -PLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; -PLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; PLcom/android/server/pm/PackageManagerService;->scanPackageTracedLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; PLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictionsLocked(I)V -PLcom/android/server/pm/PackageManagerService;->sendPackageAddedForNewUsers(Ljava/lang/String;ZI[I)V +PLcom/android/server/pm/PackageManagerService;->sendPackageAddedForNewUsers(Ljava/lang/String;ZZI[I)V PLcom/android/server/pm/PackageManagerService;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V PLcom/android/server/pm/PackageManagerService;->sendPackageChangedBroadcast(Ljava/lang/String;ZLjava/util/ArrayList;I)V -PLcom/android/server/pm/PackageManagerService;->sendSessionCommitBroadcast(Landroid/content/pm/PackageInstaller$SessionInfo;I)V PLcom/android/server/pm/PackageManagerService;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V -PLcom/android/server/pm/PackageManagerService;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V -PLcom/android/server/pm/PackageManagerService;->setNativeLibraryPaths(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)V +PLcom/android/server/pm/PackageManagerService;->setInstallAndUpdateTime(Landroid/content/pm/PackageParser$Package;JJ)V +PLcom/android/server/pm/PackageManagerService;->setInstantAppForUser(Lcom/android/server/pm/PackageSetting;IZZ)V PLcom/android/server/pm/PackageManagerService;->setUpInstantAppInstallerActivityLP(Landroid/content/pm/ActivityInfo;)V -PLcom/android/server/pm/PackageManagerService;->shouldCheckUpgradeKeySetLP(Lcom/android/server/pm/PackageSetting;I)Z PLcom/android/server/pm/PackageManagerService;->shouldShowRequestPermissionRationale(Ljava/lang/String;Ljava/lang/String;I)Z PLcom/android/server/pm/PackageManagerService;->startCleaningPackages()V PLcom/android/server/pm/PackageManagerService;->startIntentFilterVerifications(IZLandroid/content/pm/PackageParser$Package;)V PLcom/android/server/pm/PackageManagerService;->systemReady()V -PLcom/android/server/pm/PackageManagerService;->updateAllSharedLibrariesLPw(Landroid/content/pm/PackageParser$Package;)Ljava/util/ArrayList; PLcom/android/server/pm/PackageManagerService;->updateExternalMediaStatusInner(ZZZ)V PLcom/android/server/pm/PackageManagerService;->updateInstantAppInstallerLocked(Ljava/lang/String;)V PLcom/android/server/pm/PackageManagerService;->updateIntentForResolve(Landroid/content/Intent;)Landroid/content/Intent; PLcom/android/server/pm/PackageManagerService;->updatePackagesIfNeeded()V PLcom/android/server/pm/PackageManagerService;->updatePermissionsLPw(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;I)V PLcom/android/server/pm/PackageManagerService;->updateSequenceNumberLP(Lcom/android/server/pm/PackageSetting;[I)V -PLcom/android/server/pm/PackageManagerService;->updateSettingsInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[I[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V PLcom/android/server/pm/PackageManagerService;->updateSettingsLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V -PLcom/android/server/pm/PackageManagerService;->updateSharedLibrariesLPr(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/PackageManagerService;->verifyIntentFiltersIfNeeded(IIZLandroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/PackageManagerService;->verifyPendingInstall(II)V -PLcom/android/server/pm/PackageManagerService;->verifySignaturesLP(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V PLcom/android/server/pm/PackageManagerService;->waitForAppDataPrepared()V -PLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getCompilerFilterForReason(I)Ljava/lang/String; -PLcom/android/server/pm/PackageManagerServiceUtils;->checkISA(Ljava/lang/String;)Z -PLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;)V -PLcom/android/server/pm/PackageSetting;->doCopy(Lcom/android/server/pm/PackageSetting;)V -PLcom/android/server/pm/PackageSetting;->getSharedUserId()I -PLcom/android/server/pm/PackageSetting;->isPrivileged()Z +PLcom/android/server/pm/PackageManagerShellCommand$1;-><init>(Lcom/android/server/pm/PackageManagerShellCommand;)V +PLcom/android/server/pm/PackageManagerShellCommand$InstallParams;-><init>()V +PLcom/android/server/pm/PackageManagerShellCommand$InstallParams;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;)V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->-get0(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)Ljava/util/concurrent/SynchronousQueue; +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;-><init>()V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getIntentSender()Landroid/content/IntentSender; +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getResult()Landroid/content/Intent; +PLcom/android/server/pm/PackageManagerShellCommand;-><init>(Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/PackageManagerShellCommand;->doCommitSession(IZ)I +PLcom/android/server/pm/PackageManagerShellCommand;->doCreateSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I +PLcom/android/server/pm/PackageManagerShellCommand;->onCommand(Ljava/lang/String;)I +PLcom/android/server/pm/PackageManagerShellCommand;->runInstall()I +PLcom/android/server/pm/PackageManagerShellCommand;->runList()I +PLcom/android/server/pm/PackageManagerShellCommand;->setParamsSize(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerShellCommand;->translateUserId(ILjava/lang/String;)I +PLcom/android/server/pm/PackageSetting;->isForwardLocked()Z PLcom/android/server/pm/PackageSetting;->isSharedUser()Z -PLcom/android/server/pm/PackageSetting;->isSystem()Z -PLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String; -PLcom/android/server/pm/PackageSettingBase;-><init>(Lcom/android/server/pm/PackageSettingBase;Ljava/lang/String;)V PLcom/android/server/pm/PackageSettingBase;->disableComponentLPw(Ljava/lang/String;I)Z -PLcom/android/server/pm/PackageSettingBase;->doCopy(Lcom/android/server/pm/PackageSettingBase;)V -PLcom/android/server/pm/PackageSettingBase;->enableComponentLPw(Ljava/lang/String;I)Z -PLcom/android/server/pm/PackageSettingBase;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I -PLcom/android/server/pm/PackageSettingBase;->getEnabled(I)I -PLcom/android/server/pm/PackageSettingBase;->getInstallStatus()I -PLcom/android/server/pm/PackageSettingBase;->getIntentFilterVerificationInfo()Landroid/content/pm/IntentFilterVerificationInfo; -PLcom/android/server/pm/PackageSettingBase;->getNotInstalledUserIds()[I -PLcom/android/server/pm/PackageSettingBase;->getNotLaunched(I)Z +PLcom/android/server/pm/PackageSettingBase;->getCeDataInode(I)J +PLcom/android/server/pm/PackageSettingBase;->getDisabledComponents(I)Landroid/util/ArraySet; +PLcom/android/server/pm/PackageSettingBase;->getEnabledComponents(I)Landroid/util/ArraySet; +PLcom/android/server/pm/PackageSettingBase;->getInstallReason(I)I PLcom/android/server/pm/PackageSettingBase;->getOverlayPaths(I)[Ljava/lang/String; -PLcom/android/server/pm/PackageSettingBase;->getStopped(I)Z -PLcom/android/server/pm/PackageSettingBase;->getSuspended(I)Z -PLcom/android/server/pm/PackageSettingBase;->modifyUserStateComponents(IZZ)Landroid/content/pm/PackageUserState; PLcom/android/server/pm/PackageSettingBase;->queryInstalledUsers([IZ)[I -PLcom/android/server/pm/PackageSettingBase;->setCeDataInode(JI)V +PLcom/android/server/pm/PackageSettingBase;->restoreComponentLPw(Ljava/lang/String;I)Z PLcom/android/server/pm/PackageSettingBase;->setInstallReason(II)V PLcom/android/server/pm/PackageSettingBase;->setInstallStatus(I)V PLcom/android/server/pm/PackageSettingBase;->setInstalled(ZI)V PLcom/android/server/pm/PackageSettingBase;->setInstallerPackageName(Ljava/lang/String;)V -PLcom/android/server/pm/PackageSettingBase;->setOverlayPaths(Ljava/util/List;[Ljava/lang/String;I)V +PLcom/android/server/pm/PackageSettingBase;->setStopped(ZI)V PLcom/android/server/pm/PackageSettingBase;->setUpdateAvailable(Z)V -PLcom/android/server/pm/PackageSettingBase;->setUserState(IJIZZZZZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;III)V -PLcom/android/server/pm/PackageUsage;->parseAsLong(Ljava/lang/String;)J -PLcom/android/server/pm/PackageUsage;->readInternal(Ljava/lang/Object;)V -PLcom/android/server/pm/PackageUsage;->readInternal(Ljava/util/Map;)V -PLcom/android/server/pm/PackageUsage;->readLine(Ljava/io/InputStream;Ljava/lang/StringBuffer;)Ljava/lang/String; -PLcom/android/server/pm/PackageUsage;->readVersion1LP(Ljava/util/Map;Ljava/io/InputStream;Ljava/lang/StringBuffer;)V -PLcom/android/server/pm/PackageVerificationResponse;-><init>(II)V -PLcom/android/server/pm/PackageVerificationState;-><init>(ILcom/android/server/pm/PackageManagerService$InstallArgs;)V -PLcom/android/server/pm/PackageVerificationState;->getInstallArgs()Lcom/android/server/pm/PackageManagerService$InstallArgs; -PLcom/android/server/pm/PackageVerificationState;->isInstallAllowed()Z -PLcom/android/server/pm/PackageVerificationState;->isVerificationComplete()Z -PLcom/android/server/pm/PackageVerificationState;->setVerifierResponse(II)Z -PLcom/android/server/pm/ParallelPackageParser$ParseResult;-><init>()V -PLcom/android/server/pm/ParallelPackageParser;-><init>([Ljava/lang/String;ZLandroid/util/DisplayMetrics;Ljava/io/File;Landroid/content/pm/PackageParser$Callback;)V -PLcom/android/server/pm/ParallelPackageParser;->close()V -PLcom/android/server/pm/ParallelPackageParser;->lambda$-com_android_server_pm_ParallelPackageParser_3701(Ljava/io/File;I)V -PLcom/android/server/pm/ParallelPackageParser;->parsePackage(Landroid/content/pm/PackageParser;Ljava/io/File;I)Landroid/content/pm/PackageParser$Package; -PLcom/android/server/pm/ParallelPackageParser;->submit(Ljava/io/File;I)V -PLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult; -PLcom/android/server/pm/PermissionsState$PermissionData;->revoke(I)Z +PLcom/android/server/pm/PackageSignatures;->toString()Ljava/lang/String; PLcom/android/server/pm/PermissionsState;-><init>(Lcom/android/server/pm/PermissionsState;)V -PLcom/android/server/pm/PermissionsState;->computeGids([I)[I -PLcom/android/server/pm/PermissionsState;->ensureNoPermissionData(Ljava/lang/String;)V PLcom/android/server/pm/PermissionsState;->getInstallPermissionState(Ljava/lang/String;)Lcom/android/server/pm/PermissionsState$PermissionState; -PLcom/android/server/pm/PermissionsState;->getInstallPermissionStates()Ljava/util/List; PLcom/android/server/pm/PermissionsState;->getPermissionFlags(Ljava/lang/String;I)I -PLcom/android/server/pm/PermissionsState;->getRuntimePermissionStates(I)Ljava/util/List; -PLcom/android/server/pm/PermissionsState;->grantRuntimePermission(Lcom/android/server/pm/BasePermission;I)I PLcom/android/server/pm/PermissionsState;->reset()V -PLcom/android/server/pm/PermissionsState;->revokeInstallPermission(Lcom/android/server/pm/BasePermission;)I -PLcom/android/server/pm/PermissionsState;->revokePermission(Lcom/android/server/pm/BasePermission;I)I -PLcom/android/server/pm/PermissionsState;->setGlobalGids([I)V -PLcom/android/server/pm/Policy;->getMatchedSeInfo(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; -PLcom/android/server/pm/PreferredActivity;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V -PLcom/android/server/pm/PreferredActivity;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z -PLcom/android/server/pm/PreferredActivity;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V -PLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;Lorg/xmlpull/v1/XmlPullParser;)V -PLcom/android/server/pm/PreferredComponent;->getParseError()Ljava/lang/String; -PLcom/android/server/pm/PreferredComponent;->sameSet([Landroid/content/ComponentName;)Z -PLcom/android/server/pm/PreferredComponent;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V -PLcom/android/server/pm/PreferredIntentResolver;-><init>()V -PLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Landroid/content/IntentFilter; -PLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PreferredActivity; +PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z +PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/pm/PreferredActivity;)Z PLcom/android/server/pm/ProcessLoggingHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/pm/ProcessLoggingHandler;->invalidateProcessLoggingBaseApkHash(Ljava/lang/String;)V PLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z PLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z PLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(Ljava/lang/String;)Z PLcom/android/server/pm/ProtectedPackages;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V -PLcom/android/server/pm/SettingBase;-><init>(Lcom/android/server/pm/SettingBase;)V -PLcom/android/server/pm/SettingBase;->doCopy(Lcom/android/server/pm/SettingBase;)V -PLcom/android/server/pm/Settings$KernelPackageState;-><init>()V -PLcom/android/server/pm/Settings$KernelPackageState;-><init>(Lcom/android/server/pm/Settings$KernelPackageState;)V -PLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-wrap1(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;I)V PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->areDefaultRuntimPermissionsGrantedLPr(I)Z -PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parsePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PermissionsState;I)V -PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parseRuntimePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;I)V -PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSyncLPr(I)V -PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsForUserAsyncLPr(I)V PLcom/android/server/pm/Settings$VersionInfo;->forceCurrent()V PLcom/android/server/pm/Settings;->-get0(Lcom/android/server/pm/Settings;)Landroid/util/SparseArray; -PLcom/android/server/pm/Settings;->-wrap0(Lcom/android/server/pm/Settings;I)Ljava/io/File; -PLcom/android/server/pm/Settings;->addPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;)V -PLcom/android/server/pm/Settings;->addUserToSettingLPw(Lcom/android/server/pm/PackageSetting;)V -PLcom/android/server/pm/Settings;->applyPendingPermissionGrantsLPw(Ljava/lang/String;I)V PLcom/android/server/pm/Settings;->areDefaultRuntimePermissionsGrantedLPr(I)Z -PLcom/android/server/pm/Settings;->createNewSetting(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/UserHandle;ZZLjava/lang/String;Ljava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[I)Lcom/android/server/pm/PackageSetting; -PLcom/android/server/pm/Settings;->editPreferredActivitiesLPw(I)Lcom/android/server/pm/PreferredIntentResolver; -PLcom/android/server/pm/Settings;->getAllSharedUsersLPw()Ljava/util/Collection; -PLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I +PLcom/android/server/pm/Settings;->disableSystemPackageLPw(Ljava/lang/String;Z)Z +PLcom/android/server/pm/Settings;->dumpGidsLPr(Ljava/io/PrintWriter;Ljava/lang/String;[I)V +PLcom/android/server/pm/Settings;->dumpSplitNames(Ljava/io/PrintWriter;Landroid/content/pm/PackageParser$Package;)V PLcom/android/server/pm/Settings;->getBlockUninstallLPr(ILjava/lang/String;)Z -PLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I -PLcom/android/server/pm/Settings;->getDefaultBrowserPackageNameLPw(I)Ljava/lang/String; -PLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting; PLcom/android/server/pm/Settings;->getInstallerPackageNameLPr(Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/pm/Settings;->getIntentFilterVerificationLPr(Ljava/lang/String;)Landroid/content/pm/IntentFilterVerificationInfo; -PLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo; -PLcom/android/server/pm/Settings;->getListOfIncompleteInstallPackagesLPr()Ljava/util/ArrayList; -PLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting; -PLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;IIZ)Lcom/android/server/pm/SharedUserSetting; -PLcom/android/server/pm/Settings;->getUserPackagesStateBackupFile(I)Ljava/io/File; -PLcom/android/server/pm/Settings;->getUserPackagesStateFile(I)Ljava/io/File; -PLcom/android/server/pm/Settings;->getUserRuntimePermissionsFile(I)Ljava/io/File; -PLcom/android/server/pm/Settings;->getVolumePackagesLPr(Ljava/lang/String;)Ljava/util/List; -PLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V -PLcom/android/server/pm/Settings;->isDisabledSystemPackageLPr(Ljava/lang/String;)Z -PLcom/android/server/pm/Settings;->newUserIdLPw(Ljava/lang/Object;)I -PLcom/android/server/pm/Settings;->pruneSharedUsersLPw()V -PLcom/android/server/pm/Settings;->readComponentsLPr(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/ArraySet; -PLcom/android/server/pm/Settings;->readCrossProfileIntentFiltersLPw(Lorg/xmlpull/v1/XmlPullParser;I)V -PLcom/android/server/pm/Settings;->readDefaultAppsLPw(Lorg/xmlpull/v1/XmlPullParser;I)V -PLcom/android/server/pm/Settings;->readDisabledSysPackageLPw(Lorg/xmlpull/v1/XmlPullParser;)V -PLcom/android/server/pm/Settings;->readPersistentPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V -PLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V -PLcom/android/server/pm/Settings;->readSharedUserLPw(Lorg/xmlpull/v1/XmlPullParser;)V +PLcom/android/server/pm/Settings;->replacePackageLPw(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)V +PLcom/android/server/pm/Settings;->replaceUserIdLPw(ILjava/lang/Object;)V PLcom/android/server/pm/Settings;->setInstallStatus(Ljava/lang/String;I)V PLcom/android/server/pm/Settings;->setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[I)V PLcom/android/server/pm/Settings;->wasPackageEverLaunchedLPr(Ljava/lang/String;I)Z PLcom/android/server/pm/Settings;->writeAllRuntimePermissionsLPr()V -PLcom/android/server/pm/Settings;->writeAllUsersPackageRestrictionsLPr()V PLcom/android/server/pm/Settings;->writeBlockUninstallPackagesLPr(Lorg/xmlpull/v1/XmlSerializer;I)V -PLcom/android/server/pm/Settings;->writeChildPackagesLPw(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V PLcom/android/server/pm/Settings;->writeCrossProfileIntentFiltersLPr(Lorg/xmlpull/v1/XmlSerializer;I)V -PLcom/android/server/pm/Settings;->writeDefaultAppsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V -PLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V -PLcom/android/server/pm/Settings;->writeDomainVerificationsLPr(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/IntentFilterVerificationInfo;)V -PLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V PLcom/android/server/pm/Settings;->writePackageListLPr()V PLcom/android/server/pm/Settings;->writePersistentPreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;I)V -PLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;IZ)V -PLcom/android/server/pm/Settings;->writeRuntimePermissionsForUserLPr(IZ)V -PLcom/android/server/pm/Settings;->writeUpgradeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V -PLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V -PLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;[I)V -PLcom/android/server/pm/SharedUserSetting;->addPackage(Lcom/android/server/pm/PackageSetting;)V +PLcom/android/server/pm/SharedUserSetting;->removePackage(Lcom/android/server/pm/PackageSetting;)V +PLcom/android/server/pm/SharedUserSetting;->toString()Ljava/lang/String; PLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;-><init>(Landroid/content/pm/ShortcutInfo;[B)V PLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;-><init>(Landroid/content/pm/ShortcutInfo;[BLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;)V PLcom/android/server/pm/ShortcutBitmapSaver;-><init>(Lcom/android/server/pm/ShortcutService;)V -PLcom/android/server/pm/ShortcutBitmapSaver;->getBitmapPathMayWaitLocked(Landroid/content/pm/ShortcutInfo;)Ljava/lang/String; PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$-com_android_server_pm_ShortcutBitmapSaver_4411(Ljava/util/concurrent/CountDownLatch;)V PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$-com_android_server_pm_ShortcutBitmapSaver_7645()V PLcom/android/server/pm/ShortcutBitmapSaver;->processPendingItems()Z @@ -10898,91 +12732,57 @@ PLcom/android/server/pm/ShortcutBitmapSaver;->waitForAllSavesLocked()Z PLcom/android/server/pm/ShortcutDumpFiles;-><init>(Lcom/android/server/pm/ShortcutService;)V PLcom/android/server/pm/ShortcutLauncher;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;I)V PLcom/android/server/pm/ShortcutLauncher;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;ILcom/android/server/pm/ShortcutPackageInfo;)V -PLcom/android/server/pm/ShortcutLauncher;->addPinnedShortcut(Ljava/lang/String;ILjava/lang/String;)V PLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(Ljava/lang/String;I)Landroid/util/ArraySet; -PLcom/android/server/pm/ShortcutLauncher;->hasPinned(Landroid/content/pm/ShortcutInfo;)Z -PLcom/android/server/pm/ShortcutLauncher;->pinShortcuts(ILjava/lang/String;Ljava/util/List;)V PLcom/android/server/pm/ShortcutLauncher;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V PLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;)V PLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V PLcom/android/server/pm/ShortcutPackage;->addOrUpdateDynamicShortcut(Landroid/content/pm/ShortcutInfo;)V PLcom/android/server/pm/ShortcutPackage;->addShortcutInner(Landroid/content/pm/ShortcutInfo;)V -PLcom/android/server/pm/ShortcutPackage;->adjustRanks()V -PLcom/android/server/pm/ShortcutPackage;->areAllActivitiesStillEnabled()Z PLcom/android/server/pm/ShortcutPackage;->clearAllImplicitRanks()V PLcom/android/server/pm/ShortcutPackage;->deleteAllDynamicShortcuts()V PLcom/android/server/pm/ShortcutPackage;->deleteDynamicWithId(Ljava/lang/String;)Z PLcom/android/server/pm/ShortcutPackage;->deleteOrDisableWithId(Ljava/lang/String;ZZ)Landroid/content/pm/ShortcutInfo; PLcom/android/server/pm/ShortcutPackage;->deleteShortcutInner(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo; +PLcom/android/server/pm/ShortcutPackage;->disableWithId(Ljava/lang/String;Ljava/lang/String;IZ)V PLcom/android/server/pm/ShortcutPackage;->enforceShortcutCountsBeforeOperation(Ljava/util/List;I)V PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncluded(Ljava/util/List;)V PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncludedWithIds(Ljava/util/List;)V PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Landroid/content/pm/ShortcutInfo;)V PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Ljava/lang/String;)V PLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;I)V -PLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;I)V PLcom/android/server/pm/ShortcutPackage;->findShortcutById(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo; PLcom/android/server/pm/ShortcutPackage;->getApiCallCount()I PLcom/android/server/pm/ShortcutPackage;->getFileName(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/pm/ShortcutPackage;->getOwnerUserId()I +PLcom/android/server/pm/ShortcutPackage;->getPackageResources()Landroid/content/res/Resources; PLcom/android/server/pm/ShortcutPackage;->getUsedBitmapFiles()Landroid/util/ArraySet; PLcom/android/server/pm/ShortcutPackage;->incrementCountForActivity(Landroid/util/ArrayMap;Landroid/content/ComponentName;I)V -PLcom/android/server/pm/ShortcutPackage;->lambda$-com_android_server_pm_ShortcutPackage_14748(Lcom/android/server/pm/ShortcutLauncher;)V PLcom/android/server/pm/ShortcutPackage;->lambda$-com_android_server_pm_ShortcutPackage_41443(Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;)I -PLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lorg/xmlpull/v1/XmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage; -PLcom/android/server/pm/ShortcutPackage;->parseIntent(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent; -PLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Landroid/content/pm/ShortcutInfo; -PLcom/android/server/pm/ShortcutPackage;->refreshPinnedFlags()V +PLcom/android/server/pm/ShortcutPackage;->pushOutExcessShortcuts()Z PLcom/android/server/pm/ShortcutPackage;->removeOrphans()V -PLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z PLcom/android/server/pm/ShortcutPackage;->resetRateLimiting()V -PLcom/android/server/pm/ShortcutPackage;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V -PLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap; PLcom/android/server/pm/ShortcutPackage;->tryApiCall()Z PLcom/android/server/pm/ShortcutPackageInfo;-><init>(IJLjava/util/ArrayList;Z)V PLcom/android/server/pm/ShortcutPackageInfo;->getLastUpdateTime()J PLcom/android/server/pm/ShortcutPackageInfo;->getVersionCode()I -PLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z PLcom/android/server/pm/ShortcutPackageInfo;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;Z)V PLcom/android/server/pm/ShortcutPackageInfo;->newEmpty()Lcom/android/server/pm/ShortcutPackageInfo; -PLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +PLcom/android/server/pm/ShortcutPackageInfo;->updateVersionInfo(Landroid/content/pm/PackageInfo;)V PLcom/android/server/pm/ShortcutPackageItem;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V -PLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V -PLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo; -PLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String; -PLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I PLcom/android/server/pm/ShortcutPackageItem;->getUser()Lcom/android/server/pm/ShortcutUser; +PLcom/android/server/pm/ShortcutParser;->createShortcutFromManifest(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;IIIIIZ)Landroid/content/pm/ShortcutInfo; PLcom/android/server/pm/ShortcutParser;->parseShortcuts(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)Ljava/util/List; -PLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;)Ljava/util/List; -PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/IntentSender;I)V -PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/IntentSender;ILcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;)V -PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;->accept(Landroid/os/Bundle;)Z -PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;->isCallerValid()Z -PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Ljava/lang/String;IIZ)V -PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Ljava/lang/String;IIZLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;)V -PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;->getShortcutInfo()Landroid/content/pm/ShortcutInfo; -PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;->tryAccept()Z PLcom/android/server/pm/ShortcutRequestPinProcessor;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/Object;)V -PLcom/android/server/pm/ShortcutRequestPinProcessor;->directPinShortcut(Lcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;)Z PLcom/android/server/pm/ShortcutRequestPinProcessor;->getRequestPinConfirmationActivity(II)Landroid/util/Pair; -PLcom/android/server/pm/ShortcutRequestPinProcessor;->isCallerUid(I)Z PLcom/android/server/pm/ShortcutRequestPinProcessor;->isRequestPinItemSupported(II)Z -PLcom/android/server/pm/ShortcutRequestPinProcessor;->requestPinItemLocked(Landroid/content/pm/ShortcutInfo;Landroid/appwidget/AppWidgetProviderInfo;Landroid/os/Bundle;ILandroid/content/IntentSender;)Z -PLcom/android/server/pm/ShortcutRequestPinProcessor;->requestPinShortcutLocked(Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Landroid/util/Pair;)Landroid/content/pm/LauncherApps$PinItemRequest; -PLcom/android/server/pm/ShortcutRequestPinProcessor;->sendResultIntent(Landroid/content/IntentSender;Landroid/content/Intent;)V -PLcom/android/server/pm/ShortcutRequestPinProcessor;->startRequestConfirmActivity(Landroid/content/ComponentName;ILandroid/content/pm/LauncherApps$PinItemRequest;I)Z PLcom/android/server/pm/ShortcutService$1;-><init>()V PLcom/android/server/pm/ShortcutService$1;->test(Landroid/content/pm/ResolveInfo;)Z PLcom/android/server/pm/ShortcutService$1;->test(Ljava/lang/Object;)Z PLcom/android/server/pm/ShortcutService$2;-><init>()V -PLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z -PLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z PLcom/android/server/pm/ShortcutService$3;-><init>(Lcom/android/server/pm/ShortcutService;)V PLcom/android/server/pm/ShortcutService$3;->onUidGone(IZ)V -PLcom/android/server/pm/ShortcutService$3;->onUidStateChanged(IIJ)V PLcom/android/server/pm/ShortcutService$4;-><init>(Lcom/android/server/pm/ShortcutService;)V PLcom/android/server/pm/ShortcutService$5;-><init>(Lcom/android/server/pm/ShortcutService;)V -PLcom/android/server/pm/ShortcutService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;-><init>(Ljava/io/File;)V PLcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;->getFile()Ljava/io/File; PLcom/android/server/pm/ShortcutService$Lifecycle;-><init>(Landroid/content/Context;)V @@ -10992,24 +12792,17 @@ PLcom/android/server/pm/ShortcutService$Lifecycle;->onUnlockUser(I)V PLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;)V PLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService$LocalService;)V PLcom/android/server/pm/ShortcutService$LocalService;->addListener(Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;)V -PLcom/android/server/pm/ShortcutService$LocalService;->getShortcutIconFd(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor; -PLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;II)Ljava/util/List; -PLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;I)V PLcom/android/server/pm/ShortcutService$LocalService;->hasShortcutHostPermission(ILjava/lang/String;)Z -PLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_85705(ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;ILcom/android/server/pm/ShortcutPackage;)V -PLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_86821(JLandroid/util/ArraySet;Landroid/content/ComponentName;ILandroid/content/pm/ShortcutInfo;)Z -PLcom/android/server/pm/ShortcutService$LocalService;->pinShortcuts(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;I)V +PLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_85684(ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;ILcom/android/server/pm/ShortcutPackage;)V PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-0()V PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-1(Landroid/content/pm/ShortcutInfo;)Z PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-2(Landroid/content/pm/ShortcutInfo;)Z PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-3(Landroid/content/pm/ShortcutInfo;)Z PLcom/android/server/pm/ShortcutService;->-get1(Lcom/android/server/pm/ShortcutService;)Ljava/util/ArrayList; PLcom/android/server/pm/ShortcutService;->-get2(Lcom/android/server/pm/ShortcutService;)Ljava/lang/Object; -PLcom/android/server/pm/ShortcutService;->-get3(Lcom/android/server/pm/ShortcutService;)Lcom/android/server/pm/ShortcutBitmapSaver; -PLcom/android/server/pm/ShortcutService;->-wrap0(Landroid/content/pm/PackageInfo;)Z PLcom/android/server/pm/ShortcutService;->-wrap2(Lcom/android/server/pm/ShortcutService;Ljava/util/List;)Ljava/util/List; -PLcom/android/server/pm/ShortcutService;->-wrap4(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V PLcom/android/server/pm/ShortcutService;->-wrap5(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->-wrap8(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V PLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;)V PLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;Landroid/os/Looper;Z)V PLcom/android/server/pm/ShortcutService;->assignImplicitRanks(Ljava/util/List;)V @@ -11021,62 +12814,44 @@ PLcom/android/server/pm/ShortcutService;->enableShortcuts(Ljava/lang/String;Ljav PLcom/android/server/pm/ShortcutService;->enforceMaxActivityShortcuts(I)V PLcom/android/server/pm/ShortcutService;->fillInDefaultActivity(Ljava/util/List;)V PLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;Z)V -PLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V PLcom/android/server/pm/ShortcutService;->fixUpShortcutResourceNamesAndValues(Landroid/content/pm/ShortcutInfo;)V -PLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V PLcom/android/server/pm/ShortcutService;->getActivityInfoWithMetadata(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; -PLcom/android/server/pm/ShortcutService;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; PLcom/android/server/pm/ShortcutService;->getBaseStateFile()Landroid/util/AtomicFile; PLcom/android/server/pm/ShortcutService;->getDefaultLauncher(I)Landroid/content/ComponentName; PLcom/android/server/pm/ShortcutService;->getDynamicShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; -PLcom/android/server/pm/ShortcutService;->getIconMaxDimensions(Ljava/lang/String;I)I PLcom/android/server/pm/ShortcutService;->getInstalledPackages(I)Ljava/util/List; PLcom/android/server/pm/ShortcutService;->getLastResetTimeLocked()J -PLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher; PLcom/android/server/pm/ShortcutService;->getMainActivityIntent()Landroid/content/Intent; PLcom/android/server/pm/ShortcutService;->getManifestShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/ShortcutService;->getMaxActivityShortcuts()I PLcom/android/server/pm/ShortcutService;->getMaxShortcutCountPerActivity(Ljava/lang/String;I)I PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo; -PLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage; PLcom/android/server/pm/ShortcutService;->getParentOrSelfUserId(I)I PLcom/android/server/pm/ShortcutService;->getPinnedShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; PLcom/android/server/pm/ShortcutService;->getShortcutsWithQueryLocked(Ljava/lang/String;IILjava/util/function/Predicate;)Landroid/content/pm/ParceledListSlice; PLcom/android/server/pm/ShortcutService;->getUidLastForegroundElapsedTimeLocked(I)J PLcom/android/server/pm/ShortcutService;->getUserBitmapFilePath(I)Ljava/io/File; PLcom/android/server/pm/ShortcutService;->getUserFile(I)Ljava/io/File; -PLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser; -PLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V -PLcom/android/server/pm/ShortcutService;->handlePackageAdded(Ljava/lang/String;I)V PLcom/android/server/pm/ShortcutService;->handlePackageChanged(Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->handlePackageUpdateFinished(Ljava/lang/String;I)V PLcom/android/server/pm/ShortcutService;->handleUnlockUser(I)V PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermission(Ljava/lang/String;I)Z -PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermissionInner(Ljava/lang/String;I)Z PLcom/android/server/pm/ShortcutService;->initialize()V -PLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; -PLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I PLcom/android/server/pm/ShortcutService;->injectBuildFingerprint()Ljava/lang/String; -PLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J -PLcom/android/server/pm/ShortcutService;->injectCurrentTimeMillis()J PLcom/android/server/pm/ShortcutService;->injectDipToPixel(I)I PLcom/android/server/pm/ShortcutService;->injectGetActivityInfoWithMetadataWithUninstalled(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; -PLcom/android/server/pm/ShortcutService;->injectGetDefaultMainActivity(Ljava/lang/String;I)Landroid/content/ComponentName; PLcom/android/server/pm/ShortcutService;->injectGetLocaleTagsForUser(I)Ljava/lang/String; PLcom/android/server/pm/ShortcutService;->injectGetMainActivities(Ljava/lang/String;I)Ljava/util/List; -PLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I PLcom/android/server/pm/ShortcutService;->injectGetPackagesWithUninstalled(I)Ljava/util/List; PLcom/android/server/pm/ShortcutService;->injectGetPinConfirmationActivity(Ljava/lang/String;II)Landroid/content/ComponentName; PLcom/android/server/pm/ShortcutService;->injectGetResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources; -PLcom/android/server/pm/ShortcutService;->injectIsActivityEnabledAndExported(Landroid/content/ComponentName;I)Z PLcom/android/server/pm/ShortcutService;->injectIsLowRamDevice()Z PLcom/android/server/pm/ShortcutService;->injectIsMainActivity(Landroid/content/ComponentName;I)Z PLcom/android/server/pm/ShortcutService;->injectIsSafeModeEnabled()Z -PLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo; PLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V PLcom/android/server/pm/ShortcutService;->injectRegisterUidObserver(Landroid/app/IUidObserver;I)V -PLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V PLcom/android/server/pm/ShortcutService;->injectRunOnNewThread(Ljava/lang/Runnable;)V -PLcom/android/server/pm/ShortcutService;->injectSendIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V PLcom/android/server/pm/ShortcutService;->injectShortcutManagerConstants()Ljava/lang/String; PLcom/android/server/pm/ShortcutService;->injectShouldPerformVerification()Z PLcom/android/server/pm/ShortcutService;->injectSystemDataPath()Ljava/io/File; @@ -11085,46 +12860,32 @@ PLcom/android/server/pm/ShortcutService;->injectValidateIconResPackage(Landroid/ PLcom/android/server/pm/ShortcutService;->injectXmlMetaData(Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/content/res/XmlResourceParser; PLcom/android/server/pm/ShortcutService;->isCallerSystem()Z PLcom/android/server/pm/ShortcutService;->isClockValid(J)Z -PLcom/android/server/pm/ShortcutService;->isDummyMainActivity(Landroid/content/ComponentName;)Z PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Landroid/content/pm/ApplicationInfo;)Z PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Ljava/lang/String;I)Z PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ActivityInfo;)Z -PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ApplicationInfo;)Z -PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/PackageInfo;)Z PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ActivityInfo;)Landroid/content/pm/ActivityInfo; PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo; PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/PackageInfo;)Landroid/content/pm/PackageInfo; PLcom/android/server/pm/ShortcutService;->isPackageInstalled(Ljava/lang/String;I)Z -PLcom/android/server/pm/ShortcutService;->isProcessStateForeground(I)Z PLcom/android/server/pm/ShortcutService;->isRequestPinItemSupported(II)Z PLcom/android/server/pm/ShortcutService;->isUidForegroundLocked(I)Z -PLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z -PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_101495(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V -PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_21427(JI)V -PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_54784(ILjava/lang/String;)V +PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_101474(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V +PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_21406(JI)V +PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_54763(ILjava/lang/String;)V PLcom/android/server/pm/ShortcutService;->loadBaseStateLocked()V PLcom/android/server/pm/ShortcutService;->loadConfigurationLocked()V PLcom/android/server/pm/ShortcutService;->loadUserInternal(ILjava/io/InputStream;Z)Lcom/android/server/pm/ShortcutUser; PLcom/android/server/pm/ShortcutService;->loadUserLocked(I)Lcom/android/server/pm/ShortcutUser; -PLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V PLcom/android/server/pm/ShortcutService;->notifyListeners(Ljava/lang/String;I)V PLcom/android/server/pm/ShortcutService;->onBootPhase(I)V PLcom/android/server/pm/ShortcutService;->openIconFileForWrite(ILandroid/content/pm/ShortcutInfo;)Lcom/android/server/pm/ShortcutService$FileOutputStreamWithPath; PLcom/android/server/pm/ShortcutService;->packageShortcutsChanged(Ljava/lang/String;I)V PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z PLcom/android/server/pm/ShortcutService;->parseComponentNameAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/ComponentName; -PLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I PLcom/android/server/pm/ShortcutService;->parseIntentAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent; -PLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent; -PLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J -PLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J -PLcom/android/server/pm/ShortcutService;->parseStringAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List; -PLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List; +PLcom/android/server/pm/ShortcutService;->removeDynamicShortcuts(Ljava/lang/String;Ljava/util/List;I)V PLcom/android/server/pm/ShortcutService;->removeIconLocked(Landroid/content/pm/ShortcutInfo;)V PLcom/android/server/pm/ShortcutService;->reportShortcutUsed(Ljava/lang/String;Ljava/lang/String;I)V -PLcom/android/server/pm/ShortcutService;->requestPinItem(Ljava/lang/String;ILandroid/content/pm/ShortcutInfo;Landroid/appwidget/AppWidgetProviderInfo;Landroid/os/Bundle;Landroid/content/IntentSender;)Z -PLcom/android/server/pm/ShortcutService;->requestPinShortcut(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;I)Z PLcom/android/server/pm/ShortcutService;->rescanUpdatedPackagesLocked(IJ)V PLcom/android/server/pm/ShortcutService;->saveDirtyInfo()V PLcom/android/server/pm/ShortcutService;->saveIconAndFixUpShortcutLocked(Landroid/content/pm/ShortcutInfo;)V @@ -11133,49 +12894,31 @@ PLcom/android/server/pm/ShortcutService;->saveUserLocked(I)V PLcom/android/server/pm/ShortcutService;->scheduleSaveInner(I)V PLcom/android/server/pm/ShortcutService;->scheduleSaveUser(I)V PLcom/android/server/pm/ShortcutService;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z -PLcom/android/server/pm/ShortcutService;->setReturnedByServer(Ljava/util/List;)Ljava/util/List; PLcom/android/server/pm/ShortcutService;->shrinkBitmap(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; -PLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V PLcom/android/server/pm/ShortcutService;->updateConfigurationLocked(Ljava/lang/String;)Z PLcom/android/server/pm/ShortcutService;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z PLcom/android/server/pm/ShortcutService;->updateTimesLocked()V -PLcom/android/server/pm/ShortcutService;->validateShortcutForPinRequest(Landroid/content/pm/ShortcutInfo;)V -PLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V PLcom/android/server/pm/ShortcutService;->verifyStates()V -PLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V -PLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/Intent;)V -PLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V -PLcom/android/server/pm/ShortcutService;->writeTagExtra(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/os/PersistableBundle;)V PLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V PLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/String;)V -PLcom/android/server/pm/ShortcutUser$PackageWithUser;-><init>(ILjava/lang/String;)V PLcom/android/server/pm/ShortcutUser$PackageWithUser;->equals(Ljava/lang/Object;)Z -PLcom/android/server/pm/ShortcutUser$PackageWithUser;->hashCode()I -PLcom/android/server/pm/ShortcutUser$PackageWithUser;->of(ILjava/lang/String;)Lcom/android/server/pm/ShortcutUser$PackageWithUser; PLcom/android/server/pm/ShortcutUser;-><init>(Lcom/android/server/pm/ShortcutService;I)V PLcom/android/server/pm/ShortcutUser;->attemptToRestoreIfNeededAndSave(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V PLcom/android/server/pm/ShortcutUser;->clearLauncher()V PLcom/android/server/pm/ShortcutUser;->detectLocaleChange()V PLcom/android/server/pm/ShortcutUser;->forAllLaunchers(Ljava/util/function/Consumer;)V PLcom/android/server/pm/ShortcutUser;->forAllPackageItems(Ljava/util/function/Consumer;)V -PLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V PLcom/android/server/pm/ShortcutUser;->forPackageItem(Ljava/lang/String;ILjava/util/function/Consumer;)V PLcom/android/server/pm/ShortcutUser;->getCachedLauncher()Landroid/content/ComponentName; PLcom/android/server/pm/ShortcutUser;->getKnownLocales()Ljava/lang/String; PLcom/android/server/pm/ShortcutUser;->getLastAppScanOsFingerprint()Ljava/lang/String; PLcom/android/server/pm/ShortcutUser;->getLastAppScanTime()J PLcom/android/server/pm/ShortcutUser;->getLastKnownLauncher()Landroid/content/ComponentName; -PLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher; -PLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage; -PLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage; PLcom/android/server/pm/ShortcutUser;->getUserId()I PLcom/android/server/pm/ShortcutUser;->hasPackage(Ljava/lang/String;)Z -PLcom/android/server/pm/ShortcutUser;->lambda$-com_android_server_pm_ShortcutUser_8319(ILjava/lang/String;Ljava/util/function/Consumer;Lcom/android/server/pm/ShortcutPackageItem;)V +PLcom/android/server/pm/ShortcutUser;->lambda$-com_android_server_pm_ShortcutUser_11105(Lcom/android/server/pm/ShortcutPackageItem;)V PLcom/android/server/pm/ShortcutUser;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lorg/xmlpull/v1/XmlPullParser;IZ)Lcom/android/server/pm/ShortcutUser; PLcom/android/server/pm/ShortcutUser;->onCalledByPublisher(Ljava/lang/String;)V -PLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V -PLcom/android/server/pm/ShortcutUser;->saveShortcutPackageItem(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/ShortcutPackageItem;Z)V -PLcom/android/server/pm/ShortcutUser;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V PLcom/android/server/pm/ShortcutUser;->setLastAppScanOsFingerprint(Ljava/lang/String;)V PLcom/android/server/pm/ShortcutUser;->setLastAppScanTime(J)V PLcom/android/server/pm/ShortcutUser;->setLauncher(Landroid/content/ComponentName;)V @@ -11199,8 +12942,6 @@ PLcom/android/server/pm/UserManagerService$LifeCycle;->onStart()V PLcom/android/server/pm/UserManagerService$LocalService;->addUserRestrictionsListener(Landroid/os/UserManagerInternal$UserRestrictionsListener;)V PLcom/android/server/pm/UserManagerService$LocalService;->getUserIds()[I PLcom/android/server/pm/UserManagerService$LocalService;->getUserRestriction(ILjava/lang/String;)Z -PLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z -PLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z PLcom/android/server/pm/UserManagerService$LocalService;->setDeviceManaged(Z)V PLcom/android/server/pm/UserManagerService$LocalService;->setDevicePolicyUserRestrictions(ILandroid/os/Bundle;ZI)V PLcom/android/server/pm/UserManagerService$LocalService;->setUserManaged(IZ)V @@ -11218,46 +12959,23 @@ PLcom/android/server/pm/UserManagerService;->-wrap11(Lcom/android/server/pm/User PLcom/android/server/pm/UserManagerService;->-wrap4(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData; PLcom/android/server/pm/UserManagerService;->-wrap9(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;ZI)V PLcom/android/server/pm/UserManagerService;->applyUserRestrictionsLR(I)V -PLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermIfCallerInOtherProfileGroup(ILjava/lang/String;)V PLcom/android/server/pm/UserManagerService;->checkManageUserAndAcrossUsersFullPermission(Ljava/lang/String;)V -PLcom/android/server/pm/UserManagerService;->checkManageUsersPermission(Ljava/lang/String;)V PLcom/android/server/pm/UserManagerService;->cleanupPartialUsers()V PLcom/android/server/pm/UserManagerService;->computeEffectiveUserRestrictionsLR(I)Landroid/os/Bundle; PLcom/android/server/pm/UserManagerService;->findCurrentGuestUser()Landroid/content/pm/UserInfo; -PLcom/android/server/pm/UserManagerService;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; -PLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle; PLcom/android/server/pm/UserManagerService;->getCredentialOwnerProfile(I)I -PLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle; -PLcom/android/server/pm/UserManagerService;->getProfileIdsLU(IZ)Landroid/util/IntArray; -PLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo; -PLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo; -PLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List; -PLcom/android/server/pm/UserManagerService;->getProfilesLU(IZZ)Ljava/util/List; -PLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I PLcom/android/server/pm/UserManagerService;->getUserAccount(I)Ljava/lang/String; PLcom/android/server/pm/UserManagerService;->getUserDataNoChecks(I)Lcom/android/server/pm/UserManagerService$UserData; -PLcom/android/server/pm/UserManagerService;->getUserHandle(I)I PLcom/android/server/pm/UserManagerService;->getUserIcon(I)Landroid/os/ParcelFileDescriptor; PLcom/android/server/pm/UserManagerService;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List; -PLcom/android/server/pm/UserManagerService;->getUserRestrictions(I)Landroid/os/Bundle; -PLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I PLcom/android/server/pm/UserManagerService;->hasBaseUserRestriction(Ljava/lang/String;I)Z -PLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z PLcom/android/server/pm/UserManagerService;->isDemoUser(I)Z PLcom/android/server/pm/UserManagerService;->isManagedProfile(I)Z -PLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z PLcom/android/server/pm/UserManagerService;->isQuietModeEnabled(I)Z PLcom/android/server/pm/UserManagerService;->isRestricted()Z -PLcom/android/server/pm/UserManagerService;->isSameProfileGroup(II)Z -PLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z -PLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z -PLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z PLcom/android/server/pm/UserManagerService;->onBeforeUnlockUser(I)V PLcom/android/server/pm/UserManagerService;->onUserLoggedIn(I)V -PLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/pm/UserManagerService;->propagateUserRestrictionsLR(ILandroid/os/Bundle;Landroid/os/Bundle;)V -PLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Landroid/util/AtomicFile;)Landroid/os/Bundle; -PLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Ljava/lang/String;I)Landroid/os/Bundle; PLcom/android/server/pm/UserManagerService;->reconcileUsers(Ljava/lang/String;)V PLcom/android/server/pm/UserManagerService;->scheduleWriteUser(Lcom/android/server/pm/UserManagerService$UserData;)V PLcom/android/server/pm/UserManagerService;->setDevicePolicyUserRestrictionsInner(ILandroid/os/Bundle;ZI)V @@ -11269,9 +12987,7 @@ PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/ PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;Ljava/io/OutputStream;)V PLcom/android/server/pm/UserRestrictionsUtils;->applyUserRestrictions(Landroid/content/Context;ILandroid/os/Bundle;Landroid/os/Bundle;)V PLcom/android/server/pm/UserRestrictionsUtils;->areEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z -PLcom/android/server/pm/UserRestrictionsUtils;->clone(Landroid/os/Bundle;)Landroid/os/Bundle; PLcom/android/server/pm/UserRestrictionsUtils;->isEmpty(Landroid/os/Bundle;)Z -PLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z PLcom/android/server/pm/UserRestrictionsUtils;->mergeAll(Landroid/util/SparseArray;)Landroid/os/Bundle; PLcom/android/server/pm/UserRestrictionsUtils;->nonNull(Landroid/os/Bundle;)Landroid/os/Bundle; PLcom/android/server/pm/UserRestrictionsUtils;->restrictionsChanged(Landroid/os/Bundle;Landroid/os/Bundle;[Ljava/lang/String;)Z @@ -11282,82 +12998,84 @@ PLcom/android/server/pm/dex/DexManager$DexSearchResult;->-get1(Lcom/android/serv PLcom/android/server/pm/dex/DexManager$DexSearchResult;-><init>(Lcom/android/server/pm/dex/DexManager;Ljava/lang/String;I)V PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->-get0(Lcom/android/server/pm/dex/DexManager$PackageCodeLocations;)Ljava/lang/String; PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Landroid/content/pm/ApplicationInfo;I)V -PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V -PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->mergeAppDataDirs(Ljava/lang/String;I)V -PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->updateCodeLocation(Ljava/lang/String;[Ljava/lang/String;)V PLcom/android/server/pm/dex/DexManager;->-get0()I PLcom/android/server/pm/dex/DexManager;->-get1()I -PLcom/android/server/pm/dex/DexManager;->-wrap0(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -PLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V -PLcom/android/server/pm/dex/DexManager;->cachePackageInfo(Landroid/content/pm/PackageInfo;I)V -PLcom/android/server/pm/dex/DexManager;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; -PLcom/android/server/pm/dex/DexManager;->isUsedByOtherApps(Ljava/lang/String;)Z PLcom/android/server/pm/dex/DexManager;->load(Ljava/util/Map;)V -PLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V -PLcom/android/server/pm/dex/DexManager;->notifyDexLoad(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/lang/String;I)V -PLcom/android/server/pm/dex/DexManager;->notifyDexLoadInternal(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/lang/String;I)V -PLcom/android/server/pm/dex/DexManager;->notifyPackageInstalled(Landroid/content/pm/PackageInfo;I)V -PLcom/android/server/pm/dex/DexManager;->putIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/pm/dex/DexManager;->notifyDexLoad(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;Ljava/lang/String;I)V +PLcom/android/server/pm/dex/DexManager;->notifyPackageUpdated(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +PLcom/android/server/pm/dex/DexoptOptions;->getCompilerFilter()Ljava/lang/String; +PLcom/android/server/pm/dex/DexoptOptions;->getPackageName()Ljava/lang/String; +PLcom/android/server/pm/dex/DexoptOptions;->getSplitName()Ljava/lang/String; +PLcom/android/server/pm/dex/DexoptOptions;->isBootComplete()Z +PLcom/android/server/pm/dex/DexoptOptions;->isCheckForProfileUpdates()Z +PLcom/android/server/pm/dex/DexoptOptions;->isDexoptAsSharedLibrary()Z +PLcom/android/server/pm/dex/DexoptOptions;->isDowngrade()Z +PLcom/android/server/pm/dex/DexoptOptions;->isForce()Z +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get0(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get1(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Ljava/util/Set; -PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get2(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)I +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get2(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get3(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)I PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-wrap0(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z -PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)V -PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(ZI)V -PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(ZILjava/lang/String;)V +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(ZILjava/lang/String;Ljava/lang/String;)V +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getClassLoaderContext()Ljava/lang/String; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getLoaderIsas()Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getLoadingPackages()Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->isUsedByOtherApps()Z PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->merge(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Ljava/util/Map; -PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get1(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Z -PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-set0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Z)Z -PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-wrap0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Z)Z -PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>()V -PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V -PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isUsedByOtherApps()Z -PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->merge(Z)Z -PLcom/android/server/pm/dex/PackageDexUsage;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get1(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Ljava/util/Map; +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get2(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-wrap0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->clearCodePathUsedByOtherApps()Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->getDexUseInfoMap()Ljava/util/Map; +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->getLoadingPackages(Ljava/lang/String;)Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isAnyCodePathUsedByOtherApps()Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->mergeCodePathUsedByOtherApps(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/pm/dex/PackageDexUsage;->clearUsedByOtherApps(Ljava/lang/String;)Z +PLcom/android/server/pm/dex/PackageDexUsage;->clonePackageUseInfoMap()Ljava/util/Map; +PLcom/android/server/pm/dex/PackageDexUsage;->isSupportedVersion(I)Z +PLcom/android/server/pm/dex/PackageDexUsage;->maybeAddLoadingPackage(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)Z +PLcom/android/server/pm/dex/PackageDexUsage;->maybeReadClassLoaderContext(Ljava/io/BufferedReader;I)Ljava/lang/String; +PLcom/android/server/pm/dex/PackageDexUsage;->maybeReadLoadingPackages(Ljava/io/BufferedReader;I)Ljava/util/Set; PLcom/android/server/pm/dex/PackageDexUsage;->maybeWriteAsync()V PLcom/android/server/pm/dex/PackageDexUsage;->read()V -PLcom/android/server/pm/dex/PackageDexUsage;->read(Ljava/io/Reader;)V PLcom/android/server/pm/dex/PackageDexUsage;->readBoolean(Ljava/lang/String;)Z PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Object;)V PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Void;)V -PLcom/android/server/pm/dex/PackageDexUsage;->record(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ZZ)Z -PLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/Map;)V +PLcom/android/server/pm/dex/PackageDexUsage;->writeBoolean(Z)Ljava/lang/String; +PLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Object;)V +PLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Void;)V +PLcom/android/server/policy/-$Lambda$pV_TcBBXJOcgD8CpVRVZuDc_ff8;-><init>(BLjava/lang/Object;)V PLcom/android/server/policy/AccessibilityShortcutController$1;-><init>(Lcom/android/server/policy/AccessibilityShortcutController;Landroid/os/Handler;)V PLcom/android/server/policy/AccessibilityShortcutController$FrameworkObjectProvider;-><init>()V PLcom/android/server/policy/AccessibilityShortcutController;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V PLcom/android/server/policy/AccessibilityShortcutController;->getTargetServiceComponentNameString(Landroid/content/Context;I)Ljava/lang/String; -PLcom/android/server/policy/AccessibilityShortcutController;->isAccessibilityShortcutAvailable(Z)Z PLcom/android/server/policy/AccessibilityShortcutController;->onSettingsChanged()V PLcom/android/server/policy/AccessibilityShortcutController;->setCurrentUser(I)V PLcom/android/server/policy/BarController$1;-><init>(Lcom/android/server/policy/BarController;I)V PLcom/android/server/policy/BarController$1;->run()V PLcom/android/server/policy/BarController$BarHandler;-><init>(Lcom/android/server/policy/BarController;)V PLcom/android/server/policy/BarController$BarHandler;-><init>(Lcom/android/server/policy/BarController;Lcom/android/server/policy/BarController$BarHandler;)V +PLcom/android/server/policy/BarController$BarHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/policy/BarController;->-get0(Lcom/android/server/policy/BarController;)I +PLcom/android/server/policy/BarController;->-get1(Lcom/android/server/policy/BarController;)Lcom/android/server/policy/BarController$OnBarVisibilityChangedListener; PLcom/android/server/policy/BarController;-><init>(Ljava/lang/String;IIIIII)V -PLcom/android/server/policy/BarController;->adjustSystemUiVisibilityLw(II)V -PLcom/android/server/policy/BarController;->checkHiddenLw()Z PLcom/android/server/policy/BarController;->checkShowTransientBarLw()Z -PLcom/android/server/policy/BarController;->computeStateLw(ZZLandroid/view/WindowManagerPolicy$WindowState;Z)I -PLcom/android/server/policy/BarController;->getStatusBarInternal()Lcom/android/server/statusbar/StatusBarManagerInternal; -PLcom/android/server/policy/BarController;->setOnBarVisibilityChangedListener(Lcom/android/server/policy/BarController$OnBarVisibilityChangedListener;)V -PLcom/android/server/policy/BarController;->setShowTransparent(Z)V +PLcom/android/server/policy/BarController;->setOnBarVisibilityChangedListener(Lcom/android/server/policy/BarController$OnBarVisibilityChangedListener;Z)V PLcom/android/server/policy/BarController;->setWindow(Landroid/view/WindowManagerPolicy$WindowState;)V -PLcom/android/server/policy/BarController;->skipAnimation()Z -PLcom/android/server/policy/BarController;->updateStateLw(I)Z -PLcom/android/server/policy/BarController;->wasRecentlyTranslucent()Z PLcom/android/server/policy/GlobalKeyManager;-><init>(Landroid/content/Context;)V -PLcom/android/server/policy/GlobalKeyManager;->handleGlobalKey(Landroid/content/Context;ILandroid/view/KeyEvent;)Z PLcom/android/server/policy/GlobalKeyManager;->loadGlobalKeys(Landroid/content/Context;)V -PLcom/android/server/policy/GlobalKeyManager;->shouldHandleGlobalKey(ILandroid/view/KeyEvent;)Z PLcom/android/server/policy/IconUtilities;-><init>(Landroid/content/Context;)V PLcom/android/server/policy/ImmersiveModeConfirmation$1;-><init>(Lcom/android/server/policy/ImmersiveModeConfirmation;)V PLcom/android/server/policy/ImmersiveModeConfirmation$2;-><init>(Lcom/android/server/policy/ImmersiveModeConfirmation;)V PLcom/android/server/policy/ImmersiveModeConfirmation$H;-><init>(Lcom/android/server/policy/ImmersiveModeConfirmation;)V PLcom/android/server/policy/ImmersiveModeConfirmation$H;-><init>(Lcom/android/server/policy/ImmersiveModeConfirmation;Lcom/android/server/policy/ImmersiveModeConfirmation$H;)V +PLcom/android/server/policy/ImmersiveModeConfirmation$H;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/policy/ImmersiveModeConfirmation;->-wrap0(Lcom/android/server/policy/ImmersiveModeConfirmation;)V PLcom/android/server/policy/ImmersiveModeConfirmation;-><init>(Landroid/content/Context;)V PLcom/android/server/policy/ImmersiveModeConfirmation;->getNavBarExitDuration()J -PLcom/android/server/policy/ImmersiveModeConfirmation;->getWindowToken()Landroid/os/IBinder; +PLcom/android/server/policy/ImmersiveModeConfirmation;->handleHide()V +PLcom/android/server/policy/ImmersiveModeConfirmation;->immersiveModeChangedLw(Ljava/lang/String;ZZZ)V PLcom/android/server/policy/ImmersiveModeConfirmation;->loadSetting(I)V PLcom/android/server/policy/ImmersiveModeConfirmation;->systemReady()V PLcom/android/server/policy/LogDecelerateInterpolator;-><init>(II)V @@ -11369,11 +13087,9 @@ PLcom/android/server/policy/PhoneWindowManager$12;-><init>(Lcom/android/server/p PLcom/android/server/policy/PhoneWindowManager$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/policy/PhoneWindowManager$13;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager$14;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V -PLcom/android/server/policy/PhoneWindowManager$14;->onDown()V PLcom/android/server/policy/PhoneWindowManager$14;->onFling(I)V PLcom/android/server/policy/PhoneWindowManager$14;->onSwipeFromLeft()V PLcom/android/server/policy/PhoneWindowManager$14;->onSwipeFromTop()V -PLcom/android/server/policy/PhoneWindowManager$14;->onUpOrCancel()V PLcom/android/server/policy/PhoneWindowManager$15;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager$15;->onAppTransitionCancelledLocked(I)V PLcom/android/server/policy/PhoneWindowManager$15;->onAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I @@ -11383,13 +13099,12 @@ PLcom/android/server/policy/PhoneWindowManager$19;-><init>(Lcom/android/server/p PLcom/android/server/policy/PhoneWindowManager$19;->run()V PLcom/android/server/policy/PhoneWindowManager$1;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager$1;->run()V -PLcom/android/server/policy/PhoneWindowManager$21;-><init>(Lcom/android/server/policy/PhoneWindowManager;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/WindowManagerPolicy$WindowState;Z)V -PLcom/android/server/policy/PhoneWindowManager$21;->run()V PLcom/android/server/policy/PhoneWindowManager$2;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager$2;->onDrawn()V PLcom/android/server/policy/PhoneWindowManager$3;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager$4;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager$5;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$5;->onBarVisibilityChanged(Z)V PLcom/android/server/policy/PhoneWindowManager$6;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager$7;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager$8;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V @@ -11411,25 +13126,16 @@ PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->onChange(Z)V PLcom/android/server/policy/PhoneWindowManager;->-wrap12(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager;->-wrap14(Lcom/android/server/policy/PhoneWindowManager;)V PLcom/android/server/policy/PhoneWindowManager;->-wrap20(Lcom/android/server/policy/PhoneWindowManager;Landroid/view/WindowManagerPolicy$WindowState;)V +PLcom/android/server/policy/PhoneWindowManager;->-wrap21(Lcom/android/server/policy/PhoneWindowManager;I)V PLcom/android/server/policy/PhoneWindowManager;->-wrap3(Lcom/android/server/policy/PhoneWindowManager;ILandroid/view/animation/Animation;)I PLcom/android/server/policy/PhoneWindowManager;->-wrap4(Lcom/android/server/policy/PhoneWindowManager;)I PLcom/android/server/policy/PhoneWindowManager;-><init>()V -PLcom/android/server/policy/PhoneWindowManager;->addSplashScreen(Landroid/os/IBinder;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;I)Landroid/view/WindowManagerPolicy$StartingSurface; PLcom/android/server/policy/PhoneWindowManager;->addSplashscreenContent(Lcom/android/internal/policy/PhoneWindow;Landroid/content/Context;)V -PLcom/android/server/policy/PhoneWindowManager;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V -PLcom/android/server/policy/PhoneWindowManager;->adjustSystemUiVisibilityLw(I)I -PLcom/android/server/policy/PhoneWindowManager;->adjustWindowParamsLw(Landroid/view/WindowManager$LayoutParams;)V PLcom/android/server/policy/PhoneWindowManager;->allowAppAnimationsLw()Z PLcom/android/server/policy/PhoneWindowManager;->applyLidSwitchState()V -PLcom/android/server/policy/PhoneWindowManager;->applyStableConstraints(IILandroid/graphics/Rect;)V -PLcom/android/server/policy/PhoneWindowManager;->areTranslucentBarsAllowed()Z PLcom/android/server/policy/PhoneWindowManager;->awakenDreams()V -PLcom/android/server/policy/PhoneWindowManager;->beginPostLayoutPolicyLw(II)V PLcom/android/server/policy/PhoneWindowManager;->bindKeyguard()V -PLcom/android/server/policy/PhoneWindowManager;->calculateRelevantTaskInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;II)V PLcom/android/server/policy/PhoneWindowManager;->canDismissBootAnimation()Z -PLcom/android/server/policy/PhoneWindowManager;->canHideNavigationBar()Z -PLcom/android/server/policy/PhoneWindowManager;->canReceiveInput(Landroid/view/WindowManagerPolicy$WindowState;)Z PLcom/android/server/policy/PhoneWindowManager;->cancelPendingAccessibilityShortcutAction()V PLcom/android/server/policy/PhoneWindowManager;->cancelPendingBackKeyAction()V PLcom/android/server/policy/PhoneWindowManager;->cancelPendingPowerKeyAction()V @@ -11437,38 +13143,23 @@ PLcom/android/server/policy/PhoneWindowManager;->cancelPendingScreenshotChordAct PLcom/android/server/policy/PhoneWindowManager;->cancelPreloadRecentApps()V PLcom/android/server/policy/PhoneWindowManager;->checkAddPermission(Landroid/view/WindowManager$LayoutParams;[I)I PLcom/android/server/policy/PhoneWindowManager;->checkShowToOwnerOnly(Landroid/view/WindowManager$LayoutParams;)Z -PLcom/android/server/policy/PhoneWindowManager;->configureNavBarOpacity(IZZZ)I PLcom/android/server/policy/PhoneWindowManager;->createHiddenByKeyguardExit(ZZ)Landroid/view/animation/Animation; PLcom/android/server/policy/PhoneWindowManager;->createHomeDockIntent()Landroid/content/Intent; PLcom/android/server/policy/PhoneWindowManager;->dispatchUnhandledKey(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; -PLcom/android/server/policy/PhoneWindowManager;->drawsSystemBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z +PLcom/android/server/policy/PhoneWindowManager;->enableKeyguard(Z)V PLcom/android/server/policy/PhoneWindowManager;->enableScreenAfterBoot()V PLcom/android/server/policy/PhoneWindowManager;->finishKeyguardDrawn()V -PLcom/android/server/policy/PhoneWindowManager;->finishLayoutLw()V PLcom/android/server/policy/PhoneWindowManager;->finishScreenTurningOn()V PLcom/android/server/policy/PhoneWindowManager;->finishWindowsDrawn()V -PLcom/android/server/policy/PhoneWindowManager;->focusChangedLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I -PLcom/android/server/policy/PhoneWindowManager;->forcesDrawStatusBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z PLcom/android/server/policy/PhoneWindowManager;->getAudioService()Landroid/media/IAudioService; -PLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayHeight(IIIII)I -PLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayWidth(IIIII)I -PLcom/android/server/policy/PhoneWindowManager;->getContentRectLw(Landroid/graphics/Rect;)V PLcom/android/server/policy/PhoneWindowManager;->getDisplayContext(Landroid/content/Context;I)Landroid/content/Context; PLcom/android/server/policy/PhoneWindowManager;->getDreamManager()Landroid/service/dreams/IDreamManager; PLcom/android/server/policy/PhoneWindowManager;->getHdmiControl()Lcom/android/server/policy/PhoneWindowManager$HdmiControl; -PLcom/android/server/policy/PhoneWindowManager;->getInputMethodWindowVisibleHeightLw()I -PLcom/android/server/policy/PhoneWindowManager;->getInsetHintLw(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z PLcom/android/server/policy/PhoneWindowManager;->getKeyguardDrawnTimeout()J PLcom/android/server/policy/PhoneWindowManager;->getLongIntArray(Landroid/content/res/Resources;I)[J -PLcom/android/server/policy/PhoneWindowManager;->getNavigationBarHeight(II)I -PLcom/android/server/policy/PhoneWindowManager;->getNavigationBarWidth(II)I -PLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayHeight(IIIII)I -PLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayWidth(IIIII)I -PLcom/android/server/policy/PhoneWindowManager;->getNonDecorInsetsLw(IIILandroid/graphics/Rect;)V -PLcom/android/server/policy/PhoneWindowManager;->getStableInsetsLw(IIILandroid/graphics/Rect;)V -PLcom/android/server/policy/PhoneWindowManager;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal; -PLcom/android/server/policy/PhoneWindowManager;->getSystemDecorLayerLw()I +PLcom/android/server/policy/PhoneWindowManager;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService; PLcom/android/server/policy/PhoneWindowManager;->getTelecommService()Landroid/telecom/TelecomManager; +PLcom/android/server/policy/PhoneWindowManager;->getUserRotationMode()I PLcom/android/server/policy/PhoneWindowManager;->getVibrationEffect(I)Landroid/os/VibrationEffect; PLcom/android/server/policy/PhoneWindowManager;->handleShortPressOnHome()V PLcom/android/server/policy/PhoneWindowManager;->handleStartTransitionForKeyguardLw(ILandroid/view/animation/Animation;)I @@ -11480,39 +13171,26 @@ PLcom/android/server/policy/PhoneWindowManager;->initializeHdmiState()V PLcom/android/server/policy/PhoneWindowManager;->interceptAccessibilityShortcutChord()V PLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyDown()V PLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyUp(Landroid/view/KeyEvent;)Z -PLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J -PLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I PLcom/android/server/policy/PhoneWindowManager;->interceptScreenshotChord()V PLcom/android/server/policy/PhoneWindowManager;->isAnyPortrait(I)Z PLcom/android/server/policy/PhoneWindowManager;->isDefaultOrientationForced()Z -PLcom/android/server/policy/PhoneWindowManager;->isFullscreen(Landroid/view/WindowManager$LayoutParams;)Z -PLcom/android/server/policy/PhoneWindowManager;->isImmersiveMode(I)Z PLcom/android/server/policy/PhoneWindowManager;->isKeyguardDrawnLw()Z PLcom/android/server/policy/PhoneWindowManager;->isKeyguardHostWindow(Landroid/view/WindowManager$LayoutParams;)Z PLcom/android/server/policy/PhoneWindowManager;->isKeyguardOccluded()Z PLcom/android/server/policy/PhoneWindowManager;->isKeyguardSecure(I)Z -PLcom/android/server/policy/PhoneWindowManager;->isNavBarForcedShownLw(Landroid/view/WindowManagerPolicy$WindowState;)Z -PLcom/android/server/policy/PhoneWindowManager;->isShowingDreamLw()Z +PLcom/android/server/policy/PhoneWindowManager;->isLandscapeOrSeascape(I)Z +PLcom/android/server/policy/PhoneWindowManager;->isNavBarEmpty(I)Z PLcom/android/server/policy/PhoneWindowManager;->isUserSetupComplete()Z -PLcom/android/server/policy/PhoneWindowManager;->isValidGlobalKey(I)Z PLcom/android/server/policy/PhoneWindowManager;->keepScreenOnStartedLw()V PLcom/android/server/policy/PhoneWindowManager;->keepScreenOnStoppedLw()V PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey()V PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey(ZZ)V -PLcom/android/server/policy/PhoneWindowManager;->layoutNavigationBar(IIIIIIILandroid/graphics/Rect;ZZZZ)Z -PLcom/android/server/policy/PhoneWindowManager;->layoutStatusBar(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;IZ)Z -PLcom/android/server/policy/PhoneWindowManager;->layoutWallpaper(Landroid/view/WindowManagerPolicy$WindowState;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V -PLcom/android/server/policy/PhoneWindowManager;->navigationBarPosition(III)I PLcom/android/server/policy/PhoneWindowManager;->needSensorRunningLp()Z -PLcom/android/server/policy/PhoneWindowManager;->offsetInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V PLcom/android/server/policy/PhoneWindowManager;->onConfigurationChanged()V PLcom/android/server/policy/PhoneWindowManager;->onKeyguardOccludedChangedLw(Z)V PLcom/android/server/policy/PhoneWindowManager;->onSystemUiStarted()V -PLcom/android/server/policy/PhoneWindowManager;->performHapticFeedbackLw(Landroid/view/WindowManagerPolicy$WindowState;IZ)Z PLcom/android/server/policy/PhoneWindowManager;->prepareAddWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I PLcom/android/server/policy/PhoneWindowManager;->readCameraLensCoverState()V -PLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V -PLcom/android/server/policy/PhoneWindowManager;->readLidState()V PLcom/android/server/policy/PhoneWindowManager;->readRotation(I)I PLcom/android/server/policy/PhoneWindowManager;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V PLcom/android/server/policy/PhoneWindowManager;->removeWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V @@ -11522,29 +13200,28 @@ PLcom/android/server/policy/PhoneWindowManager;->rotationForOrientationLw(II)I PLcom/android/server/policy/PhoneWindowManager;->rotationHasCompatibleMetricsLw(II)Z PLcom/android/server/policy/PhoneWindowManager;->screenTurnedOn()V PLcom/android/server/policy/PhoneWindowManager;->screenTurningOn(Landroid/view/WindowManagerPolicy$ScreenOnListener;)V -PLcom/android/server/policy/PhoneWindowManager;->selectAnimationLw(Landroid/view/WindowManagerPolicy$WindowState;I)I +PLcom/android/server/policy/PhoneWindowManager;->selectRotationAnimationLw([I)V PLcom/android/server/policy/PhoneWindowManager;->sendCloseSystemWindows(Ljava/lang/String;)V +PLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBar(I)V +PLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBarAsync(I)V PLcom/android/server/policy/PhoneWindowManager;->setAttachedWindowFrames(Landroid/view/WindowManagerPolicy$WindowState;IILandroid/view/WindowManagerPolicy$WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V PLcom/android/server/policy/PhoneWindowManager;->setCurrentOrientationLw(I)V PLcom/android/server/policy/PhoneWindowManager;->setDismissImeOnBackKeyPressed(Z)V PLcom/android/server/policy/PhoneWindowManager;->setDisplayOverscan(Landroid/view/Display;IIII)V PLcom/android/server/policy/PhoneWindowManager;->setHdmiPlugged(Z)V -PLcom/android/server/policy/PhoneWindowManager;->setInitialDisplaySize(Landroid/view/Display;III)V PLcom/android/server/policy/PhoneWindowManager;->setKeyguardOccludedLw(ZZ)Z PLcom/android/server/policy/PhoneWindowManager;->setLastInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V -PLcom/android/server/policy/PhoneWindowManager;->setRecentsVisibilityLw(Z)V +PLcom/android/server/policy/PhoneWindowManager;->setRotationLw(I)V PLcom/android/server/policy/PhoneWindowManager;->setSafeMode(Z)V +PLcom/android/server/policy/PhoneWindowManager;->setUserRotationMode(II)V PLcom/android/server/policy/PhoneWindowManager;->shouldEnableWakeGestureLp()Z PLcom/android/server/policy/PhoneWindowManager;->shouldRotateSeamlessly(II)Z -PLcom/android/server/policy/PhoneWindowManager;->shouldUseOutsets(Landroid/view/WindowManager$LayoutParams;I)Z PLcom/android/server/policy/PhoneWindowManager;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V PLcom/android/server/policy/PhoneWindowManager;->startDockOrHome(ZZ)V PLcom/android/server/policy/PhoneWindowManager;->startKeyguardExitAnimation(JJ)V PLcom/android/server/policy/PhoneWindowManager;->startedWakingUp()V PLcom/android/server/policy/PhoneWindowManager;->systemBooted()V PLcom/android/server/policy/PhoneWindowManager;->systemReady()V -PLcom/android/server/policy/PhoneWindowManager;->updateLightNavigationBarLw(ILandroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I -PLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V PLcom/android/server/policy/PhoneWindowManager;->updateOrientationListenerLp()V PLcom/android/server/policy/PhoneWindowManager;->updateRotation(Z)V PLcom/android/server/policy/PhoneWindowManager;->updateRotation(ZZ)V @@ -11552,9 +13229,9 @@ PLcom/android/server/policy/PhoneWindowManager;->updateScreenOffSleepToken(Z)V PLcom/android/server/policy/PhoneWindowManager;->updateSettings()V PLcom/android/server/policy/PhoneWindowManager;->updateUiMode()V PLcom/android/server/policy/PhoneWindowManager;->updateWakeGestureListenerLp()V -PLcom/android/server/policy/PhoneWindowManager;->userActivity()V PLcom/android/server/policy/PhoneWindowManager;->validateRotationAnimationLw(IIZ)Z PLcom/android/server/policy/PolicyControl;->adjustClearableFlags(Landroid/view/WindowManagerPolicy$WindowState;I)I +PLcom/android/server/policy/PolicyControl;->disableImmersiveConfirmation(Ljava/lang/String;)Z PLcom/android/server/policy/PolicyControl;->reloadFromSetting(Landroid/content/Context;)V PLcom/android/server/policy/PolicyControl;->setFilters(Ljava/lang/String;)V PLcom/android/server/policy/ShortcutManager$ShortcutInfo;-><init>(Ljava/lang/String;Landroid/content/Intent;)V @@ -11562,40 +13239,22 @@ PLcom/android/server/policy/ShortcutManager;-><init>(Landroid/content/Context;)V PLcom/android/server/policy/ShortcutManager;->loadShortcuts()V PLcom/android/server/policy/SplashScreenSurface;-><init>(Landroid/view/View;Landroid/os/IBinder;)V PLcom/android/server/policy/SplashScreenSurface;->remove()V -PLcom/android/server/policy/StatusBarController$1$1;-><init>(Lcom/android/server/policy/StatusBarController$1;)V -PLcom/android/server/policy/StatusBarController$1$1;->run()V PLcom/android/server/policy/StatusBarController$1$2;-><init>(Lcom/android/server/policy/StatusBarController$1;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)V -PLcom/android/server/policy/StatusBarController$1$2;->run()V PLcom/android/server/policy/StatusBarController$1$3;-><init>(Lcom/android/server/policy/StatusBarController$1;)V PLcom/android/server/policy/StatusBarController$1$3;->run()V -PLcom/android/server/policy/StatusBarController$1$4;-><init>(Lcom/android/server/policy/StatusBarController$1;)V -PLcom/android/server/policy/StatusBarController$1$4;->run()V PLcom/android/server/policy/StatusBarController$1;-><init>(Lcom/android/server/policy/StatusBarController;)V PLcom/android/server/policy/StatusBarController$1;->onAppTransitionCancelledLocked(I)V -PLcom/android/server/policy/StatusBarController$1;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V -PLcom/android/server/policy/StatusBarController$1;->onAppTransitionPendingLocked()V PLcom/android/server/policy/StatusBarController$1;->onAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I PLcom/android/server/policy/StatusBarController;->-wrap0(Landroid/view/animation/Animation;Landroid/view/animation/Animation;)J PLcom/android/server/policy/StatusBarController;-><init>()V -PLcom/android/server/policy/StatusBarController;->calculateStatusBarTransitionStartTime(Landroid/view/animation/Animation;Landroid/view/animation/Animation;)J -PLcom/android/server/policy/StatusBarController;->findAlmostThereFraction(Landroid/view/animation/Interpolator;)F -PLcom/android/server/policy/StatusBarController;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation; PLcom/android/server/policy/StatusBarController;->getAppTransitionListener()Landroid/view/WindowManagerInternal$AppTransitionListener; -PLcom/android/server/policy/StatusBarController;->skipAnimation()Z PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;-><init>(Lcom/android/server/policy/SystemGesturesPointerEventListener;)V PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;-><init>(Lcom/android/server/policy/SystemGesturesPointerEventListener;Lcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;)V -PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z -PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onSingleTapUp(Landroid/view/MotionEvent;)Z PLcom/android/server/policy/SystemGesturesPointerEventListener;->-get0(Lcom/android/server/policy/SystemGesturesPointerEventListener;)Lcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks; PLcom/android/server/policy/SystemGesturesPointerEventListener;->-get1(Lcom/android/server/policy/SystemGesturesPointerEventListener;)J -PLcom/android/server/policy/SystemGesturesPointerEventListener;->-get2(Lcom/android/server/policy/SystemGesturesPointerEventListener;)Landroid/widget/OverScroller; PLcom/android/server/policy/SystemGesturesPointerEventListener;->-set0(Lcom/android/server/policy/SystemGesturesPointerEventListener;J)J PLcom/android/server/policy/SystemGesturesPointerEventListener;-><init>(Landroid/content/Context;Lcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;)V -PLcom/android/server/policy/SystemGesturesPointerEventListener;->captureDown(Landroid/view/MotionEvent;I)V PLcom/android/server/policy/SystemGesturesPointerEventListener;->checkNull(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; -PLcom/android/server/policy/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I -PLcom/android/server/policy/SystemGesturesPointerEventListener;->findIndex(I)I -PLcom/android/server/policy/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V PLcom/android/server/policy/SystemGesturesPointerEventListener;->systemReady()V PLcom/android/server/policy/WakeGestureListener$1;-><init>(Lcom/android/server/policy/WakeGestureListener;)V PLcom/android/server/policy/WakeGestureListener$2;-><init>(Lcom/android/server/policy/WakeGestureListener;)V @@ -11620,8 +13279,6 @@ PLcom/android/server/policy/WindowOrientationListener;-><init>(Landroid/content/ PLcom/android/server/policy/WindowOrientationListener;->canDetectOrientation()Z PLcom/android/server/policy/WindowOrientationListener;->enable(Z)V PLcom/android/server/policy/WindowOrientationListener;->getProposedRotation()I -PLcom/android/server/policy/WindowOrientationListener;->onTouchEnd()V -PLcom/android/server/policy/WindowOrientationListener;->onTouchStart()V PLcom/android/server/policy/WindowOrientationListener;->setCurrentRotation(I)V PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)V PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V @@ -11643,6 +13300,7 @@ PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurnedOn( PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurningOn(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onStartedWakingUp()V PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onSystemReady()V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setKeyguardEnabled(Z)V PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setOccluded(ZZ)V PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->startKeyguardExitAnimation(JJ)V PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V @@ -11652,12 +13310,11 @@ PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOn() PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedWakingUp()V PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onSystemReady()V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setKeyguardEnabled(Z)V PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setOccluded(ZZ)V PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->startKeyguardExitAnimation(JJ)V PLcom/android/server/policy/keyguard/KeyguardStateMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V -PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isInputRestricted()Z PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isSecure(I)Z -PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onHasLockscreenWallpaperChanged(Z)V PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onInputRestrictedStateChanged(Z)V PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onShowingStateChanged(Z)V @@ -11670,30 +13327,18 @@ PLcom/android/server/power/Notifier$1;-><init>(Lcom/android/server/power/Notifie PLcom/android/server/power/Notifier$2;-><init>(Lcom/android/server/power/Notifier;)V PLcom/android/server/power/Notifier$3;-><init>(Lcom/android/server/power/Notifier;)V PLcom/android/server/power/Notifier$NotifierHandler;-><init>(Lcom/android/server/power/Notifier;Landroid/os/Looper;)V -PLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/power/Notifier;->-wrap3(Lcom/android/server/power/Notifier;)V PLcom/android/server/power/Notifier;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/internal/app/IAppOpsService;Lcom/android/server/power/SuspendBlocker;Landroid/view/WindowManagerPolicy;)V -PLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I PLcom/android/server/power/Notifier;->onLongPartialWakeLockFinish(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V PLcom/android/server/power/Notifier;->onLongPartialWakeLockStart(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V -PLcom/android/server/power/Notifier;->onUserActivity(II)V -PLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V -PLcom/android/server/power/Notifier;->sendUserActivity()V PLcom/android/server/power/PowerManagerService$1;->acquireSuspendBlocker()V -PLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(I)V PLcom/android/server/power/PowerManagerService$1;->onStateChanged()V PLcom/android/server/power/PowerManagerService$1;->releaseSuspendBlocker()V PLcom/android/server/power/PowerManagerService$BatteryReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V PLcom/android/server/power/PowerManagerService$BatteryReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$BatteryReceiver;)V -PLcom/android/server/power/PowerManagerService$BatteryReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/power/PowerManagerService$BinderService;->getLastShutdownReason()I -PLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z -PLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z PLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z -PLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z PLcom/android/server/power/PowerManagerService$BinderService;->isWakeLockLevelSupported(I)Z -PLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUids(Landroid/os/IBinder;[I)V -PLcom/android/server/power/PowerManagerService$BinderService;->userActivity(JII)V +PLcom/android/server/power/PowerManagerService$BinderService;->setStayOnSetting(I)V PLcom/android/server/power/PowerManagerService$BinderService;->wakeUp(JLjava/lang/String;Ljava/lang/String;)V PLcom/android/server/power/PowerManagerService$Constants;->start(Landroid/content/ContentResolver;)V PLcom/android/server/power/PowerManagerService$Constants;->updateConstants()V @@ -11701,109 +13346,51 @@ PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/androi PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DockReceiver;)V PLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V PLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DreamReceiver;)V -PLcom/android/server/power/PowerManagerService$LocalService;->powerHint(II)V PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleTempWhitelist([I)V PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleWhitelist([I)V PLcom/android/server/power/PowerManagerService$LocalService;->setMaximumScreenOffTimeoutFromDeviceAdmin(I)V -PLcom/android/server/power/PowerManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(I)V -PLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V PLcom/android/server/power/PowerManagerService$LocalService;->uidActive(I)V PLcom/android/server/power/PowerManagerService$LocalService;->uidGone(I)V -PLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V -PLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V PLcom/android/server/power/PowerManagerService$SettingsObserver;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release()V -PLcom/android/server/power/PowerManagerService$UidState;-><init>(I)V PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$UserSwitchedReceiver;)V PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V -PLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;)V -PLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;II)Z -PLcom/android/server/power/PowerManagerService$WakeLock;->hasSameWorkSource(Landroid/os/WorkSource;)Z -PLcom/android/server/power/PowerManagerService$WakeLock;->updateWorkSource(Landroid/os/WorkSource;)V -PLcom/android/server/power/PowerManagerService;->-get12(Lcom/android/server/power/PowerManagerService;)Z PLcom/android/server/power/PowerManagerService;->-get2(Lcom/android/server/power/PowerManagerService;)Z PLcom/android/server/power/PowerManagerService;->-get3(Lcom/android/server/power/PowerManagerService;)Z PLcom/android/server/power/PowerManagerService;->-get4(Lcom/android/server/power/PowerManagerService;)I PLcom/android/server/power/PowerManagerService;->-get5(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/SuspendBlocker; PLcom/android/server/power/PowerManagerService;->-set0(Lcom/android/server/power/PowerManagerService;I)I -PLcom/android/server/power/PowerManagerService;->-wrap0(Landroid/os/WorkSource;)Landroid/os/WorkSource; -PLcom/android/server/power/PowerManagerService;->-wrap1(Lcom/android/server/power/PowerManagerService;)Z -PLcom/android/server/power/PowerManagerService;->-wrap13(Lcom/android/server/power/PowerManagerService;)V -PLcom/android/server/power/PowerManagerService;->-wrap14(Lcom/android/server/power/PowerManagerService;)V PLcom/android/server/power/PowerManagerService;->-wrap16(Lcom/android/server/power/PowerManagerService;)V PLcom/android/server/power/PowerManagerService;->-wrap17(Lcom/android/server/power/PowerManagerService;)V -PLcom/android/server/power/PowerManagerService;->-wrap2(Lcom/android/server/power/PowerManagerService;)Z PLcom/android/server/power/PowerManagerService;->-wrap21(Ljava/lang/String;)V -PLcom/android/server/power/PowerManagerService;->-wrap23(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V PLcom/android/server/power/PowerManagerService;->-wrap27(Lcom/android/server/power/PowerManagerService;Z)V -PLcom/android/server/power/PowerManagerService;->-wrap29(Lcom/android/server/power/PowerManagerService;I)V -PLcom/android/server/power/PowerManagerService;->-wrap32(Lcom/android/server/power/PowerManagerService;J)V PLcom/android/server/power/PowerManagerService;->-wrap35(Lcom/android/server/power/PowerManagerService;)V -PLcom/android/server/power/PowerManagerService;->-wrap36(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V PLcom/android/server/power/PowerManagerService;->-wrap37(Lcom/android/server/power/PowerManagerService;JIII)V PLcom/android/server/power/PowerManagerService;->-wrap38(Lcom/android/server/power/PowerManagerService;JLjava/lang/String;ILjava/lang/String;I)V PLcom/android/server/power/PowerManagerService;->-wrap4(Lcom/android/server/power/PowerManagerService;I)Z -PLcom/android/server/power/PowerManagerService;->-wrap7(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V -PLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V -PLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V -PLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V -PLcom/android/server/power/PowerManagerService;->copyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource; -PLcom/android/server/power/PowerManagerService;->enqueueNotifyLongMsgLocked(J)V -PLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V -PLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V PLcom/android/server/power/PowerManagerService;->getCurrentBrightnessSettingLocked()I -PLcom/android/server/power/PowerManagerService;->getDesiredScreenPolicyLocked()I PLcom/android/server/power/PowerManagerService;->getLastShutdownReasonInternal(Ljava/io/File;)I -PLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked()I -PLcom/android/server/power/PowerManagerService;->handleBatteryStateChangedLocked()V PLcom/android/server/power/PowerManagerService;->handleSettingsChangedLocked()V PLcom/android/server/power/PowerManagerService;->handleUidStateChangeLocked()V PLcom/android/server/power/PowerManagerService;->handleUserActivityTimeout()V PLcom/android/server/power/PowerManagerService;->incrementBootCount()V -PLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked()Z -PLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z -PLcom/android/server/power/PowerManagerService;->isInteractiveInternal()Z PLcom/android/server/power/PowerManagerService;->isLightDeviceIdleModeInternal()Z -PLcom/android/server/power/PowerManagerService;->isLowPowerModeInternal()Z -PLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z PLcom/android/server/power/PowerManagerService;->isScreenLock(Lcom/android/server/power/PowerManagerService$WakeLock;)Z -PLcom/android/server/power/PowerManagerService;->isValidAutoBrightnessAdjustment(F)Z PLcom/android/server/power/PowerManagerService;->isWakeLockLevelSupportedInternal(I)Z PLcom/android/server/power/PowerManagerService;->monitor()V -PLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V -PLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V -PLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V PLcom/android/server/power/PowerManagerService;->notifyWakeLockLongStartedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V -PLcom/android/server/power/PowerManagerService;->notifyWakeLockReleasedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V PLcom/android/server/power/PowerManagerService;->readConfigurationLocked()V PLcom/android/server/power/PowerManagerService;->setDeviceIdleTempWhitelistInternal([I)V PLcom/android/server/power/PowerManagerService;->setDeviceIdleWhitelistInternal([I)V PLcom/android/server/power/PowerManagerService;->setHalAutoSuspendModeLocked(Z)V -PLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V PLcom/android/server/power/PowerManagerService;->setMaximumScreenOffTimeoutFromDeviceAdminInternal(I)V -PLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(I)V -PLcom/android/server/power/PowerManagerService;->setUserActivityTimeoutOverrideFromWindowManagerInternal(J)V -PLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z -PLcom/android/server/power/PowerManagerService;->shouldBoostScreenBrightness()Z -PLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z +PLcom/android/server/power/PowerManagerService;->setStayOnSettingInternal(I)V PLcom/android/server/power/PowerManagerService;->shouldWakeUpWhenPluggedOrUnpluggedLocked(ZIZ)Z -PLcom/android/server/power/PowerManagerService;->startUidChangesInternal()V PLcom/android/server/power/PowerManagerService;->systemReady(Lcom/android/internal/app/IAppOpsService;)V -PLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V -PLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V -PLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V -PLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V PLcom/android/server/power/PowerManagerService;->updateLowPowerModeLocked()V -PLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V PLcom/android/server/power/PowerManagerService;->updateSettingsLocked()V -PLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V -PLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V PLcom/android/server/power/PowerManagerService;->updateWakeLockDisabledStatesLocked()V -PLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V -PLcom/android/server/power/PowerManagerService;->userActivityFromNative(JII)V -PLcom/android/server/power/PowerManagerService;->userActivityInternal(JIII)V -PLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(JIII)Z PLcom/android/server/power/PowerManagerService;->wakeUpInternal(JLjava/lang/String;ILjava/lang/String;I)V PLcom/android/server/power/PowerManagerService;->wakeUpNoUpdateLocked(JLjava/lang/String;ILjava/lang/String;I)Z PLcom/android/server/power/WirelessChargerDetector$1;-><init>(Lcom/android/server/power/WirelessChargerDetector;)V @@ -11814,7 +13401,6 @@ PLcom/android/server/print/PrintManagerService$PrintManagerImpl$1;-><init>(Lcom/ PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;-><init>(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)V PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hadPrintService(Lcom/android/server/print/UserState;Ljava/lang/String;)Z PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hasPrintService(Ljava/lang/String;)Z -PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageAdded(Ljava/lang/String;I)V PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageModified(Ljava/lang/String;)V PLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;-><init>(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;I)V PLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;->run()V @@ -11882,7 +13468,6 @@ PLcom/android/server/print/UserState;->-wrap3(Lcom/android/server/print/UserStat PLcom/android/server/print/UserState;-><init>(Landroid/content/Context;ILjava/lang/Object;Z)V PLcom/android/server/print/UserState;->addServiceLocked(Lcom/android/server/print/RemotePrintService;)V PLcom/android/server/print/UserState;->getInstalledComponents()Ljava/util/ArrayList; -PLcom/android/server/print/UserState;->getPrintServices(I)Ljava/util/List; PLcom/android/server/print/UserState;->handleDispatchPrintServicesChanged()V PLcom/android/server/print/UserState;->increasePriority()V PLcom/android/server/print/UserState;->onConfigurationChangedLocked()V @@ -11911,7 +13496,6 @@ PLcom/android/server/search/SearchManagerService$Lifecycle;->onUnlockUser(I)V PLcom/android/server/search/SearchManagerService$MyPackageMonitor;-><init>(Lcom/android/server/search/SearchManagerService;)V PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onSomePackagesChanged()V -PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->updateSearchables()V PLcom/android/server/search/SearchManagerService;->-get0(Lcom/android/server/search/SearchManagerService;)Landroid/content/Context; PLcom/android/server/search/SearchManagerService;->-get1(Lcom/android/server/search/SearchManagerService;)Landroid/util/SparseArray; PLcom/android/server/search/SearchManagerService;->-wrap1(Lcom/android/server/search/SearchManagerService;I)V @@ -11922,15 +13506,15 @@ PLcom/android/server/search/Searchables$1;-><init>()V PLcom/android/server/search/Searchables;-><init>(Landroid/content/Context;I)V PLcom/android/server/search/Searchables;->findGlobalSearchActivities()Ljava/util/List; PLcom/android/server/search/Searchables;->findGlobalSearchActivity(Ljava/util/List;)Landroid/content/ComponentName; -PLcom/android/server/search/Searchables;->findWebSearchActivity(Landroid/content/ComponentName;)Landroid/content/ComponentName; PLcom/android/server/search/Searchables;->getDefaultGlobalSearchProvider(Ljava/util/List;)Landroid/content/ComponentName; PLcom/android/server/search/Searchables;->getGlobalSearchProviderSetting()Ljava/lang/String; -PLcom/android/server/search/Searchables;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List; -PLcom/android/server/search/Searchables;->updateSearchableList()V PLcom/android/server/security/KeyAttestationApplicationIdProviderService;-><init>(Landroid/content/Context;)V PLcom/android/server/security/KeyChainSystemService$1;-><init>(Lcom/android/server/security/KeyChainSystemService;)V +PLcom/android/server/security/KeyChainSystemService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/security/KeyChainSystemService;->-wrap0(Lcom/android/server/security/KeyChainSystemService;Landroid/content/Intent;Landroid/os/UserHandle;)V PLcom/android/server/security/KeyChainSystemService;-><init>(Landroid/content/Context;)V PLcom/android/server/security/KeyChainSystemService;->onStart()V +PLcom/android/server/security/KeyChainSystemService;->startServiceInBackgroundAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V PLcom/android/server/soundtrigger/SoundTriggerDbHelper;-><init>(Landroid/content/Context;)V PLcom/android/server/soundtrigger/SoundTriggerHelper$MyCallStateListener;-><init>(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V PLcom/android/server/soundtrigger/SoundTriggerHelper;-><init>(Landroid/content/Context;)V @@ -11952,40 +13536,22 @@ PLcom/android/server/statusbar/-$Lambda$-TUoAzP8agiJJX9P4eGDtNXdVZ4$1;-><init>(L PLcom/android/server/statusbar/-$Lambda$-TUoAzP8agiJJX9P4eGDtNXdVZ4$1;->run()V PLcom/android/server/statusbar/StatusBarManagerService$1;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionCancelled()V -PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionFinished()V -PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionPending()V -PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionStarting(JJ)V PLcom/android/server/statusbar/StatusBarManagerService$1;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V -PLcom/android/server/statusbar/StatusBarManagerService$1;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V PLcom/android/server/statusbar/StatusBarManagerService$1;->setWindowState(II)V -PLcom/android/server/statusbar/StatusBarManagerService$1;->topAppWindowChanged(Z)V PLcom/android/server/statusbar/StatusBarManagerService$2;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;I)V PLcom/android/server/statusbar/StatusBarManagerService$2;->run()V -PLcom/android/server/statusbar/StatusBarManagerService$3;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Z)V -PLcom/android/server/statusbar/StatusBarManagerService$3;->run()V -PLcom/android/server/statusbar/StatusBarManagerService$4;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Landroid/os/IBinder;IIZ)V -PLcom/android/server/statusbar/StatusBarManagerService$4;->run()V -PLcom/android/server/statusbar/StatusBarManagerService$5;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V -PLcom/android/server/statusbar/StatusBarManagerService$5;->run()V PLcom/android/server/statusbar/StatusBarManagerService$6;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V PLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V PLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/statusbar/StatusBarManagerService$DisableRecord;)V -PLcom/android/server/statusbar/StatusBarManagerService;->-get0(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/internal/statusbar/IStatusBar; -PLcom/android/server/statusbar/StatusBarManagerService;->-get2(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/notification/NotificationDelegate; +PLcom/android/server/statusbar/StatusBarManagerService;->-get3(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/notification/NotificationDelegate; PLcom/android/server/statusbar/StatusBarManagerService;->-set3(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/notification/NotificationDelegate;)Lcom/android/server/notification/NotificationDelegate; -PLcom/android/server/statusbar/StatusBarManagerService;->-wrap0(Lcom/android/server/statusbar/StatusBarManagerService;)V -PLcom/android/server/statusbar/StatusBarManagerService;->-wrap2(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V -PLcom/android/server/statusbar/StatusBarManagerService;->-wrap3(Lcom/android/server/statusbar/StatusBarManagerService;Z)V PLcom/android/server/statusbar/StatusBarManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/statusbar/StatusBarManagerService;->clearNotificationEffects()V PLcom/android/server/statusbar/StatusBarManagerService;->disable(ILandroid/os/IBinder;Ljava/lang/String;)V PLcom/android/server/statusbar/StatusBarManagerService;->disableForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V -PLcom/android/server/statusbar/StatusBarManagerService;->disableLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V -PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V -PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarService()V -PLcom/android/server/statusbar/StatusBarManagerService;->gatherDisableActionsLocked(II)I -PLcom/android/server/statusbar/StatusBarManagerService;->lambda$-com_android_server_statusbar_StatusBarManagerService_23991()V -PLcom/android/server/statusbar/StatusBarManagerService;->manageDisableListLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V +PLcom/android/server/statusbar/StatusBarManagerService;->enforceExpandStatusBar()V +PLcom/android/server/statusbar/StatusBarManagerService;->handleSystemKey(I)V +PLcom/android/server/statusbar/StatusBarManagerService;->lambda$-com_android_server_statusbar_StatusBarManagerService_24751()V PLcom/android/server/statusbar/StatusBarManagerService;->notifyBarAttachChanged()V PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V @@ -11993,10 +13559,6 @@ PLcom/android/server/statusbar/StatusBarManagerService;->onPanelHidden()V PLcom/android/server/statusbar/StatusBarManagerService;->onPanelRevealed(ZI)V PLcom/android/server/statusbar/StatusBarManagerService;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;Ljava/util/List;Ljava/util/List;[ILjava/util/List;Landroid/graphics/Rect;Landroid/graphics/Rect;)V PLcom/android/server/statusbar/StatusBarManagerService;->setIconVisibility(Ljava/lang/String;Z)V -PLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V -PLcom/android/server/statusbar/StatusBarManagerService;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V -PLcom/android/server/statusbar/StatusBarManagerService;->topAppWindowChanged(Z)V -PLcom/android/server/statusbar/StatusBarManagerService;->updateUiVisibilityLocked(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V PLcom/android/server/storage/CacheQuotaStrategy$1$1;-><init>(Lcom/android/server/storage/CacheQuotaStrategy$1;Landroid/os/IBinder;)V PLcom/android/server/storage/CacheQuotaStrategy$1$1;->run()V PLcom/android/server/storage/CacheQuotaStrategy$1;-><init>(Lcom/android/server/storage/CacheQuotaStrategy;)V @@ -12010,43 +13572,32 @@ PLcom/android/server/storage/CacheQuotaStrategy;->createServiceConnection()V PLcom/android/server/storage/CacheQuotaStrategy;->disconnectService()V PLcom/android/server/storage/CacheQuotaStrategy;->getRequestFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/usage/CacheQuotaHint; PLcom/android/server/storage/CacheQuotaStrategy;->getServiceComponentName()Landroid/content/ComponentName; -PLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List; PLcom/android/server/storage/CacheQuotaStrategy;->insertIntoQuotaMap(Ljava/lang/String;IIJ)V PLcom/android/server/storage/CacheQuotaStrategy;->onResult(Landroid/os/Bundle;)V -PLcom/android/server/storage/CacheQuotaStrategy;->pushProcessedQuotas(Ljava/util/List;)V PLcom/android/server/storage/CacheQuotaStrategy;->readFromXml(Ljava/io/InputStream;)Landroid/util/Pair; PLcom/android/server/storage/CacheQuotaStrategy;->recalculateQuotas()V PLcom/android/server/storage/CacheQuotaStrategy;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;J)V PLcom/android/server/storage/CacheQuotaStrategy;->setupQuotasFromFile()J PLcom/android/server/storage/CacheQuotaStrategy;->writeXmlToFile(Ljava/util/List;)V -PLcom/android/server/storage/DeviceStorageMonitorService$1;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;Landroid/os/Looper;)V -PLcom/android/server/storage/DeviceStorageMonitorService$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/storage/DeviceStorageMonitorService$1;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V +PLcom/android/server/storage/DeviceStorageMonitorService$1;->getMemoryLowThreshold()J +PLcom/android/server/storage/DeviceStorageMonitorService$1;->isMemoryLow()Z PLcom/android/server/storage/DeviceStorageMonitorService$2;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V -PLcom/android/server/storage/DeviceStorageMonitorService$2;->getMemoryLowThreshold()J -PLcom/android/server/storage/DeviceStorageMonitorService$2;->isMemoryLow()Z -PLcom/android/server/storage/DeviceStorageMonitorService$3;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V +PLcom/android/server/storage/DeviceStorageMonitorService$3;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;Landroid/os/Looper;)V +PLcom/android/server/storage/DeviceStorageMonitorService$3;->handleMessage(Landroid/os/Message;)V PLcom/android/server/storage/DeviceStorageMonitorService$CacheFileDeletedObserver;-><init>()V -PLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap0(III)Z -PLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap1(III)Z PLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>()V PLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService$State;)V -PLcom/android/server/storage/DeviceStorageMonitorService$State;->isEntering(III)Z -PLcom/android/server/storage/DeviceStorageMonitorService$State;->isLeaving(III)Z PLcom/android/server/storage/DeviceStorageMonitorService;->-wrap0(Lcom/android/server/storage/DeviceStorageMonitorService;)V PLcom/android/server/storage/DeviceStorageMonitorService;-><init>(Landroid/content/Context;)V -PLcom/android/server/storage/DeviceStorageMonitorService;->check()V PLcom/android/server/storage/DeviceStorageMonitorService;->findOrCreateState(Ljava/util/UUID;)Lcom/android/server/storage/DeviceStorageMonitorService$State; -PLcom/android/server/storage/DeviceStorageMonitorService;->isBootImageOnDisk()Z PLcom/android/server/storage/DeviceStorageMonitorService;->onStart()V -PLcom/android/server/storage/DeviceStorageMonitorService;->updateBroadcasts(Landroid/os/storage/VolumeInfo;III)V -PLcom/android/server/storage/DeviceStorageMonitorService;->updateNotifications(Landroid/os/storage/VolumeInfo;II)V PLcom/android/server/storage/DiskStatsLoggingService;->schedule(Landroid/content/Context;)V PLcom/android/server/telecom/TelecomLoaderService$1;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V PLcom/android/server/telecom/TelecomLoaderService$2;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V PLcom/android/server/telecom/TelecomLoaderService$3;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V PLcom/android/server/telecom/TelecomLoaderService$4;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Landroid/os/Handler;Landroid/net/Uri;Landroid/content/pm/PackageManagerInternal;Landroid/net/Uri;)V PLcom/android/server/telecom/TelecomLoaderService$5;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Landroid/content/pm/PackageManagerInternal;)V -PLcom/android/server/telecom/TelecomLoaderService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection$1;-><init>(Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;)V PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;)V @@ -12056,7 +13607,6 @@ PLcom/android/server/telecom/TelecomLoaderService;->-get1(Lcom/android/server/te PLcom/android/server/telecom/TelecomLoaderService;->-get2(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray; PLcom/android/server/telecom/TelecomLoaderService;->-get3(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray; PLcom/android/server/telecom/TelecomLoaderService;->-get4(Lcom/android/server/telecom/TelecomLoaderService;)Ljava/lang/Object; -PLcom/android/server/telecom/TelecomLoaderService;->-wrap1(Lcom/android/server/telecom/TelecomLoaderService;Landroid/content/pm/PackageManagerInternal;I)V PLcom/android/server/telecom/TelecomLoaderService;-><init>(Landroid/content/Context;)V PLcom/android/server/telecom/TelecomLoaderService;->connectToTelecom()V PLcom/android/server/telecom/TelecomLoaderService;->onBootPhase(I)V @@ -12064,7 +13614,31 @@ PLcom/android/server/telecom/TelecomLoaderService;->onStart()V PLcom/android/server/telecom/TelecomLoaderService;->registerCarrierConfigChangedReceiver()V PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppNotifier()V PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppProviders()V -PLcom/android/server/telecom/TelecomLoaderService;->updateSimCallManagerPermissions(Landroid/content/pm/PackageManagerInternal;I)V +PLcom/android/server/timezone/IntentHelperImpl$Receiver;-><init>(Lcom/android/server/timezone/IntentHelper$Listener;Z)V +PLcom/android/server/timezone/IntentHelperImpl$Receiver;-><init>(Lcom/android/server/timezone/IntentHelper$Listener;ZLcom/android/server/timezone/IntentHelperImpl$Receiver;)V +PLcom/android/server/timezone/IntentHelperImpl;-><init>(Landroid/content/Context;)V +PLcom/android/server/timezone/IntentHelperImpl;->enableReliabilityTriggering()V +PLcom/android/server/timezone/IntentHelperImpl;->initialize(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/timezone/IntentHelper$Listener;)V +PLcom/android/server/timezone/PackageStatusStorage;-><init>(Ljava/io/File;)V +PLcom/android/server/timezone/PackageTracker;-><init>(Lcom/android/server/timezone/ClockHelper;Lcom/android/server/timezone/ConfigHelper;Lcom/android/server/timezone/PackageManagerHelper;Lcom/android/server/timezone/PackageStatusStorage;Lcom/android/server/timezone/IntentHelper;)V +PLcom/android/server/timezone/PackageTracker;->create(Landroid/content/Context;)Lcom/android/server/timezone/PackageTracker; +PLcom/android/server/timezone/PackageTracker;->start()V +PLcom/android/server/timezone/PackageTracker;->throwIfDeviceSettingsOrAppsAreBad()V +PLcom/android/server/timezone/PackageTracker;->throwRuntimeExceptionIfNullOrEmpty(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/timezone/PackageTrackerHelperImpl;-><init>(Landroid/content/Context;)V +PLcom/android/server/timezone/PackageTrackerHelperImpl;->getCheckTimeAllowedMillis()I +PLcom/android/server/timezone/PackageTrackerHelperImpl;->getDataAppPackageName()Ljava/lang/String; +PLcom/android/server/timezone/PackageTrackerHelperImpl;->getFailedCheckRetryCount()I +PLcom/android/server/timezone/PackageTrackerHelperImpl;->getUpdateAppPackageName()Ljava/lang/String; +PLcom/android/server/timezone/PackageTrackerHelperImpl;->isPrivilegedApp(Ljava/lang/String;)Z +PLcom/android/server/timezone/PackageTrackerHelperImpl;->isTrackingEnabled()Z +PLcom/android/server/timezone/RulesManagerService$Lifecycle;-><init>(Landroid/content/Context;)V +PLcom/android/server/timezone/RulesManagerService$Lifecycle;->onStart()V +PLcom/android/server/timezone/RulesManagerService;->-wrap0(Landroid/content/Context;)Lcom/android/server/timezone/RulesManagerService; +PLcom/android/server/timezone/RulesManagerService;-><init>(Lcom/android/server/timezone/PermissionHelper;Ljava/util/concurrent/Executor;Lcom/android/server/timezone/PackageTracker;Lcom/android/timezone/distro/installer/TimeZoneDistroInstaller;)V +PLcom/android/server/timezone/RulesManagerService;->create(Landroid/content/Context;)Lcom/android/server/timezone/RulesManagerService; +PLcom/android/server/timezone/RulesManagerService;->start()V +PLcom/android/server/timezone/RulesManagerServiceHelperImpl;-><init>(Landroid/content/Context;)V PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;->$m$0()V PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;-><init>()V PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;->run()V @@ -12073,19 +13647,20 @@ PLcom/android/server/trust/TrustManagerService$1;-><init>(Lcom/android/server/tr PLcom/android/server/trust/TrustManagerService$1;->clearAllFingerprints()V PLcom/android/server/trust/TrustManagerService$1;->enforceListenerPermission()V PLcom/android/server/trust/TrustManagerService$1;->enforceReportPermission()V -PLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(I)Z -PLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(I)Z PLcom/android/server/trust/TrustManagerService$1;->isTrustUsuallyManaged(I)Z -PLcom/android/server/trust/TrustManagerService$1;->lambda$-com_android_server_trust_TrustManagerService$1_34004()V +PLcom/android/server/trust/TrustManagerService$1;->lambda$-com_android_server_trust_TrustManagerService$1_33892()V PLcom/android/server/trust/TrustManagerService$1;->registerTrustListener(Landroid/app/trust/ITrustListener;)V +PLcom/android/server/trust/TrustManagerService$1;->reportEnabledTrustAgentsChanged(I)V PLcom/android/server/trust/TrustManagerService$1;->reportKeyguardShowingChanged()V PLcom/android/server/trust/TrustManagerService$2;-><init>(Lcom/android/server/trust/TrustManagerService;)V PLcom/android/server/trust/TrustManagerService$2;->handleMessage(Landroid/os/Message;)V PLcom/android/server/trust/TrustManagerService$3;-><init>(Lcom/android/server/trust/TrustManagerService;)V PLcom/android/server/trust/TrustManagerService$3;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z +PLcom/android/server/trust/TrustManagerService$3;->onPackageDisappeared(Ljava/lang/String;I)V PLcom/android/server/trust/TrustManagerService$3;->onSomePackagesChanged()V PLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;)V PLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService$Receiver;)V +PLcom/android/server/trust/TrustManagerService$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/trust/TrustManagerService$Receiver;->register(Landroid/content/Context;)V PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/content/Context;)V PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V @@ -12095,9 +13670,9 @@ PLcom/android/server/trust/TrustManagerService;->-get2(Lcom/android/server/trust PLcom/android/server/trust/TrustManagerService;->-get4(Lcom/android/server/trust/TrustManagerService;)Landroid/os/Handler; PLcom/android/server/trust/TrustManagerService;->-get5(Lcom/android/server/trust/TrustManagerService;)Lcom/android/internal/widget/LockPatternUtils; PLcom/android/server/trust/TrustManagerService;->-wrap2(Lcom/android/server/trust/TrustManagerService;I)Z -PLcom/android/server/trust/TrustManagerService;->-wrap3(Lcom/android/server/trust/TrustManagerService;I)I PLcom/android/server/trust/TrustManagerService;->-wrap4(Lcom/android/server/trust/TrustManagerService;Landroid/app/trust/ITrustListener;)V PLcom/android/server/trust/TrustManagerService;->-wrap8(Lcom/android/server/trust/TrustManagerService;I)V +PLcom/android/server/trust/TrustManagerService;->-wrap9(Lcom/android/server/trust/TrustManagerService;Ljava/lang/String;)V PLcom/android/server/trust/TrustManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/trust/TrustManagerService;->addListener(Landroid/app/trust/ITrustListener;)V PLcom/android/server/trust/TrustManagerService;->aggregateIsTrustManaged(I)Z @@ -12105,7 +13680,6 @@ PLcom/android/server/trust/TrustManagerService;->aggregateIsTrusted(I)Z PLcom/android/server/trust/TrustManagerService;->dispatchDeviceLocked(IZ)V PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustChanged(ZII)V PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustManagedChanged(ZI)V -PLcom/android/server/trust/TrustManagerService;->getDefaultFactoryTrustAgent(Landroid/content/Context;)Landroid/content/ComponentName; PLcom/android/server/trust/TrustManagerService;->isDeviceLockedInner(I)Z PLcom/android/server/trust/TrustManagerService;->isTrustUsuallyManagedInternal(I)Z PLcom/android/server/trust/TrustManagerService;->maybeEnableFactoryTrustAgents(Lcom/android/internal/widget/LockPatternUtils;I)V @@ -12113,50 +13687,35 @@ PLcom/android/server/trust/TrustManagerService;->onBootPhase(I)V PLcom/android/server/trust/TrustManagerService;->onStart()V PLcom/android/server/trust/TrustManagerService;->onStartUser(I)V PLcom/android/server/trust/TrustManagerService;->onUnlockUser(I)V -PLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V PLcom/android/server/trust/TrustManagerService;->refreshDeviceLockedForUser(I)V -PLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I +PLcom/android/server/trust/TrustManagerService;->removeAgentsOfPackage(Ljava/lang/String;)V PLcom/android/server/trust/TrustManagerService;->setDeviceLockedForUser(IZ)V +PLcom/android/server/trust/TrustManagerService;->updateDevicePolicyFeatures()V PLcom/android/server/trust/TrustManagerService;->updateTrust(II)V PLcom/android/server/trust/TrustManagerService;->updateTrustAll()V PLcom/android/server/twilight/TwilightService$1;-><init>(Lcom/android/server/twilight/TwilightService;)V PLcom/android/server/twilight/TwilightService$1;->getLastTwilightState()Lcom/android/server/twilight/TwilightState; -PLcom/android/server/twilight/TwilightService$1;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V -PLcom/android/server/twilight/TwilightService;->-get1(Lcom/android/server/twilight/TwilightService;)Landroid/util/ArrayMap; PLcom/android/server/twilight/TwilightService;-><init>(Landroid/content/Context;)V PLcom/android/server/twilight/TwilightService;->onBootPhase(I)V PLcom/android/server/twilight/TwilightService;->onStart()V -PLcom/android/server/usage/AppIdleHistory$PackageHistory;-><init>()V -PLcom/android/server/usage/AppIdleHistory$PackageHistory;-><init>(Lcom/android/server/usage/AppIdleHistory$PackageHistory;)V PLcom/android/server/usage/AppIdleHistory;-><init>(J)V PLcom/android/server/usage/AppIdleHistory;-><init>(Ljava/io/File;J)V -PLcom/android/server/usage/AppIdleHistory;->clearUsage(Ljava/lang/String;I)V PLcom/android/server/usage/AppIdleHistory;->getElapsedTime(J)J -PLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;J)Lcom/android/server/usage/AppIdleHistory$PackageHistory; -PLcom/android/server/usage/AppIdleHistory;->getScreenOnTime(J)J PLcom/android/server/usage/AppIdleHistory;->getScreenOnTimeFile()Ljava/io/File; PLcom/android/server/usage/AppIdleHistory;->getUserFile(I)Ljava/io/File; -PLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap; -PLcom/android/server/usage/AppIdleHistory;->hasPassedThresholds(Lcom/android/server/usage/AppIdleHistory$PackageHistory;J)Z -PLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V PLcom/android/server/usage/AppIdleHistory;->readScreenOnTime()V -PLcom/android/server/usage/AppIdleHistory;->reportUsage(Ljava/lang/String;IJ)V -PLcom/android/server/usage/AppIdleHistory;->setIdle(Ljava/lang/String;IJ)V PLcom/android/server/usage/AppIdleHistory;->setIdle(Ljava/lang/String;IZJ)V PLcom/android/server/usage/AppIdleHistory;->setThresholds(JJ)V -PLcom/android/server/usage/AppIdleHistory;->shiftHistoryToNow(Landroid/util/ArrayMap;J)V PLcom/android/server/usage/AppIdleHistory;->updateDisplay(ZJ)V +PLcom/android/server/usage/AppIdleHistory;->writeAppIdleDurations()V +PLcom/android/server/usage/AppIdleHistory;->writeScreenOnTime()V PLcom/android/server/usage/IntervalStats;-><init>()V -PLcom/android/server/usage/IntervalStats;->buildEvent(Ljava/lang/String;Ljava/lang/String;)Landroid/app/usage/UsageEvents$Event; -PLcom/android/server/usage/IntervalStats;->getCachedStringRef(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats; -PLcom/android/server/usage/IntervalStats;->isStatefulEvent(I)Z PLcom/android/server/usage/IntervalStats;->updateConfigurationStats(Landroid/content/res/Configuration;J)V PLcom/android/server/usage/StorageStatsService$1;-><init>(Lcom/android/server/usage/StorageStatsService;)V PLcom/android/server/usage/StorageStatsService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V PLcom/android/server/usage/StorageStatsService$H;-><init>(Lcom/android/server/usage/StorageStatsService;Landroid/os/Looper;)V PLcom/android/server/usage/StorageStatsService$H;->getInitializedStrategy()Lcom/android/server/storage/CacheQuotaStrategy; -PLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V PLcom/android/server/usage/StorageStatsService$H;->recalculateQuotas(Lcom/android/server/storage/CacheQuotaStrategy;)V PLcom/android/server/usage/StorageStatsService$Lifecycle;-><init>(Landroid/content/Context;)V PLcom/android/server/usage/StorageStatsService$Lifecycle;->onStart()V @@ -12165,19 +13724,14 @@ PLcom/android/server/usage/StorageStatsService;->-get1(Lcom/android/server/usage PLcom/android/server/usage/StorageStatsService;->-get2(Lcom/android/server/usage/StorageStatsService;)Lcom/android/server/pm/Installer; PLcom/android/server/usage/StorageStatsService;->-wrap0(Lcom/android/server/usage/StorageStatsService;)V PLcom/android/server/usage/StorageStatsService;-><init>(Landroid/content/Context;)V -PLcom/android/server/usage/StorageStatsService;->enforcePermission(ILjava/lang/String;)V -PLcom/android/server/usage/StorageStatsService;->getAppIds(I)[I -PLcom/android/server/usage/StorageStatsService;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J PLcom/android/server/usage/StorageStatsService;->getDefaultFlags()I +PLcom/android/server/usage/StorageStatsService;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J +PLcom/android/server/usage/StorageStatsService;->getTotalBytes(Ljava/lang/String;Ljava/lang/String;)J PLcom/android/server/usage/StorageStatsService;->invalidateMounts()V -PLcom/android/server/usage/StorageStatsService;->isCacheQuotaCalculationsEnabled(Landroid/content/ContentResolver;)Z -PLcom/android/server/usage/StorageStatsService;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z PLcom/android/server/usage/StorageStatsService;->notifySignificantDelta()V -PLcom/android/server/usage/StorageStatsService;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats; PLcom/android/server/usage/StorageStatsService;->translate(Landroid/content/pm/PackageStats;)Landroid/app/usage/StorageStats; PLcom/android/server/usage/UnixCalendar;-><init>(J)V PLcom/android/server/usage/UnixCalendar;->addDays(I)V -PLcom/android/server/usage/UnixCalendar;->getTimeInMillis()J PLcom/android/server/usage/UnixCalendar;->setTimeInMillis(J)V PLcom/android/server/usage/UsageStatsDatabase$1;-><init>(Lcom/android/server/usage/UsageStatsDatabase;)V PLcom/android/server/usage/UsageStatsDatabase$1;->accept(Ljava/io/File;Ljava/lang/String;)Z @@ -12189,17 +13743,17 @@ PLcom/android/server/usage/UsageStatsDatabase;->getLatestUsageStats(I)Lcom/andro PLcom/android/server/usage/UsageStatsDatabase;->indexFilesLocked()V PLcom/android/server/usage/UsageStatsDatabase;->init(J)V PLcom/android/server/usage/UsageStatsDatabase;->isNewUpdate()Z +PLcom/android/server/usage/UsageStatsDatabase;->putUsageStats(ILcom/android/server/usage/IntervalStats;)V PLcom/android/server/usage/UsageStatsDatabase;->queryUsageStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List; PLcom/android/server/usage/UsageStatsService$1;-><init>(Lcom/android/server/usage/UsageStatsService;)V +PLcom/android/server/usage/UsageStatsService$1;->onDisplayChanged(I)V PLcom/android/server/usage/UsageStatsService$2;-><init>(Lcom/android/server/usage/UsageStatsService;)V PLcom/android/server/usage/UsageStatsService$2;->onUidGone(IZ)V PLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;)V PLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$BinderService;)V PLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V PLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$DeviceStateReceiver;)V -PLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/usage/UsageStatsService$H;-><init>(Lcom/android/server/usage/UsageStatsService;Landroid/os/Looper;)V -PLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V PLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;)V PLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$LocalService;)V PLcom/android/server/usage/UsageStatsService$LocalService;->addAppIdleStateChangeListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V @@ -12207,8 +13761,6 @@ PLcom/android/server/usage/UsageStatsService$LocalService;->getIdleUidsForUser(I PLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdleParoleOn()Z PLcom/android/server/usage/UsageStatsService$LocalService;->queryUsageStatsForUser(IIJJZ)Ljava/util/List; PLcom/android/server/usage/UsageStatsService$LocalService;->reportConfigurationChange(Landroid/content/res/Configuration;I)V -PLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V -PLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;II)V PLcom/android/server/usage/UsageStatsService$LocalService;->reportShortcutUsage(Ljava/lang/String;Ljava/lang/String;I)V PLcom/android/server/usage/UsageStatsService$PackageReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V PLcom/android/server/usage/UsageStatsService$PackageReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$PackageReceiver;)V @@ -12219,70 +13771,56 @@ PLcom/android/server/usage/UsageStatsService$SettingsObserver;->updateSettings() PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$UserActionsReceiver;)V PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V -PLcom/android/server/usage/UsageStatsService;->-get0()Ljava/io/File; PLcom/android/server/usage/UsageStatsService;->-get1(Lcom/android/server/usage/UsageStatsService;)Lcom/android/server/usage/AppIdleHistory; PLcom/android/server/usage/UsageStatsService;->-get2(Lcom/android/server/usage/UsageStatsService;)Ljava/lang/Object; -PLcom/android/server/usage/UsageStatsService;->-get4(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseIntArray; -PLcom/android/server/usage/UsageStatsService;->-wrap0(Lcom/android/server/usage/UsageStatsService;Ljava/lang/String;IIJ)Z -PLcom/android/server/usage/UsageStatsService;->-wrap2(Lcom/android/server/usage/UsageStatsService;II)Z +PLcom/android/server/usage/UsageStatsService;->-wrap1(Lcom/android/server/usage/UsageStatsService;)Z PLcom/android/server/usage/UsageStatsService;-><init>(Landroid/content/Context;)V PLcom/android/server/usage/UsageStatsService;->addListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V -PLcom/android/server/usage/UsageStatsService;->checkIdleStates(I)Z PLcom/android/server/usage/UsageStatsService;->cleanUpRemovedUsersLocked()V -PLcom/android/server/usage/UsageStatsService;->clearAppIdleForPackage(Ljava/lang/String;I)V PLcom/android/server/usage/UsageStatsService;->clearCarrierPrivilegedApps()V -PLcom/android/server/usage/UsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V PLcom/android/server/usage/UsageStatsService;->fetchCarrierPrivilegedAppsLA()V -PLcom/android/server/usage/UsageStatsService;->forceIdleState(Ljava/lang/String;IZ)V -PLcom/android/server/usage/UsageStatsService;->getAppId(Ljava/lang/String;)I -PLcom/android/server/usage/UsageStatsService;->getIdleUidsForUser(I)[I -PLcom/android/server/usage/UsageStatsService;->getUserDataAndInitializeIfNeededLocked(IJ)Lcom/android/server/usage/UserUsageStatsService; -PLcom/android/server/usage/UsageStatsService;->informListeners(Ljava/lang/String;IZ)V +PLcom/android/server/usage/UsageStatsService;->flushToDisk()V +PLcom/android/server/usage/UsageStatsService;->flushToDiskLocked()V PLcom/android/server/usage/UsageStatsService;->informParoleStateChanged()V -PLcom/android/server/usage/UsageStatsService;->isActiveDeviceAdmin(Ljava/lang/String;I)Z -PLcom/android/server/usage/UsageStatsService;->isAppIdleFilteredOrParoled(Ljava/lang/String;IJZ)Z -PLcom/android/server/usage/UsageStatsService;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z PLcom/android/server/usage/UsageStatsService;->isCarrierApp(Ljava/lang/String;)Z PLcom/android/server/usage/UsageStatsService;->isDisplayOn()Z -PLcom/android/server/usage/UsageStatsService;->isParoledOrCharging()Z -PLcom/android/server/usage/UsageStatsService;->notifyBatteryStats(Ljava/lang/String;IZ)V PLcom/android/server/usage/UsageStatsService;->onBootPhase(I)V PLcom/android/server/usage/UsageStatsService;->onStart()V PLcom/android/server/usage/UsageStatsService;->onStatsUpdated()V PLcom/android/server/usage/UsageStatsService;->postCheckIdleStates(I)V PLcom/android/server/usage/UsageStatsService;->postParoleStateChanged()V PLcom/android/server/usage/UsageStatsService;->queryUsageStats(IIJJZ)Ljava/util/List; -PLcom/android/server/usage/UsageStatsService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V PLcom/android/server/usage/UsageStatsService;->setAppIdleAsync(Ljava/lang/String;ZI)V PLcom/android/server/usage/UsageStatsService;->setChargingState(Z)V -PLcom/android/server/usage/UsageStatsService;->shouldObfuscateInstantAppsForCaller(II)Z PLcom/android/server/usage/UsageStatsService;->validRange(JJJ)Z PLcom/android/server/usage/UsageStatsXml;->parseBeginTime(Landroid/util/AtomicFile;)J PLcom/android/server/usage/UsageStatsXml;->parseBeginTime(Ljava/io/File;)J PLcom/android/server/usage/UsageStatsXml;->read(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V PLcom/android/server/usage/UsageStatsXml;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;)V +PLcom/android/server/usage/UsageStatsXml;->write(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V +PLcom/android/server/usage/UsageStatsXml;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V PLcom/android/server/usage/UsageStatsXmlV1;->loadConfigStats(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V -PLcom/android/server/usage/UsageStatsXmlV1;->loadEvent(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V -PLcom/android/server/usage/UsageStatsXmlV1;->loadUsageStats(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V PLcom/android/server/usage/UserUsageStatsService$1;-><init>()V PLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V PLcom/android/server/usage/UserUsageStatsService$2;-><init>()V PLcom/android/server/usage/UserUsageStatsService;-><init>(Landroid/content/Context;ILjava/io/File;Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;)V -PLcom/android/server/usage/UserUsageStatsService;->init(J)V -PLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V -PLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List; +PLcom/android/server/usage/UserUsageStatsService;->persistActiveStats()V PLcom/android/server/usage/UserUsageStatsService;->queryUsageStats(IJJ)Ljava/util/List; PLcom/android/server/usage/UserUsageStatsService;->updateRolloverDeadline()V +PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;->$m$0()V +PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;->run()V +PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;->$m$0()V +PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;-><init>(BLjava/lang/Object;)V +PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;->run()V +PLcom/android/server/usb/-$Lambda$FKfu8uuaZxaSOkvg1oeLD5zHuwk;-><init>(Ljava/lang/Object;)V PLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;)V PLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;Lcom/android/server/usb/MtpNotificationManager$Receiver;)V PLcom/android/server/usb/MtpNotificationManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;)V PLcom/android/server/usb/UsbAlsaManager$1;-><init>(Lcom/android/server/usb/UsbAlsaManager;Ljava/lang/String;I)V PLcom/android/server/usb/UsbAlsaManager$AlsaDevice;-><init>(Lcom/android/server/usb/UsbAlsaManager;III)V -PLcom/android/server/usb/UsbAlsaManager$AlsaDevice;->toString()Ljava/lang/String; PLcom/android/server/usb/UsbAlsaManager;-><init>(Landroid/content/Context;)V -PLcom/android/server/usb/UsbAlsaManager;->alsaFileAdded(Ljava/lang/String;)V PLcom/android/server/usb/UsbAlsaManager;->setPeripheralMidiState(ZII)V -PLcom/android/server/usb/UsbAlsaManager;->systemReady()V PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingHandler;-><init>(Lcom/android/server/usb/UsbDebuggingManager;Landroid/os/Looper;)V PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread;-><init>(Lcom/android/server/usb/UsbDebuggingManager;)V @@ -12296,21 +13834,19 @@ PLcom/android/server/usb/UsbDebuggingManager;->-set2(Lcom/android/server/usb/Usb PLcom/android/server/usb/UsbDebuggingManager;-><init>(Landroid/content/Context;)V PLcom/android/server/usb/UsbDebuggingManager;->setAdbEnabled(Z)V PLcom/android/server/usb/UsbDeviceManager$1;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V +PLcom/android/server/usb/UsbDeviceManager$1;->onUEvent(Landroid/os/UEventObserver$UEvent;)V PLcom/android/server/usb/UsbDeviceManager$2;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V PLcom/android/server/usb/UsbDeviceManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/usb/UsbDeviceManager$3;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V -PLcom/android/server/usb/UsbDeviceManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/usb/UsbDeviceManager$4;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V PLcom/android/server/usb/UsbDeviceManager$5;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V PLcom/android/server/usb/UsbDeviceManager$AdbSettingsObserver;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V PLcom/android/server/usb/UsbDeviceManager$UsbHandler;-><init>(Lcom/android/server/usb/UsbDeviceManager;Landroid/os/Looper;)V PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->applyAdbFunction(Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getDefaultFunctions()Ljava/lang/String; -PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isNormalBoot()Z PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbStateChanged(Landroid/content/Intent;)Z PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbTransferAllowed()Z -PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(IZ)V PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->setEnabledFunctions(Ljava/lang/String;ZZ)V PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->trySetEnabledFunctions(Ljava/lang/String;Z)Z PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateAdbNotification(Z)V @@ -12319,7 +13855,6 @@ PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateHostState(Landroid/ PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateMidiFunction()V PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateState(Ljava/lang/String;)V PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbFunctions()V -PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbStateBroadcastIfNeeded(Z)V PLcom/android/server/usb/UsbDeviceManager;->-get1(Lcom/android/server/usb/UsbDeviceManager;)Z PLcom/android/server/usb/UsbDeviceManager;->-get10(Lcom/android/server/usb/UsbDeviceManager;)I @@ -12351,9 +13886,8 @@ PLcom/android/server/usb/UsbDeviceManager;->isTv()Z PLcom/android/server/usb/UsbDeviceManager;->readOemUsbOverrideConfig()V PLcom/android/server/usb/UsbDeviceManager;->setCurrentUser(ILcom/android/server/usb/UsbProfileGroupSettingsManager;)V PLcom/android/server/usb/UsbDeviceManager;->systemReady()V -PLcom/android/server/usb/UsbHostManager$1;-><init>(Lcom/android/server/usb/UsbHostManager;)V -PLcom/android/server/usb/UsbHostManager$1;->run()V -PLcom/android/server/usb/UsbHostManager;->-wrap0(Lcom/android/server/usb/UsbHostManager;)V +PLcom/android/server/usb/UsbDeviceManager;->updateUserRestrictions()V +PLcom/android/server/usb/UsbHostManager;->-com_android_server_usb_UsbHostManager-mthref-0()V PLcom/android/server/usb/UsbHostManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;)V PLcom/android/server/usb/UsbHostManager;->getDeviceList(Landroid/os/Bundle;)V PLcom/android/server/usb/UsbHostManager;->setCurrentUserSettings(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V @@ -12361,8 +13895,6 @@ PLcom/android/server/usb/UsbHostManager;->setUsbDeviceConnectionHandler(Landroid PLcom/android/server/usb/UsbHostManager;->systemReady()V PLcom/android/server/usb/UsbPortManager$1;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/os/Looper;)V PLcom/android/server/usb/UsbPortManager$1;->handleMessage(Landroid/os/Message;)V -PLcom/android/server/usb/UsbPortManager$2;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/content/Intent;)V -PLcom/android/server/usb/UsbPortManager$2;->run()V PLcom/android/server/usb/UsbPortManager$DeathRecipient;-><init>(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)V PLcom/android/server/usb/UsbPortManager$HALCallback;-><init>(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/usb/UsbPortManager;)V PLcom/android/server/usb/UsbPortManager$HALCallback;->notifyPortStatusChange_1_1(Ljava/util/ArrayList;I)V @@ -12373,10 +13905,9 @@ PLcom/android/server/usb/UsbPortManager$RawPortInfo$1;-><init>()V PLcom/android/server/usb/UsbPortManager$RawPortInfo;-><init>(Ljava/lang/String;IIZIZIZ)V PLcom/android/server/usb/UsbPortManager$ServiceNotification;-><init>(Lcom/android/server/usb/UsbPortManager;)V PLcom/android/server/usb/UsbPortManager$ServiceNotification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V -PLcom/android/server/usb/UsbPortManager;->-get0(Lcom/android/server/usb/UsbPortManager;)Landroid/content/Context; -PLcom/android/server/usb/UsbPortManager;->-get1(Lcom/android/server/usb/UsbPortManager;)Landroid/os/Handler; -PLcom/android/server/usb/UsbPortManager;->-get2(Lcom/android/server/usb/UsbPortManager;)Ljava/lang/Object; -PLcom/android/server/usb/UsbPortManager;->-get3(Lcom/android/server/usb/UsbPortManager;)Z +PLcom/android/server/usb/UsbPortManager;->-get0(Lcom/android/server/usb/UsbPortManager;)Landroid/os/Handler; +PLcom/android/server/usb/UsbPortManager;->-get1(Lcom/android/server/usb/UsbPortManager;)Ljava/lang/Object; +PLcom/android/server/usb/UsbPortManager;->-get2(Lcom/android/server/usb/UsbPortManager;)Z PLcom/android/server/usb/UsbPortManager;->-wrap0(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)V PLcom/android/server/usb/UsbPortManager;->-wrap1(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V PLcom/android/server/usb/UsbPortManager;->-wrap2(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V @@ -12384,28 +13915,23 @@ PLcom/android/server/usb/UsbPortManager;-><init>(Landroid/content/Context;)V PLcom/android/server/usb/UsbPortManager;->addOrUpdatePortLocked(Ljava/lang/String;IIZIZIZLcom/android/internal/util/IndentingPrintWriter;)V PLcom/android/server/usb/UsbPortManager;->connectToProxy(Lcom/android/internal/util/IndentingPrintWriter;)V PLcom/android/server/usb/UsbPortManager;->handlePortAddedLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/usb/UsbPortManager;->handlePortChangedLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/usb/UsbPortManager;->lambda$-com_android_server_usb_UsbPortManager_30586(Landroid/content/Intent;)V PLcom/android/server/usb/UsbPortManager;->logAndPrint(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V PLcom/android/server/usb/UsbPortManager;->sendPortChangedBroadcastLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;)V PLcom/android/server/usb/UsbPortManager;->systemReady()V PLcom/android/server/usb/UsbPortManager;->updatePortsLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V -PLcom/android/server/usb/UsbProfileGroupSettingsManager$1;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;)V -PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V -PLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V -PLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;-><init>(Ljava/lang/String;Landroid/os/UserHandle;Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V -PLcom/android/server/usb/UsbProfileGroupSettingsManager;->-get1(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)Landroid/os/UserHandle; -PLcom/android/server/usb/UsbProfileGroupSettingsManager;->-get2(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)Landroid/os/UserManager; -PLcom/android/server/usb/UsbProfileGroupSettingsManager;->-wrap1(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V PLcom/android/server/usb/UsbProfileGroupSettingsManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/usb/UsbSettingsManager;)V -PLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAdded(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V -PLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAddedLocked(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Z PLcom/android/server/usb/UsbProfileGroupSettingsManager;->readSettingsLocked()V PLcom/android/server/usb/UsbProfileGroupSettingsManager;->upgradeSingleUserLocked()V PLcom/android/server/usb/UsbService$1;-><init>(Lcom/android/server/usb/UsbService;)V +PLcom/android/server/usb/UsbService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/usb/UsbService$Lifecycle;-><init>(Landroid/content/Context;)V PLcom/android/server/usb/UsbService$Lifecycle;->onBootPhase(I)V PLcom/android/server/usb/UsbService$Lifecycle;->onStart()V +PLcom/android/server/usb/UsbService;->-get0(Lcom/android/server/usb/UsbService;)Lcom/android/server/usb/UsbDeviceManager; PLcom/android/server/usb/UsbService;-><init>(Landroid/content/Context;)V PLcom/android/server/usb/UsbService;->bootCompleted()V PLcom/android/server/usb/UsbService;->getDeviceList(Landroid/os/Bundle;)V @@ -12418,6 +13944,7 @@ PLcom/android/server/voiceinteraction/DatabaseHelper;->getKeyphraseSoundModel(II PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onPackageModified(Ljava/lang/String;)V PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onSomePackagesChanged()V PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Landroid/os/Handler;)V @@ -12437,7 +13964,7 @@ PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceIntera PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onLockscreenShown()V PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V -PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->shouldEnableService(Landroid/content/res/Resources;)Z +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->shouldEnableService(Landroid/content/Context;)Z PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeeded(Z)V PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededLocked(Z)V PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->systemRunning(Z)V @@ -12455,6 +13982,8 @@ PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;->onS PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;ILandroid/content/ComponentName;)V PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->startLocked()V PLcom/android/server/vr/EnabledComponentsObserver$1;-><init>(Lcom/android/server/vr/EnabledComponentsObserver;)V +PLcom/android/server/vr/EnabledComponentsObserver$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageDisappeared(Ljava/lang/String;I)V PLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageModified(Ljava/lang/String;)V PLcom/android/server/vr/EnabledComponentsObserver$1;->onSomePackagesChanged()V PLcom/android/server/vr/EnabledComponentsObserver;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/util/Collection;)V @@ -12462,21 +13991,17 @@ PLcom/android/server/vr/EnabledComponentsObserver;->build(Landroid/content/Conte PLcom/android/server/vr/EnabledComponentsObserver;->getCurrentProfileIds()[I PLcom/android/server/vr/EnabledComponentsObserver;->getEnabled(I)Landroid/util/ArraySet; PLcom/android/server/vr/EnabledComponentsObserver;->isValid(Landroid/content/ComponentName;I)I -PLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNames(Landroid/content/pm/PackageManager;ILjava/lang/String;Ljava/lang/String;)Landroid/util/ArraySet; PLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesForUser(I)Landroid/util/ArraySet; -PLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet; PLcom/android/server/vr/EnabledComponentsObserver;->onPackagesChanged()V PLcom/android/server/vr/EnabledComponentsObserver;->onUsersChanged()V -PLcom/android/server/vr/EnabledComponentsObserver;->rebuildAll()V -PLcom/android/server/vr/EnabledComponentsObserver;->sendSettingChanged()V PLcom/android/server/vr/SettingsObserver$1;-><init>(Lcom/android/server/vr/SettingsObserver;Ljava/lang/String;)V PLcom/android/server/vr/SettingsObserver$2;-><init>(Lcom/android/server/vr/SettingsObserver;Landroid/os/Handler;Landroid/net/Uri;)V PLcom/android/server/vr/SettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/net/Uri;Ljava/lang/String;)V PLcom/android/server/vr/SettingsObserver;->addListener(Lcom/android/server/vr/SettingsObserver$SettingChangeListener;)V PLcom/android/server/vr/SettingsObserver;->build(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;)Lcom/android/server/vr/SettingsObserver; PLcom/android/server/vr/Vr2dDisplay$1;-><init>(Lcom/android/server/vr/Vr2dDisplay;)V -PLcom/android/server/vr/Vr2dDisplay;-><init>(Landroid/hardware/display/DisplayManager;Landroid/app/ActivityManagerInternal;Landroid/service/vr/IVrManager;)V -PLcom/android/server/vr/Vr2dDisplay;->init(Landroid/content/Context;)V +PLcom/android/server/vr/Vr2dDisplay;-><init>(Landroid/hardware/display/DisplayManager;Landroid/app/ActivityManagerInternal;Landroid/view/WindowManagerInternal;Landroid/service/vr/IVrManager;)V +PLcom/android/server/vr/Vr2dDisplay;->init(Landroid/content/Context;Z)V PLcom/android/server/vr/Vr2dDisplay;->startDebugOnlyBroadcastReceiver(Landroid/content/Context;)V PLcom/android/server/vr/Vr2dDisplay;->startVrModeListener()V PLcom/android/server/vr/VrManagerInternal;-><init>()V @@ -12486,53 +14011,51 @@ PLcom/android/server/vr/VrManagerService$3;-><init>(Lcom/android/server/vr/VrMan PLcom/android/server/vr/VrManagerService$3;->getVrModeState()Z PLcom/android/server/vr/VrManagerService$3;->registerListener(Landroid/service/vr/IVrStateCallbacks;)V PLcom/android/server/vr/VrManagerService$3;->registerPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService$3;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService$4;-><init>(Lcom/android/server/vr/VrManagerService;)V +PLcom/android/server/vr/VrManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/vr/VrManagerService$LocalService;-><init>(Lcom/android/server/vr/VrManagerService;)V PLcom/android/server/vr/VrManagerService$LocalService;-><init>(Lcom/android/server/vr/VrManagerService;Lcom/android/server/vr/VrManagerService$LocalService;)V PLcom/android/server/vr/VrManagerService$LocalService;->addPersistentVrModeStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V PLcom/android/server/vr/VrManagerService$LocalService;->isCurrentVrListener(Ljava/lang/String;I)Z PLcom/android/server/vr/VrManagerService$LocalService;->onScreenStateChanged(Z)V PLcom/android/server/vr/VrManagerService$LocalService;->onSleepStateChanged(Z)V -PLcom/android/server/vr/VrManagerService$LocalService;->setVrMode(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V +PLcom/android/server/vr/VrManagerService$LocalService;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V PLcom/android/server/vr/VrManagerService$NotificationAccessManager;-><init>(Lcom/android/server/vr/VrManagerService;)V PLcom/android/server/vr/VrManagerService$NotificationAccessManager;-><init>(Lcom/android/server/vr/VrManagerService;Lcom/android/server/vr/VrManagerService$NotificationAccessManager;)V -PLcom/android/server/vr/VrManagerService$NotificationAccessManager;->update(Ljava/util/Collection;)V -PLcom/android/server/vr/VrManagerService$VrState;-><init>(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V -PLcom/android/server/vr/VrManagerService;->-wrap0(Lcom/android/server/vr/VrManagerService;)Z -PLcom/android/server/vr/VrManagerService;->-wrap1(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)Z +PLcom/android/server/vr/VrManagerService;->-wrap1(Lcom/android/server/vr/VrManagerService;)Z PLcom/android/server/vr/VrManagerService;->-wrap10(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V -PLcom/android/server/vr/VrManagerService;->-wrap11(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;)V -PLcom/android/server/vr/VrManagerService;->-wrap18(Lcom/android/server/vr/VrManagerService;Z)V +PLcom/android/server/vr/VrManagerService;->-wrap11(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V +PLcom/android/server/vr/VrManagerService;->-wrap12(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;)V +PLcom/android/server/vr/VrManagerService;->-wrap14(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V PLcom/android/server/vr/VrManagerService;->-wrap19(Lcom/android/server/vr/VrManagerService;Z)V -PLcom/android/server/vr/VrManagerService;->-wrap20(Lcom/android/server/vr/VrManagerService;ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V -PLcom/android/server/vr/VrManagerService;->-wrap4(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IPersistentVrStateCallbacks;)V -PLcom/android/server/vr/VrManagerService;->-wrap5(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V -PLcom/android/server/vr/VrManagerService;->-wrap8(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;)V -PLcom/android/server/vr/VrManagerService;->-wrap9(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V +PLcom/android/server/vr/VrManagerService;->-wrap2(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)Z +PLcom/android/server/vr/VrManagerService;->-wrap20(Lcom/android/server/vr/VrManagerService;Z)V +PLcom/android/server/vr/VrManagerService;->-wrap21(Lcom/android/server/vr/VrManagerService;)V +PLcom/android/server/vr/VrManagerService;->-wrap22(Lcom/android/server/vr/VrManagerService;ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +PLcom/android/server/vr/VrManagerService;->-wrap5(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IPersistentVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService;->-wrap6(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService;->-wrap9(Lcom/android/server/vr/VrManagerService;[Ljava/lang/String;)V PLcom/android/server/vr/VrManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/vr/VrManagerService;->addPersistentStateCallback(Landroid/service/vr/IPersistentVrStateCallbacks;)V PLcom/android/server/vr/VrManagerService;->addStateCallback(Landroid/service/vr/IVrStateCallbacks;)V PLcom/android/server/vr/VrManagerService;->consumeAndApplyPendingStateLocked()V PLcom/android/server/vr/VrManagerService;->consumeAndApplyPendingStateLocked(Z)V -PLcom/android/server/vr/VrManagerService;->enforceCallerPermission(Ljava/lang/String;)V -PLcom/android/server/vr/VrManagerService;->formatSettings(Ljava/util/Collection;)Ljava/lang/String; -PLcom/android/server/vr/VrManagerService;->getNotificationListeners(Landroid/content/ContentResolver;I)Landroid/util/ArraySet; +PLcom/android/server/vr/VrManagerService;->enforceCallerPermissionAnyOf([Ljava/lang/String;)V PLcom/android/server/vr/VrManagerService;->getVrMode()Z PLcom/android/server/vr/VrManagerService;->grantCoarseLocationPermissionIfNeeded(Ljava/lang/String;I)V PLcom/android/server/vr/VrManagerService;->grantNotificationListenerAccess(Ljava/lang/String;I)V PLcom/android/server/vr/VrManagerService;->grantNotificationPolicyAccess(Ljava/lang/String;)V PLcom/android/server/vr/VrManagerService;->isCurrentVrListener(Ljava/lang/String;I)Z -PLcom/android/server/vr/VrManagerService;->isDefaultAllowed(Ljava/lang/String;)Z PLcom/android/server/vr/VrManagerService;->isPermissionUserUpdated(Ljava/lang/String;Ljava/lang/String;I)Z PLcom/android/server/vr/VrManagerService;->onBootPhase(I)V -PLcom/android/server/vr/VrManagerService;->onEnabledComponentChanged()V PLcom/android/server/vr/VrManagerService;->onStart()V PLcom/android/server/vr/VrManagerService;->onStartUser(I)V -PLcom/android/server/vr/VrManagerService;->setPersistentModeAndNotifyListenersLocked(Z)V +PLcom/android/server/vr/VrManagerService;->removeStateCallback(Landroid/service/vr/IVrStateCallbacks;)V PLcom/android/server/vr/VrManagerService;->setScreenOn(Z)V PLcom/android/server/vr/VrManagerService;->setSleepState(Z)V -PLcom/android/server/vr/VrManagerService;->setVrMode(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V -PLcom/android/server/vr/VrManagerService;->setVrModeAllowedLocked(Z)V -PLcom/android/server/vr/VrManagerService;->updateCurrentVrServiceLocked(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)Z +PLcom/android/server/vr/VrManagerService;->setUserUnlocked()V +PLcom/android/server/vr/VrManagerService;->updateVrModeAllowedLocked()V PLcom/android/server/wallpaper/-$Lambda$ZWcNEw3ZwVVSi_pP2mGGLvztkS0;-><init>(BLjava/lang/Object;)V PLcom/android/server/wallpaper/WallpaperManagerService$1;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V PLcom/android/server/wallpaper/WallpaperManagerService$2;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V @@ -12545,7 +14068,10 @@ PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onStart()V PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onUnlockUser(I)V PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->doPackagesChangedLocked(ZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)Z +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onSomePackagesChanged()V PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Landroid/app/WallpaperInfo;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;)V @@ -12556,37 +14082,39 @@ PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;-><init>(IL PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->cropExists()Z PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->sourceExists()Z PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V -PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->dataForEvent(ZZ)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData; -PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->onEvent(ILjava/lang/String;)V PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap0(I)Ljava/io/File; +PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap4(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap5(Lcom/android/server/wallpaper/WallpaperManagerService;I)V PLcom/android/server/wallpaper/WallpaperManagerService;-><init>(Landroid/content/Context;)V PLcom/android/server/wallpaper/WallpaperManagerService;->attachServiceLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V PLcom/android/server/wallpaper/WallpaperManagerService;->bindWallpaperComponentLocked(Landroid/content/ComponentName;ZZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)Z PLcom/android/server/wallpaper/WallpaperManagerService;->checkPermission(Ljava/lang/String;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->emptyCallbackList(Landroid/os/RemoteCallbackList;)Z +PLcom/android/server/wallpaper/WallpaperManagerService;->enforceCallingOrSelfPermissionAndAppOp(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V PLcom/android/server/wallpaper/WallpaperManagerService;->ensureSaneWallpaperData(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V -PLcom/android/server/wallpaper/WallpaperManagerService;->extractColors(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V PLcom/android/server/wallpaper/WallpaperManagerService;->getAttributeInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I PLcom/android/server/wallpaper/WallpaperManagerService;->getHeightHint()I PLcom/android/server/wallpaper/WallpaperManagerService;->getMaximumSizeDimension()I -PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaper(Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor; -PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperColors(I)Landroid/app/WallpaperColors; +PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor; +PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperColors(II)Landroid/app/WallpaperColors; PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperDir(I)Ljava/io/File; -PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperIdForUser(II)I PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperInfo(I)Landroid/app/WallpaperInfo; PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperSafeLocked(II)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData; PLcom/android/server/wallpaper/WallpaperManagerService;->getWidthHint()I PLcom/android/server/wallpaper/WallpaperManagerService;->isWallpaperSupported(Ljava/lang/String;)Z PLcom/android/server/wallpaper/WallpaperManagerService;->loadSettingsLocked(IZ)V PLcom/android/server/wallpaper/WallpaperManagerService;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile; +PLcom/android/server/wallpaper/WallpaperManagerService;->migrateFromOld()V +PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChanged(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V PLcom/android/server/wallpaper/WallpaperManagerService;->onUnlockUser(I)V PLcom/android/server/wallpaper/WallpaperManagerService;->parseWallpaperAttributes(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Z)V -PLcom/android/server/wallpaper/WallpaperManagerService;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V PLcom/android/server/wallpaper/WallpaperManagerService;->saveSettingsLocked(I)V PLcom/android/server/wallpaper/WallpaperManagerService;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z PLcom/android/server/wallpaper/WallpaperManagerService;->switchUser(ILandroid/os/IRemoteCallback;)V PLcom/android/server/wallpaper/WallpaperManagerService;->switchWallpaper(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)V PLcom/android/server/wallpaper/WallpaperManagerService;->systemReady()V +PLcom/android/server/wallpaper/WallpaperManagerService;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V PLcom/android/server/wallpaper/WallpaperManagerService;->writeWallpaperAttributes(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V PLcom/android/server/webkit/SystemImpl$LazyHolder;->-get0()Lcom/android/server/webkit/SystemImpl; PLcom/android/server/webkit/SystemImpl;-><init>()V @@ -12613,8 +14141,10 @@ PLcom/android/server/webkit/WebViewUpdateService$BinderService;->isMultiProcessE PLcom/android/server/webkit/WebViewUpdateService$BinderService;->notifyRelroCreationCompleted()V PLcom/android/server/webkit/WebViewUpdateService$BinderService;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse; PLcom/android/server/webkit/WebViewUpdateService;->-get0(Lcom/android/server/webkit/WebViewUpdateService;)Lcom/android/server/webkit/WebViewUpdateServiceImpl; +PLcom/android/server/webkit/WebViewUpdateService;->-wrap0(Landroid/content/Intent;)Ljava/lang/String; PLcom/android/server/webkit/WebViewUpdateService;-><init>(Landroid/content/Context;)V PLcom/android/server/webkit/WebViewUpdateService;->onStart()V +PLcom/android/server/webkit/WebViewUpdateService;->packageNameFromIntent(Landroid/content/Intent;)Ljava/lang/String; PLcom/android/server/webkit/WebViewUpdateService;->prepareWebViewInSystemServer()V PLcom/android/server/webkit/WebViewUpdateServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/webkit/SystemInterface;)V PLcom/android/server/webkit/WebViewUpdateServiceImpl;->existsValidNonFallbackProvider([Landroid/webkit/WebViewProviderInfo;)Z @@ -12624,9 +14154,11 @@ PLcom/android/server/webkit/WebViewUpdateServiceImpl;->handleNewUser(I)V PLcom/android/server/webkit/WebViewUpdateServiceImpl;->isDisabledForAllUsers(Ljava/util/List;)Z PLcom/android/server/webkit/WebViewUpdateServiceImpl;->isMultiProcessEnabled()Z PLcom/android/server/webkit/WebViewUpdateServiceImpl;->notifyRelroCreationCompleted()V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->packageStateChanged(Ljava/lang/String;II)V PLcom/android/server/webkit/WebViewUpdateServiceImpl;->prepareWebViewInSystemServer()V PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackState([Landroid/webkit/WebViewProviderInfo;)V PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackStateOnBoot()V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackStateOnPackageChange(Ljava/lang/String;I)V PLcom/android/server/webkit/WebViewUpdateServiceImpl;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse; PLcom/android/server/webkit/WebViewUpdater$ProviderAndPackageInfo;-><init>(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)V PLcom/android/server/webkit/WebViewUpdater;-><init>(Landroid/content/Context;Lcom/android/server/webkit/SystemInterface;)V @@ -12638,45 +14170,46 @@ PLcom/android/server/webkit/WebViewUpdater;->isInstalledAndEnabledForAllUsers(Lj PLcom/android/server/webkit/WebViewUpdater;->isValidProvider(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)Z PLcom/android/server/webkit/WebViewUpdater;->notifyRelroCreationCompleted()V PLcom/android/server/webkit/WebViewUpdater;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)V +PLcom/android/server/webkit/WebViewUpdater;->packageStateChanged(Ljava/lang/String;I)V PLcom/android/server/webkit/WebViewUpdater;->prepareWebViewInSystemServer()V PLcom/android/server/webkit/WebViewUpdater;->providerHasValidSignature(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;Lcom/android/server/webkit/SystemInterface;)Z PLcom/android/server/webkit/WebViewUpdater;->validityResult(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)I PLcom/android/server/webkit/WebViewUpdater;->versionCodeGE(II)Z PLcom/android/server/webkit/WebViewUpdater;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse; PLcom/android/server/webkit/WebViewUpdater;->webViewIsReadyLocked()Z -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->$m$0()V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->run()V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$8;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$8;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$8;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;-><init>(Ljava/lang/Object;)V PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V +PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;->$m$0()V +PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;-><init>(ILjava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;->binderDied()V PLcom/android/server/wifi/-$Lambda$YuIVlKWZZmb4gGMvJqVJEVQ4abs;-><init>(Ljava/lang/Object;)V PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$1;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$1;-><init>(Ljava/lang/Object;)V @@ -12730,26 +14263,22 @@ PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$9;->onValues(Land PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;-><init>(Ljava/lang/Object;)V PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V +PLcom/android/server/wifi/AggressiveConnectedScore;-><init>(Landroid/content/Context;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/AggressiveConnectedScore;->reset()V PLcom/android/server/wifi/BackupManagerProxy;-><init>()V PLcom/android/server/wifi/BaseWifiDiagnostics;-><init>(Lcom/android/server/wifi/WifiNative;)V +PLcom/android/server/wifi/BaseWifiDiagnostics;->dump(Ljava/io/PrintWriter;)V PLcom/android/server/wifi/ByteBufferReader;->readInteger(Ljava/nio/ByteBuffer;Ljava/nio/ByteOrder;I)J +PLcom/android/server/wifi/CarrierNetworkConfig$1;-><init>(Lcom/android/server/wifi/CarrierNetworkConfig;)V +PLcom/android/server/wifi/CarrierNetworkConfig;-><init>(Landroid/content/Context;)V +PLcom/android/server/wifi/CarrierNetworkConfig;->updateNetworkConfig(Landroid/content/Context;)V PLcom/android/server/wifi/Clock;-><init>()V -PLcom/android/server/wifi/Clock;->getElapsedSinceBootMillis()J -PLcom/android/server/wifi/Clock;->getUptimeSinceBootMillis()J -PLcom/android/server/wifi/Clock;->getWallClockMillis()J -PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;-><init>()V -PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;->equals(Ljava/lang/Object;)Z -PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;->fromScanResult(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo; -PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;->fromWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo; -PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;->hashCode()I PLcom/android/server/wifi/ConfigurationMap;-><init>(Landroid/os/UserManager;)V PLcom/android/server/wifi/ConfigurationMap;->clear()V -PLcom/android/server/wifi/ConfigurationMap;->getByScanResultForCurrentUser(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration; -PLcom/android/server/wifi/ConfigurationMap;->getForCurrentUser(I)Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/ConfigurationMap;->put(Landroid/net/wifi/WifiConfiguration;)Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/ConfigurationMap;->sizeForAllUsers()I PLcom/android/server/wifi/ConfigurationMap;->valuesForAllUsers()Ljava/util/Collection; -PLcom/android/server/wifi/ConfigurationMap;->valuesForCurrentUser()Ljava/util/Collection; +PLcom/android/server/wifi/ConnectedScore;-><init>(Lcom/android/server/wifi/Clock;)V PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;-><init>()V PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->getName()Ljava/lang/String; @@ -12759,13 +14288,10 @@ PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->serializeData(Lorg/xm PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->setSsidList(Ljava/util/Set;)V PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->supportShareData()Z PLcom/android/server/wifi/DummyLogMessage;-><init>()V -PLcom/android/server/wifi/DummyLogMessage;->c(J)Lcom/android/server/wifi/WifiLog$LogMessage; PLcom/android/server/wifi/DummyLogMessage;->c(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; PLcom/android/server/wifi/DummyLogMessage;->c(Z)Lcom/android/server/wifi/WifiLog$LogMessage; -PLcom/android/server/wifi/DummyLogMessage;->flush()V PLcom/android/server/wifi/FakeWifiLog;-><init>()V PLcom/android/server/wifi/FakeWifiLog;->i(Ljava/lang/String;)V -PLcom/android/server/wifi/FakeWifiLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; PLcom/android/server/wifi/FrameworkFacade;-><init>()V PLcom/android/server/wifi/FrameworkFacade;->getBatteryService()Lcom/android/internal/app/IBatteryStats; PLcom/android/server/wifi/FrameworkFacade;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; @@ -12793,7 +14319,6 @@ PLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->hashCode()I PLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->trigger()V PLcom/android/server/wifi/HalDeviceManager$ManagerStatusListenerProxy;-><init>(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;Landroid/os/Looper;)V PLcom/android/server/wifi/HalDeviceManager$ManagerStatusListenerProxy;->action()V -PLcom/android/server/wifi/HalDeviceManager$Mutable;-><init>()V PLcom/android/server/wifi/HalDeviceManager$WifiChipInfo;-><init>(Lcom/android/server/wifi/HalDeviceManager;)V PLcom/android/server/wifi/HalDeviceManager$WifiChipInfo;-><init>(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;)V PLcom/android/server/wifi/HalDeviceManager$WifiEventCallback;-><init>(Lcom/android/server/wifi/HalDeviceManager;)V @@ -12803,9 +14328,8 @@ PLcom/android/server/wifi/HalDeviceManager$WifiEventCallback;->onStop()V PLcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;-><init>(Lcom/android/server/wifi/HalDeviceManager;)V PLcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;-><init>(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;)V PLcom/android/server/wifi/HalDeviceManager;->-get0()[I -PLcom/android/server/wifi/HalDeviceManager;->-set0(Lcom/android/server/wifi/HalDeviceManager;Landroid/hardware/wifi/V1_0/IWifi;)Landroid/hardware/wifi/V1_0/IWifi; +PLcom/android/server/wifi/HalDeviceManager;->-get1(Lcom/android/server/wifi/HalDeviceManager;)Ljava/lang/Object; PLcom/android/server/wifi/HalDeviceManager;->-wrap1(Lcom/android/server/wifi/HalDeviceManager;)V -PLcom/android/server/wifi/HalDeviceManager;->-wrap2(Lcom/android/server/wifi/HalDeviceManager;)V PLcom/android/server/wifi/HalDeviceManager;-><init>()V PLcom/android/server/wifi/HalDeviceManager;->canIfaceComboSupportRequest(Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;Landroid/hardware/wifi/V1_0/IWifiChip$ChipMode;[II)Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData; PLcom/android/server/wifi/HalDeviceManager;->compareIfaceCreationData(Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;)Z @@ -12818,12 +14342,10 @@ PLcom/android/server/wifi/HalDeviceManager;->dispatchAvailableForRequestListener PLcom/android/server/wifi/HalDeviceManager;->dispatchAvailableForRequestListenersForType(I[Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;)V PLcom/android/server/wifi/HalDeviceManager;->executeChipReconfiguration(Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;I)Landroid/hardware/wifi/V1_0/IWifiIface; PLcom/android/server/wifi/HalDeviceManager;->expandIfaceCombos(Landroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;)[[I -PLcom/android/server/wifi/HalDeviceManager;->getAllChipInfo()[Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo; PLcom/android/server/wifi/HalDeviceManager;->getChip(Landroid/hardware/wifi/V1_0/IWifiIface;)Landroid/hardware/wifi/V1_0/IWifiChip; PLcom/android/server/wifi/HalDeviceManager;->getName(Landroid/hardware/wifi/V1_0/IWifiIface;)Ljava/lang/String; PLcom/android/server/wifi/HalDeviceManager;->getServiceManagerMockable()Landroid/hidl/manager/V1_0/IServiceManager; PLcom/android/server/wifi/HalDeviceManager;->getSupportedIfaceTypes()Ljava/util/Set; -PLcom/android/server/wifi/HalDeviceManager;->getSupportedIfaceTypesInternal(Landroid/hardware/wifi/V1_0/IWifiChip;)Ljava/util/Set; PLcom/android/server/wifi/HalDeviceManager;->getWifiServiceMockable()Landroid/hardware/wifi/V1_0/IWifi; PLcom/android/server/wifi/HalDeviceManager;->initIServiceManagerIfNecessary()V PLcom/android/server/wifi/HalDeviceManager;->initIWifiChipDebugListeners()V @@ -12835,18 +14357,18 @@ PLcom/android/server/wifi/HalDeviceManager;->isStarted()Z PLcom/android/server/wifi/HalDeviceManager;->isSupported()Z PLcom/android/server/wifi/HalDeviceManager;->isSupportedInternal()Z PLcom/android/server/wifi/HalDeviceManager;->isWifiStarted()Z -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_13565(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/lang/String;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_16041(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_32051(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33050(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33716(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_34497(Landroid/util/MutableBoolean;Landroid/util/MutableBoolean;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_35435(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_36264(Landroid/util/MutableBoolean;Ljava/lang/String;[Lcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_37240(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_39040(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_40846(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_68740(Lcom/android/server/wifi/HalDeviceManager$Mutable;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_13579(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/lang/String;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_16055(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_32182(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33181(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33847(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_34628(Landroid/util/MutableBoolean;Landroid/util/MutableBoolean;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_35566(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_36395(Landroid/util/MutableBoolean;Ljava/lang/String;[Lcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_37371(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_39171(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_40977(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_68871(Lcom/android/server/wifi/HalDeviceManager$Mutable;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V PLcom/android/server/wifi/HalDeviceManager;->managerStatusListenerDispatch()V PLcom/android/server/wifi/HalDeviceManager;->registerStatusListener(Lcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;Landroid/os/Looper;)V PLcom/android/server/wifi/HalDeviceManager;->start()Z @@ -12857,19 +14379,20 @@ PLcom/android/server/wifi/HalDeviceManager;->validateInterfaceCache([Lcom/androi PLcom/android/server/wifi/LastMileLogger;-><init>(Lcom/android/server/wifi/WifiInjector;)V PLcom/android/server/wifi/LastMileLogger;-><init>(Lcom/android/server/wifi/WifiInjector;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/wifi/LastMileLogger;->disableTracing()V +PLcom/android/server/wifi/LastMileLogger;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/LastMileLogger;->dumpInternal(Ljava/io/PrintWriter;Ljava/lang/String;[B)V PLcom/android/server/wifi/LastMileLogger;->enableTracing()V PLcom/android/server/wifi/LastMileLogger;->ensureFailSafeIsArmed()Z PLcom/android/server/wifi/LastMileLogger;->readTrace()[B PLcom/android/server/wifi/LastMileLogger;->reportConnectionEvent(JB)V +PLcom/android/server/wifi/LegacyConnectedScore;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/LegacyConnectedScore;->reset()V PLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; PLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(Z)Lcom/android/server/wifi/WifiLog$LogMessage; -PLcom/android/server/wifi/LogcatLog;->-get0()Z PLcom/android/server/wifi/LogcatLog;-><init>(Ljava/lang/String;)V PLcom/android/server/wifi/LogcatLog;->enableVerboseLogging(I)V PLcom/android/server/wifi/LogcatLog;->err(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; PLcom/android/server/wifi/LogcatLog;->i(Ljava/lang/String;)V -PLcom/android/server/wifi/LogcatLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; -PLcom/android/server/wifi/LogcatLog;->tC(Ljava/lang/String;)V PLcom/android/server/wifi/LogcatLog;->wC(Ljava/lang/String;)V PLcom/android/server/wifi/NetworkListStoreData;-><init>()V PLcom/android/server/wifi/NetworkListStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V @@ -12885,11 +14408,29 @@ PLcom/android/server/wifi/NetworkListStoreData;->serializeNetworkList(Lorg/xmlpu PLcom/android/server/wifi/NetworkListStoreData;->setSharedConfigurations(Ljava/util/List;)V PLcom/android/server/wifi/NetworkListStoreData;->setUserConfigurations(Ljava/util/List;)V PLcom/android/server/wifi/NetworkListStoreData;->supportShareData()Z +PLcom/android/server/wifi/OpenNetworkNotificationBuilder;-><init>(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;)V +PLcom/android/server/wifi/OpenNetworkNotifier$1;-><init>(Lcom/android/server/wifi/OpenNetworkNotifier;)V +PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;-><init>(Lcom/android/server/wifi/OpenNetworkNotifier;Landroid/os/Handler;)V +PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;->getValue()Z +PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;->register()V +PLcom/android/server/wifi/OpenNetworkNotifier;->-get0(Lcom/android/server/wifi/OpenNetworkNotifier;)Landroid/content/Context; +PLcom/android/server/wifi/OpenNetworkNotifier;->-get1(Lcom/android/server/wifi/OpenNetworkNotifier;)Lcom/android/server/wifi/FrameworkFacade; +PLcom/android/server/wifi/OpenNetworkNotifier;->-set0(Lcom/android/server/wifi/OpenNetworkNotifier;Z)Z +PLcom/android/server/wifi/OpenNetworkNotifier;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/OpenNetworkRecommender;)V +PLcom/android/server/wifi/OpenNetworkNotifier;->clearPendingNotification(Z)V +PLcom/android/server/wifi/OpenNetworkNotifier;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/OpenNetworkNotifier;->handleScreenStateChanged(Z)V +PLcom/android/server/wifi/OpenNetworkRecommender;-><init>()V PLcom/android/server/wifi/RttService$RttServiceImpl$1;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;)V PLcom/android/server/wifi/RttService$RttServiceImpl$2;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;)V PLcom/android/server/wifi/RttService$RttServiceImpl$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/Looper;)V -PLcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;->getDescription(I)Ljava/lang/String; +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientInfo;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;Lcom/android/internal/util/AsyncChannel;ILjava/lang/String;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientInfo;->cleanup()V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttDeathListener;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/IBinder;Landroid/os/Messenger;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttDeathListener;->binderDied()V PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$DefaultState;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V @@ -12897,49 +14438,34 @@ PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$InitiatorEnabledState;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$ResponderEnabledState;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V -PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-get1(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)Lcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler; -PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-get2(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)Landroid/net/wifi/IWificond; -PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-set0(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;Landroid/net/wifi/IClientInterface;)Landroid/net/wifi/IClientInterface; -PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-set1(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;Lcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler;)Lcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler; -PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-set2(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;Landroid/net/wifi/IWificond;)Landroid/net/wifi/IWificond; PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/Looper;)V -PLcom/android/server/wifi/RttService$RttServiceImpl;->-get0(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/util/ArrayMap; -PLcom/android/server/wifi/RttService$RttServiceImpl;->-get2(Lcom/android/server/wifi/RttService$RttServiceImpl;)Ljava/lang/Object; -PLcom/android/server/wifi/RttService$RttServiceImpl;->-get4(Lcom/android/server/wifi/RttService$RttServiceImpl;)Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine; -PLcom/android/server/wifi/RttService$RttServiceImpl;->-get5(Lcom/android/server/wifi/RttService$RttServiceImpl;)Lcom/android/server/wifi/WifiInjector; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get0(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/util/SparseArray; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get1(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/util/ArrayMap; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get2(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/content/Context; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get3(Lcom/android/server/wifi/RttService$RttServiceImpl;)Ljava/lang/Object; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get4(Lcom/android/server/wifi/RttService$RttServiceImpl;)Ljava/util/Queue; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get5(Lcom/android/server/wifi/RttService$RttServiceImpl;)Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine; PLcom/android/server/wifi/RttService$RttServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/WifiInjector;)V +PLcom/android/server/wifi/RttService$RttServiceImpl;->getMessenger(Landroid/os/IBinder;[I)Landroid/os/Messenger; +PLcom/android/server/wifi/RttService$RttServiceImpl;->lambda$-com_android_server_wifi_RttService$RttServiceImpl_1874(I)V PLcom/android/server/wifi/RttService$RttServiceImpl;->startService()V PLcom/android/server/wifi/RttService;-><init>(Landroid/content/Context;)V PLcom/android/server/wifi/RttService;->onBootPhase(I)V PLcom/android/server/wifi/RttService;->onStart()V PLcom/android/server/wifi/SIMAccessor;-><init>(Landroid/content/Context;)V PLcom/android/server/wifi/SavedNetworkEvaluator;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;Lcom/android/server/wifi/WifiConnectivityHelper;)V -PLcom/android/server/wifi/SavedNetworkEvaluator;->calculateBssidScore(Landroid/net/wifi/ScanResult;Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;Ljava/lang/StringBuffer;)I -PLcom/android/server/wifi/SavedNetworkEvaluator;->evaluateNetworks(Ljava/util/List;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;ZZLjava/util/List;)Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/SavedNetworkEvaluator;->getName()Ljava/lang/String; PLcom/android/server/wifi/SavedNetworkEvaluator;->localLog(Ljava/lang/String;)V PLcom/android/server/wifi/SavedNetworkEvaluator;->update(Ljava/util/List;)V -PLcom/android/server/wifi/SavedNetworkEvaluator;->updateSavedNetworkSelectionStatus()V -PLcom/android/server/wifi/ScanDetail;-><init>(Landroid/net/wifi/ScanResult;Lcom/android/server/wifi/hotspot2/NetworkDetail;)V -PLcom/android/server/wifi/ScanDetail;->getBSSIDString()Ljava/lang/String; -PLcom/android/server/wifi/ScanDetail;->getNetworkDetail()Lcom/android/server/wifi/hotspot2/NetworkDetail; -PLcom/android/server/wifi/ScanDetail;->getSSID()Ljava/lang/String; -PLcom/android/server/wifi/ScanDetail;->getSeen()J -PLcom/android/server/wifi/ScanDetail;->setSeen()J PLcom/android/server/wifi/ScanDetailCache;-><init>(Landroid/net/wifi/WifiConfiguration;II)V -PLcom/android/server/wifi/ScanDetailCache;->get(Ljava/lang/String;)Landroid/net/wifi/ScanResult; -PLcom/android/server/wifi/ScanDetailCache;->getScanDetail(Ljava/lang/String;)Lcom/android/server/wifi/ScanDetail; -PLcom/android/server/wifi/ScanDetailCache;->getVisibility(J)Landroid/net/wifi/WifiConfiguration$Visibility; -PLcom/android/server/wifi/ScanDetailCache;->put(Lcom/android/server/wifi/ScanDetail;)V PLcom/android/server/wifi/ScanDetailCache;->size()I -PLcom/android/server/wifi/ScanDetailCache;->values()Ljava/util/Collection; +PLcom/android/server/wifi/ScanResultMatchInfo;->fromWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ScanResultMatchInfo; PLcom/android/server/wifi/ScoredNetworkEvaluator$1;-><init>(Lcom/android/server/wifi/ScoredNetworkEvaluator;Landroid/os/Handler;Lcom/android/server/wifi/FrameworkFacade;Landroid/content/Context;)V PLcom/android/server/wifi/ScoredNetworkEvaluator$1;->onChange(Z)V PLcom/android/server/wifi/ScoredNetworkEvaluator;->-set0(Lcom/android/server/wifi/ScoredNetworkEvaluator;Z)Z PLcom/android/server/wifi/ScoredNetworkEvaluator;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;Landroid/net/NetworkScoreManager;Lcom/android/server/wifi/WifiConfigManager;Landroid/util/LocalLog;Landroid/net/wifi/WifiNetworkScoreCache;)V PLcom/android/server/wifi/ScoredNetworkEvaluator;->update(Ljava/util/List;)V -PLcom/android/server/wifi/ScoredNetworkEvaluator;->updateNetworkScoreCache(Ljava/util/List;)V -PLcom/android/server/wifi/SelfRecovery;-><init>(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/SelfRecovery;-><init>(Lcom/android/server/wifi/WifiController;Lcom/android/server/wifi/Clock;)V PLcom/android/server/wifi/StateChangeResult;-><init>(ILandroid/net/wifi/WifiSsid;Ljava/lang/String;Landroid/net/wifi/SupplicantState;)V PLcom/android/server/wifi/StateChangeResult;->toString()Ljava/lang/String; PLcom/android/server/wifi/StateMachineDeathRecipient;-><init>(Lcom/android/internal/util/StateMachine;I)V @@ -12986,11 +14512,11 @@ PLcom/android/server/wifi/SupplicantStaIfaceHal;->initSupplicantStaIface()Z PLcom/android/server/wifi/SupplicantStaIfaceHal;->initialize()Z PLcom/android/server/wifi/SupplicantStaIfaceHal;->isInitializationComplete()Z PLcom/android/server/wifi/SupplicantStaIfaceHal;->isInitializationStarted()Z -PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_11270(Ljava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_12381(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V -PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_27007(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;)V -PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_31299(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_47753(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_11878(Ljava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_12989(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_28917(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_33278(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_50243(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToServiceManagerDeath()Z PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToSupplicantDeath()Z PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToSupplicantStaIfaceDeath()Z @@ -13080,6 +14606,7 @@ PLcom/android/server/wifi/SupplicantStateTracker;->-set1(Lcom/android/server/wif PLcom/android/server/wifi/SupplicantStateTracker;->-wrap2(Lcom/android/server/wifi/SupplicantStateTracker;Landroid/net/wifi/SupplicantState;ZI)V PLcom/android/server/wifi/SupplicantStateTracker;->-wrap3(Lcom/android/server/wifi/SupplicantStateTracker;Lcom/android/server/wifi/StateChangeResult;)V PLcom/android/server/wifi/SupplicantStateTracker;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/FrameworkFacade;Landroid/os/Handler;)V +PLcom/android/server/wifi/SupplicantStateTracker;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/SupplicantStateTracker;->enableVerboseLogging(I)V PLcom/android/server/wifi/SupplicantStateTracker;->getSupplicantStateName()Ljava/lang/String; PLcom/android/server/wifi/SupplicantStateTracker;->sendSupplicantStateChangedBroadcast(Landroid/net/wifi/SupplicantState;ZI)V @@ -13094,33 +14621,23 @@ PLcom/android/server/wifi/WifiApConfigStore;-><init>(Landroid/content/Context;Lc PLcom/android/server/wifi/WifiApConfigStore;-><init>(Landroid/content/Context;Lcom/android/server/wifi/BackupManagerProxy;Ljava/lang/String;)V PLcom/android/server/wifi/WifiApConfigStore;->loadApConfiguration(Ljava/lang/String;)Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/WifiBackupRestore;-><init>(Lcom/android/server/wifi/util/WifiPermissionsUtil;)V +PLcom/android/server/wifi/WifiBackupRestore;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiBackupRestore;->enableVerboseLogging(I)V PLcom/android/server/wifi/WifiCertManager;-><init>(Landroid/content/Context;)V PLcom/android/server/wifi/WifiCertManager;-><init>(Landroid/content/Context;Ljava/lang/String;)V PLcom/android/server/wifi/WifiCertManager;->readConfigFile()[B PLcom/android/server/wifi/WifiConfigManager$1;-><init>()V PLcom/android/server/wifi/WifiConfigManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/Clock;Landroid/os/UserManager;Landroid/telephony/TelephonyManager;Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/WifiConfigStore;Lcom/android/server/wifi/WifiConfigStoreLegacy;Lcom/android/server/wifi/util/WifiPermissionsUtil;Lcom/android/server/wifi/util/WifiPermissionsWrapper;Lcom/android/server/wifi/NetworkListStoreData;Lcom/android/server/wifi/DeletedEphemeralSsidsStoreData;)V -PLcom/android/server/wifi/WifiConfigManager;->addToChannelSetForNetworkFromScanDetailCache(Ljava/util/Set;Lcom/android/server/wifi/ScanDetailCache;JJI)Z -PLcom/android/server/wifi/WifiConfigManager;->attemptNetworkLinking(Landroid/net/wifi/WifiConfiguration;)V PLcom/android/server/wifi/WifiConfigManager;->clearInternalData()V PLcom/android/server/wifi/WifiConfigManager;->clearLastSelectedNetwork()V -PLcom/android/server/wifi/WifiConfigManager;->clearNetworkCandidateScanResult(I)Z -PLcom/android/server/wifi/WifiConfigManager;->createExternalWifiConfiguration(Landroid/net/wifi/WifiConfiguration;Z)Landroid/net/wifi/WifiConfiguration; +PLcom/android/server/wifi/WifiConfigManager;->clearRecentFailureReason(I)V +PLcom/android/server/wifi/WifiConfigManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiConfigManager;->enableVerboseLogging(I)V PLcom/android/server/wifi/WifiConfigManager;->fetchChannelSetForNetworkForPartialScan(IJI)Ljava/util/Set; -PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration; -PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetail(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration; -PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetailAndCache(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkWithPassword(I)Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworks()Ljava/util/List; -PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworks(ZZ)Ljava/util/List; -PLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration; -PLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetworks()Ljava/util/Collection; -PLcom/android/server/wifi/WifiConfigManager;->getLastSelectedNetwork()I PLcom/android/server/wifi/WifiConfigManager;->getLastSelectedNetworkConfigKey()Ljava/lang/String; -PLcom/android/server/wifi/WifiConfigManager;->getOrCreateScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ScanDetailCache; PLcom/android/server/wifi/WifiConfigManager;->getSavedNetworks()Ljava/util/List; -PLcom/android/server/wifi/WifiConfigManager;->getScanDetailCacheForNetwork(I)Lcom/android/server/wifi/ScanDetailCache; PLcom/android/server/wifi/WifiConfigManager;->handleUserUnlock(I)V PLcom/android/server/wifi/WifiConfigManager;->handleUserUnlockOrSwitch(I)V PLcom/android/server/wifi/WifiConfigManager;->loadFromStore()Z @@ -13128,23 +14645,16 @@ PLcom/android/server/wifi/WifiConfigManager;->loadFromUserStoreAfterUnlockOrSwit PLcom/android/server/wifi/WifiConfigManager;->loadInternalData(Ljava/util/List;Ljava/util/List;Ljava/util/Set;)V PLcom/android/server/wifi/WifiConfigManager;->loadInternalDataFromSharedStore(Ljava/util/List;)V PLcom/android/server/wifi/WifiConfigManager;->loadInternalDataFromUserStore(Ljava/util/List;Ljava/util/Set;)V -PLcom/android/server/wifi/WifiConfigManager;->maskPasswordsInWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)V PLcom/android/server/wifi/WifiConfigManager;->migrateFromLegacyStore()Z PLcom/android/server/wifi/WifiConfigManager;->needsUnlockedKeyStore()Z PLcom/android/server/wifi/WifiConfigManager;->resetSimNetworks(Z)V -PLcom/android/server/wifi/WifiConfigManager;->retrieveHiddenNetworkList()Ljava/util/List; -PLcom/android/server/wifi/WifiConfigManager;->saveToScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;Lcom/android/server/wifi/ScanDetail;)V PLcom/android/server/wifi/WifiConfigManager;->saveToStore(Z)Z PLcom/android/server/wifi/WifiConfigManager;->sendConfiguredNetworkChangedBroadcast(Landroid/net/wifi/WifiConfiguration;I)V PLcom/android/server/wifi/WifiConfigManager;->sendConfiguredNetworksChangedBroadcast()V -PLcom/android/server/wifi/WifiConfigManager;->setNetworkCandidateScanResult(ILandroid/net/wifi/ScanResult;I)Z PLcom/android/server/wifi/WifiConfigManager;->setNetworkStatus(Landroid/net/wifi/WifiConfiguration;I)V PLcom/android/server/wifi/WifiConfigManager;->setNetworkValidatedInternetAccess(IZ)Z PLcom/android/server/wifi/WifiConfigManager;->setOnSavedNetworkUpdateListener(Lcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;)V -PLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(I)Z -PLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(Landroid/net/wifi/WifiConfiguration;)Z PLcom/android/server/wifi/WifiConfigManager;->updateNetworkAfterConnect(I)Z -PLcom/android/server/wifi/WifiConfigManager;->updateScanDetailCacheFromWifiInfo(Landroid/net/wifi/WifiInfo;)V PLcom/android/server/wifi/WifiConfigStore$1;-><init>(Lcom/android/server/wifi/WifiConfigStore;)V PLcom/android/server/wifi/WifiConfigStore$1;->onAlarm()V PLcom/android/server/wifi/WifiConfigStore$StoreFile;-><init>(Ljava/io/File;)V @@ -13164,7 +14674,6 @@ PLcom/android/server/wifi/WifiConfigStore;->parseDocumentStartAndVersionFromXml( PLcom/android/server/wifi/WifiConfigStore;->read()V PLcom/android/server/wifi/WifiConfigStore;->registerStoreData(Lcom/android/server/wifi/WifiConfigStore$StoreData;)Z PLcom/android/server/wifi/WifiConfigStore;->resetStoreData(Z)V -PLcom/android/server/wifi/WifiConfigStore;->serializeData(Z)[B PLcom/android/server/wifi/WifiConfigStore;->startBufferedWriteAlarm()V PLcom/android/server/wifi/WifiConfigStore;->stopBufferedWriteAlarm()V PLcom/android/server/wifi/WifiConfigStore;->switchUserStoreAndRead(Lcom/android/server/wifi/WifiConfigStore$StoreFile;)V @@ -13173,27 +14682,20 @@ PLcom/android/server/wifi/WifiConfigStore;->writeBufferedData()V PLcom/android/server/wifi/WifiConfigStoreLegacy;-><init>(Lcom/android/server/wifi/WifiNetworkHistory;Lcom/android/server/wifi/WifiNative;Lcom/android/server/net/IpConfigStore;Lcom/android/server/wifi/hotspot2/LegacyPasspointConfigParser;)V PLcom/android/server/wifi/WifiConfigStoreLegacy;->areStoresPresent()Z PLcom/android/server/wifi/WifiConfigurationUtil$WifiConfigurationComparator;-><init>()V -PLcom/android/server/wifi/WifiConfigurationUtil;->hasAnyValidWepKey([Ljava/lang/String;)Z -PLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForEapNetwork(Landroid/net/wifi/WifiConfiguration;)Z -PLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForOpenNetwork(Landroid/net/wifi/WifiConfiguration;)Z -PLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForPskNetwork(Landroid/net/wifi/WifiConfiguration;)Z -PLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForWepNetwork(Landroid/net/wifi/WifiConfiguration;)Z PLcom/android/server/wifi/WifiConfigurationUtil;->isSameNetwork(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;)Z PLcom/android/server/wifi/WifiConfigurationUtil;->isVisibleToAnyProfile(Landroid/net/wifi/WifiConfiguration;Ljava/util/List;)Z PLcom/android/server/wifi/WifiConnectivityHelper;-><init>(Lcom/android/server/wifi/WifiNative;)V PLcom/android/server/wifi/WifiConnectivityHelper;->getFirmwareRoamingInfo()Z PLcom/android/server/wifi/WifiConnectivityHelper;->getMaxNumBlacklistBssid()I -PLcom/android/server/wifi/WifiConnectivityHelper;->isFirmwareRoamingSupported()Z PLcom/android/server/wifi/WifiConnectivityHelper;->setFirmwareRoamingConfiguration(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z PLcom/android/server/wifi/WifiConnectivityManager$1;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V PLcom/android/server/wifi/WifiConnectivityManager$2;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager$2;->onAlarm()V PLcom/android/server/wifi/WifiConnectivityManager$3;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V PLcom/android/server/wifi/WifiConnectivityManager$3;->onAlarm()V PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;)V PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->clearScanDetails()V -PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V -PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onSuccess()V PLcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V PLcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;)V @@ -13201,41 +14703,34 @@ PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;-><init>(Lcom/ PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;)V PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;->resetLowRssiNetworkRetryDelay()V PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;Z)V -PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onSuccess()V -PLcom/android/server/wifi/WifiConnectivityManager;->-get1(Lcom/android/server/wifi/WifiConnectivityManager;)Z +PLcom/android/server/wifi/WifiConnectivityManager;->-get10(Lcom/android/server/wifi/WifiConnectivityManager;)Lcom/android/server/wifi/WifiMetrics; PLcom/android/server/wifi/WifiConnectivityManager;->-get2(Lcom/android/server/wifi/WifiConnectivityManager;)Z -PLcom/android/server/wifi/WifiConnectivityManager;->-get6(Lcom/android/server/wifi/WifiConnectivityManager;)Z PLcom/android/server/wifi/WifiConnectivityManager;->-get7(Lcom/android/server/wifi/WifiConnectivityManager;)Z -PLcom/android/server/wifi/WifiConnectivityManager;->-get8(Lcom/android/server/wifi/WifiConnectivityManager;)Z PLcom/android/server/wifi/WifiConnectivityManager;->-wrap0(Lcom/android/server/wifi/WifiConnectivityManager;Ljava/util/List;Ljava/lang/String;)Z PLcom/android/server/wifi/WifiConnectivityManager;->-wrap2(Lcom/android/server/wifi/WifiConnectivityManager;)V -PLcom/android/server/wifi/WifiConnectivityManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiScanner;Lcom/android/server/wifi/WifiConfigManager;Landroid/net/wifi/WifiInfo;Lcom/android/server/wifi/WifiNetworkSelector;Lcom/android/server/wifi/WifiConnectivityHelper;Lcom/android/server/wifi/WifiLastResortWatchdog;Lcom/android/server/wifi/WifiMetrics;Landroid/os/Looper;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;ZLcom/android/server/wifi/FrameworkFacade;Lcom/android/server/wifi/SavedNetworkEvaluator;Lcom/android/server/wifi/ScoredNetworkEvaluator;Lcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;)V -PLcom/android/server/wifi/WifiConnectivityManager;->buildBssidBlacklist()Ljava/util/HashSet; +PLcom/android/server/wifi/WifiConnectivityManager;->-wrap7(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiScanner;Lcom/android/server/wifi/WifiConfigManager;Landroid/net/wifi/WifiInfo;Lcom/android/server/wifi/WifiNetworkSelector;Lcom/android/server/wifi/WifiConnectivityHelper;Lcom/android/server/wifi/WifiLastResortWatchdog;Lcom/android/server/wifi/OpenNetworkNotifier;Lcom/android/server/wifi/WifiMetrics;Landroid/os/Looper;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;ZLcom/android/server/wifi/FrameworkFacade;Lcom/android/server/wifi/SavedNetworkEvaluator;Lcom/android/server/wifi/ScoredNetworkEvaluator;Lcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;)V PLcom/android/server/wifi/WifiConnectivityManager;->cancelPeriodicScanTimer()V PLcom/android/server/wifi/WifiConnectivityManager;->clearBssidBlacklist()V -PLcom/android/server/wifi/WifiConnectivityManager;->connectToNetwork(Landroid/net/wifi/WifiConfiguration;)V +PLcom/android/server/wifi/WifiConnectivityManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiConnectivityManager;->enable(Z)V PLcom/android/server/wifi/WifiConnectivityManager;->getScanBand(Z)I PLcom/android/server/wifi/WifiConnectivityManager;->handleConnectionStateChanged(I)V -PLcom/android/server/wifi/WifiConnectivityManager;->handleScanResults(Ljava/util/List;Ljava/lang/String;)Z PLcom/android/server/wifi/WifiConnectivityManager;->handleScreenStateChanged(Z)V -PLcom/android/server/wifi/WifiConnectivityManager;->localLog(Ljava/lang/String;)V PLcom/android/server/wifi/WifiConnectivityManager;->noteConnectionAttempt(Ljava/lang/Long;)V PLcom/android/server/wifi/WifiConnectivityManager;->periodicScanTimerHandler()V PLcom/android/server/wifi/WifiConnectivityManager;->refreshBssidBlacklist()V PLcom/android/server/wifi/WifiConnectivityManager;->resetLastPeriodicSingleScanTimeStamp()V PLcom/android/server/wifi/WifiConnectivityManager;->schedulePeriodicScanTimer(I)V PLcom/android/server/wifi/WifiConnectivityManager;->scheduleWatchdogTimer()V -PLcom/android/server/wifi/WifiConnectivityManager;->setScanChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)Z PLcom/android/server/wifi/WifiConnectivityManager;->setUntrustedConnectionAllowed(Z)V PLcom/android/server/wifi/WifiConnectivityManager;->setWifiEnabled(Z)V PLcom/android/server/wifi/WifiConnectivityManager;->start()V PLcom/android/server/wifi/WifiConnectivityManager;->startConnectivityScan(Z)V PLcom/android/server/wifi/WifiConnectivityManager;->startPeriodicScan(Z)V PLcom/android/server/wifi/WifiConnectivityManager;->startPeriodicSingleScan()V -PLcom/android/server/wifi/WifiConnectivityManager;->startSingleScan(Z)V PLcom/android/server/wifi/WifiConnectivityManager;->stateToString(I)Ljava/lang/String; PLcom/android/server/wifi/WifiConnectivityManager;->stop()V PLcom/android/server/wifi/WifiConnectivityManager;->stopConnectivityScan()V @@ -13244,6 +14739,7 @@ PLcom/android/server/wifi/WifiConnectivityManager;->trackBssid(Ljava/lang/String PLcom/android/server/wifi/WifiConnectivityManager;->updateBssidBlacklist(Ljava/lang/String;ZI)Z PLcom/android/server/wifi/WifiConnectivityManager;->updateFirmwareRoamingConfiguration()V PLcom/android/server/wifi/WifiConnectivityManager;->updateRunningState()V +PLcom/android/server/wifi/WifiConnectivityManager;->watchdogHandler()V PLcom/android/server/wifi/WifiController$1;-><init>(Lcom/android/server/wifi/WifiController;)V PLcom/android/server/wifi/WifiController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wifi/WifiController$2;-><init>(Lcom/android/server/wifi/WifiController;Landroid/os/Handler;)V @@ -13252,10 +14748,8 @@ PLcom/android/server/wifi/WifiController$4;-><init>(Lcom/android/server/wifi/Wif PLcom/android/server/wifi/WifiController$ApEnabledState;-><init>(Lcom/android/server/wifi/WifiController;)V PLcom/android/server/wifi/WifiController$ApStaDisabledState;-><init>(Lcom/android/server/wifi/WifiController;)V PLcom/android/server/wifi/WifiController$DefaultState;-><init>(Lcom/android/server/wifi/WifiController;)V -PLcom/android/server/wifi/WifiController$DefaultState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiController$DeviceActiveState;-><init>(Lcom/android/server/wifi/WifiController;)V PLcom/android/server/wifi/WifiController$DeviceActiveState;->enter()V -PLcom/android/server/wifi/WifiController$DeviceActiveState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiController$DeviceInactiveState;-><init>(Lcom/android/server/wifi/WifiController;)V PLcom/android/server/wifi/WifiController$EcmState;-><init>(Lcom/android/server/wifi/WifiController;)V PLcom/android/server/wifi/WifiController$FullHighPerfLockHeldState;-><init>(Lcom/android/server/wifi/WifiController;)V @@ -13268,7 +14762,6 @@ PLcom/android/server/wifi/WifiController$StaDisabledWithScanState;->enter()V PLcom/android/server/wifi/WifiController$StaDisabledWithScanState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiController$StaEnabledState;-><init>(Lcom/android/server/wifi/WifiController;)V PLcom/android/server/wifi/WifiController$StaEnabledState;->enter()V -PLcom/android/server/wifi/WifiController$StaEnabledState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiController;->-get12(Lcom/android/server/wifi/WifiController;)J PLcom/android/server/wifi/WifiController;->-get13(Lcom/android/server/wifi/WifiController;)Z PLcom/android/server/wifi/WifiController;->-get14(Lcom/android/server/wifi/WifiController;)Lcom/android/server/wifi/WifiSettingsStore; @@ -13281,6 +14774,7 @@ PLcom/android/server/wifi/WifiController;->-set2(Lcom/android/server/wifi/WifiCo PLcom/android/server/wifi/WifiController;->-wrap2(Lcom/android/server/wifi/WifiController;Ljava/lang/String;)V PLcom/android/server/wifi/WifiController;->-wrap3(Lcom/android/server/wifi/WifiController;Ljava/lang/String;)V PLcom/android/server/wifi/WifiController;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiStateMachine;Lcom/android/server/wifi/WifiSettingsStore;Lcom/android/server/wifi/WifiLockManager;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;)V +PLcom/android/server/wifi/WifiController;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiController;->initializeAndRegisterForSettingsChange(Landroid/os/Looper;)V PLcom/android/server/wifi/WifiController;->readStayAwakeConditions()V PLcom/android/server/wifi/WifiController;->readWifiIdleTime()V @@ -13291,23 +14785,26 @@ PLcom/android/server/wifi/WifiController;->registerForWifiIdleTimeChange(Landroi PLcom/android/server/wifi/WifiController;->registerForWifiSleepPolicyChange(Landroid/os/Handler;)V PLcom/android/server/wifi/WifiCountryCode;-><init>(Lcom/android/server/wifi/WifiNative;Ljava/lang/String;Z)V PLcom/android/server/wifi/WifiCountryCode;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiCountryCode;->getCountryCodeSentToDriver()Ljava/lang/String; PLcom/android/server/wifi/WifiCountryCode;->pickCountryCode()Ljava/lang/String; PLcom/android/server/wifi/WifiCountryCode;->setCountryCodeNative(Ljava/lang/String;)Z PLcom/android/server/wifi/WifiCountryCode;->setReadyForChange(Z)V PLcom/android/server/wifi/WifiCountryCode;->simCardRemoved()V PLcom/android/server/wifi/WifiCountryCode;->updateCountryCode()V PLcom/android/server/wifi/WifiDiagnostics$1;-><init>(Lcom/android/server/wifi/WifiDiagnostics;)V -PLcom/android/server/wifi/WifiDiagnostics$1;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V PLcom/android/server/wifi/WifiDiagnostics$2;-><init>(Lcom/android/server/wifi/WifiDiagnostics;)V -PLcom/android/server/wifi/WifiDiagnostics$2;->compare(Lcom/android/server/wifi/WifiNative$FateReport;Lcom/android/server/wifi/WifiNative$FateReport;)I -PLcom/android/server/wifi/WifiDiagnostics$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/wifi/WifiDiagnostics$BugReport;-><init>(Lcom/android/server/wifi/WifiDiagnostics;)V PLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;-><init>(Lcom/android/server/wifi/WifiDiagnostics;I)V -PLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->size()I +PLcom/android/server/wifi/WifiDiagnostics;->-wrap0(Lcom/android/server/wifi/WifiDiagnostics;[B)Ljava/lang/String; PLcom/android/server/wifi/WifiDiagnostics;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/WifiStateMachine;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/BuildProperties;Lcom/android/server/wifi/LastMileLogger;)V +PLcom/android/server/wifi/WifiDiagnostics;->captureBugReportData(I)V PLcom/android/server/wifi/WifiDiagnostics;->clearVerboseLogs()V +PLcom/android/server/wifi/WifiDiagnostics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiDiagnostics;->dumpPacketFates(Ljava/io/PrintWriter;)V PLcom/android/server/wifi/WifiDiagnostics;->enableVerboseLoggingForDogfood()Z PLcom/android/server/wifi/WifiDiagnostics;->fetchPacketFates()Ljava/util/ArrayList; PLcom/android/server/wifi/WifiDiagnostics;->fetchRingBuffers()Z +PLcom/android/server/wifi/WifiDiagnostics;->isVerboseLoggingEnabled()Z PLcom/android/server/wifi/WifiDiagnostics;->reportConnectionEvent(JB)V PLcom/android/server/wifi/WifiDiagnostics;->resizeRingBuffers()V PLcom/android/server/wifi/WifiDiagnostics;->startLogging(Z)V @@ -13336,7 +14833,6 @@ PLcom/android/server/wifi/WifiInjector;->getWifiMetrics()Lcom/android/server/wif PLcom/android/server/wifi/WifiInjector;->getWifiMonitor()Lcom/android/server/wifi/WifiMonitor; PLcom/android/server/wifi/WifiInjector;->getWifiMulticastLockManager()Lcom/android/server/wifi/WifiMulticastLockManager; PLcom/android/server/wifi/WifiInjector;->getWifiNative()Lcom/android/server/wifi/WifiNative; -PLcom/android/server/wifi/WifiInjector;->getWifiNotificationController()Lcom/android/server/wifi/WifiNotificationController; PLcom/android/server/wifi/WifiInjector;->getWifiP2pMonitor()Lcom/android/server/wifi/p2p/WifiP2pMonitor; PLcom/android/server/wifi/WifiInjector;->getWifiP2pNative()Lcom/android/server/wifi/p2p/WifiP2pNative; PLcom/android/server/wifi/WifiInjector;->getWifiPermissionsUtil()Lcom/android/server/wifi/util/WifiPermissionsUtil; @@ -13359,19 +14855,11 @@ PLcom/android/server/wifi/WifiLastResortWatchdog;->clearAllFailureCounts()V PLcom/android/server/wifi/WifiLastResortWatchdog;->connectedStateTransition(Z)V PLcom/android/server/wifi/WifiLastResortWatchdog;->enableVerboseLogging(I)V PLcom/android/server/wifi/WifiLastResortWatchdog;->setWatchdogTriggerEnabled(Z)V -PLcom/android/server/wifi/WifiLastResortWatchdog;->updateAvailableNetworks(Ljava/util/List;)V -PLcom/android/server/wifi/WifiLockManager$WifiLock;-><init>(Lcom/android/server/wifi/WifiLockManager;ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)V PLcom/android/server/wifi/WifiLockManager$WifiLock;->getBinder()Landroid/os/IBinder; -PLcom/android/server/wifi/WifiLockManager$WifiLock;->unlinkDeathRecipient()V PLcom/android/server/wifi/WifiLockManager;-><init>(Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;)V -PLcom/android/server/wifi/WifiLockManager;->acquireWifiLock(ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)Z -PLcom/android/server/wifi/WifiLockManager;->addLock(Lcom/android/server/wifi/WifiLockManager$WifiLock;)Z +PLcom/android/server/wifi/WifiLockManager;->dump(Ljava/io/PrintWriter;)V PLcom/android/server/wifi/WifiLockManager;->enableVerboseLogging(I)V -PLcom/android/server/wifi/WifiLockManager;->findLockByBinder(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock; PLcom/android/server/wifi/WifiLockManager;->isValidLockMode(I)Z -PLcom/android/server/wifi/WifiLockManager;->releaseLock(Landroid/os/IBinder;)Z -PLcom/android/server/wifi/WifiLockManager;->releaseWifiLock(Landroid/os/IBinder;)Z -PLcom/android/server/wifi/WifiLockManager;->removeLock(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock; PLcom/android/server/wifi/WifiMetrics$1;-><init>(Lcom/android/server/wifi/WifiMetrics;Landroid/os/Looper;)V PLcom/android/server/wifi/WifiMetrics$1;->handleMessage(Landroid/os/Message;)V PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-get1(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;)Ljava/lang/String; @@ -13385,8 +14873,10 @@ PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set4(Lcom/android/serve PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set5(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;I)I PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;-><init>(Lcom/android/server/wifi/WifiMetrics;)V PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;-><init>(Lcom/android/server/wifi/WifiMetrics;Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;)V +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->toString()Ljava/lang/String; PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->-get0(Lcom/android/server/wifi/WifiMetrics$RouterFingerPrint;)Lcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint; PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;-><init>(Lcom/android/server/wifi/WifiMetrics;)V +PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->toString()Ljava/lang/String; PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->updateFromWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)V PLcom/android/server/wifi/WifiMetrics;->-get0(Lcom/android/server/wifi/WifiMetrics;)Lcom/android/server/wifi/WifiMetrics$ConnectionEvent; PLcom/android/server/wifi/WifiMetrics;->-get1(Lcom/android/server/wifi/WifiMetrics;)Ljava/lang/Object; @@ -13396,28 +14886,32 @@ PLcom/android/server/wifi/WifiMetrics;->-wrap1(Lcom/android/server/wifi/WifiMetr PLcom/android/server/wifi/WifiMetrics;-><init>(Lcom/android/server/wifi/Clock;Landroid/os/Looper;Lcom/android/server/wifi/aware/WifiAwareMetrics;)V PLcom/android/server/wifi/WifiMetrics;->addStaEvent(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;)V PLcom/android/server/wifi/WifiMetrics;->bitSetToInt(Ljava/util/BitSet;)I +PLcom/android/server/wifi/WifiMetrics;->configInfoToString(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo;)Ljava/lang/String; PLcom/android/server/wifi/WifiMetrics;->createConfigInfo(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo; PLcom/android/server/wifi/WifiMetrics;->endConnectionEvent(II)V PLcom/android/server/wifi/WifiMetrics;->getHandler()Landroid/os/Handler; -PLcom/android/server/wifi/WifiMetrics;->handlePollResult(Landroid/net/wifi/WifiInfo;)V +PLcom/android/server/wifi/WifiMetrics;->getScanReturnEntry(I)I +PLcom/android/server/wifi/WifiMetrics;->getSystemStateCount(IZ)I PLcom/android/server/wifi/WifiMetrics;->incrementNonEmptyScanResultCount()V PLcom/android/server/wifi/WifiMetrics;->incrementOneshotScanCount()V -PLcom/android/server/wifi/WifiMetrics;->incrementRssiPollRssiCount(I)V -PLcom/android/server/wifi/WifiMetrics;->incrementScanReturnEntry(II)V -PLcom/android/server/wifi/WifiMetrics;->incrementWifiScoreCount(I)V -PLcom/android/server/wifi/WifiMetrics;->incrementWifiSystemScanStateCount(IZ)V PLcom/android/server/wifi/WifiMetrics;->logStaEvent(I)V PLcom/android/server/wifi/WifiMetrics;->logStaEvent(IILandroid/net/wifi/WifiConfiguration;)V PLcom/android/server/wifi/WifiMetrics;->logStaEvent(ILandroid/net/wifi/WifiConfiguration;)V -PLcom/android/server/wifi/WifiMetrics;->maybeIncrementRssiDeltaCount(I)V PLcom/android/server/wifi/WifiMetrics;->processMessage(Landroid/os/Message;)V PLcom/android/server/wifi/WifiMetrics;->setConnectionScanDetail(Lcom/android/server/wifi/ScanDetail;)V +PLcom/android/server/wifi/WifiMetrics;->setPasspointManager(Lcom/android/server/wifi/hotspot2/PasspointManager;)V PLcom/android/server/wifi/WifiMetrics;->setScreenState(Z)V +PLcom/android/server/wifi/WifiMetrics;->setWifiConfigManager(Lcom/android/server/wifi/WifiConfigManager;)V +PLcom/android/server/wifi/WifiMetrics;->setWifiNetworkSelector(Lcom/android/server/wifi/WifiNetworkSelector;)V PLcom/android/server/wifi/WifiMetrics;->setWifiState(I)V +PLcom/android/server/wifi/WifiMetrics;->staEventToString(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;)Ljava/lang/String; PLcom/android/server/wifi/WifiMetrics;->startConnectionEvent(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V +PLcom/android/server/wifi/WifiMetrics;->supplicantStateChangesBitmaskToString(I)Ljava/lang/String; PLcom/android/server/wifi/WifiMetrics;->supplicantStateToBit(Landroid/net/wifi/SupplicantState;)I PLcom/android/server/wifi/WifiMetrics;->updateMetricsFromNetworkDetail(Lcom/android/server/wifi/hotspot2/NetworkDetail;)V PLcom/android/server/wifi/WifiMetrics;->updateMetricsFromScanResult(Landroid/net/wifi/ScanResult;)V +PLcom/android/server/wifi/WifiMetrics;->updateSavedNetworks(Ljava/util/List;)V +PLcom/android/server/wifi/WifiMetrics;->updateSavedPasspointProfiles(II)V PLcom/android/server/wifi/WifiMonitor;-><init>(Lcom/android/server/wifi/WifiInjector;)V PLcom/android/server/wifi/WifiMonitor;->broadcastAssociatedBssidEvent(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/wifi/WifiMonitor;->broadcastNetworkConnectionEvent(Ljava/lang/String;ILjava/lang/String;)V @@ -13427,12 +14921,8 @@ PLcom/android/server/wifi/WifiMonitor;->broadcastSupplicantDisconnectionEvent(Lj PLcom/android/server/wifi/WifiMonitor;->broadcastSupplicantStateChangeEvent(Ljava/lang/String;ILandroid/net/wifi/WifiSsid;Ljava/lang/String;Landroid/net/wifi/SupplicantState;)V PLcom/android/server/wifi/WifiMonitor;->enableVerboseLogging(I)V PLcom/android/server/wifi/WifiMonitor;->ensureConnectedLocked()Z -PLcom/android/server/wifi/WifiMonitor;->isMonitoring(Ljava/lang/String;)Z PLcom/android/server/wifi/WifiMonitor;->registerHandler(Ljava/lang/String;ILandroid/os/Handler;)V -PLcom/android/server/wifi/WifiMonitor;->sendMessage(Landroid/os/Handler;Landroid/os/Message;)V -PLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;I)V PLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;IIILjava/lang/Object;)V -PLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;Landroid/os/Message;)V PLcom/android/server/wifi/WifiMonitor;->setMonitoring(Ljava/lang/String;Z)V PLcom/android/server/wifi/WifiMonitor;->setMonitoringNone()V PLcom/android/server/wifi/WifiMonitor;->startMonitoring(Ljava/lang/String;Z)V @@ -13442,21 +14932,25 @@ PLcom/android/server/wifi/WifiMulticastLockManager$Multicaster;->getUid()I PLcom/android/server/wifi/WifiMulticastLockManager$Multicaster;->unlinkDeathRecipient()V PLcom/android/server/wifi/WifiMulticastLockManager;-><init>(Lcom/android/server/wifi/WifiMulticastLockManager$FilterController;Lcom/android/internal/app/IBatteryStats;)V PLcom/android/server/wifi/WifiMulticastLockManager;->acquireLock(Landroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiMulticastLockManager;->dump(Ljava/io/PrintWriter;)V PLcom/android/server/wifi/WifiMulticastLockManager;->enableVerboseLogging(I)V PLcom/android/server/wifi/WifiMulticastLockManager;->releaseLock()V PLcom/android/server/wifi/WifiMulticastLockManager;->removeMulticasterLocked(II)V PLcom/android/server/wifi/WifiNative$BucketSettings;-><init>()V PLcom/android/server/wifi/WifiNative$ChannelSettings;-><init>()V -PLcom/android/server/wifi/WifiNative$FateReport;-><init>(BJB[B)V -PLcom/android/server/wifi/WifiNative$FateReport;->convertDriverTimestampUSecToWallclockMSec(J)J -PLcom/android/server/wifi/WifiNative$RingBufferStatus;-><init>()V +PLcom/android/server/wifi/WifiNative$FateReport;->getTableHeader()Ljava/lang/String; PLcom/android/server/wifi/WifiNative$RoamingCapabilities;-><init>()V PLcom/android/server/wifi/WifiNative$RoamingConfig;-><init>()V PLcom/android/server/wifi/WifiNative$RxFateReport;-><init>(BJB[B)V +PLcom/android/server/wifi/WifiNative$RxFateReport;->directionToString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$RxFateReport;->fateToString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$RxFateReport;->toTableRowString()Ljava/lang/String; PLcom/android/server/wifi/WifiNative$ScanCapabilities;-><init>()V PLcom/android/server/wifi/WifiNative$ScanSettings;-><init>()V -PLcom/android/server/wifi/WifiNative$SignalPollResult;-><init>()V PLcom/android/server/wifi/WifiNative$TxFateReport;-><init>(BJB[B)V +PLcom/android/server/wifi/WifiNative$TxFateReport;->directionToString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$TxFateReport;->fateToString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$TxFateReport;->toTableRowString()Ljava/lang/String; PLcom/android/server/wifi/WifiNative;-><init>(Ljava/lang/String;Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/SupplicantStaIfaceHal;Lcom/android/server/wifi/WificondControl;)V PLcom/android/server/wifi/WifiNative;->configureNeighborDiscoveryOffload(Z)Z PLcom/android/server/wifi/WifiNative;->configureRoaming(Lcom/android/server/wifi/WifiNative$RoamingConfig;)Z @@ -13468,22 +14962,22 @@ PLcom/android/server/wifi/WifiNative;->enableSupplicant()Z PLcom/android/server/wifi/WifiNative;->enableVerboseLogging(I)V PLcom/android/server/wifi/WifiNative;->getApfCapabilities()Landroid/net/apf/ApfCapabilities; PLcom/android/server/wifi/WifiNative;->getBgScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z -PLcom/android/server/wifi/WifiNative;->getChannelsForBand(I)[I PLcom/android/server/wifi/WifiNative;->getDriverVersion()Ljava/lang/String; PLcom/android/server/wifi/WifiNative;->getFirmwareVersion()Ljava/lang/String; PLcom/android/server/wifi/WifiNative;->getFrameworkNetworkId(I)I PLcom/android/server/wifi/WifiNative;->getInterfaceName()Ljava/lang/String; PLcom/android/server/wifi/WifiNative;->getMacAddress()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative;->getRingBufferData(Ljava/lang/String;)Z PLcom/android/server/wifi/WifiNative;->getRingBufferStatus()[Lcom/android/server/wifi/WifiNative$RingBufferStatus; PLcom/android/server/wifi/WifiNative;->getRoamingCapabilities(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;)Z PLcom/android/server/wifi/WifiNative;->getRxPktFates([Lcom/android/server/wifi/WifiNative$RxFateReport;)Z -PLcom/android/server/wifi/WifiNative;->getScanResults()Ljava/util/ArrayList; PLcom/android/server/wifi/WifiNative;->getSupportedFeatureSet()I PLcom/android/server/wifi/WifiNative;->getSupportedLoggerFeatureSet()I PLcom/android/server/wifi/WifiNative;->getTxPktFates([Lcom/android/server/wifi/WifiNative$TxFateReport;)Z -PLcom/android/server/wifi/WifiNative;->getWifiLinkLayerStats(Ljava/lang/String;)Landroid/net/wifi/WifiLinkLayerStats; +PLcom/android/server/wifi/WifiNative;->getWlanWakeReasonCount()Landroid/net/wifi/WifiWakeReasonAndCounts; PLcom/android/server/wifi/WifiNative;->initializeVendorHal(Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;)Z PLcom/android/server/wifi/WifiNative;->installPacketFilter([B)Z +PLcom/android/server/wifi/WifiNative;->readKernelLog()Ljava/lang/String; PLcom/android/server/wifi/WifiNative;->removeAllNetworks()Z PLcom/android/server/wifi/WifiNative;->scan(Ljava/util/Set;Ljava/util/Set;)Z PLcom/android/server/wifi/WifiNative;->setBluetoothCoexistenceMode(I)Z @@ -13504,8 +14998,7 @@ PLcom/android/server/wifi/WifiNative;->setScanningMacOui([B)Z PLcom/android/server/wifi/WifiNative;->setSerialNumber(Ljava/lang/String;)Z PLcom/android/server/wifi/WifiNative;->setSupplicantLogLevel(Z)V PLcom/android/server/wifi/WifiNative;->setSuspendOptimizations(Z)Z -PLcom/android/server/wifi/WifiNative;->setupForClientMode()Landroid/net/wifi/IClientInterface; -PLcom/android/server/wifi/WifiNative;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult; +PLcom/android/server/wifi/WifiNative;->setupForClientMode()Landroid/util/Pair; PLcom/android/server/wifi/WifiNative;->startHalIfNecessary(Z)Z PLcom/android/server/wifi/WifiNative;->startLoggingRingBuffer(IIIILjava/lang/String;)Z PLcom/android/server/wifi/WifiNative;->startPktFateMonitoring()Z @@ -13513,57 +15006,24 @@ PLcom/android/server/wifi/WifiNative;->stopFilteringMulticastV4Packets()Z PLcom/android/server/wifi/WifiNative;->stopFilteringMulticastV6Packets()Z PLcom/android/server/wifi/WifiNative;->stopHalIfNecessary()V PLcom/android/server/wifi/WifiNative;->stopRssiMonitoring()I -PLcom/android/server/wifi/WifiNative;->tearDown()Z +PLcom/android/server/wifi/WifiNative;->tearDown()V PLcom/android/server/wifi/WifiNetworkHistory;-><init>(Landroid/content/Context;Lcom/android/server/net/DelayedDiskWrite;)V PLcom/android/server/wifi/WifiNetworkSelector;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;)V -PLcom/android/server/wifi/WifiNetworkSelector;->getFilteredScanDetails()Ljava/util/List; -PLcom/android/server/wifi/WifiNetworkSelector;->isCurrentNetworkSufficient(Landroid/net/wifi/WifiInfo;)Z -PLcom/android/server/wifi/WifiNetworkSelector;->isNetworkSelectionNeeded(Ljava/util/List;Landroid/net/wifi/WifiInfo;ZZ)Z -PLcom/android/server/wifi/WifiNetworkSelector;->localLog(Ljava/lang/String;)V +PLcom/android/server/wifi/WifiNetworkSelector;->getConnectableScanDetails()Ljava/util/List; PLcom/android/server/wifi/WifiNetworkSelector;->overrideCandidateWithUserConnectChoice(Landroid/net/wifi/WifiConfiguration;)Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/WifiNetworkSelector;->registerNetworkEvaluator(Lcom/android/server/wifi/WifiNetworkSelector$NetworkEvaluator;I)Z -PLcom/android/server/wifi/WifiNetworkSelector;->selectNetwork(Ljava/util/List;Ljava/util/HashSet;Landroid/net/wifi/WifiInfo;ZZZ)Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/WifiNetworkSelector;->toNetworkString(Landroid/net/wifi/WifiConfiguration;)Ljava/lang/String; -PLcom/android/server/wifi/WifiNetworkSelector;->toScanId(Landroid/net/wifi/ScanResult;)Ljava/lang/String; -PLcom/android/server/wifi/WifiNotificationController$1;->-getandroid-net-NetworkInfo$DetailedStateSwitchesValues()[I -PLcom/android/server/wifi/WifiNotificationController$1;-><init>(Lcom/android/server/wifi/WifiNotificationController;)V -PLcom/android/server/wifi/WifiNotificationController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V -PLcom/android/server/wifi/WifiNotificationController$NotificationEnabledSettingObserver;-><init>(Lcom/android/server/wifi/WifiNotificationController;Landroid/os/Handler;)V -PLcom/android/server/wifi/WifiNotificationController$NotificationEnabledSettingObserver;->getValue()Z -PLcom/android/server/wifi/WifiNotificationController$NotificationEnabledSettingObserver;->register()V -PLcom/android/server/wifi/WifiNotificationController;->-get0(Lcom/android/server/wifi/WifiNotificationController;)Landroid/content/Context; -PLcom/android/server/wifi/WifiNotificationController;->-get1(Lcom/android/server/wifi/WifiNotificationController;)Landroid/net/NetworkInfo$DetailedState; -PLcom/android/server/wifi/WifiNotificationController;->-get2(Lcom/android/server/wifi/WifiNotificationController;)Lcom/android/server/wifi/FrameworkFacade; -PLcom/android/server/wifi/WifiNotificationController;->-get3(Lcom/android/server/wifi/WifiNotificationController;)Landroid/net/NetworkInfo; -PLcom/android/server/wifi/WifiNotificationController;->-get4(Lcom/android/server/wifi/WifiNotificationController;)Lcom/android/server/wifi/WifiInjector; -PLcom/android/server/wifi/WifiNotificationController;->-get5(Lcom/android/server/wifi/WifiNotificationController;)Landroid/net/wifi/WifiScanner; -PLcom/android/server/wifi/WifiNotificationController;->-set0(Lcom/android/server/wifi/WifiNotificationController;Landroid/net/NetworkInfo$DetailedState;)Landroid/net/NetworkInfo$DetailedState; -PLcom/android/server/wifi/WifiNotificationController;->-set1(Lcom/android/server/wifi/WifiNotificationController;Landroid/net/NetworkInfo;)Landroid/net/NetworkInfo; -PLcom/android/server/wifi/WifiNotificationController;->-set2(Lcom/android/server/wifi/WifiNotificationController;Z)Z -PLcom/android/server/wifi/WifiNotificationController;->-set3(Lcom/android/server/wifi/WifiNotificationController;Landroid/net/wifi/WifiScanner;)Landroid/net/wifi/WifiScanner; -PLcom/android/server/wifi/WifiNotificationController;->-set4(Lcom/android/server/wifi/WifiNotificationController;I)I -PLcom/android/server/wifi/WifiNotificationController;->-wrap0(Lcom/android/server/wifi/WifiNotificationController;Landroid/net/NetworkInfo;Ljava/util/List;)V -PLcom/android/server/wifi/WifiNotificationController;->-wrap1(Lcom/android/server/wifi/WifiNotificationController;)V -PLcom/android/server/wifi/WifiNotificationController;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;Landroid/app/Notification$Builder;Lcom/android/server/wifi/WifiInjector;)V -PLcom/android/server/wifi/WifiNotificationController;->checkAndSetNotification(Landroid/net/NetworkInfo;Ljava/util/List;)V -PLcom/android/server/wifi/WifiNotificationController;->resetNotification()V -PLcom/android/server/wifi/WifiNotificationController;->setNotificationVisible(ZIZI)V PLcom/android/server/wifi/WifiScoreReport;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;)V -PLcom/android/server/wifi/WifiScoreReport;->calculateAndReportScore(Landroid/net/wifi/WifiInfo;Landroid/net/NetworkAgent;ILcom/android/server/wifi/WifiMetrics;)V -PLcom/android/server/wifi/WifiScoreReport;->calculateScore(Landroid/net/wifi/WifiInfo;I)I +PLcom/android/server/wifi/WifiScoreReport;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiScoreReport;->enableVerboseLogging(Z)V -PLcom/android/server/wifi/WifiScoreReport;->isHomeNetwork(Landroid/net/wifi/WifiInfo;)Z -PLcom/android/server/wifi/WifiScoreReport;->logLinkMetrics(Landroid/net/wifi/WifiInfo;)V -PLcom/android/server/wifi/WifiScoreReport;->multiBandScanResults(Landroid/net/wifi/WifiInfo;)Z PLcom/android/server/wifi/WifiScoreReport;->reset()V -PLcom/android/server/wifi/WifiScoreReport;->updateScoringState(Landroid/net/wifi/WifiInfo;I)V PLcom/android/server/wifi/WifiService;-><init>(Landroid/content/Context;)V PLcom/android/server/wifi/WifiService;->onBootPhase(I)V PLcom/android/server/wifi/WifiService;->onStart()V PLcom/android/server/wifi/WifiService;->onUnlockUser(I)V PLcom/android/server/wifi/WifiServiceImpl$1;-><init>(Lcom/android/server/wifi/WifiServiceImpl;)V -PLcom/android/server/wifi/WifiServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wifi/WifiServiceImpl$2;-><init>(Lcom/android/server/wifi/WifiServiceImpl;)V +PLcom/android/server/wifi/WifiServiceImpl$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wifi/WifiServiceImpl$3;-><init>(Lcom/android/server/wifi/WifiServiceImpl;)V PLcom/android/server/wifi/WifiServiceImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wifi/WifiServiceImpl$4;-><init>(Lcom/android/server/wifi/WifiServiceImpl;)V @@ -13583,20 +15043,15 @@ PLcom/android/server/wifi/WifiServiceImpl;->-get4(Lcom/android/server/wifi/WifiS PLcom/android/server/wifi/WifiServiceImpl;->-set0(Lcom/android/server/wifi/WifiServiceImpl;Lcom/android/internal/util/AsyncChannel;)Lcom/android/internal/util/AsyncChannel; PLcom/android/server/wifi/WifiServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiInjector;Lcom/android/internal/util/AsyncChannel;)V PLcom/android/server/wifi/WifiServiceImpl;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V -PLcom/android/server/wifi/WifiServiceImpl;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z PLcom/android/server/wifi/WifiServiceImpl;->checkAndStartWifi()V -PLcom/android/server/wifi/WifiServiceImpl;->checkNetworkSettingsPermission()Z +PLcom/android/server/wifi/WifiServiceImpl;->checkNetworkSettingsPermission(II)Z +PLcom/android/server/wifi/WifiServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiServiceImpl;->enableVerboseLoggingInternal(I)V -PLcom/android/server/wifi/WifiServiceImpl;->enforceAccessPermission()V PLcom/android/server/wifi/WifiServiceImpl;->enforceChangePermission()V PLcom/android/server/wifi/WifiServiceImpl;->enforceMulticastChangePermission()V -PLcom/android/server/wifi/WifiServiceImpl;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice; -PLcom/android/server/wifi/WifiServiceImpl;->getDhcpInfo()Landroid/net/DhcpInfo; -PLcom/android/server/wifi/WifiServiceImpl;->getScanResults(Ljava/lang/String;)Ljava/util/List; PLcom/android/server/wifi/WifiServiceImpl;->getSupportedFeatures()I PLcom/android/server/wifi/WifiServiceImpl;->getVerboseLoggingLevel()I PLcom/android/server/wifi/WifiServiceImpl;->getWifiApEnabledState()I -PLcom/android/server/wifi/WifiServiceImpl;->getWifiEnabledState()I PLcom/android/server/wifi/WifiServiceImpl;->getWifiServiceMessenger()Landroid/os/Messenger; PLcom/android/server/wifi/WifiServiceImpl;->handleUserUnlock(I)V PLcom/android/server/wifi/WifiServiceImpl;->isRequestFromBackground(Ljava/lang/String;)Z @@ -13606,21 +15061,20 @@ PLcom/android/server/wifi/WifiServiceImpl;->registerForBroadcasts()V PLcom/android/server/wifi/WifiServiceImpl;->registerForPackageOrUserRemoval()V PLcom/android/server/wifi/WifiServiceImpl;->registerForScanModeChange()V PLcom/android/server/wifi/WifiServiceImpl;->releaseMulticastLock()V -PLcom/android/server/wifi/WifiServiceImpl;->releaseWifiLock(Landroid/os/IBinder;)Z -PLcom/android/server/wifi/WifiServiceImpl;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo; -PLcom/android/server/wifi/WifiServiceImpl;->requestActivityInfo(Landroid/os/ResultReceiver;)V PLcom/android/server/wifi/WifiServiceImpl;->setWifiEnabled(Ljava/lang/String;Z)Z PLcom/android/server/wifi/WifiServiceImpl;->startScan(Landroid/net/wifi/ScanSettings;Landroid/os/WorkSource;Ljava/lang/String;)V PLcom/android/server/wifi/WifiServiceImpl;->updateBackgroundThrottleInterval()V PLcom/android/server/wifi/WifiServiceImpl;->updateBackgroundThrottlingWhitelist()V PLcom/android/server/wifi/WifiSettingsStore;-><init>(Landroid/content/Context;)V -PLcom/android/server/wifi/WifiSettingsStore;->getLocationModeSetting(Landroid/content/Context;)I +PLcom/android/server/wifi/WifiSettingsStore;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiSettingsStore;->getPersistedAirplaneModeOn()Z PLcom/android/server/wifi/WifiSettingsStore;->getPersistedScanAlwaysAvailable()Z PLcom/android/server/wifi/WifiSettingsStore;->getPersistedWifiState()I PLcom/android/server/wifi/WifiSettingsStore;->getWifiSavedState()I +PLcom/android/server/wifi/WifiSettingsStore;->handleAirplaneModeToggled()Z PLcom/android/server/wifi/WifiSettingsStore;->handleWifiToggled(Z)Z PLcom/android/server/wifi/WifiSettingsStore;->isAirplaneModeOn()Z +PLcom/android/server/wifi/WifiSettingsStore;->isAirplaneSensitive()Z PLcom/android/server/wifi/WifiSettingsStore;->isScanAlwaysAvailable()Z PLcom/android/server/wifi/WifiSettingsStore;->isWifiToggleEnabled()Z PLcom/android/server/wifi/WifiSettingsStore;->persistWifiState(I)V @@ -13630,17 +15084,13 @@ PLcom/android/server/wifi/WifiStateMachine$2;-><init>(Lcom/android/server/wifi/W PLcom/android/server/wifi/WifiStateMachine$3;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wifi/WifiStateMachine$4;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V -PLcom/android/server/wifi/WifiStateMachine$4;->onFullResult(Landroid/net/wifi/ScanResult;)V PLcom/android/server/wifi/WifiStateMachine$4;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V PLcom/android/server/wifi/WifiStateMachine$4;->onSuccess()V PLcom/android/server/wifi/WifiStateMachine$ConnectModeState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->enter()V -PLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiStateMachine$ConnectedState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$ConnectedState;->enter()V -PLcom/android/server/wifi/WifiStateMachine$ConnectedState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiStateMachine$DefaultState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V -PLcom/android/server/wifi/WifiStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;->enter()V PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;->exit()V @@ -13660,7 +15110,6 @@ PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->onProvisioningSuc PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->setNeighborDiscoveryOffload(Z)V PLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->enter()V -PLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;->enter()V PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;->processMessage(Landroid/os/Message;)Z @@ -13671,82 +15120,74 @@ PLcom/android/server/wifi/WifiStateMachine$ScanModeState;->processMessage(Landro PLcom/android/server/wifi/WifiStateMachine$SoftApState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->enter()V -PLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;->initializeWpsDetails()V PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiStateMachine$SupplicantStoppingState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;-><init>(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V +PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V -PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V PLcom/android/server/wifi/WifiStateMachine$WaitForP2pDisableState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;-><init>(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;)V PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;->networkStatus(ILjava/lang/String;)V PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;->setSignalStrengthThresholds([I)V PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;-><init>(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V +PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V -PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V +PLcom/android/server/wifi/WifiStateMachine$WifiPhoneStateListener;-><init>(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;)V PLcom/android/server/wifi/WifiStateMachine$WpsRunningState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V -PLcom/android/server/wifi/WifiStateMachine;->-get0(Lcom/android/server/wifi/WifiStateMachine;)I PLcom/android/server/wifi/WifiStateMachine;->-get10(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/StateMachineDeathRecipient; PLcom/android/server/wifi/WifiStateMachine;->-get11(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; -PLcom/android/server/wifi/WifiStateMachine;->-get14(Lcom/android/server/wifi/WifiStateMachine;)Z PLcom/android/server/wifi/WifiStateMachine;->-get17(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get18(Lcom/android/server/wifi/WifiStateMachine;)Z PLcom/android/server/wifi/WifiStateMachine;->-get2(Lcom/android/server/wifi/WifiStateMachine;)Z -PLcom/android/server/wifi/WifiStateMachine;->-get20(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; -PLcom/android/server/wifi/WifiStateMachine;->-get21(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/ip/IpManager; -PLcom/android/server/wifi/WifiStateMachine;->-get23(Lcom/android/server/wifi/WifiStateMachine;)Z -PLcom/android/server/wifi/WifiStateMachine;->-get24(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; -PLcom/android/server/wifi/WifiStateMachine;->-get26(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get27(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/LinkProperties; -PLcom/android/server/wifi/WifiStateMachine;->-get28(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent; -PLcom/android/server/wifi/WifiStateMachine;->-get29(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkCapabilities; +PLcom/android/server/wifi/WifiStateMachine;->-get21(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get22(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/ip/IpManager; +PLcom/android/server/wifi/WifiStateMachine;->-get24(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get25(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get27(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get28(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/LinkProperties; PLcom/android/server/wifi/WifiStateMachine;->-get3(Lcom/android/server/wifi/WifiStateMachine;)Ljava/util/Queue; -PLcom/android/server/wifi/WifiStateMachine;->-get30(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkInfo; -PLcom/android/server/wifi/WifiStateMachine;->-get31(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkMisc; -PLcom/android/server/wifi/WifiStateMachine;->-get32(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get33(Lcom/android/server/wifi/WifiStateMachine;)Landroid/os/INetworkManagementService; -PLcom/android/server/wifi/WifiStateMachine;->-get34(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; -PLcom/android/server/wifi/WifiStateMachine;->-get35(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get36(Lcom/android/server/wifi/WifiStateMachine;)Ljava/util/concurrent/atomic/AtomicBoolean; -PLcom/android/server/wifi/WifiStateMachine;->-get37(Lcom/android/server/wifi/WifiStateMachine;)Z -PLcom/android/server/wifi/WifiStateMachine;->-get39(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get30(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkCapabilities; +PLcom/android/server/wifi/WifiStateMachine;->-get31(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkInfo; +PLcom/android/server/wifi/WifiStateMachine;->-get32(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkMisc; +PLcom/android/server/wifi/WifiStateMachine;->-get33(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get34(Lcom/android/server/wifi/WifiStateMachine;)Landroid/os/INetworkManagementService; +PLcom/android/server/wifi/WifiStateMachine;->-get35(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get36(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get37(Lcom/android/server/wifi/WifiStateMachine;)Ljava/util/concurrent/atomic/AtomicBoolean; +PLcom/android/server/wifi/WifiStateMachine;->-get38(Lcom/android/server/wifi/WifiStateMachine;)Z PLcom/android/server/wifi/WifiStateMachine;->-get4(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/IClientInterface; PLcom/android/server/wifi/WifiStateMachine;->-get40(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get41(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; -PLcom/android/server/wifi/WifiStateMachine;->-get42(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/PropertyService; -PLcom/android/server/wifi/WifiStateMachine;->-get45(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get46(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; -PLcom/android/server/wifi/WifiStateMachine;->-get47(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get42(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get43(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/PropertyService; +PLcom/android/server/wifi/WifiStateMachine;->-get47(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get48(Lcom/android/server/wifi/WifiStateMachine;)Z PLcom/android/server/wifi/WifiStateMachine;->-get5(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/Clock; -PLcom/android/server/wifi/WifiStateMachine;->-get50(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; PLcom/android/server/wifi/WifiStateMachine;->-get51(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; -PLcom/android/server/wifi/WifiStateMachine;->-get52(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/SupplicantStateTracker; -PLcom/android/server/wifi/WifiStateMachine;->-get54(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get56(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get57(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get52(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get53(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/SupplicantStateTracker; +PLcom/android/server/wifi/WifiStateMachine;->-get55(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get57(Lcom/android/server/wifi/WifiStateMachine;)I PLcom/android/server/wifi/WifiStateMachine;->-get58(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; -PLcom/android/server/wifi/WifiStateMachine;->-get59(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get59(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; PLcom/android/server/wifi/WifiStateMachine;->-get6(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; -PLcom/android/server/wifi/WifiStateMachine;->-get61(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get63(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler; -PLcom/android/server/wifi/WifiStateMachine;->-get64(Lcom/android/server/wifi/WifiStateMachine;)Z -PLcom/android/server/wifi/WifiStateMachine;->-get66(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConfigManager; -PLcom/android/server/wifi/WifiStateMachine;->-get68(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConnectivityManager; -PLcom/android/server/wifi/WifiStateMachine;->-get69(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/BaseWifiDiagnostics; +PLcom/android/server/wifi/WifiStateMachine;->-get60(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get62(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get64(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler; +PLcom/android/server/wifi/WifiStateMachine;->-get67(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConfigManager; +PLcom/android/server/wifi/WifiStateMachine;->-get69(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConnectivityManager; PLcom/android/server/wifi/WifiStateMachine;->-get7(Lcom/android/server/wifi/WifiStateMachine;)I -PLcom/android/server/wifi/WifiStateMachine;->-get70(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiInfo; -PLcom/android/server/wifi/WifiStateMachine;->-get71(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiInjector; -PLcom/android/server/wifi/WifiStateMachine;->-get73(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMetrics; -PLcom/android/server/wifi/WifiStateMachine;->-get74(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMonitor; -PLcom/android/server/wifi/WifiStateMachine;->-get75(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative; -PLcom/android/server/wifi/WifiStateMachine;->-get76(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/AsyncChannel; -PLcom/android/server/wifi/WifiStateMachine;->-get77(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/Object; -PLcom/android/server/wifi/WifiStateMachine;->-get78(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiScanner; -PLcom/android/server/wifi/WifiStateMachine;->-get79(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiScoreReport; +PLcom/android/server/wifi/WifiStateMachine;->-get70(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/BaseWifiDiagnostics; +PLcom/android/server/wifi/WifiStateMachine;->-get72(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiInjector; +PLcom/android/server/wifi/WifiStateMachine;->-get75(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMonitor; +PLcom/android/server/wifi/WifiStateMachine;->-get76(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative; +PLcom/android/server/wifi/WifiStateMachine;->-get77(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/AsyncChannel; +PLcom/android/server/wifi/WifiStateMachine;->-get78(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/Object; +PLcom/android/server/wifi/WifiStateMachine;->-get79(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiScanner; PLcom/android/server/wifi/WifiStateMachine;->-get8(Lcom/android/server/wifi/WifiStateMachine;)Landroid/content/Context; -PLcom/android/server/wifi/WifiStateMachine;->-get80(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateTracker; -PLcom/android/server/wifi/WifiStateMachine;->-get83(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get81(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateTracker; +PLcom/android/server/wifi/WifiStateMachine;->-get85(Lcom/android/server/wifi/WifiStateMachine;)Z PLcom/android/server/wifi/WifiStateMachine;->-get9(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiCountryCode; PLcom/android/server/wifi/WifiStateMachine;->-set1(Lcom/android/server/wifi/WifiStateMachine;J)J PLcom/android/server/wifi/WifiStateMachine;->-set10(Lcom/android/server/wifi/WifiStateMachine;Z)Z @@ -13773,47 +15214,45 @@ PLcom/android/server/wifi/WifiStateMachine;->-set7(Lcom/android/server/wifi/Wifi PLcom/android/server/wifi/WifiStateMachine;->-set8(Lcom/android/server/wifi/WifiStateMachine;Z)Z PLcom/android/server/wifi/WifiStateMachine;->-set9(Lcom/android/server/wifi/WifiStateMachine;Z)Z PLcom/android/server/wifi/WifiStateMachine;->-wrap0(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;)Landroid/net/wifi/SupplicantState; -PLcom/android/server/wifi/WifiStateMachine;->-wrap10(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z -PLcom/android/server/wifi/WifiStateMachine;->-wrap11(Lcom/android/server/wifi/WifiStateMachine;I)I -PLcom/android/server/wifi/WifiStateMachine;->-wrap14(Lcom/android/server/wifi/WifiStateMachine;I)Ljava/lang/String; -PLcom/android/server/wifi/WifiStateMachine;->-wrap18(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap10(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-wrap11(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiStateMachine;->-wrap12(Lcom/android/server/wifi/WifiStateMachine;I)I PLcom/android/server/wifi/WifiStateMachine;->-wrap19(Lcom/android/server/wifi/WifiStateMachine;)V PLcom/android/server/wifi/WifiStateMachine;->-wrap21(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/DhcpResults;)V PLcom/android/server/wifi/WifiStateMachine;->-wrap25(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;)V PLcom/android/server/wifi/WifiStateMachine;->-wrap27(Lcom/android/server/wifi/WifiStateMachine;)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap29(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;Lcom/android/internal/util/State;)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap33(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;II)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap34(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;ILjava/lang/Object;)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap35(Lcom/android/server/wifi/WifiStateMachine;II)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap36(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap37(Lcom/android/server/wifi/WifiStateMachine;)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap38(Lcom/android/server/wifi/WifiStateMachine;Ljava/lang/String;)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap40(Lcom/android/server/wifi/WifiStateMachine;Z)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap41(Lcom/android/server/wifi/WifiStateMachine;)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap43(Lcom/android/server/wifi/WifiStateMachine;IZ)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap45(Lcom/android/server/wifi/WifiStateMachine;I)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap46(Lcom/android/server/wifi/WifiStateMachine;)V -PLcom/android/server/wifi/WifiStateMachine;->-wrap47(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/LinkProperties;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap33(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap35(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;II)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap36(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;ILjava/lang/Object;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap37(Lcom/android/server/wifi/WifiStateMachine;II)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap38(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap39(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap40(Lcom/android/server/wifi/WifiStateMachine;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap42(Lcom/android/server/wifi/WifiStateMachine;Z)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap43(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap45(Lcom/android/server/wifi/WifiStateMachine;IZ)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap47(Lcom/android/server/wifi/WifiStateMachine;I)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap48(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap49(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/LinkProperties;)V PLcom/android/server/wifi/WifiStateMachine;->-wrap5(Lcom/android/server/wifi/WifiStateMachine;)Z -PLcom/android/server/wifi/WifiStateMachine;->-wrap7(Lcom/android/server/wifi/WifiStateMachine;I)Z -PLcom/android/server/wifi/WifiStateMachine;->-wrap8(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/NetworkInfo$DetailedState;)Z -PLcom/android/server/wifi/WifiStateMachine;->-wrap9(Lcom/android/server/wifi/WifiStateMachine;)Z -PLcom/android/server/wifi/WifiStateMachine;-><init>(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;Landroid/os/Looper;Landroid/os/UserManager;Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/BackupManagerProxy;Lcom/android/server/wifi/WifiCountryCode;Lcom/android/server/wifi/WifiNative;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap8(Lcom/android/server/wifi/WifiStateMachine;I)Z +PLcom/android/server/wifi/WifiStateMachine;->-wrap9(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/NetworkInfo$DetailedState;)Z +PLcom/android/server/wifi/WifiStateMachine;-><init>(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;Landroid/os/Looper;Landroid/os/UserManager;Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/BackupManagerProxy;Lcom/android/server/wifi/WifiCountryCode;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WrongPasswordNotifier;)V PLcom/android/server/wifi/WifiStateMachine;->checkAndSetConnectivityInstance()V PLcom/android/server/wifi/WifiStateMachine;->clearANQPCache()V PLcom/android/server/wifi/WifiStateMachine;->clearTargetBssid(Ljava/lang/String;)Z PLcom/android/server/wifi/WifiStateMachine;->configureVerboseHalLogging(Z)V PLcom/android/server/wifi/WifiStateMachine;->doNetworkStatus(I)V +PLcom/android/server/wifi/WifiStateMachine;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->dumpIpManager(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiStateMachine;->enableRssiPolling(Z)V PLcom/android/server/wifi/WifiStateMachine;->enableVerboseLogging(I)V -PLcom/android/server/wifi/WifiStateMachine;->fetchRssiLinkSpeedAndFrequencyNative()V PLcom/android/server/wifi/WifiStateMachine;->getAdditionalWifiServiceInterfaces()V PLcom/android/server/wifi/WifiStateMachine;->getCurrentScanResult()Landroid/net/wifi/ScanResult; PLcom/android/server/wifi/WifiStateMachine;->getCurrentWifiConfiguration()Landroid/net/wifi/WifiConfiguration; PLcom/android/server/wifi/WifiStateMachine;->getLinkPropertiesSummary(Landroid/net/LinkProperties;)Ljava/lang/String; -PLcom/android/server/wifi/WifiStateMachine;->getLogRecString(Landroid/os/Message;)Ljava/lang/String; PLcom/android/server/wifi/WifiStateMachine;->getNetworkDetailedState()Landroid/net/NetworkInfo$DetailedState; -PLcom/android/server/wifi/WifiStateMachine;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats; +PLcom/android/server/wifi/WifiStateMachine;->getWifiScoreReport()Lcom/android/server/wifi/WifiScoreReport; PLcom/android/server/wifi/WifiStateMachine;->handleIPv4Success(Landroid/net/DhcpResults;)V PLcom/android/server/wifi/WifiStateMachine;->handlePostDhcpSetup()V PLcom/android/server/wifi/WifiStateMachine;->handlePreDhcpSetup()V @@ -13824,18 +15263,16 @@ PLcom/android/server/wifi/WifiStateMachine;->handleSupplicantStateChange(Landroi PLcom/android/server/wifi/WifiStateMachine;->handleUserUnlock(I)V PLcom/android/server/wifi/WifiStateMachine;->hasConnectionRequests()Z PLcom/android/server/wifi/WifiStateMachine;->isConnected()Z -PLcom/android/server/wifi/WifiStateMachine;->isDisconnected()Z PLcom/android/server/wifi/WifiStateMachine;->isLinkDebouncing()Z PLcom/android/server/wifi/WifiStateMachine;->isSupplicantTransientState()Z PLcom/android/server/wifi/WifiStateMachine;->log(Ljava/lang/String;)V -PLcom/android/server/wifi/WifiStateMachine;->logStateAndMessage(Landroid/os/Message;Lcom/android/internal/util/State;)V PLcom/android/server/wifi/WifiStateMachine;->logd(Ljava/lang/String;)V PLcom/android/server/wifi/WifiStateMachine;->lookupFrameworkNetworkId(I)I PLcom/android/server/wifi/WifiStateMachine;->maybeRegisterNetworkFactory()V +PLcom/android/server/wifi/WifiStateMachine;->maybeRegisterPhoneListener()V PLcom/android/server/wifi/WifiStateMachine;->obtainMessageWithWhatAndArg2(Landroid/os/Message;I)Landroid/os/Message; PLcom/android/server/wifi/WifiStateMachine;->p2pSendMessage(I)Z PLcom/android/server/wifi/WifiStateMachine;->p2pSendMessage(II)Z -PLcom/android/server/wifi/WifiStateMachine;->recordLogRec(Landroid/os/Message;)Z PLcom/android/server/wifi/WifiStateMachine;->registerConnected()V PLcom/android/server/wifi/WifiStateMachine;->reloadTlsNetworksAndReconnect()V PLcom/android/server/wifi/WifiStateMachine;->replyToMessage(Landroid/os/Message;II)V @@ -13853,15 +15290,13 @@ PLcom/android/server/wifi/WifiStateMachine;->setHighPerfModeEnabled(Z)V PLcom/android/server/wifi/WifiStateMachine;->setNetworkDetailedState(Landroid/net/NetworkInfo$DetailedState;)Z PLcom/android/server/wifi/WifiStateMachine;->setOperationalMode(I)V PLcom/android/server/wifi/WifiStateMachine;->setRandomMacOui()Z -PLcom/android/server/wifi/WifiStateMachine;->setScanResults()V PLcom/android/server/wifi/WifiStateMachine;->setSupplicantLogLevel()V PLcom/android/server/wifi/WifiStateMachine;->setSupplicantRunning(Z)V PLcom/android/server/wifi/WifiStateMachine;->setSuspendOptimizations(IZ)V PLcom/android/server/wifi/WifiStateMachine;->setSuspendOptimizationsNative(IZ)V PLcom/android/server/wifi/WifiStateMachine;->setTargetBssid(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z PLcom/android/server/wifi/WifiStateMachine;->setWifiState(I)V -PLcom/android/server/wifi/WifiStateMachine;->smToString(I)Ljava/lang/String; -PLcom/android/server/wifi/WifiStateMachine;->smToString(Landroid/os/Message;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->shouldEvaluateWhetherToSendExplicitlySelected(Landroid/net/wifi/WifiConfiguration;)Z PLcom/android/server/wifi/WifiStateMachine;->startConnectToNetwork(ILjava/lang/String;)V PLcom/android/server/wifi/WifiStateMachine;->startFilteringMulticastPackets()V PLcom/android/server/wifi/WifiStateMachine;->startScan(IILandroid/net/wifi/ScanSettings;Landroid/os/WorkSource;)V @@ -13874,36 +15309,33 @@ PLcom/android/server/wifi/WifiStateMachine;->syncGetDhcpResults()Landroid/net/Dh PLcom/android/server/wifi/WifiStateMachine;->syncGetLinkLayerStats(Lcom/android/internal/util/AsyncChannel;)Landroid/net/wifi/WifiLinkLayerStats; PLcom/android/server/wifi/WifiStateMachine;->syncGetSupportedFeatures(Lcom/android/internal/util/AsyncChannel;)I PLcom/android/server/wifi/WifiStateMachine;->syncGetWifiApState()I -PLcom/android/server/wifi/WifiStateMachine;->syncGetWifiState()I +PLcom/android/server/wifi/WifiStateMachine;->syncGetWifiStateByName()Ljava/lang/String; PLcom/android/server/wifi/WifiStateMachine;->syncInitialize(Lcom/android/internal/util/AsyncChannel;)Z PLcom/android/server/wifi/WifiStateMachine;->updateBatteryWorkSource(Landroid/os/WorkSource;)V +PLcom/android/server/wifi/WifiStateMachine;->updateCapabilities()V PLcom/android/server/wifi/WifiStateMachine;->updateCapabilities(Landroid/net/wifi/WifiConfiguration;)V -PLcom/android/server/wifi/WifiStateMachine;->updateDefaultRouteMacAddress(I)Ljava/lang/String; PLcom/android/server/wifi/WifiStateMachine;->updateLinkProperties(Landroid/net/LinkProperties;)V +PLcom/android/server/wifi/WifiStateMachine;->updateWifiMetrics()V PLcom/android/server/wifi/WifiStateTracker;-><init>(Lcom/android/internal/app/IBatteryStats;)V PLcom/android/server/wifi/WifiStateTracker;->informWifiStateBatteryStats(I)V PLcom/android/server/wifi/WifiStateTracker;->updateState(I)V PLcom/android/server/wifi/WifiTrafficPoller$1;-><init>(Lcom/android/server/wifi/WifiTrafficPoller;)V PLcom/android/server/wifi/WifiTrafficPoller$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wifi/WifiTrafficPoller$TrafficHandler;-><init>(Lcom/android/server/wifi/WifiTrafficPoller;Landroid/os/Looper;)V -PLcom/android/server/wifi/WifiTrafficPoller$TrafficHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/wifi/WifiTrafficPoller;->-get0(Lcom/android/server/wifi/WifiTrafficPoller;)Ljava/util/List; PLcom/android/server/wifi/WifiTrafficPoller;->-get1(Lcom/android/server/wifi/WifiTrafficPoller;)Z -PLcom/android/server/wifi/WifiTrafficPoller;->-get3(Lcom/android/server/wifi/WifiTrafficPoller;)I PLcom/android/server/wifi/WifiTrafficPoller;->-get4(Lcom/android/server/wifi/WifiTrafficPoller;)Z PLcom/android/server/wifi/WifiTrafficPoller;->-set0(Lcom/android/server/wifi/WifiTrafficPoller;Z)Z PLcom/android/server/wifi/WifiTrafficPoller;->-set1(Lcom/android/server/wifi/WifiTrafficPoller;Landroid/net/NetworkInfo;)Landroid/net/NetworkInfo; PLcom/android/server/wifi/WifiTrafficPoller;->-set2(Lcom/android/server/wifi/WifiTrafficPoller;I)I PLcom/android/server/wifi/WifiTrafficPoller;->-wrap0(Lcom/android/server/wifi/WifiTrafficPoller;)V -PLcom/android/server/wifi/WifiTrafficPoller;->-wrap1(Lcom/android/server/wifi/WifiTrafficPoller;)V PLcom/android/server/wifi/WifiTrafficPoller;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;)V PLcom/android/server/wifi/WifiTrafficPoller;->addClient(Landroid/os/Messenger;)V +PLcom/android/server/wifi/WifiTrafficPoller;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/WifiTrafficPoller;->evaluateTrafficStatsPolling()V -PLcom/android/server/wifi/WifiTrafficPoller;->notifyOnDataActivity()V -PLcom/android/server/wifi/WifiVendorHal$1AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V -PLcom/android/server/wifi/WifiVendorHal$4AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V PLcom/android/server/wifi/WifiVendorHal$5AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V PLcom/android/server/wifi/WifiVendorHal$6AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V +PLcom/android/server/wifi/WifiVendorHal$9AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V PLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V PLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;-><init>(Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/WifiVendorHal$ChipEventCallback;)V PLcom/android/server/wifi/WifiVendorHal$HalDeviceManagerStatusListener;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V @@ -13913,50 +15345,42 @@ PLcom/android/server/wifi/WifiVendorHal$RttEventCallback;-><init>(Lcom/android/s PLcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V PLcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;-><init>(Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;)V PLcom/android/server/wifi/WifiVendorHal;->-get1(Lcom/android/server/wifi/WifiVendorHal;)Lcom/android/server/wifi/HalDeviceManager; -PLcom/android/server/wifi/WifiVendorHal;->-get2(Lcom/android/server/wifi/WifiVendorHal;)Landroid/os/Handler; -PLcom/android/server/wifi/WifiVendorHal;->-get3(Lcom/android/server/wifi/WifiVendorHal;)Lcom/android/server/wifi/WifiNative$WifiLoggerEventHandler; PLcom/android/server/wifi/WifiVendorHal;->-get7()Landroid/net/apf/ApfCapabilities; -PLcom/android/server/wifi/WifiVendorHal;->-wrap3(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;)Lcom/android/server/wifi/WifiNative$RingBufferStatus; PLcom/android/server/wifi/WifiVendorHal;-><init>(Lcom/android/server/wifi/HalDeviceManager;Landroid/os/Looper;)V PLcom/android/server/wifi/WifiVendorHal;->boolResult(Z)Z PLcom/android/server/wifi/WifiVendorHal;->configureNeighborDiscoveryOffload(Z)Z PLcom/android/server/wifi/WifiVendorHal;->configureRoaming(Lcom/android/server/wifi/WifiNative$RoamingConfig;)Z PLcom/android/server/wifi/WifiVendorHal;->enableLinkLayerStats()V PLcom/android/server/wifi/WifiVendorHal;->enableVerboseLogging(Z)V -PLcom/android/server/wifi/WifiVendorHal;->enter(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; PLcom/android/server/wifi/WifiVendorHal;->getApfCapabilities()Landroid/net/apf/ApfCapabilities; PLcom/android/server/wifi/WifiVendorHal;->getBgScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z -PLcom/android/server/wifi/WifiVendorHal;->getChannelsForBand(I)[I PLcom/android/server/wifi/WifiVendorHal;->getDriverVersion()Ljava/lang/String; PLcom/android/server/wifi/WifiVendorHal;->getFirmwareVersion()Ljava/lang/String; +PLcom/android/server/wifi/WifiVendorHal;->getRingBufferData(Ljava/lang/String;)Z PLcom/android/server/wifi/WifiVendorHal;->getRingBufferStatus()[Lcom/android/server/wifi/WifiNative$RingBufferStatus; PLcom/android/server/wifi/WifiVendorHal;->getRoamingCapabilities(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;)Z PLcom/android/server/wifi/WifiVendorHal;->getRxPktFates([Lcom/android/server/wifi/WifiNative$RxFateReport;)Z -PLcom/android/server/wifi/WifiVendorHal;->getSupportedFeatureSet()I PLcom/android/server/wifi/WifiVendorHal;->getSupportedLoggerFeatureSet()I PLcom/android/server/wifi/WifiVendorHal;->getTxPktFates([Lcom/android/server/wifi/WifiNative$TxFateReport;)Z -PLcom/android/server/wifi/WifiVendorHal;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats; +PLcom/android/server/wifi/WifiVendorHal;->getWlanWakeReasonCount()Landroid/net/wifi/WifiWakeReasonAndCounts; PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkPktFateFrameType(I)B PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkRxPktFate(I)B PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkTxPktFate(I)B +PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkWakeReasons(Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)Landroid/net/wifi/WifiWakeReasonAndCounts; PLcom/android/server/wifi/WifiVendorHal;->initialize(Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;)Z PLcom/android/server/wifi/WifiVendorHal;->installPacketFilter([B)Z -PLcom/android/server/wifi/WifiVendorHal;->intArrayFromArrayList(Ljava/util/ArrayList;)[I +PLcom/android/server/wifi/WifiVendorHal;->intsFromArrayList(Ljava/util/ArrayList;)[I PLcom/android/server/wifi/WifiVendorHal;->isVendorHalSupported()Z PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_15968(Lcom/android/server/wifi/WifiNative$ScanCapabilities;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_25531(Lcom/android/server/wifi/WifiVendorHal$1AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_32084(Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_54711(Lcom/android/server/wifi/WifiVendorHal$4AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_57111(Lcom/android/server/wifi/WifiVendorHal$5AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_64028(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_66971(Lcom/android/server/wifi/WifiVendorHal$6AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_73803([Lcom/android/server/wifi/WifiNative$TxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_75590([Lcom/android/server/wifi/WifiNative$RxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V -PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_84658(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_33324(Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_33628(Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_58656(Lcom/android/server/wifi/WifiVendorHal$5AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_65573(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_68516(Lcom/android/server/wifi/WifiVendorHal$6AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_84576(Lcom/android/server/wifi/WifiVendorHal$9AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_86203(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V PLcom/android/server/wifi/WifiVendorHal;->makeRingBufferStatusArray(Ljava/util/ArrayList;)[Lcom/android/server/wifi/WifiNative$RingBufferStatus; -PLcom/android/server/wifi/WifiVendorHal;->makeWifiBandFromFrameworkBand(I)I PLcom/android/server/wifi/WifiVendorHal;->niceMethodName([Ljava/lang/StackTraceElement;I)Ljava/lang/String; -PLcom/android/server/wifi/WifiVendorHal;->ok(Landroid/hardware/wifi/V1_0/WifiStatus;)Z PLcom/android/server/wifi/WifiVendorHal;->registerChipCallback()Z PLcom/android/server/wifi/WifiVendorHal;->registerRttEventCallback()Z PLcom/android/server/wifi/WifiVendorHal;->registerStaIfaceCallback()Z @@ -13967,48 +15391,33 @@ PLcom/android/server/wifi/WifiVendorHal;->startLoggingRingBuffer(IIIILjava/lang/ PLcom/android/server/wifi/WifiVendorHal;->startPktFateMonitoring()Z PLcom/android/server/wifi/WifiVendorHal;->startVendorHal(Z)Z PLcom/android/server/wifi/WifiVendorHal;->stopRssiMonitoring()I -PLcom/android/server/wifi/WifiVendorHal;->wifiFeatureMaskFromStaCapabilities(I)I +PLcom/android/server/wifi/WifiVendorHal;->wifiFeatureMaskFromChipCapabilities(I)I PLcom/android/server/wifi/WificondControl$PnoScanEventHandler;-><init>(Lcom/android/server/wifi/WificondControl;)V PLcom/android/server/wifi/WificondControl$PnoScanEventHandler;-><init>(Lcom/android/server/wifi/WificondControl;Lcom/android/server/wifi/WificondControl$PnoScanEventHandler;)V PLcom/android/server/wifi/WificondControl$ScanEventHandler;-><init>(Lcom/android/server/wifi/WificondControl;)V PLcom/android/server/wifi/WificondControl$ScanEventHandler;-><init>(Lcom/android/server/wifi/WificondControl;Lcom/android/server/wifi/WificondControl$ScanEventHandler;)V -PLcom/android/server/wifi/WificondControl$ScanEventHandler;->OnScanResultReady()V PLcom/android/server/wifi/WificondControl;->-get0(Lcom/android/server/wifi/WificondControl;)Ljava/lang/String; PLcom/android/server/wifi/WificondControl;->-get1(Lcom/android/server/wifi/WificondControl;)Lcom/android/server/wifi/WifiMonitor; -PLcom/android/server/wifi/WificondControl;-><init>(Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/WifiMonitor;)V +PLcom/android/server/wifi/WificondControl;-><init>(Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/WifiMonitor;Lcom/android/server/wifi/CarrierNetworkConfig;)V PLcom/android/server/wifi/WificondControl;->abortScan()V PLcom/android/server/wifi/WificondControl;->enableSupplicant()Z PLcom/android/server/wifi/WificondControl;->enableVerboseLogging(Z)V -PLcom/android/server/wifi/WificondControl;->scan(Ljava/util/Set;Ljava/util/Set;)Z PLcom/android/server/wifi/WificondControl;->setupDriverForClientMode()Landroid/net/wifi/IClientInterface; -PLcom/android/server/wifi/WificondControl;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult; PLcom/android/server/wifi/WificondControl;->tearDownInterfaces()Z +PLcom/android/server/wifi/WrongPasswordNotifier;-><init>(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;)V +PLcom/android/server/wifi/WrongPasswordNotifier;->onNewConnectionAttempt()V PLcom/android/server/wifi/aware/WifiAwareMetrics$HistParms;-><init>(IIIII)V PLcom/android/server/wifi/aware/WifiAwareMetrics;-><init>(Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/aware/WifiAwareMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V PLcom/android/server/wifi/hotspot2/ANQPRequestManager;-><init>(Lcom/android/server/wifi/hotspot2/PasspointEventHandler;Lcom/android/server/wifi/Clock;)V PLcom/android/server/wifi/hotspot2/AnqpCache;-><init>(Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/hotspot2/AnqpCache;->dump(Ljava/io/PrintWriter;)V PLcom/android/server/wifi/hotspot2/CertificateVerifier;-><init>()V PLcom/android/server/wifi/hotspot2/LegacyPasspointConfigParser;-><init>()V PLcom/android/server/wifi/hotspot2/NetworkDetail$Ant;-><init>(Ljava/lang/String;I)V -PLcom/android/server/wifi/hotspot2/NetworkDetail$Ant;->values()[Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant; PLcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease;-><init>(Ljava/lang/String;I)V -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getAnqpDomainID()I PLcom/android/server/wifi/hotspot2/NetworkDetail;->getAnt()Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant; -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getBSSIDString()Ljava/lang/String; -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq0()I -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq1()I -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getChannelWidth()I -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getDtimInterval()I -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getHESSID()J -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getHSRelease()Lcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease; -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getOsuProviders()[B -PLcom/android/server/wifi/hotspot2/NetworkDetail;->getSSID()Ljava/lang/String; PLcom/android/server/wifi/hotspot2/NetworkDetail;->getWifiMode()I -PLcom/android/server/wifi/hotspot2/NetworkDetail;->is80211McResponderSupport()Z -PLcom/android/server/wifi/hotspot2/NetworkDetail;->isBeaconFrame()Z -PLcom/android/server/wifi/hotspot2/NetworkDetail;->isHiddenBeaconFrame()Z -PLcom/android/server/wifi/hotspot2/NetworkDetail;->isInterworking()Z -PLcom/android/server/wifi/hotspot2/NetworkDetail;->toMACString(J)Ljava/lang/String; PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;-><init>(Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;)V PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->deserializeProviderList(Lorg/xmlpull/v1/XmlPullParser;I)Ljava/util/List; @@ -14034,7 +15443,9 @@ PLcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;->setProvi PLcom/android/server/wifi/hotspot2/PasspointManager;->-get2(Lcom/android/server/wifi/hotspot2/PasspointManager;)J PLcom/android/server/wifi/hotspot2/PasspointManager;->-get3(Lcom/android/server/wifi/hotspot2/PasspointManager;)Ljava/util/Map; PLcom/android/server/wifi/hotspot2/PasspointManager;->-set0(Lcom/android/server/wifi/hotspot2/PasspointManager;J)J -PLcom/android/server/wifi/hotspot2/PasspointManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointObjectFactory;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/WifiConfigStore;)V +PLcom/android/server/wifi/hotspot2/PasspointManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointObjectFactory;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/WifiConfigStore;Lcom/android/server/wifi/WifiMetrics;)V +PLcom/android/server/wifi/hotspot2/PasspointManager;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/hotspot2/PasspointManager;->updateMetrics()V PLcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;-><init>(Lcom/android/server/wifi/hotspot2/PasspointManager;Lcom/android/server/wifi/WifiConfigManager;Landroid/util/LocalLog;)V PLcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;->update(Ljava/util/List;)V PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;-><init>()V @@ -14043,6 +15454,8 @@ PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makeAnqpCache(Lcom/a PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makeCertificateVerifier()Lcom/android/server/wifi/hotspot2/CertificateVerifier; PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makePasspointConfigStoreData(Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;)Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData; PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makePasspointEventHandler(Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;)Lcom/android/server/wifi/hotspot2/PasspointEventHandler; +PLcom/android/server/wifi/hotspot2/Utils;->hs2LogTag(Ljava/lang/Class;)Ljava/lang/String; +PLcom/android/server/wifi/hotspot2/Utils;->toHMS(J)Ljava/lang/String; PLcom/android/server/wifi/hotspot2/anqp/Constants$ANQPElementType;-><init>(Ljava/lang/String;I)V PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$19;-><init>(BLjava/lang/Object;)V PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$1;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V @@ -14082,7 +15495,7 @@ PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->isInitializationComplete() PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->isInitializationStarted()Z PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_10685(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_35007(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V -PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_67455(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_67534(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_9579(Ljava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->linkToServiceManagerDeath()Z PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->linkToSupplicantDeath()Z @@ -14168,15 +15581,15 @@ PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->sendP2pStateC PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->sendThisDeviceChangedBroadcast()V PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->updatePersistentNetworks(Z)V PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->updateThisDevice(I)V -PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get1()Ljava/lang/Boolean; -PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get10(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/NetworkInfo; -PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get16(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/wifi/p2p/WifiP2pDevice; -PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get17(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Lcom/android/internal/util/AsyncChannel; -PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get3(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Ljava/util/HashMap; -PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get4(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/content/Context; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get0()Ljava/lang/Boolean; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get15(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/wifi/p2p/WifiP2pDevice; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get16(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Lcom/android/internal/util/AsyncChannel; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get2(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Ljava/util/HashMap; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get3(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/content/Context; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get5(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get6(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get7(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z -PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get8(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get9(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/NetworkInfo; PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set2(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Z)Z PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set6(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Ljava/lang/String;)Ljava/lang/String; PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set7(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;B)B @@ -14188,6 +15601,7 @@ PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceAccessPermission()V PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceChangePermission()V PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceConnectivityInternalOrLocationHardwarePermission()V PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->getP2pStateMachineMessenger()Landroid/os/Messenger; +PLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;-><init>()V PLcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList$1;-><init>(Lcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList;)V PLcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList;-><init>(Lcom/android/server/wifi/scanner/BackgroundScanScheduler;)V PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->-get2()[I @@ -14198,43 +15612,20 @@ PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->getMaxBatch()I PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->getMaxChannelsPerBucket()I PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->setMaxApPerScan(I)V PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->setMaxBuckets(I)V -PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;-><init>(Lcom/android/server/wifi/scanner/ChannelHelper;)V -PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)V -PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Lcom/android/server/wifi/WifiNative$BucketSettings;)V PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsSettings(Landroid/net/wifi/WifiScanner$ScanSettings;)Z PLcom/android/server/wifi/scanner/ChannelHelper;-><init>()V PLcom/android/server/wifi/scanner/HalChannelHelper;-><init>(Lcom/android/server/wifi/WifiNative;)V -PLcom/android/server/wifi/scanner/HalChannelHelper;->updateChannels()V PLcom/android/server/wifi/scanner/HalWifiScannerImpl;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiMonitor;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)V PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getChannelHelper()Lcom/android/server/wifi/scanner/ChannelHelper; PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getLatestSingleScanResults()Landroid/net/wifi/WifiScanner$ScanData; PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->startSingleScan(Lcom/android/server/wifi/WifiNative$ScanSettings;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)Z -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;-><init>(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;)V -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addBand(I)V -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addChannel(I)V -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsBand(I)Z -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsChannel(I)Z -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->fillBucketSettings(Lcom/android/server/wifi/WifiNative$BucketSettings;I)V PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->getScanFreqs()Ljava/util/Set; -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->isAllChannels()Z PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->isEmpty()Z -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->-wrap0(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;I)I PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;-><init>()V -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->copyChannels([Landroid/net/wifi/WifiScanner$ChannelSpec;I[I)V -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection; -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection; -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getAvailableScanChannels(I)[Landroid/net/wifi/WifiScanner$ChannelSpec; -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getBandFromChannel(I)I -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->isDfsChannel(I)Z -PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->setBandChannels([I[I[I)V -PLcom/android/server/wifi/scanner/ScanScheduleUtil;->filterResultsForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;[Landroid/net/wifi/WifiScanner$ScanData;Landroid/net/wifi/WifiScanner$ScanSettings;I)[Landroid/net/wifi/WifiScanner$ScanData; -PLcom/android/server/wifi/scanner/ScanScheduleUtil;->isBucketMaybeScanned(II)Z -PLcom/android/server/wifi/scanner/ScanScheduleUtil;->shouldReportFullScanResultForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;Landroid/net/wifi/ScanResult;ILandroid/net/wifi/WifiScanner$ScanSettings;I)Z PLcom/android/server/wifi/scanner/WifiScannerImpl$1;-><init>()V PLcom/android/server/wifi/scanner/WifiScannerImpl$1;->create(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)Lcom/android/server/wifi/scanner/WifiScannerImpl; PLcom/android/server/wifi/scanner/WifiScannerImpl$2;-><init>()V -PLcom/android/server/wifi/scanner/WifiScannerImpl$2;->compare(Landroid/net/wifi/ScanResult;Landroid/net/wifi/ScanResult;)I PLcom/android/server/wifi/scanner/WifiScannerImpl;-><init>()V PLcom/android/server/wifi/scanner/WifiScanningService;-><init>(Landroid/content/Context;)V PLcom/android/server/wifi/scanner/WifiScanningService;->onBootPhase(I)V @@ -14242,19 +15633,12 @@ PLcom/android/server/wifi/scanner/WifiScanningService;->onStart()V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$1;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Ljava/lang/String;Landroid/os/Looper;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;ILandroid/os/Messenger;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->getUid()I PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->register()V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->toString()Ljava/lang/String; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;ILandroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo;->reportEvent(IIILjava/lang/Object;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;->reportEvent(IILjava/lang/Object;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->addRequest(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->createMergedWorkSource()Landroid/os/WorkSource; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;->enter()V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z @@ -14278,18 +15662,10 @@ PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachin PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Landroid/os/Looper;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->enter()V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->enter()V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->processMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->enter()V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->exit()V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->processMessage(Landroid/os/Message;)Z -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)[Landroid/net/wifi/ScanResult; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get4(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; @@ -14297,25 +15673,13 @@ PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMac PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-set0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;Lcom/android/server/wifi/WifiNative$ScanSettings;)Lcom/android/server/wifi/WifiNative$ScanSettings; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Landroid/os/Looper;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->activeScanSatisfies(Landroid/net/wifi/WifiScanner$ScanSettings;)Z -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onFullScanResult(Landroid/net/wifi/ScanResult;I)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onScanStatus(I)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->reportScanResults(Landroid/net/wifi/WifiScanner$ScanData;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendOpFailedToAllAndClear(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;ILjava/lang/String;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendScanResultBroadcast(Z)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->tryToStartNewScan()V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->validateScanRequest(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/net/wifi/WifiScanner$ScanSettings;Landroid/os/WorkSource;)Z PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/BackgroundScanScheduler; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get10(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get12(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get13(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get14(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get15(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get16(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/WifiMetrics; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/internal/app/IBatteryStats; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/ChannelHelper; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get5(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/util/ArrayMap; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get6(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/Clock; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get7(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/content/Context; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get8(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/FrameworkFacade; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get9(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/os/Looper; @@ -14323,19 +15687,10 @@ PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set0(Lcom/android/s PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/ChannelHelper;)Lcom/android/server/wifi/scanner/ChannelHelper; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScannerImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl; PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;Landroid/os/WorkSource;)Landroid/os/WorkSource; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;I)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Ljava/lang/String;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/wifi/WifiInjector;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->computeWorkSource(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;Landroid/os/WorkSource;)Landroid/os/WorkSource; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeForLog([Landroid/net/wifi/WifiScanner$ScanData;)Ljava/lang/String; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeTo(Ljava/lang/StringBuilder;Landroid/net/wifi/WifiScanner$ScanSettings;)Ljava/lang/String; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->enforceLocationHardwarePermission(I)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->getMessenger()Landroid/os/Messenger; -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->isWorkSourceValid(Landroid/os/WorkSource;)Z -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->localLog(Ljava/lang/String;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logCallback(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILjava/lang/String;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logScanRequest(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;)V -PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->replySucceeded(Landroid/os/Message;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->loge(Ljava/lang/String;)V PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->startService()V PLcom/android/server/wifi/scanner/WificondScannerImpl$1;-><init>(Lcom/android/server/wifi/scanner/WificondScannerImpl;)V PLcom/android/server/wifi/scanner/WificondScannerImpl$2;-><init>(Lcom/android/server/wifi/scanner/WificondScannerImpl;)V @@ -14344,108 +15699,64 @@ PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer$1;-><init>( PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;-><init>(Lcom/android/server/wifi/WifiNative;Landroid/app/AlarmManager;Landroid/os/Handler;Lcom/android/server/wifi/Clock;)V PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;->forceStopPnoScan()V PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;->stopPnoScanInternal()Z -PLcom/android/server/wifi/scanner/WificondScannerImpl$LastScanSettings;-><init>(J)V PLcom/android/server/wifi/scanner/WificondScannerImpl$LastScanSettings;->setSingleScan(ZLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)V PLcom/android/server/wifi/scanner/WificondScannerImpl$ScanBuffer;-><init>(I)V PLcom/android/server/wifi/scanner/WificondScannerImpl;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiMonitor;Lcom/android/server/wifi/scanner/ChannelHelper;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)V PLcom/android/server/wifi/scanner/WificondScannerImpl;->getLatestSingleScanResults()Landroid/net/wifi/WifiScanner$ScanData; -PLcom/android/server/wifi/scanner/WificondScannerImpl;->handleMessage(Landroid/os/Message;)Z PLcom/android/server/wifi/scanner/WificondScannerImpl;->isHwPnoScanRequired()Z PLcom/android/server/wifi/scanner/WificondScannerImpl;->pauseHwPnoScan()V -PLcom/android/server/wifi/scanner/WificondScannerImpl;->processPendingScans()V PLcom/android/server/wifi/scanner/WificondScannerImpl;->startSingleScan(Lcom/android/server/wifi/WifiNative$ScanSettings;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)Z -PLcom/android/server/wifi/util/BitMask;-><init>(I)V PLcom/android/server/wifi/util/ByteArrayRingBuffer;-><init>(I)V PLcom/android/server/wifi/util/ByteArrayRingBuffer;->resize(I)V -PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;-><init>()V -PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->cipherToString(I)Ljava/lang/String; -PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->keyManagementToString(I)Ljava/lang/String; -PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseRsnCipher(I)I +PLcom/android/server/wifi/util/FrameParser;->decodeDhcpMessageType(S)Ljava/lang/String; +PLcom/android/server/wifi/util/FrameParser;->decodeIeee80211StatusCode(S)Ljava/lang/String; +PLcom/android/server/wifi/util/FrameParser;->parseArpPacket(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseAssociationResponse(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseAuthenticationFrame(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseDhcpPacket(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseIcmpV6Packet(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlSubtype(B)B +PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlType(B)B +PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlVersion(B)B +PLcom/android/server/wifi/util/FrameParser;->parseIpv6Packet(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseManagementFrame(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseUdpPacket(Ljava/nio/ByteBuffer;)V PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseWpaCipher(I)I -PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseWpaOneElement(Landroid/net/wifi/ScanResult$InformationElement;)V -PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->protocolToString(I)Ljava/lang/String; -PLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->is80211McRTTResponder()Z -PLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V -PLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getCenterFreq0(I)I -PLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getChannelWidth()I -PLcom/android/server/wifi/util/InformationElementUtil$Interworking;->from(Landroid/net/wifi/ScanResult$InformationElement;)V -PLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->isValid()Z -PLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V -PLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq0()I -PLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq1()I -PLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getChannelWidth()I -PLcom/android/server/wifi/util/InformationElementUtil$WifiMode;->determineMode(IIZZZ)I PLcom/android/server/wifi/util/NativeUtil;->decodeSsid(Ljava/lang/String;)Ljava/util/ArrayList; -PLcom/android/server/wifi/util/NativeUtil;->hexOrQuotedAsciiStringToBytes(Ljava/lang/String;)Ljava/util/ArrayList; +PLcom/android/server/wifi/util/NativeUtil;->hexOrQuotedStringToBytes(Ljava/lang/String;)Ljava/util/ArrayList; PLcom/android/server/wifi/util/NativeUtil;->hexStringToByteArray(Ljava/lang/String;)[B PLcom/android/server/wifi/util/NativeUtil;->macAddressToByteArray(Ljava/lang/String;)[B PLcom/android/server/wifi/util/NativeUtil;->stringToByteArray(Ljava/lang/String;)[B PLcom/android/server/wifi/util/NativeUtil;->stringToByteArrayList(Ljava/lang/String;)Ljava/util/ArrayList; -PLcom/android/server/wifi/util/ScanResultUtil;->createQuotedSSID(Ljava/lang/String;)Ljava/lang/String; -PLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForEapNetwork(Landroid/net/wifi/ScanResult;)Z -PLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForOpenNetwork(Landroid/net/wifi/ScanResult;)Z -PLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForPskNetwork(Landroid/net/wifi/ScanResult;)Z -PLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForWepNetwork(Landroid/net/wifi/ScanResult;)Z -PLcom/android/server/wifi/util/ScanResultUtil;->toScanDetail(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ScanDetail; -PLcom/android/server/wifi/util/TelephonyUtil;->getSimMethodForConfig(Landroid/net/wifi/WifiConfiguration;)I -PLcom/android/server/wifi/util/TelephonyUtil;->isSimConfig(Landroid/net/wifi/WifiConfiguration;)Z -PLcom/android/server/wifi/util/TelephonyUtil;->isSimEapMethod(I)Z PLcom/android/server/wifi/util/WifiAsyncChannel;-><init>(Ljava/lang/String;)V -PLcom/android/server/wifi/util/WifiAsyncChannel;->getOrInitLog()Lcom/android/server/wifi/WifiLog; PLcom/android/server/wifi/util/WifiAsyncChannel;->replyToMessage(Landroid/os/Message;Landroid/os/Message;)V -PLcom/android/server/wifi/util/WifiAsyncChannel;->sendMessageSynchronously(Landroid/os/Message;)Landroid/os/Message; PLcom/android/server/wifi/util/WifiHandler;-><init>(Ljava/lang/String;Landroid/os/Looper;)V -PLcom/android/server/wifi/util/WifiHandler;->getOrInitLog()Lcom/android/server/wifi/WifiLog; -PLcom/android/server/wifi/util/WifiHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/wifi/util/WifiPermissionsUtil;-><init>(Lcom/android/server/wifi/util/WifiPermissionsWrapper;Landroid/content/Context;Lcom/android/server/wifi/WifiSettingsStore;Landroid/os/UserManager;Landroid/net/NetworkScoreManager;Lcom/android/server/wifi/WifiInjector;)V -PLcom/android/server/wifi/util/WifiPermissionsUtil;->canAccessScanResults(Ljava/lang/String;II)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->checkAppOpAllowed(ILjava/lang/String;I)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallerHasPeersMacAddressPermission(I)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallersLocationPermission(Ljava/lang/String;I)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->isCallerActiveNwScorer(I)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->isCurrentProfile(I)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyForeground(Ljava/lang/String;I)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyVersion(Ljava/lang/String;I)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->isLocationModeEnabled(Ljava/lang/String;)Z -PLcom/android/server/wifi/util/WifiPermissionsUtil;->isScanAllowedbyApps(Ljava/lang/String;I)Z PLcom/android/server/wifi/util/WifiPermissionsWrapper;-><init>(Landroid/content/Context;)V -PLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCallingUserId(I)I -PLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCurrentUser()I -PLcom/android/server/wifi/util/WifiPermissionsWrapper;->getUidPermission(Ljava/lang/String;I)I PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->-getandroid-net-IpConfiguration$IpAssignmentSwitchesValues()[I PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->-getandroid-net-IpConfiguration$ProxySettingsSwitchesValues()[I PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/net/IpConfiguration; PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/IpConfiguration;)V PLcom/android/server/wifi/util/XmlUtil$NetworkSelectionStatusXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus; PLcom/android/server/wifi/util/XmlUtil$NetworkSelectionStatusXmlUtil;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V -PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/util/Pair; PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->populateWepKeysFromXmlValue(Ljava/lang/Object;[Ljava/lang/String;)V PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeCommonElementsToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V -PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeToXmlForConfigStore(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeWepKeysToXml(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V PLcom/android/server/wifi/util/XmlUtil;->gotoDocumentStart(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V PLcom/android/server/wifi/util/XmlUtil;->gotoEndTag(Lorg/xmlpull/v1/XmlPullParser;)V PLcom/android/server/wifi/util/XmlUtil;->gotoNextSectionOrEnd(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;I)Z PLcom/android/server/wifi/util/XmlUtil;->gotoNextSectionWithNameOrEnd(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Z PLcom/android/server/wifi/util/XmlUtil;->isNextSectionEnd(Lorg/xmlpull/v1/XmlPullParser;I)Z -PLcom/android/server/wifi/util/XmlUtil;->readCurrentValue(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;)Ljava/lang/Object; PLcom/android/server/wifi/util/XmlUtil;->readNextValueWithName(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object; PLcom/android/server/wifi/util/XmlUtil;->writeDocumentEnd(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V PLcom/android/server/wifi/util/XmlUtil;->writeDocumentStart(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V PLcom/android/server/wifi/util/XmlUtil;->writeNextSectionEnd(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V PLcom/android/server/wifi/util/XmlUtil;->writeNextSectionStart(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V -PLcom/android/server/wifi/util/XmlUtil;->writeNextValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/Object;)V PLcom/android/server/wifi/wificond/ChannelSettings$1;-><init>()V -PLcom/android/server/wifi/wificond/ChannelSettings;-><init>()V -PLcom/android/server/wifi/wificond/ChannelSettings;->writeToParcel(Landroid/os/Parcel;I)V PLcom/android/server/wifi/wificond/NativeScanResult$1;-><init>()V -PLcom/android/server/wifi/wificond/NativeScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; PLcom/android/server/wifi/wificond/NativeScanResult$1;->newArray(I)[Lcom/android/server/wifi/wificond/NativeScanResult; -PLcom/android/server/wifi/wificond/NativeScanResult$1;->newArray(I)[Ljava/lang/Object; -PLcom/android/server/wifi/wificond/NativeScanResult;-><init>()V PLcom/android/server/wifi/wificond/SingleScanSettings$1;-><init>()V PLcom/android/server/wifi/wificond/SingleScanSettings;-><init>()V -PLcom/android/server/wifi/wificond/SingleScanSettings;->writeToParcel(Landroid/os/Parcel;I)V PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;->$m$0(Ljava/lang/Object;)V PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;-><init>(BZZLjava/lang/Object;)V PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;->accept(Ljava/lang/Object;)V @@ -14456,401 +15767,225 @@ PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->$m$0(Ljava/lang/O PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->$m$1(Ljava/lang/Object;Ljava/lang/Object;)I PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;-><init>(BLjava/lang/Object;)V PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -PLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->$m$0(J)V PLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;-><init>(Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->doFrame(J)V -PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$0(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$2(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$3(Ljava/lang/Object;)Z PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;-><init>(B)V -PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->test(Ljava/lang/Object;)Z -PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->$m$0(Ljava/lang/Object;)Z PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->test(Ljava/lang/Object;)Z -PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->$m$1(Ljava/lang/Object;)V PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;-><init>(BII)V -PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->accept(Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->$m$0(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;->$m$0(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;-><init>(ZLjava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;->accept(Ljava/lang/Object;)V PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;-><init>(ZZILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->apply(Ljava/lang/Object;)Z PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;->$m$1(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object; PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;-><init>(B)V PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;->screenshot(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object; PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$13(Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$14(Ljava/lang/Object;)V PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$2(Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$5(Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;-><init>(BLjava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$12()V -PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$13()V -PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$14()V +PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$11()V PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$2()V PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$3()V PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$4()V PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$5()V -PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$6()V -PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$7()V -PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;-><init>(BLjava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->run()V PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;->$m$0(Ljava/lang/Object;)V PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;-><init>(ZI)V PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;->accept(Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w;->$m$0()V -PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w;-><init>(ZZZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w;->run()V -PLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->$m$3(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;->$m$0()V +PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;-><init>(ZZZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;->run()V PLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;-><init>(B)V -PLcom/android/server/wm/-$Lambda$jlKbn4GPn9-0nFmS_2KB8vTwgFI;->$m$0()V -PLcom/android/server/wm/-$Lambda$jlKbn4GPn9-0nFmS_2KB8vTwgFI;->$m$2()V -PLcom/android/server/wm/-$Lambda$jlKbn4GPn9-0nFmS_2KB8vTwgFI;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$jlKbn4GPn9-0nFmS_2KB8vTwgFI;->run()V PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;->$m$0(Ljava/lang/Object;)Z PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;-><init>()V PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;->apply(Ljava/lang/Object;)Z -PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$0(Ljava/lang/Object;)Z PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$1(Ljava/lang/Object;)Z -PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$2(Ljava/lang/Object;)Z PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;-><init>(BLjava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->test(Ljava/lang/Object;)Z -PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$0(Ljava/lang/Object;)Z -PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$1(Ljava/lang/Object;)Z PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;-><init>(BLjava/lang/Object;)V PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;->$m$0(Ljava/lang/Object;)V PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;->accept(Ljava/lang/Object;)V -PLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->$m$0(I)Ljava/io/File; +PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;->$m$0(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;-><init>(BI)V +PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;->test(Ljava/lang/Object;)Z PLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;-><init>()V -PLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->getSystemDirectoryForUser(I)Ljava/io/File; +PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Landroid/os/Looper;)V +PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V +PLcom/android/server/wm/AccessibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/AccessibilityController;->hasCallbacksLocked()Z +PLcom/android/server/wm/AccessibilityController;->onAppWindowTransitionLocked(Lcom/android/server/wm/WindowState;I)V +PLcom/android/server/wm/AccessibilityController;->onRotationChangedLocked(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/AccessibilityController;->onWindowFocusChangedNotLocked()V +PLcom/android/server/wm/AccessibilityController;->onWindowTransitionLocked(Lcom/android/server/wm/WindowState;I)V +PLcom/android/server/wm/AccessibilityController;->performComputeChangedWindowsNotLocked()V +PLcom/android/server/wm/AccessibilityController;->setWindowsForAccessibilityCallback(Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V PLcom/android/server/wm/AppTokenList;-><init>()V PLcom/android/server/wm/AppTransition$1;-><init>(Lcom/android/server/wm/AppTransition;)V PLcom/android/server/wm/AppTransition$2;-><init>(Lcom/android/server/wm/AppTransition;)V -PLcom/android/server/wm/AppTransition$2;->getInterpolation(F)F -PLcom/android/server/wm/AppTransition;->-get1(Lcom/android/server/wm/AppTransition;)Landroid/view/animation/Interpolator; PLcom/android/server/wm/AppTransition;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/AppTransition;->calculateClipRevealTransitionDuration(ZFFLandroid/graphics/Rect;)J PLcom/android/server/wm/AppTransition;->canSkipFirstFrame()Z PLcom/android/server/wm/AppTransition;->clear()V -PLcom/android/server/wm/AppTransition;->createAspectScaledThumbnailEnterExitAnimationLocked(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZI)Landroid/view/animation/Animation; -PLcom/android/server/wm/AppTransition;->createClipRevealAnimationLocked(IZLandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/view/animation/Animation; -PLcom/android/server/wm/AppTransition;->createCurvedMotion(FFFF)Landroid/view/animation/Animation; -PLcom/android/server/wm/AppTransition;->createThumbnailAspectScaleAnimationLocked(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/GraphicBuffer;III)Landroid/view/animation/Animation; PLcom/android/server/wm/AppTransition;->fetchAppTransitionSpecsFromFuture()V PLcom/android/server/wm/AppTransition;->freeze()V -PLcom/android/server/wm/AppTransition;->getAppStackClipMode()I -PLcom/android/server/wm/AppTransition;->getAppTransition()I -PLcom/android/server/wm/AppTransition;->getAppTransitionThumbnailHeader(I)Landroid/graphics/GraphicBuffer; -PLcom/android/server/wm/AppTransition;->getAspectScaleDuration()J -PLcom/android/server/wm/AppTransition;->getAspectScaleInterpolator()Landroid/view/animation/Interpolator; -PLcom/android/server/wm/AppTransition;->getCachedAnimations(Landroid/view/WindowManager$LayoutParams;)Lcom/android/server/AttributeCache$Entry; PLcom/android/server/wm/AppTransition;->getCachedAnimations(Ljava/lang/String;I)Lcom/android/server/AttributeCache$Entry; PLcom/android/server/wm/AppTransition;->getDefaultNextAppTransitionStartRect(Landroid/graphics/Rect;)V -PLcom/android/server/wm/AppTransition;->getNextAppTransitionStartRect(ILandroid/graphics/Rect;)V -PLcom/android/server/wm/AppTransition;->getThumbnailTransitionState(Z)I PLcom/android/server/wm/AppTransition;->getTransitFlags()I -PLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/AppWindowAnimator;Lcom/android/server/wm/AppWindowAnimator;Landroid/util/ArraySet;Landroid/util/ArraySet;)I PLcom/android/server/wm/AppTransition;->isFetchingAppTransitionsSpecs()Z -PLcom/android/server/wm/AppTransition;->isKeyguardGoingAwayTransit(I)Z -PLcom/android/server/wm/AppTransition;->isKeyguardTransit(I)Z PLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailDown()Z PLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailUp()Z -PLcom/android/server/wm/AppTransition;->isNextThumbnailTransitionAspectScaled()Z -PLcom/android/server/wm/AppTransition;->isNextThumbnailTransitionScaleUp()Z -PLcom/android/server/wm/AppTransition;->isReady()Z -PLcom/android/server/wm/AppTransition;->isRunning()Z -PLcom/android/server/wm/AppTransition;->isTimeout()Z PLcom/android/server/wm/AppTransition;->isTransitionEqual(I)Z -PLcom/android/server/wm/AppTransition;->lambda$-com_android_server_wm_AppTransition_87752(Landroid/view/IAppTransitionAnimationSpecsFuture;)V -PLcom/android/server/wm/AppTransition;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)Landroid/view/animation/Animation; -PLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;I)Landroid/view/animation/Animation; PLcom/android/server/wm/AppTransition;->loadAnimationRes(Ljava/lang/String;I)Landroid/view/animation/Animation; PLcom/android/server/wm/AppTransition;->loadKeyguardExitAnimation(I)Landroid/view/animation/Animation; PLcom/android/server/wm/AppTransition;->notifyAppTransitionCancelledLocked(I)V -PLcom/android/server/wm/AppTransition;->notifyAppTransitionFinishedLocked(Landroid/os/IBinder;)V -PLcom/android/server/wm/AppTransition;->notifyAppTransitionPendingLocked()V -PLcom/android/server/wm/AppTransition;->notifyAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I -PLcom/android/server/wm/AppTransition;->notifyProlongedAnimationsEnded()V PLcom/android/server/wm/AppTransition;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionClipReveal(IIII)V -PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionMultiThumb([Landroid/view/AppTransitionAnimationSpec;Landroid/os/IRemoteCallback;Landroid/os/IRemoteCallback;Z)V -PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V PLcom/android/server/wm/AppTransition;->postAnimationCallback()V -PLcom/android/server/wm/AppTransition;->prepare()Z -PLcom/android/server/wm/AppTransition;->prepareAppTransitionLocked(IZIZ)Z -PLcom/android/server/wm/AppTransition;->prepareThumbnailAnimationWithDuration(Landroid/view/animation/Animation;IIJLandroid/view/animation/Interpolator;)Landroid/view/animation/Animation; PLcom/android/server/wm/AppTransition;->putDefaultNextAppTransitionCoordinates(IIIILandroid/graphics/GraphicBuffer;)V PLcom/android/server/wm/AppTransition;->registerListenerLocked(Landroid/view/WindowManagerInternal$AppTransitionListener;)V PLcom/android/server/wm/AppTransition;->setAppTransition(II)V -PLcom/android/server/wm/AppTransition;->setAppTransitionState(I)V PLcom/android/server/wm/AppTransition;->setIdle()V -PLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/AppWindowToken;)V -PLcom/android/server/wm/AppTransition;->setReady()V -PLcom/android/server/wm/AppTransition;->shouldScaleDownThumbnailTransition(II)Z -PLcom/android/server/wm/AppTransition;->updateBooster()V PLcom/android/server/wm/AppWindowAnimator$DummyAnimation;-><init>()V PLcom/android/server/wm/AppWindowAnimator;-><init>(Lcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/AppWindowAnimator;->clearAnimation()V -PLcom/android/server/wm/AppWindowAnimator;->clearThumbnail()V -PLcom/android/server/wm/AppWindowAnimator;->endProlongedAnimation()V -PLcom/android/server/wm/AppWindowAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J -PLcom/android/server/wm/AppWindowAnimator;->getStartTimeCorrection()J -PLcom/android/server/wm/AppWindowAnimator;->getTransit()I PLcom/android/server/wm/AppWindowAnimator;->getTransitFlags()I -PLcom/android/server/wm/AppWindowAnimator;->setAnimation(Landroid/view/animation/Animation;IIIIZIII)V -PLcom/android/server/wm/AppWindowAnimator;->setDummyAnimation()V -PLcom/android/server/wm/AppWindowAnimator;->setNullAnimation()V -PLcom/android/server/wm/AppWindowAnimator;->showAllWindowsLocked()Z -PLcom/android/server/wm/AppWindowAnimator;->stepAnimation(J)Z -PLcom/android/server/wm/AppWindowAnimator;->stepThumbnailAnimation(J)V PLcom/android/server/wm/AppWindowAnimator;->transferCurrentAnimation(Lcom/android/server/wm/AppWindowAnimator;Lcom/android/server/wm/WindowStateAnimator;)V -PLcom/android/server/wm/AppWindowAnimator;->updateLayers()V +PLcom/android/server/wm/AppWindowContainerController$H;-><init>(Lcom/android/server/wm/AppWindowContainerController;Landroid/os/Looper;)V PLcom/android/server/wm/AppWindowContainerController;-><init>(Lcom/android/server/wm/TaskWindowContainerController;Landroid/view/IApplicationToken;Lcom/android/server/wm/AppWindowContainerListener;IIZZIZZZIIJLandroid/content/res/Configuration;Landroid/graphics/Rect;)V -PLcom/android/server/wm/AppWindowContainerController;-><init>(Lcom/android/server/wm/TaskWindowContainerController;Landroid/view/IApplicationToken;Lcom/android/server/wm/AppWindowContainerListener;IIZZIZZZIIJLcom/android/server/wm/WindowManagerService;Landroid/content/res/Configuration;Landroid/graphics/Rect;)V -PLcom/android/server/wm/AppWindowContainerController;->addStartingWindow(Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/os/IBinder;ZZZZZZ)Z PLcom/android/server/wm/AppWindowContainerController;->createAppWindow(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;JZZIIIIZZLcom/android/server/wm/AppWindowContainerController;Landroid/content/res/Configuration;Landroid/graphics/Rect;)Lcom/android/server/wm/AppWindowToken; PLcom/android/server/wm/AppWindowContainerController;->createSnapshot(Landroid/app/ActivityManager$TaskSnapshot;)Z -PLcom/android/server/wm/AppWindowContainerController;->getOrientation()I PLcom/android/server/wm/AppWindowContainerController;->getStartingWindowType(ZZZZZZLandroid/app/ActivityManager$TaskSnapshot;)I -PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_2853()V -PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_3148()V -PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_3438()V -PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_3729()V -PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4021()V -PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_5567()V +PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_31112(Landroid/view/WindowManagerPolicy$StartingSurface;)V +PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4155()V +PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4446()V PLcom/android/server/wm/AppWindowContainerController;->notifyAppResumed(Z)V PLcom/android/server/wm/AppWindowContainerController;->notifyAppStopped()V PLcom/android/server/wm/AppWindowContainerController;->notifyUnknownVisibilityLaunched()V -PLcom/android/server/wm/AppWindowContainerController;->pauseKeyDispatching()V PLcom/android/server/wm/AppWindowContainerController;->removeContainer(I)V -PLcom/android/server/wm/AppWindowContainerController;->removeStartingWindow()V -PLcom/android/server/wm/AppWindowContainerController;->reportStartingWindowDrawn()V PLcom/android/server/wm/AppWindowContainerController;->reportWindowsDrawn()V PLcom/android/server/wm/AppWindowContainerController;->reportWindowsGone()V PLcom/android/server/wm/AppWindowContainerController;->reportWindowsVisible()V -PLcom/android/server/wm/AppWindowContainerController;->resumeKeyDispatching()V PLcom/android/server/wm/AppWindowContainerController;->scheduleAddStartingWindow()V PLcom/android/server/wm/AppWindowContainerController;->setDisablePreviewScreenshots(Z)V PLcom/android/server/wm/AppWindowContainerController;->setOrientation(IILandroid/content/res/Configuration;Z)Landroid/content/res/Configuration; -PLcom/android/server/wm/AppWindowContainerController;->setVisibility(ZZ)V -PLcom/android/server/wm/AppWindowContainerController;->snapshotFillsWidth(Landroid/app/ActivityManager$TaskSnapshot;)Z +PLcom/android/server/wm/AppWindowContainerController;->snapshotOrientationSameAsTask(Landroid/app/ActivityManager$TaskSnapshot;)Z PLcom/android/server/wm/AppWindowContainerController;->startFreezingScreen(I)V -PLcom/android/server/wm/AppWindowContainerController;->stopFreezingScreen(Z)V PLcom/android/server/wm/AppWindowToken;->-com_android_server_wm_AppWindowToken-mthref-0(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/AppWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;JZZIIIIZZLcom/android/server/wm/AppWindowContainerController;Landroid/content/res/Configuration;Landroid/graphics/Rect;)V -PLcom/android/server/wm/AppWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;ZLandroid/content/res/Configuration;Landroid/graphics/Rect;)V -PLcom/android/server/wm/AppWindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/AppWindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken; -PLcom/android/server/wm/AppWindowToken;->canRestoreSurfaces()Z -PLcom/android/server/wm/AppWindowToken;->checkCompleteDeferredRemoval()Z -PLcom/android/server/wm/AppWindowToken;->checkKeyguardFlagsChanged()V -PLcom/android/server/wm/AppWindowToken;->clearAllDrawn()V -PLcom/android/server/wm/AppWindowToken;->clearAnimatingFlags()V +PLcom/android/server/wm/AppWindowToken;->canTurnScreenOn()Z PLcom/android/server/wm/AppWindowToken;->clearRelaunching()V -PLcom/android/server/wm/AppWindowToken;->clearWasVisibleBeforeClientHidden()V -PLcom/android/server/wm/AppWindowToken;->destroySavedSurfaces()V -PLcom/android/server/wm/AppWindowToken;->destroySurfaces()V -PLcom/android/server/wm/AppWindowToken;->destroySurfaces(Z)V -PLcom/android/server/wm/AppWindowToken;->fillsParent()Z -PLcom/android/server/wm/AppWindowToken;->findMainWindow()Lcom/android/server/wm/WindowState; -PLcom/android/server/wm/AppWindowToken;->getAnimLayerAdjustment()I -PLcom/android/server/wm/AppWindowToken;->getController()Lcom/android/server/wm/AppWindowContainerController; -PLcom/android/server/wm/AppWindowToken;->getOrientation(I)I -PLcom/android/server/wm/AppWindowToken;->getOrientationIgnoreVisibility()I -PLcom/android/server/wm/AppWindowToken;->getStack()Lcom/android/server/wm/TaskStack; -PLcom/android/server/wm/AppWindowToken;->hasBounds()Z -PLcom/android/server/wm/AppWindowToken;->isAnimatingInvisibleWithSavedSurface()Z -PLcom/android/server/wm/AppWindowToken;->isClientHidden()Z +PLcom/android/server/wm/AppWindowToken;->finishRelaunching()V +PLcom/android/server/wm/AppWindowToken;->getHighestAnimLayerWindow(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WindowState; +PLcom/android/server/wm/AppWindowToken;->getTopFullscreenWindow()Lcom/android/server/wm/WindowState; PLcom/android/server/wm/AppWindowToken;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z PLcom/android/server/wm/AppWindowToken;->isLastWindow(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/AppWindowToken;->isRelaunching()Z -PLcom/android/server/wm/AppWindowToken;->isVisible()Z -PLcom/android/server/wm/AppWindowToken;->lambda$-com_android_server_wm_AppWindowToken_64649(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/AppWindowToken;->markSavedSurfaceExiting()V +PLcom/android/server/wm/AppWindowToken;->lambda$-com_android_server_wm_AppWindowToken_68187(Lcom/android/server/wm/WindowState;)Z PLcom/android/server/wm/AppWindowToken;->notifyAppResumed(Z)V -PLcom/android/server/wm/AppWindowToken;->notifyAppStopped()V -PLcom/android/server/wm/AppWindowToken;->onAppTransitionDone()V -PLcom/android/server/wm/AppWindowToken;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V -PLcom/android/server/wm/AppWindowToken;->onParentSet()V -PLcom/android/server/wm/AppWindowToken;->onRemovedFromDisplay()V PLcom/android/server/wm/AppWindowToken;->postWindowRemoveStartingWindowCleanup(Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/AppWindowToken;->removeChild(Lcom/android/server/wm/WindowContainer;)V PLcom/android/server/wm/AppWindowToken;->removeChild(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/AppWindowToken;->removeDeadWindows()V PLcom/android/server/wm/AppWindowToken;->removeIfPossible()V PLcom/android/server/wm/AppWindowToken;->removeImmediately()V -PLcom/android/server/wm/AppWindowToken;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/AppWindowToken;->requestUpdateWallpaperIfNeeded()V -PLcom/android/server/wm/AppWindowToken;->restoreSavedSurfaceForInterestingWindows()V -PLcom/android/server/wm/AppWindowToken;->setAllAppWinAnimators()V -PLcom/android/server/wm/AppWindowToken;->setAppLayoutChanges(ILjava/lang/String;)V -PLcom/android/server/wm/AppWindowToken;->setClientHidden(Z)V +PLcom/android/server/wm/AppWindowToken;->setCanTurnScreenOn(Z)V PLcom/android/server/wm/AppWindowToken;->setDisablePreviewScreenshots(Z)V -PLcom/android/server/wm/AppWindowToken;->setVisibility(Landroid/view/WindowManager$LayoutParams;ZIZZ)Z +PLcom/android/server/wm/AppWindowToken;->shouldFreezeBounds()Z PLcom/android/server/wm/AppWindowToken;->shouldUseAppThemeSnapshot()Z PLcom/android/server/wm/AppWindowToken;->startFreezingScreen()V +PLcom/android/server/wm/AppWindowToken;->startRelaunching()V PLcom/android/server/wm/AppWindowToken;->stopFreezingScreen(ZZ)V -PLcom/android/server/wm/AppWindowToken;->toString()Ljava/lang/String; PLcom/android/server/wm/AppWindowToken;->transferStartingWindow(Landroid/os/IBinder;)Z -PLcom/android/server/wm/AppWindowToken;->updateAllDrawn()V -PLcom/android/server/wm/AppWindowToken;->updateReportedVisibilityLocked()V +PLcom/android/server/wm/AppWindowToken;->unfreezeBounds()V PLcom/android/server/wm/AppWindowToken;->waitingForReplacement()Z PLcom/android/server/wm/BlackFrame$BlackSurface;-><init>(Lcom/android/server/wm/BlackFrame;Landroid/view/SurfaceSession;IIIIII)V -PLcom/android/server/wm/BlackFrame$BlackSurface;->setMatrix(Landroid/graphics/Matrix;)V PLcom/android/server/wm/BlackFrame;-><init>(Landroid/view/SurfaceSession;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZ)V PLcom/android/server/wm/BlackFrame;->kill()V -PLcom/android/server/wm/BlackFrame;->setMatrix(Landroid/graphics/Matrix;)V PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;-><init>(Lcom/android/server/wm/BoundsAnimationController;)V PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;-><init>(Lcom/android/server/wm/BoundsAnimationController;Lcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;)V -PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->animationFinished()V -PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V PLcom/android/server/wm/BoundsAnimationController;->-get2(Lcom/android/server/wm/BoundsAnimationController;)Z PLcom/android/server/wm/BoundsAnimationController;-><init>(Landroid/content/Context;Lcom/android/server/wm/AppTransition;Landroid/os/Handler;Landroid/animation/AnimationHandler;)V PLcom/android/server/wm/DimLayer;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DimLayer$DimLayerUser;ILjava/lang/String;)V -PLcom/android/server/wm/DimLayer;->adjustAlpha(F)V -PLcom/android/server/wm/DimLayer;->adjustBounds()V PLcom/android/server/wm/DimLayer;->adjustLayer(I)V PLcom/android/server/wm/DimLayer;->constructSurface(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/DimLayer;->getBoundsForFullscreen(Landroid/graphics/Rect;)V -PLcom/android/server/wm/DimLayer;->getLayer()I -PLcom/android/server/wm/DimLayer;->getTargetAlpha()F -PLcom/android/server/wm/DimLayer;->hide(J)V -PLcom/android/server/wm/DimLayer;->isAnimating()Z -PLcom/android/server/wm/DimLayer;->setAlpha(F)V -PLcom/android/server/wm/DimLayer;->setBounds(Landroid/graphics/Rect;)V -PLcom/android/server/wm/DimLayer;->setBoundsForFullscreen()V -PLcom/android/server/wm/DimLayer;->setLayer(I)V -PLcom/android/server/wm/DimLayer;->show(IFJ)V -PLcom/android/server/wm/DimLayer;->stepAnimation()Z +PLcom/android/server/wm/DimLayer;->durationEndsEarlier(J)Z +PLcom/android/server/wm/DimLayer;->show()V PLcom/android/server/wm/DimLayerController$DimLayerState;-><init>()V PLcom/android/server/wm/DimLayerController$DimLayerState;-><init>(Lcom/android/server/wm/DimLayerController$DimLayerState;)V PLcom/android/server/wm/DimLayerController;-><init>(Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/DimLayerController;->applyDim(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;Z)V PLcom/android/server/wm/DimLayerController;->applyDimBehind(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;)V PLcom/android/server/wm/DimLayerController;->getContinueDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;)Z PLcom/android/server/wm/DimLayerController;->getDimLayerTag(Lcom/android/server/wm/DimLayer$DimLayerUser;)Ljava/lang/String; -PLcom/android/server/wm/DimLayerController;->getOrCreateDimLayerState(Lcom/android/server/wm/DimLayer$DimLayerUser;)Lcom/android/server/wm/DimLayerController$DimLayerState; PLcom/android/server/wm/DimLayerController;->isDimming()Z PLcom/android/server/wm/DimLayerController;->removeDimLayerUser(Lcom/android/server/wm/DimLayer$DimLayerUser;)V PLcom/android/server/wm/DimLayerController;->setContinueDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;)V PLcom/android/server/wm/DimLayerController;->startDimmingIfNeeded(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;Z)V -PLcom/android/server/wm/DimLayerController;->updateDimLayer(Lcom/android/server/wm/DimLayer$DimLayerUser;)V PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>()V PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>(Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;)V -PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V PLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;-><init>()V -PLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->fillsParent()Z PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/lang/String;)V PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->addChild(Lcom/android/server/wm/WindowToken;)V -PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getOrientation()I -PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_153307(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowToken;)I -PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_153746(Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_153978(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowToken;)I PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;-><init>()V PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;-><init>(Lcom/android/server/wm/DisplayContent$ScreenshotApplicationState;)V PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;->reset(Z)V PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;-><init>()V +PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;->reset()V PLcom/android/server/wm/DisplayContent$TaskStackContainers;-><init>(Lcom/android/server/wm/DisplayContent;)V PLcom/android/server/wm/DisplayContent$TaskStackContainers;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent$TaskStackContainers;)V PLcom/android/server/wm/DisplayContent$TaskStackContainers;->addChild(Lcom/android/server/wm/TaskStack;Z)V PLcom/android/server/wm/DisplayContent$TaskStackContainers;->addStackToDisplay(Lcom/android/server/wm/TaskStack;Z)V -PLcom/android/server/wm/DisplayContent$TaskStackContainers;->findPositionForStack(ILcom/android/server/wm/TaskStack;Z)I -PLcom/android/server/wm/DisplayContent$TaskStackContainers;->getOrientation()I -PLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/TaskStack;Z)V -PLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V +PLcom/android/server/wm/DisplayContent$TaskStackContainers;->isOnTop()Z PLcom/android/server/wm/DisplayContent;->-com_android_server_wm_DisplayContent-mthref-1(Landroid/graphics/Rect;IIIIZI)Landroid/graphics/GraphicBuffer; PLcom/android/server/wm/DisplayContent;->-get0(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/TaskStack; PLcom/android/server/wm/DisplayContent;->-get1(Lcom/android/server/wm/DisplayContent;)I PLcom/android/server/wm/DisplayContent;->-set0(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/TaskStack;)Lcom/android/server/wm/TaskStack; PLcom/android/server/wm/DisplayContent;->-set1(Lcom/android/server/wm/DisplayContent;I)I -PLcom/android/server/wm/DisplayContent;->-set2(Lcom/android/server/wm/DisplayContent;I)I PLcom/android/server/wm/DisplayContent;-><init>(Landroid/view/Display;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowLayersController;Lcom/android/server/wm/WallpaperController;)V PLcom/android/server/wm/DisplayContent;->addStackToDisplay(IZ)Lcom/android/server/wm/TaskStack; PLcom/android/server/wm/DisplayContent;->addWindowToken(Landroid/os/IBinder;Lcom/android/server/wm/WindowToken;)V -PLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIIII)V -PLcom/android/server/wm/DisplayContent;->animateDimLayers()Z -PLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V -PLcom/android/server/wm/DisplayContent;->checkCompleteDeferredRemoval()Z +PLcom/android/server/wm/DisplayContent;->canAddToastWindowForUid(I)Z PLcom/android/server/wm/DisplayContent;->checkWaitingForWindows()Z -PLcom/android/server/wm/DisplayContent;->clearLayoutNeeded()V -PLcom/android/server/wm/DisplayContent;->computeCompatSmallestWidth(ZIIII)I -PLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState; -PLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V -PLcom/android/server/wm/DisplayContent;->computeSizeRangesAndScreenLayout(Landroid/view/DisplayInfo;IZIIIFLandroid/content/res/Configuration;)V PLcom/android/server/wm/DisplayContent;->convertCropForSurfaceFlinger(Landroid/graphics/Rect;III)V PLcom/android/server/wm/DisplayContent;->deltaRotation(II)I -PLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState; -PLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +PLcom/android/server/wm/DisplayContent;->findTaskForResizePoint(II)Lcom/android/server/wm/Task; PLcom/android/server/wm/DisplayContent;->getDisplay()Landroid/view/Display; PLcom/android/server/wm/DisplayContent;->getDisplayMetrics()Landroid/util/DisplayMetrics; -PLcom/android/server/wm/DisplayContent;->getDockedDividerController()Lcom/android/server/wm/DockedStackDividerController; -PLcom/android/server/wm/DisplayContent;->getDockedStackIgnoringVisibility()Lcom/android/server/wm/TaskStack; -PLcom/android/server/wm/DisplayContent;->getLastOrientation()I -PLcom/android/server/wm/DisplayContent;->getNeedsMenu(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;)Z -PLcom/android/server/wm/DisplayContent;->getOrientation()I PLcom/android/server/wm/DisplayContent;->getPinnedStackController()Lcom/android/server/wm/PinnedStackController; -PLcom/android/server/wm/DisplayContent;->getRotation()I -PLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken; PLcom/android/server/wm/DisplayContent;->hasAccess(I)Z PLcom/android/server/wm/DisplayContent;->hasSecureWindowOnScreen()Z PLcom/android/server/wm/DisplayContent;->initializeDisplayBaseInfo()V -PLcom/android/server/wm/DisplayContent;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z PLcom/android/server/wm/DisplayContent;->isDimming()Z -PLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z PLcom/android/server/wm/DisplayContent;->isReady()Z PLcom/android/server/wm/DisplayContent;->isRemovalDeferred()Z -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_109805(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_112425(Landroid/view/WindowManagerPolicy;ZZLcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_112991(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_117361(IILcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_118293(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_118854(Landroid/view/WindowManagerPolicy;Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_130079(IZLandroid/os/IBinder;Landroid/util/MutableBoolean;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20286(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20782(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28225(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/DisplayContent;->layoutAndAssignWindowLayersIfNeeded()V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_112613(Landroid/view/WindowManagerPolicy;ZZLcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_117363(Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_118481(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_119045(Landroid/view/WindowManagerPolicy;Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_44157(Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_49307(ZLcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_99578(ILcom/android/server/wm/WindowState;)Z PLcom/android/server/wm/DisplayContent;->onAppTransitionDone()V PLcom/android/server/wm/DisplayContent;->onConfigurationChanged(Landroid/content/res/Configuration;)V +PLcom/android/server/wm/DisplayContent;->onDescendantOverrideConfigurationChanged()V PLcom/android/server/wm/DisplayContent;->onWindowFreezeTimeout()V -PLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;Z)V -PLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V PLcom/android/server/wm/DisplayContent;->prepareFreezingTaskBounds()V -PLcom/android/server/wm/DisplayContent;->prepareWindowSurfaces()V PLcom/android/server/wm/DisplayContent;->reParentWindowToken(Lcom/android/server/wm/WindowToken;)V -PLcom/android/server/wm/DisplayContent;->reduceCompatConfigWidthSize(IIILandroid/util/DisplayMetrics;III)I -PLcom/android/server/wm/DisplayContent;->reduceConfigLayout(IIFIIII)I PLcom/android/server/wm/DisplayContent;->removeAppToken(Landroid/os/IBinder;)V -PLcom/android/server/wm/DisplayContent;->removeExistingTokensIfPossible()V PLcom/android/server/wm/DisplayContent;->removeWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken; -PLcom/android/server/wm/DisplayContent;->resetDimming()V -PLcom/android/server/wm/DisplayContent;->scheduleToastWindowsTimeoutIfNeededLocked(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/DisplayContent;->screenshotApplications(Landroid/os/IBinder;IIZFZZLcom/android/server/wm/DisplayContent$Screenshoter;)Ljava/lang/Object; PLcom/android/server/wm/DisplayContent;->screenshotApplicationsToBuffer(Landroid/os/IBinder;IIZFZZ)Landroid/graphics/GraphicBuffer; -PLcom/android/server/wm/DisplayContent;->setExitingTokensHasVisible(Z)V PLcom/android/server/wm/DisplayContent;->setInputMethodAnimLayerAdjustment(I)V -PLcom/android/server/wm/DisplayContent;->setInputMethodTarget(Lcom/android/server/wm/WindowState;ZI)V PLcom/android/server/wm/DisplayContent;->setLastOrientation(I)V -PLcom/android/server/wm/DisplayContent;->setLayoutNeeded()V PLcom/android/server/wm/DisplayContent;->startKeyguardExitOnNonAppWindows(ZZ)V -PLcom/android/server/wm/DisplayContent;->stopDimmingIfNeeded()V PLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetrics(III)V PLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded()V -PLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(I)Landroid/view/DisplayInfo; PLcom/android/server/wm/DisplayContent;->updateDisplayInfo()V -PLcom/android/server/wm/DisplayContent;->updateRotationUnchecked(Z)Z PLcom/android/server/wm/DisplayContent;->updateStackBoundsAfterConfigChange(Ljava/util/List;)V -PLcom/android/server/wm/DisplayContent;->updateSystemUiVisibility(II)V -PLcom/android/server/wm/DisplayContent;->updateWallpaperForAnimator(Lcom/android/server/wm/WindowAnimator;)V -PLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator(Lcom/android/server/wm/WindowAnimator;)V PLcom/android/server/wm/DisplayContent;->waitForAllWindowsDrawn()V PLcom/android/server/wm/DisplaySettings;-><init>()V PLcom/android/server/wm/DisplaySettings;->getOverscanLocked(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;)V PLcom/android/server/wm/DisplaySettings;->readSettingsLocked()V PLcom/android/server/wm/DockedStackDividerController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/DockedStackDividerController;->animate(J)Z PLcom/android/server/wm/DockedStackDividerController;->checkMinimizeChanged(Z)V PLcom/android/server/wm/DockedStackDividerController;->getContentWidth()I PLcom/android/server/wm/DockedStackDividerController;->getImeHeightAdjustedFor()I -PLcom/android/server/wm/DockedStackDividerController;->initSnapAlgorithmForRotations()V PLcom/android/server/wm/DockedStackDividerController;->isHomeStackResizable()Z PLcom/android/server/wm/DockedStackDividerController;->isImeHideRequested()Z -PLcom/android/server/wm/DockedStackDividerController;->isMinimizedDock()Z PLcom/android/server/wm/DockedStackDividerController;->loadDimens()V PLcom/android/server/wm/DockedStackDividerController;->notifyAdjustedForImeChanged(ZJ)V PLcom/android/server/wm/DockedStackDividerController;->notifyAppTransitionStarting(Landroid/util/ArraySet;I)V @@ -14859,32 +15994,16 @@ PLcom/android/server/wm/DockedStackDividerController;->notifyDockedDividerVisibi PLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackExistsChanged(Z)V PLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackMinimizedChanged(ZZZ)V PLcom/android/server/wm/DockedStackDividerController;->onConfigurationChanged()V -PLcom/android/server/wm/DockedStackDividerController;->positionDockedStackedDivider(Landroid/graphics/Rect;)V -PLcom/android/server/wm/DockedStackDividerController;->reevaluateVisibility(Z)V PLcom/android/server/wm/DockedStackDividerController;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V PLcom/android/server/wm/DockedStackDividerController;->resetImeHideRequested()V -PLcom/android/server/wm/DockedStackDividerController;->setAdjustedForIme(ZZZLcom/android/server/wm/WindowState;I)V PLcom/android/server/wm/DockedStackDividerController;->setMinimizedDockedStack(ZZ)V PLcom/android/server/wm/DockedStackDividerController;->setTouchRegion(Landroid/graphics/Rect;)V PLcom/android/server/wm/DockedStackDividerController;->setWindow(Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/DockedStackDividerController;->wasVisible()Z PLcom/android/server/wm/InputConsumerImpl;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;Landroid/view/InputChannel;)V PLcom/android/server/wm/InputConsumerImpl;->getLayerLw(I)I -PLcom/android/server/wm/InputConsumerImpl;->layout(II)V -PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->-wrap0(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;)V PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;)V -PLcom/android/server/wm/InputMonitor;->-get1(Lcom/android/server/wm/InputMonitor;)Z -PLcom/android/server/wm/InputMonitor;->-get3(Lcom/android/server/wm/InputMonitor;)Z -PLcom/android/server/wm/InputMonitor;->-get4(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/input/InputWindowHandle; -PLcom/android/server/wm/InputMonitor;->-get6(Lcom/android/server/wm/InputMonitor;)[Lcom/android/server/input/InputWindowHandle; -PLcom/android/server/wm/InputMonitor;->-get7(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowManagerService; -PLcom/android/server/wm/InputMonitor;->-get8(Lcom/android/server/wm/InputMonitor;)Landroid/graphics/Rect; -PLcom/android/server/wm/InputMonitor;->-set0(Lcom/android/server/wm/InputMonitor;Z)Z -PLcom/android/server/wm/InputMonitor;->-set1(Lcom/android/server/wm/InputMonitor;Z)Z -PLcom/android/server/wm/InputMonitor;->-set2(Lcom/android/server/wm/InputMonitor;Z)Z -PLcom/android/server/wm/InputMonitor;->-set3(Lcom/android/server/wm/InputMonitor;Z)Z -PLcom/android/server/wm/InputMonitor;->-wrap1(Lcom/android/server/wm/InputMonitor;)V PLcom/android/server/wm/InputMonitor;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/InputMonitor;->addInputConsumer(Ljava/lang/String;Lcom/android/server/wm/InputConsumerImpl;)V PLcom/android/server/wm/InputMonitor;->createInputConsumer(Ljava/lang/String;Landroid/view/InputChannel;)V @@ -14892,21 +16011,21 @@ PLcom/android/server/wm/InputMonitor;->destroyInputConsumer(Ljava/lang/String;)Z PLcom/android/server/wm/InputMonitor;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; PLcom/android/server/wm/InputMonitor;->disposeInputConsumer(Lcom/android/server/wm/InputConsumerImpl;)Z PLcom/android/server/wm/InputMonitor;->freezeInputDispatchingLw()V -PLcom/android/server/wm/InputMonitor;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J -PLcom/android/server/wm/InputMonitor;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I -PLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V PLcom/android/server/wm/InputMonitor;->notifyConfigurationChanged()V PLcom/android/server/wm/InputMonitor;->pauseDispatchingLw(Lcom/android/server/wm/WindowToken;)V PLcom/android/server/wm/InputMonitor;->resumeDispatchingLw(Lcom/android/server/wm/WindowToken;)V PLcom/android/server/wm/InputMonitor;->setEventDispatchingLw(Z)V -PLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/AppWindowToken;)V -PLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V -PLcom/android/server/wm/InputMonitor;->setUpdateInputWindowsNeededLw()V PLcom/android/server/wm/InputMonitor;->thawInputDispatchingLw()V PLcom/android/server/wm/InputMonitor;->updateInputDispatchModeLw()V -PLcom/android/server/wm/InputMonitor;->updateInputWindowsLw(Z)V PLcom/android/server/wm/InputMonitor;->waitForInputDevicesReady(J)Z +PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;-><init>(Lcom/android/server/wm/KeyguardDisableHandler;Landroid/os/Handler;)V +PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;->acquired()V +PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;->updateAllowState()V +PLcom/android/server/wm/KeyguardDisableHandler;->-get0()Ljava/lang/String; +PLcom/android/server/wm/KeyguardDisableHandler;->-get1(Lcom/android/server/wm/KeyguardDisableHandler;)I +PLcom/android/server/wm/KeyguardDisableHandler;->-set0(Lcom/android/server/wm/KeyguardDisableHandler;I)I PLcom/android/server/wm/KeyguardDisableHandler;-><init>(Landroid/content/Context;Landroid/view/WindowManagerPolicy;)V +PLcom/android/server/wm/KeyguardDisableHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;-><init>(Lcom/android/server/wm/PinnedStackController;)V PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;-><init>(Lcom/android/server/wm/PinnedStackController;Lcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;)V PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->lambda$-com_android_server_wm_PinnedStackController$PinnedStackControllerCallback_4973(I)V @@ -14918,80 +16037,50 @@ PLcom/android/server/wm/PinnedStackController;->-get2(Lcom/android/server/wm/Pin PLcom/android/server/wm/PinnedStackController;->-set0(Lcom/android/server/wm/PinnedStackController;I)I PLcom/android/server/wm/PinnedStackController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V PLcom/android/server/wm/PinnedStackController;->dpToPx(FLandroid/util/DisplayMetrics;)I -PLcom/android/server/wm/PinnedStackController;->getDefaultBounds()Landroid/graphics/Rect; -PLcom/android/server/wm/PinnedStackController;->getInsetBounds(Landroid/graphics/Rect;)V -PLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect; -PLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;Z)Landroid/graphics/Rect; PLcom/android/server/wm/PinnedStackController;->isValidPictureInPictureAspectRatio(F)Z PLcom/android/server/wm/PinnedStackController;->notifyActionsChanged(Ljava/util/List;)V PLcom/android/server/wm/PinnedStackController;->notifyImeVisibilityChanged(ZI)V PLcom/android/server/wm/PinnedStackController;->notifyMinimizeChanged(Z)V -PLcom/android/server/wm/PinnedStackController;->notifyMovementBoundsChanged(Z)V PLcom/android/server/wm/PinnedStackController;->onConfigurationChanged()V PLcom/android/server/wm/PinnedStackController;->onDisplayInfoChanged()V PLcom/android/server/wm/PinnedStackController;->registerPinnedStackListener(Landroid/view/IPinnedStackListener;)V -PLcom/android/server/wm/PinnedStackController;->reloadResources()V -PLcom/android/server/wm/PinnedStackController;->setAdjustedForIme(ZI)V -PLcom/android/server/wm/PinnedStackController;->transformBoundsToAspectRatio(Landroid/graphics/Rect;FZ)Landroid/graphics/Rect; PLcom/android/server/wm/PointerEventDispatcher;-><init>(Landroid/view/InputChannel;)V PLcom/android/server/wm/PointerEventDispatcher;->registerInputEventListener(Landroid/view/WindowManagerPolicy$PointerEventListener;)V PLcom/android/server/wm/RootWindowContainer$MyHandler;-><init>(Lcom/android/server/wm/RootWindowContainer;Landroid/os/Looper;)V -PLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V PLcom/android/server/wm/RootWindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction(ZII)V PLcom/android/server/wm/RootWindowContainer;->closeSystemDialogs(Ljava/lang/String;)V -PLcom/android/server/wm/RootWindowContainer;->computeFocusedWindow()Lcom/android/server/wm/WindowState; -PLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z PLcom/android/server/wm/RootWindowContainer;->createDisplayContent(Landroid/view/Display;)Lcom/android/server/wm/DisplayContent; PLcom/android/server/wm/RootWindowContainer;->getDisplaysInFocusOrder(Landroid/util/SparseIntArray;)V -PLcom/android/server/wm/RootWindowContainer;->getWindowTokenDisplay(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayContent; -PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_17105(IZLcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_6986(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_7267(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_17861(IZLcom/android/server/wm/WindowState;)V PLcom/android/server/wm/RootWindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V PLcom/android/server/wm/RootWindowContainer;->prepareFreezingTaskBounds()V -PLcom/android/server/wm/RootWindowContainer;->removeReplacedWindows()V PLcom/android/server/wm/RootWindowContainer;->setDisplayOverrideConfigurationIfNeeded(Landroid/content/res/Configuration;I)[I PLcom/android/server/wm/RootWindowContainer;->setGlobalConfigurationIfNeeded(Landroid/content/res/Configuration;)[I PLcom/android/server/wm/RootWindowContainer;->setSecureSurfaceState(IZ)V +PLcom/android/server/wm/RootWindowContainer;->toBrightnessOverride(F)I PLcom/android/server/wm/RootWindowContainer;->updateStackBoundsAfterConfigChange()[I PLcom/android/server/wm/ScreenRotationAnimation;-><init>(Landroid/content/Context;Lcom/android/server/wm/DisplayContent;Landroid/view/SurfaceSession;ZZZLcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/ScreenRotationAnimation;->createRotationMatrix(IIILandroid/graphics/Matrix;)V PLcom/android/server/wm/ScreenRotationAnimation;->dismiss(Landroid/view/SurfaceSession;JFIIII)Z -PLcom/android/server/wm/ScreenRotationAnimation;->getEnterTransformation()Landroid/view/animation/Transformation; -PLcom/android/server/wm/ScreenRotationAnimation;->hasAnimations()Z PLcom/android/server/wm/ScreenRotationAnimation;->hasScreenshot()Z -PLcom/android/server/wm/ScreenRotationAnimation;->isAnimating()Z PLcom/android/server/wm/ScreenRotationAnimation;->isRotating()Z PLcom/android/server/wm/ScreenRotationAnimation;->kill()V PLcom/android/server/wm/ScreenRotationAnimation;->setRotationInTransaction(I)V -PLcom/android/server/wm/ScreenRotationAnimation;->setSnapshotTransformInTransaction(Landroid/graphics/Matrix;F)V +PLcom/android/server/wm/ScreenRotationAnimation;->setRotationInTransaction(ILandroid/view/SurfaceSession;JFII)Z PLcom/android/server/wm/ScreenRotationAnimation;->startAnimation(Landroid/view/SurfaceSession;JFIIZII)Z -PLcom/android/server/wm/ScreenRotationAnimation;->stepAnimation(J)Z PLcom/android/server/wm/ScreenRotationAnimation;->stepAnimationLocked(J)Z -PLcom/android/server/wm/ScreenRotationAnimation;->updateSurfacesInTransaction()V -PLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)V PLcom/android/server/wm/Session;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I PLcom/android/server/wm/Session;->binderDied()V PLcom/android/server/wm/Session;->cancelAlertWindowNotification()V -PLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;)V -PLcom/android/server/wm/Session;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V PLcom/android/server/wm/Session;->getInTouchMode()Z PLcom/android/server/wm/Session;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId; PLcom/android/server/wm/Session;->killSessionLocked()V -PLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V -PLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z -PLcom/android/server/wm/Session;->onWindowSurfaceVisibilityChanged(Lcom/android/server/wm/WindowSurfaceController;ZI)V -PLcom/android/server/wm/Session;->performHapticFeedback(Landroid/view/IWindow;IZ)Z -PLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I PLcom/android/server/wm/Session;->remove(Landroid/view/IWindow;)V -PLcom/android/server/wm/Session;->sendWallpaperCommand(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle; PLcom/android/server/wm/Session;->setHasOverlayUi(Z)V +PLcom/android/server/wm/Session;->setInTouchMode(Z)V PLcom/android/server/wm/Session;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V PLcom/android/server/wm/Session;->setTransparentRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V PLcom/android/server/wm/Session;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V -PLcom/android/server/wm/Session;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V -PLcom/android/server/wm/Session;->windowAddedLocked(Ljava/lang/String;)V PLcom/android/server/wm/Session;->windowRemovedLocked()V PLcom/android/server/wm/SnapshotStartingData;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/app/ActivityManager$TaskSnapshot;)V PLcom/android/server/wm/SnapshotStartingData;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;)Landroid/view/WindowManagerPolicy$StartingSurface; @@ -15000,88 +16089,65 @@ PLcom/android/server/wm/SplashScreenStartingData;->createStartingSurface(Lcom/an PLcom/android/server/wm/StackWindowController$H;-><init>(Ljava/lang/ref/WeakReference;Landroid/os/Looper;)V PLcom/android/server/wm/StackWindowController;-><init>(ILcom/android/server/wm/StackWindowListener;IZLandroid/graphics/Rect;)V PLcom/android/server/wm/StackWindowController;-><init>(ILcom/android/server/wm/StackWindowListener;IZLandroid/graphics/Rect;Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/StackWindowController;->getBounds(Landroid/graphics/Rect;)V PLcom/android/server/wm/StackWindowController;->getRawBounds(Landroid/graphics/Rect;)V -PLcom/android/server/wm/StackWindowController;->positionChildAtTop(Lcom/android/server/wm/TaskWindowContainerController;Z)V +PLcom/android/server/wm/StackWindowController;->positionChildAtBottom(Lcom/android/server/wm/TaskWindowContainerController;)V PLcom/android/server/wm/StartingData;-><init>(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/Task;-><init>(ILcom/android/server/wm/TaskStack;ILcom/android/server/wm/WindowManagerService;Landroid/graphics/Rect;Landroid/content/res/Configuration;IZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/TaskWindowContainerController;)V +PLcom/android/server/wm/SurfaceControlWithBackground;->setOpaque(Z)V +PLcom/android/server/wm/SurfaceControlWithBackground;->setSize(II)V +PLcom/android/server/wm/SurfaceControlWithBackground;->setTransparentRegionHint(Landroid/graphics/Region;)V PLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/AppWindowToken;I)V -PLcom/android/server/wm/Task;->cancelTaskThumbnailTransition()V -PLcom/android/server/wm/Task;->cancelTaskWindowTransition()V -PLcom/android/server/wm/Task;->fillsParent()Z PLcom/android/server/wm/Task;->forceWindowsScaleable(Z)V -PLcom/android/server/wm/Task;->getAdjustedAddPosition(I)I -PLcom/android/server/wm/Task;->getBounds(Landroid/graphics/Rect;)V PLcom/android/server/wm/Task;->getController()Lcom/android/server/wm/TaskWindowContainerController; +PLcom/android/server/wm/Task;->getLayerForDim(Lcom/android/server/wm/WindowStateAnimator;II)I PLcom/android/server/wm/Task;->getTaskDescription()Landroid/app/ActivityManager$TaskDescription; +PLcom/android/server/wm/Task;->getTopFullscreenAppToken()Lcom/android/server/wm/AppWindowToken; PLcom/android/server/wm/Task;->hasWindowsAlive()Z -PLcom/android/server/wm/Task;->isDragResizing()Z -PLcom/android/server/wm/Task;->isFloating()Z -PLcom/android/server/wm/Task;->isHomeTask()Z -PLcom/android/server/wm/Task;->onParentSet()V PLcom/android/server/wm/Task;->positionChildAt(ILcom/android/server/wm/AppWindowToken;Z)V +PLcom/android/server/wm/Task;->prepareFreezingBounds()V PLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/WindowContainer;)V PLcom/android/server/wm/Task;->removeIfPossible()V PLcom/android/server/wm/Task;->removeImmediately()V -PLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;Landroid/content/res/Configuration;)I PLcom/android/server/wm/Task;->setSendingToBottom(Z)V -PLcom/android/server/wm/Task;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V PLcom/android/server/wm/Task;->shouldDeferRemoval()Z -PLcom/android/server/wm/Task;->showForAllUsers()Z PLcom/android/server/wm/Task;->updateDisplayInfo(Lcom/android/server/wm/DisplayContent;)V PLcom/android/server/wm/TaskSnapshotCache$CacheEntry;-><init>(Landroid/app/ActivityManager$TaskSnapshot;Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/TaskSnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotLoader;)V -PLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot; +PLcom/android/server/wm/TaskSnapshotCache;->onAppDied(Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/TaskSnapshotCache;->onAppRemoved(Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/TaskSnapshotCache;->onTaskRemoved(I)V -PLcom/android/server/wm/TaskSnapshotCache;->putSnapshot(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$TaskSnapshot;)V PLcom/android/server/wm/TaskSnapshotCache;->removeRunningEntry(I)V PLcom/android/server/wm/TaskSnapshotCache;->tryRestoreFromDisk(IIZ)Landroid/app/ActivityManager$TaskSnapshot; -PLcom/android/server/wm/TaskSnapshotController;->-com_android_server_wm_TaskSnapshotController-mthref-0(I)Ljava/io/File; PLcom/android/server/wm/TaskSnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/TaskSnapshotController;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Landroid/view/WindowManagerPolicy$StartingSurface; PLcom/android/server/wm/TaskSnapshotController;->drawAppThemeSnapshot(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot; -PLcom/android/server/wm/TaskSnapshotController;->getClosingTasks(Landroid/util/ArraySet;Landroid/util/ArraySet;)V -PLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot; PLcom/android/server/wm/TaskSnapshotController;->getSnapshotMode(Lcom/android/server/wm/Task;)I -PLcom/android/server/wm/TaskSnapshotController;->handleClosingApps(Landroid/util/ArraySet;)V PLcom/android/server/wm/TaskSnapshotController;->minRect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/graphics/Rect; PLcom/android/server/wm/TaskSnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/AppWindowToken;Z)V PLcom/android/server/wm/TaskSnapshotController;->notifyTaskRemovedFromRecents(II)V +PLcom/android/server/wm/TaskSnapshotController;->onAppDied(Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/TaskSnapshotController;->onAppRemoved(Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/TaskSnapshotController;->onTransitionStarting()V PLcom/android/server/wm/TaskSnapshotController;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V -PLcom/android/server/wm/TaskSnapshotController;->setPersisterPaused(Z)V PLcom/android/server/wm/TaskSnapshotController;->shouldDisableSnapshots()Z -PLcom/android/server/wm/TaskSnapshotController;->snapshotTask(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot; -PLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;)V PLcom/android/server/wm/TaskSnapshotController;->systemReady()V PLcom/android/server/wm/TaskSnapshotLoader;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;)V PLcom/android/server/wm/TaskSnapshotLoader;->loadTask(IIZ)Landroid/app/ActivityManager$TaskSnapshot; PLcom/android/server/wm/TaskSnapshotPersister$1;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Ljava/lang/String;)V -PLcom/android/server/wm/TaskSnapshotPersister$1;->run()V PLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;II)V PLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;->write()V PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Landroid/util/ArraySet;[I)V -PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I -PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;IILandroid/app/ActivityManager$TaskSnapshot;)V PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onDequeuedLocked()V PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onQueuedLocked()V PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->write()V -PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeBuffer()Z -PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeProto()Z PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;)V PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onDequeuedLocked()V PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onQueuedLocked()V -PLcom/android/server/wm/TaskSnapshotPersister;->-get1(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/lang/Object; PLcom/android/server/wm/TaskSnapshotPersister;->-get2(Lcom/android/server/wm/TaskSnapshotPersister;)Z PLcom/android/server/wm/TaskSnapshotPersister;->-get3(Lcom/android/server/wm/TaskSnapshotPersister;)Landroid/util/ArraySet; PLcom/android/server/wm/TaskSnapshotPersister;->-get4(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque; -PLcom/android/server/wm/TaskSnapshotPersister;->-get5(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque; -PLcom/android/server/wm/TaskSnapshotPersister;->-set0(Lcom/android/server/wm/TaskSnapshotPersister;Z)Z PLcom/android/server/wm/TaskSnapshotPersister;->-wrap0(Lcom/android/server/wm/TaskSnapshotPersister;I)Z PLcom/android/server/wm/TaskSnapshotPersister;->-wrap1(Lcom/android/server/wm/TaskSnapshotPersister;I)Ljava/io/File; PLcom/android/server/wm/TaskSnapshotPersister;->-wrap2(Lcom/android/server/wm/TaskSnapshotPersister;II)V @@ -15089,15 +16155,9 @@ PLcom/android/server/wm/TaskSnapshotPersister;-><init>(Lcom/android/server/wm/Ta PLcom/android/server/wm/TaskSnapshotPersister;->createDirectory(I)Z PLcom/android/server/wm/TaskSnapshotPersister;->deleteSnapshot(II)V PLcom/android/server/wm/TaskSnapshotPersister;->ensureStoreQueueDepthLocked()V -PLcom/android/server/wm/TaskSnapshotPersister;->getBitmapFile(II)Ljava/io/File; -PLcom/android/server/wm/TaskSnapshotPersister;->getDirectory(I)Ljava/io/File; -PLcom/android/server/wm/TaskSnapshotPersister;->getProtoFile(II)Ljava/io/File; -PLcom/android/server/wm/TaskSnapshotPersister;->getReducedResolutionBitmapFile(II)Ljava/io/File; PLcom/android/server/wm/TaskSnapshotPersister;->onTaskRemovedFromRecents(II)V PLcom/android/server/wm/TaskSnapshotPersister;->persistSnapshot(IILandroid/app/ActivityManager$TaskSnapshot;)V PLcom/android/server/wm/TaskSnapshotPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[I)V -PLcom/android/server/wm/TaskSnapshotPersister;->sendToQueueLocked(Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V -PLcom/android/server/wm/TaskSnapshotPersister;->setPaused(Z)V PLcom/android/server/wm/TaskSnapshotPersister;->start()V PLcom/android/server/wm/TaskSnapshotSurface$1;-><init>(Landroid/os/Looper;)V PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;-><init>(IIIII)V @@ -15110,8 +16170,8 @@ PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->setInse PLcom/android/server/wm/TaskSnapshotSurface$Window;-><init>()V PLcom/android/server/wm/TaskSnapshotSurface$Window;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZI)V PLcom/android/server/wm/TaskSnapshotSurface$Window;->setOuter(Lcom/android/server/wm/TaskSnapshotSurface;)V +PLcom/android/server/wm/TaskSnapshotSurface;->-get1(Lcom/android/server/wm/TaskSnapshotSurface;)I PLcom/android/server/wm/TaskSnapshotSurface;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotSurface$Window;Landroid/view/Surface;Landroid/app/ActivityManager$TaskSnapshot;Ljava/lang/CharSequence;IIIIIILandroid/graphics/Rect;I)V -PLcom/android/server/wm/TaskSnapshotSurface;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/wm/TaskSnapshotSurface; PLcom/android/server/wm/TaskSnapshotSurface;->drawSizeMatchSnapshot(Landroid/graphics/GraphicBuffer;)V PLcom/android/server/wm/TaskSnapshotSurface;->drawSnapshot()V PLcom/android/server/wm/TaskSnapshotSurface;->remove()V @@ -15119,273 +16179,167 @@ PLcom/android/server/wm/TaskSnapshotSurface;->reportDrawn()V PLcom/android/server/wm/TaskSnapshotSurface;->setFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V PLcom/android/server/wm/TaskStack;-><init>(Lcom/android/server/wm/WindowManagerService;I)V PLcom/android/server/wm/TaskStack;->addTask(Lcom/android/server/wm/Task;IZZ)V -PLcom/android/server/wm/TaskStack;->checkCompleteDeferredRemoval()Z -PLcom/android/server/wm/TaskStack;->computeMinPosition(II)I PLcom/android/server/wm/TaskStack;->findHomeTask()Lcom/android/server/wm/Task; -PLcom/android/server/wm/TaskStack;->findPositionForTask(Lcom/android/server/wm/Task;IZZ)I -PLcom/android/server/wm/TaskStack;->getDisplayInfo()Landroid/view/DisplayInfo; PLcom/android/server/wm/TaskStack;->getRawFullscreen()Z PLcom/android/server/wm/TaskStack;->hasMovementAnimations()Z PLcom/android/server/wm/TaskStack;->isAdjustedForIme()Z -PLcom/android/server/wm/TaskStack;->isAnimatingBounds()Z -PLcom/android/server/wm/TaskStack;->isAnimatingForIme()Z -PLcom/android/server/wm/TaskStack;->isAttachedToDisplay()Z -PLcom/android/server/wm/TaskStack;->isForceScaled()Z -PLcom/android/server/wm/TaskStack;->isMinimizedDockAndHomeStackResizable()Z PLcom/android/server/wm/TaskStack;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;Z)V -PLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;ZZ)V PLcom/android/server/wm/TaskStack;->prepareFreezingTaskBounds()V PLcom/android/server/wm/TaskStack;->removeChild(Lcom/android/server/wm/Task;)V PLcom/android/server/wm/TaskStack;->removeChild(Lcom/android/server/wm/WindowContainer;)V -PLcom/android/server/wm/TaskStack;->resetAdjustedForIme(Z)V -PLcom/android/server/wm/TaskStack;->setAdjustedBounds(Landroid/graphics/Rect;)V PLcom/android/server/wm/TaskStack;->setBounds(Landroid/graphics/Rect;)Z PLcom/android/server/wm/TaskStack;->toShortString()Ljava/lang/String; PLcom/android/server/wm/TaskStack;->updateBoundsAfterConfigChange()Z PLcom/android/server/wm/TaskStack;->updateDisplayInfo(Landroid/graphics/Rect;)V PLcom/android/server/wm/TaskTapPointerEventListener;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V -PLcom/android/server/wm/TaskTapPointerEventListener;->setTouchExcludeRegion(Landroid/graphics/Region;)V PLcom/android/server/wm/TaskWindowContainerController$H;-><init>(Ljava/lang/ref/WeakReference;Landroid/os/Looper;)V PLcom/android/server/wm/TaskWindowContainerController$H;->handleMessage(Landroid/os/Message;)V PLcom/android/server/wm/TaskWindowContainerController;-><init>(ILcom/android/server/wm/TaskWindowContainerListener;Lcom/android/server/wm/StackWindowController;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZZZLandroid/app/ActivityManager$TaskDescription;)V -PLcom/android/server/wm/TaskWindowContainerController;-><init>(ILcom/android/server/wm/TaskWindowContainerListener;Lcom/android/server/wm/StackWindowController;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/TaskWindowContainerController;->cancelThumbnailTransition()V -PLcom/android/server/wm/TaskWindowContainerController;->cancelWindowTransition()V PLcom/android/server/wm/TaskWindowContainerController;->createTask(ILcom/android/server/wm/TaskStack;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZLandroid/app/ActivityManager$TaskDescription;)Lcom/android/server/wm/Task; -PLcom/android/server/wm/TaskWindowContainerController;->getBounds(Landroid/graphics/Rect;)V PLcom/android/server/wm/TaskWindowContainerController;->positionChildAt(Lcom/android/server/wm/AppWindowContainerController;I)V PLcom/android/server/wm/TaskWindowContainerController;->removeContainer()V PLcom/android/server/wm/TaskWindowContainerController;->reportSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V -PLcom/android/server/wm/TaskWindowContainerController;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V -PLcom/android/server/wm/UnknownAppVisibilityController;->-com_android_server_wm_UnknownAppVisibilityController-mthref-0()V PLcom/android/server/wm/UnknownAppVisibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/UnknownAppVisibilityController;->allResolved()Z PLcom/android/server/wm/UnknownAppVisibilityController;->appRemovedOrHidden(Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/UnknownAppVisibilityController;->clear()V PLcom/android/server/wm/UnknownAppVisibilityController;->notifyAppResumedFinished(Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/UnknownAppVisibilityController;->notifyLaunched(Lcom/android/server/wm/AppWindowToken;)V -PLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/AppWindowToken;)V -PLcom/android/server/wm/UnknownAppVisibilityController;->notifyVisibilitiesUpdated()V PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>()V PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>(Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V -PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->reset()V PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setTopWallpaper(Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setUseTopWallpaperAsTarget(Z)V PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setWallpaperTarget(Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/WallpaperController;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WallpaperController;->addWallpaperToken(Lcom/android/server/wm/WallpaperWindowToken;)V -PLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows(Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/WallpaperController;->adjustWallpaperWindowsForAppTransitionIfNeeded(Lcom/android/server/wm/DisplayContent;Landroid/util/ArraySet;)V PLcom/android/server/wm/WallpaperController;->clearLastWallpaperTimeoutTime()V -PLcom/android/server/wm/WallpaperController;->findWallpaperTarget(Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/WallpaperController;->getAnimLayerAdjustment()I PLcom/android/server/wm/WallpaperController;->hideDeferredWallpapersIfNeeded()V -PLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/WallpaperController;->isBelowWallpaperTarget(Lcom/android/server/wm/WindowState;)Z PLcom/android/server/wm/WallpaperController;->isWallpaperTargetAnimating()Z -PLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z -PLcom/android/server/wm/WallpaperController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/WallpaperController;->lambda$-com_android_server_wm_WallpaperController_22771(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/WallpaperController;->lambda$-com_android_server_wm_WallpaperController_4687(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/WallpaperController;->sendWindowWallpaperCommand(Lcom/android/server/wm/WindowState;Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle; PLcom/android/server/wm/WallpaperController;->setWindowWallpaperPosition(Lcom/android/server/wm/WindowState;FFFF)V -PLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;IIZ)Z PLcom/android/server/wm/WallpaperController;->updateWallpaperOffsetLocked(Lcom/android/server/wm/WindowState;Z)V -PLcom/android/server/wm/WallpaperController;->updateWallpaperTokens(Z)V -PLcom/android/server/wm/WallpaperController;->updateWallpaperWindowsTarget(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V -PLcom/android/server/wm/WallpaperController;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V -PLcom/android/server/wm/WallpaperController;->wallpaperTransitionReady()Z PLcom/android/server/wm/WallpaperVisibilityListeners;-><init>()V -PLcom/android/server/wm/WallpaperVisibilityListeners;->notifyWallpaperVisibilityChanged(Lcom/android/server/wm/DisplayContent;)V PLcom/android/server/wm/WallpaperVisibilityListeners;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V PLcom/android/server/wm/WallpaperWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZLcom/android/server/wm/DisplayContent;Z)V -PLcom/android/server/wm/WallpaperWindowToken;->hasVisibleNotDrawnWallpaper()Z -PLcom/android/server/wm/WallpaperWindowToken;->hideWallpaperToken(ZLjava/lang/String;)V -PLcom/android/server/wm/WallpaperWindowToken;->sendWindowWallpaperCommand(Ljava/lang/String;IIILandroid/os/Bundle;Z)V PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset(IIZ)V -PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperWindows(ZI)V PLcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;-><init>(Lcom/android/server/wm/WindowAnimator;)V PLcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;-><init>(Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;)V PLcom/android/server/wm/WindowAnimator;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowAnimator;->addDisplayLocked(I)V -PLcom/android/server/wm/WindowAnimator;->getPendingLayoutChanges(I)I PLcom/android/server/wm/WindowAnimator;->isAnimating()Z PLcom/android/server/wm/WindowAnimator;->isAnimationScheduled()Z -PLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_3911()V +PLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_3844()V PLcom/android/server/wm/WindowAnimator;->requestRemovalOfReplacedWindows(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V -PLcom/android/server/wm/WindowAnimator;->setAnimating(Z)V -PLcom/android/server/wm/WindowAnimator;->setPendingLayoutChanges(II)V PLcom/android/server/wm/WindowAnimator;->setScreenRotationAnimationLocked(ILcom/android/server/wm/ScreenRotationAnimation;)V PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;)V PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;)V -PLcom/android/server/wm/WindowContainer;-><init>()V PLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;I)V -PLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;Ljava/util/Comparator;)V -PLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I -PLcom/android/server/wm/WindowContainer;->getController()Lcom/android/server/wm/WindowContainerController; -PLcom/android/server/wm/WindowContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration; -PLcom/android/server/wm/WindowContainer;->getOrientation()I PLcom/android/server/wm/WindowContainer;->getOverrideConfiguration()Landroid/content/res/Configuration; -PLcom/android/server/wm/WindowContainer;->getParents(Ljava/util/LinkedList;)V -PLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer; -PLcom/android/server/wm/WindowContainer;->hasContentToDisplay()Z -PLcom/android/server/wm/WindowContainer;->isVisible()Z -PLcom/android/server/wm/WindowContainer;->onAppTransitionDone()V -PLcom/android/server/wm/WindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V PLcom/android/server/wm/WindowContainer;->onDescendantOverrideConfigurationChanged()V PLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/WindowContainer;->onMergedOverrideConfigurationChanged()V -PLcom/android/server/wm/WindowContainer;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V -PLcom/android/server/wm/WindowContainer;->onParentSet()V -PLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V -PLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V PLcom/android/server/wm/WindowContainer;->removeIfPossible()V -PLcom/android/server/wm/WindowContainer;->removeImmediately()V -PLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V -PLcom/android/server/wm/WindowContainer;->setController(Lcom/android/server/wm/WindowContainerController;)V PLcom/android/server/wm/WindowContainer;->setOrientation(I)V -PLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V -PLcom/android/server/wm/WindowContainer;->setVisibleBeforeClientHidden()V PLcom/android/server/wm/WindowContainerController;-><init>(Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowContainerController;->removeContainer()V PLcom/android/server/wm/WindowContainerController;->setContainer(Lcom/android/server/wm/WindowContainer;)V PLcom/android/server/wm/WindowHashMap;-><init>()V PLcom/android/server/wm/WindowLayersController;-><init>(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/WindowLayersController;->adjustSpecialWindows()V PLcom/android/server/wm/WindowLayersController;->assignAndIncreaseLayerIfNeeded(Lcom/android/server/wm/WindowState;I)I -PLcom/android/server/wm/WindowLayersController;->assignWindowLayers(Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/WindowLayersController;->reset()V -PLcom/android/server/wm/WindowList;-><init>()V +PLcom/android/server/wm/WindowList;->addFirst(Ljava/lang/Object;)V PLcom/android/server/wm/WindowList;->peekFirst()Ljava/lang/Object; -PLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object; PLcom/android/server/wm/WindowManagerService$1;-><init>(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/wm/WindowManagerService$2;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowManagerService$2;->onAppTransitionCancelledLocked(I)V -PLcom/android/server/wm/WindowManagerService$2;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V PLcom/android/server/wm/WindowManagerService$3;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowManagerService$3;->run()V PLcom/android/server/wm/WindowManagerService$4;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowManagerService$5;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowManagerService$7;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;)V PLcom/android/server/wm/WindowManagerService$H;-><init>(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V PLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService$LocalService;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->addWindowToken(Landroid/os/IBinder;II)V +PLcom/android/server/wm/WindowManagerService$LocalService;->getFocusedWindowToken()Landroid/os/IBinder; PLcom/android/server/wm/WindowManagerService$LocalService;->getInputMethodWindowVisibleHeight()I -PLcom/android/server/wm/WindowManagerService$LocalService;->isDockedDividerResizing()Z PLcom/android/server/wm/WindowManagerService$LocalService;->isHardKeyboardAvailable()Z PLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardGoingAway()Z PLcom/android/server/wm/WindowManagerService$LocalService;->registerAppTransitionListener(Landroid/view/WindowManagerInternal$AppTransitionListener;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->removeWindowToken(Landroid/os/IBinder;ZI)V PLcom/android/server/wm/WindowManagerService$LocalService;->requestTraversalFromDisplayManager()V PLcom/android/server/wm/WindowManagerService$LocalService;->setOnHardKeyboardStatusChangeListener(Landroid/view/WindowManagerInternal$OnHardKeyboardStatusChangeListener;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->setWindowsForAccessibilityCallback(Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V PLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodWindowStatus(Landroid/os/IBinder;ZZLandroid/os/IBinder;)V PLcom/android/server/wm/WindowManagerService$LocalService;->waitForAllWindowsDrawn(Ljava/lang/Runnable;J)V PLcom/android/server/wm/WindowManagerService$MousePositionTracker;-><init>()V PLcom/android/server/wm/WindowManagerService$MousePositionTracker;-><init>(Lcom/android/server/wm/WindowManagerService$MousePositionTracker;)V -PLcom/android/server/wm/WindowManagerService$MousePositionTracker;->onPointerEvent(Landroid/view/MotionEvent;)V PLcom/android/server/wm/WindowManagerService$RotationWatcher;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IRotationWatcher;Landroid/os/IBinder$DeathRecipient;I)V PLcom/android/server/wm/WindowManagerService$SettingsObserver;-><init>(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService;->-get2(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/KeyguardDisableHandler; PLcom/android/server/wm/WindowManagerService;->-wrap0(Lcom/android/server/wm/WindowManagerService;)Z +PLcom/android/server/wm/WindowManagerService;->-wrap1(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/WindowState; PLcom/android/server/wm/WindowManagerService;->-wrap4(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowManagerService;->-wrap6(Lcom/android/server/wm/WindowManagerService;)V PLcom/android/server/wm/WindowManagerService;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)V -PLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I PLcom/android/server/wm/WindowManagerService;->addWindowToken(Landroid/os/IBinder;II)V -PLcom/android/server/wm/WindowManagerService;->applyAnimationLocked(Lcom/android/server/wm/AppWindowToken;Landroid/view/WindowManager$LayoutParams;IZZ)Z PLcom/android/server/wm/WindowManagerService;->canDispatchPointerEvents()Z PLcom/android/server/wm/WindowManagerService;->checkBootAnimationCompleteLocked()Z -PLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z -PLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V PLcom/android/server/wm/WindowManagerService;->closeSystemDialogs(Ljava/lang/String;)V PLcom/android/server/wm/WindowManagerService;->computeNewConfiguration(I)Landroid/content/res/Configuration; PLcom/android/server/wm/WindowManagerService;->computeNewConfigurationLocked(I)Landroid/content/res/Configuration; PLcom/android/server/wm/WindowManagerService;->configureDisplayPolicyLocked(Lcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/WindowManagerService;->containsDismissKeyguardWindow(Landroid/os/IBinder;)Z -PLcom/android/server/wm/WindowManagerService;->containsShowWhenLockedWindow(Landroid/os/IBinder;)Z -PLcom/android/server/wm/WindowManagerService;->continueSurfaceLayout()V PLcom/android/server/wm/WindowManagerService;->createDisplayContentLocked(Landroid/view/Display;)V PLcom/android/server/wm/WindowManagerService;->createInputConsumer(Ljava/lang/String;Landroid/view/InputChannel;)V -PLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/Surface;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I PLcom/android/server/wm/WindowManagerService;->createWatermarkInTransaction()V -PLcom/android/server/wm/WindowManagerService;->deferSurfaceLayout()V PLcom/android/server/wm/WindowManagerService;->destroyInputConsumer(Ljava/lang/String;)Z -PLcom/android/server/wm/WindowManagerService;->destroyPreservedSurfaceLocked()V PLcom/android/server/wm/WindowManagerService;->detectSafeMode()Z -PLcom/android/server/wm/WindowManagerService;->dipToPixel(ILandroid/util/DisplayMetrics;)I +PLcom/android/server/wm/WindowManagerService;->disableKeyguard(Landroid/os/IBinder;Ljava/lang/String;)V PLcom/android/server/wm/WindowManagerService;->displayReady()V PLcom/android/server/wm/WindowManagerService;->displayReady(I)V +PLcom/android/server/wm/WindowManagerService;->doesAddToastWindowRequireToken(Ljava/lang/String;ILcom/android/server/wm/WindowState;)Z PLcom/android/server/wm/WindowManagerService;->enableScreenAfterBoot()V PLcom/android/server/wm/WindowManagerService;->enableScreenIfNeeded()V -PLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V -PLcom/android/server/wm/WindowManagerService;->endProlongedAnimations()V -PLcom/android/server/wm/WindowManagerService;->excludeWindowTypeFromTapOutTask(I)Z -PLcom/android/server/wm/WindowManagerService;->executeAppTransition()V -PLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V PLcom/android/server/wm/WindowManagerService;->getBaseDisplaySize(ILandroid/graphics/Point;)V PLcom/android/server/wm/WindowManagerService;->getCameraLensCoverState()I -PLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F PLcom/android/server/wm/WindowManagerService;->getDefaultDisplayRotation()I PLcom/android/server/wm/WindowManagerService;->getDisplaysInFocusOrder(Landroid/util/SparseIntArray;)V PLcom/android/server/wm/WindowManagerService;->getDockedStackSide()I +PLcom/android/server/wm/WindowManagerService;->getFocusedWindowLocked()Lcom/android/server/wm/WindowState; PLcom/android/server/wm/WindowManagerService;->getForcedDisplayDensityForUserLocked(I)I PLcom/android/server/wm/WindowManagerService;->getInitialDisplaySize(ILandroid/graphics/Point;)V -PLcom/android/server/wm/WindowManagerService;->getInputMethodWindowLw()Landroid/view/WindowManagerPolicy$WindowState; PLcom/android/server/wm/WindowManagerService;->getInputMonitor()Lcom/android/server/wm/InputMonitor; PLcom/android/server/wm/WindowManagerService;->getInstance()Lcom/android/server/wm/WindowManagerService; -PLcom/android/server/wm/WindowManagerService;->getLidState()I PLcom/android/server/wm/WindowManagerService;->getPendingAppTransition()I -PLcom/android/server/wm/WindowManagerService;->getStableInsets(ILandroid/graphics/Rect;)V -PLcom/android/server/wm/WindowManagerService;->getStableInsetsLocked(ILandroid/graphics/Rect;)V PLcom/android/server/wm/WindowManagerService;->getTaskSnapshot(IIZ)Landroid/app/ActivityManager$TaskSnapshot; -PLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleLocked()F PLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleLocked()F -PLcom/android/server/wm/WindowManagerService;->getWindowDisplayFrame(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Rect;)V PLcom/android/server/wm/WindowManagerService;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId; PLcom/android/server/wm/WindowManagerService;->getWindowManagerLock()Ljava/lang/Object; -PLcom/android/server/wm/WindowManagerService;->handleAnimatingStoppedAndTransitionLocked()I PLcom/android/server/wm/WindowManagerService;->hasNavigationBar()Z +PLcom/android/server/wm/WindowManagerService;->hasWideColorGamutSupport()Z PLcom/android/server/wm/WindowManagerService;->hideBootMessagesLocked()V PLcom/android/server/wm/WindowManagerService;->inKeyguardRestrictedInputMode()Z PLcom/android/server/wm/WindowManagerService;->initPolicy()V -PLcom/android/server/wm/WindowManagerService;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z -PLcom/android/server/wm/WindowManagerService;->isCurrentProfileLocked(I)Z -PLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z PLcom/android/server/wm/WindowManagerService;->isKeyguardSecure()Z +PLcom/android/server/wm/WindowManagerService;->isRotationFrozen()Z PLcom/android/server/wm/WindowManagerService;->isSafeModeEnabled()Z -PLcom/android/server/wm/WindowManagerService;->isScreenCaptureDisabledLocked(I)Z -PLcom/android/server/wm/WindowManagerService;->isSecureLocked(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/WindowManagerService;->isShowingDream()Z -PLcom/android/server/wm/WindowManagerService;->lambda$-com_android_server_wm_WindowManagerService_128943(Ljava/lang/Runnable;)V -PLcom/android/server/wm/WindowManagerService;->lambda$-com_android_server_wm_WindowManagerService_40672(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)V +PLcom/android/server/wm/WindowManagerService;->lambda$-com_android_server_wm_WindowManagerService_42198(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)V PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)Lcom/android/server/wm/WindowManagerService; -PLcom/android/server/wm/WindowManagerService;->makeWindowFreezingScreenIfNeededLocked(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/WindowManagerService;->monitor()V -PLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchesCleared(Landroid/os/IBinder;)V -PLcom/android/server/wm/WindowManagerService;->notifyAppResumedFinished(Landroid/os/IBinder;)V -PLcom/android/server/wm/WindowManagerService;->notifyFocusChanged()V +PLcom/android/server/wm/WindowManagerService;->notifyAppRelaunching(Landroid/os/IBinder;)V +PLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchingFinished(Landroid/os/IBinder;)V PLcom/android/server/wm/WindowManagerService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;)V PLcom/android/server/wm/WindowManagerService;->notifyKeyguardTrustedChanged()V PLcom/android/server/wm/WindowManagerService;->notifyTaskRemovedFromRecents(II)V PLcom/android/server/wm/WindowManagerService;->onDisplayChanged(I)V PLcom/android/server/wm/WindowManagerService;->onKeyguardOccludedChanged(Z)V -PLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V PLcom/android/server/wm/WindowManagerService;->onSystemUiStarted()V -PLcom/android/server/wm/WindowManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLcom/android/server/wm/WindowManagerService;->openSession(Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)Landroid/view/IWindowSession; PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransitionClipReveal(IIII)V -PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V PLcom/android/server/wm/WindowManagerService;->performBootTimeout()V PLcom/android/server/wm/WindowManagerService;->performEnableScreen()V -PLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZ)V -PLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZIZ)V PLcom/android/server/wm/WindowManagerService;->prepareNoneTransitionForRelaunching(Lcom/android/server/wm/AppWindowToken;)V PLcom/android/server/wm/WindowManagerService;->prepareWindowReplacementTransition(Lcom/android/server/wm/AppWindowToken;)Z -PLcom/android/server/wm/WindowManagerService;->prolongAnimationsFromSpecs([Landroid/view/AppTransitionAnimationSpec;Z)V +PLcom/android/server/wm/WindowManagerService;->queryWideColorGamutSupport()Z PLcom/android/server/wm/WindowManagerService;->readForcedDisplayPropertiesLocked(Lcom/android/server/wm/DisplayContent;)V PLcom/android/server/wm/WindowManagerService;->reconfigureDisplayLocked(Lcom/android/server/wm/DisplayContent;)V PLcom/android/server/wm/WindowManagerService;->registerAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V @@ -15395,231 +16349,594 @@ PLcom/android/server/wm/WindowManagerService;->registerPointerEventListener(Land PLcom/android/server/wm/WindowManagerService;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V PLcom/android/server/wm/WindowManagerService;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z PLcom/android/server/wm/WindowManagerService;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V -PLcom/android/server/wm/WindowManagerService;->removeWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V -PLcom/android/server/wm/WindowManagerService;->requestTraversal()V -PLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V +PLcom/android/server/wm/WindowManagerService;->removeWindowToken(Landroid/os/IBinder;I)V PLcom/android/server/wm/WindowManagerService;->sendNewConfiguration(I)V PLcom/android/server/wm/WindowManagerService;->setAnimatorDurationScale(F)V PLcom/android/server/wm/WindowManagerService;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V PLcom/android/server/wm/WindowManagerService;->setEventDispatching(Z)V -PLcom/android/server/wm/WindowManagerService;->setFocusTaskRegionLocked(Lcom/android/server/wm/AppWindowToken;)V -PLcom/android/server/wm/WindowManagerService;->setFocusedApp(Landroid/os/IBinder;Z)V PLcom/android/server/wm/WindowManagerService;->setForceResizableTasks(Z)V -PLcom/android/server/wm/WindowManagerService;->setHoldScreenLocked(Lcom/android/server/wm/Session;)V PLcom/android/server/wm/WindowManagerService;->setInputMethodWindowLocked(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V PLcom/android/server/wm/WindowManagerService;->setKeyguardGoingAway(Z)V PLcom/android/server/wm/WindowManagerService;->setNewDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)[I -PLcom/android/server/wm/WindowManagerService;->setRecentsVisibility(Z)V PLcom/android/server/wm/WindowManagerService;->setScreenCaptureDisabled(IZ)V PLcom/android/server/wm/WindowManagerService;->setSupportsPictureInPicture(Z)V PLcom/android/server/wm/WindowManagerService;->setTransparentRegionWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Region;)V PLcom/android/server/wm/WindowManagerService;->showEmulatorDisplayOverlayIfNeeded()V PLcom/android/server/wm/WindowManagerService;->startFreezingDisplayLocked(ZIILcom/android/server/wm/DisplayContent;)V -PLcom/android/server/wm/WindowManagerService;->statusBarVisibilityChanged(I)V -PLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V -PLcom/android/server/wm/WindowManagerService;->stopUsingSavedSurfaceLocked()V PLcom/android/server/wm/WindowManagerService;->systemReady()V -PLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;ZZ)Z +PLcom/android/server/wm/WindowManagerService;->thawRotation()V PLcom/android/server/wm/WindowManagerService;->unregisterAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V PLcom/android/server/wm/WindowManagerService;->updateCircularDisplayMaskIfNeeded()V -PLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z -PLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration; -PLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokensLocked(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration; PLcom/android/server/wm/WindowManagerService;->updateRotation(ZZ)V PLcom/android/server/wm/WindowManagerService;->updateRotationUnchecked(ZZ)V -PLcom/android/server/wm/WindowManagerService;->updateStatusBarVisibilityLocked(I)Z PLcom/android/server/wm/WindowManagerService;->watchRotation(Landroid/view/IRotationWatcher;I)I -PLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState; -PLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState; PLcom/android/server/wm/WindowManagerThreadPriorityBooster;-><init>()V -PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setAppTransitionRunning(Z)V -PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->updatePriorityLocked()V PLcom/android/server/wm/WindowState$1;-><init>()V PLcom/android/server/wm/WindowState$DeathRecipient;-><init>(Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/WindowState$DeathRecipient;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$DeathRecipient;)V +PLcom/android/server/wm/WindowState$DeathRecipient;->binderDied()V PLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;-><init>()V -PLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->reset()V -PLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$WindowId;)V -PLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;IILandroid/view/WindowManager$LayoutParams;IIZ)V -PLcom/android/server/wm/WindowState;->addWinAnimatorToList(Ljava/util/ArrayList;)V -PLcom/android/server/wm/WindowState;->adjustStartingWindowFlags()V -PLcom/android/server/wm/WindowState;->applyAdjustForImeIfNeeded()V -PLcom/android/server/wm/WindowState;->applyInsets(Landroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +PLcom/android/server/wm/WindowState;->-wrap1(Lcom/android/server/wm/WindowState;Z)V PLcom/android/server/wm/WindowState;->attach()V -PLcom/android/server/wm/WindowState;->canBeImeTarget()Z -PLcom/android/server/wm/WindowState;->canRestoreSurface()Z -PLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V PLcom/android/server/wm/WindowState;->clearAnimatingFlags()Z PLcom/android/server/wm/WindowState;->clearAnimatingWithSavedSurface()Z -PLcom/android/server/wm/WindowState;->clearHasSavedSurface()V -PLcom/android/server/wm/WindowState;->clearWasVisibleBeforeClientHidden()V -PLcom/android/server/wm/WindowState;->destroyOrSaveSurfaceUnchecked()V -PLcom/android/server/wm/WindowState;->destroySavedSurface()V -PLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z -PLcom/android/server/wm/WindowState;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZI)V -PLcom/android/server/wm/WindowState;->dispatchWallpaperVisibility(Z)V -PLcom/android/server/wm/WindowState;->disposeInputChannel()V PLcom/android/server/wm/WindowState;->forAllWindowBottomToTop(Lcom/android/internal/util/ToBooleanFunction;)Z -PLcom/android/server/wm/WindowState;->forAllWindowTopToBottom(Lcom/android/internal/util/ToBooleanFunction;)Z -PLcom/android/server/wm/WindowState;->getBackdropFrame(Landroid/graphics/Rect;)Landroid/graphics/Rect; PLcom/android/server/wm/WindowState;->getContentFrameLw()Landroid/graphics/Rect; -PLcom/android/server/wm/WindowState;->getDisplayFrameLw()Landroid/graphics/Rect; PLcom/android/server/wm/WindowState;->getFrameLw()Landroid/graphics/Rect; PLcom/android/server/wm/WindowState;->getGivenContentInsetsLw()Landroid/graphics/Rect; PLcom/android/server/wm/WindowState;->getGivenInsetsPendingLw()Z PLcom/android/server/wm/WindowState;->getGivenVisibleInsetsLw()Landroid/graphics/Rect; -PLcom/android/server/wm/WindowState;->getHighestAnimLayer()I -PLcom/android/server/wm/WindowState;->getName()Ljava/lang/String; -PLcom/android/server/wm/WindowState;->getNeedsMenuLw(Landroid/view/WindowManagerPolicy$WindowState;)Z PLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String; PLcom/android/server/wm/WindowState;->getOwningUid()I PLcom/android/server/wm/WindowState;->getReplacingWindow()Lcom/android/server/wm/WindowState; -PLcom/android/server/wm/WindowState;->getSurfaceLayer()I -PLcom/android/server/wm/WindowState;->getSystemUiVisibility()I +PLcom/android/server/wm/WindowState;->getRotationAnimationHint()I PLcom/android/server/wm/WindowState;->getVisibleFrameLw()Landroid/graphics/Rect; PLcom/android/server/wm/WindowState;->hasAppShownWindows()Z -PLcom/android/server/wm/WindowState;->hasContentToDisplay()Z PLcom/android/server/wm/WindowState;->hasDrawnLw()Z PLcom/android/server/wm/WindowState;->hasVisibleNotDrawnWallpaper()Z -PLcom/android/server/wm/WindowState;->hideLw(Z)Z -PLcom/android/server/wm/WindowState;->hideLw(ZZ)Z -PLcom/android/server/wm/WindowState;->hideWallpaperWindow(ZLjava/lang/String;)V -PLcom/android/server/wm/WindowState;->isAnimatingInvisibleWithSavedSurface()Z -PLcom/android/server/wm/WindowState;->isAnimatingWithSavedSurface()Z +PLcom/android/server/wm/WindowState;->hidePermanentlyLw()V PLcom/android/server/wm/WindowState;->isClosing()Z PLcom/android/server/wm/WindowState;->isDrawFinishedLw()Z -PLcom/android/server/wm/WindowState;->isInputMethodWindow()Z -PLcom/android/server/wm/WindowState;->isInteresting()Z -PLcom/android/server/wm/WindowState;->isLaidOut()Z -PLcom/android/server/wm/WindowState;->isReadyForDisplay()Z -PLcom/android/server/wm/WindowState;->isResizedWhileNotDragResizingReported()Z -PLcom/android/server/wm/WindowState;->isRtl()Z -PLcom/android/server/wm/WindowState;->isVisibleNow()Z -PLcom/android/server/wm/WindowState;->isVoiceInteraction()Z -PLcom/android/server/wm/WindowState;->isWinVisibleLw()Z PLcom/android/server/wm/WindowState;->isWindowAnimationSet()Z -PLcom/android/server/wm/WindowState;->layoutInParentFrame()Z -PLcom/android/server/wm/WindowState;->logPerformShow(Ljava/lang/String;)V -PLcom/android/server/wm/WindowState;->markSavedSurfaceExiting()V -PLcom/android/server/wm/WindowState;->mightAffectAllDrawn(Z)Z -PLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)Z -PLcom/android/server/wm/WindowState;->onExitAnimationDone()V +PLcom/android/server/wm/WindowState;->onSetAppExiting()Z +PLcom/android/server/wm/WindowState;->onStartFreezingScreen()V PLcom/android/server/wm/WindowState;->onStopFreezingScreen()Z -PLcom/android/server/wm/WindowState;->openInputChannel(Landroid/view/InputChannel;)V -PLcom/android/server/wm/WindowState;->performShowLocked()Z -PLcom/android/server/wm/WindowState;->prelayout()V -PLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Landroid/util/MergedConfiguration;Z)V -PLcom/android/server/wm/WindowState;->relayoutVisibleWindow(Landroid/util/MergedConfiguration;III)I +PLcom/android/server/wm/WindowState;->orientationChangeTimedOut()V PLcom/android/server/wm/WindowState;->removeIfPossible()V -PLcom/android/server/wm/WindowState;->removeIfPossible(Z)V -PLcom/android/server/wm/WindowState;->removeImmediately()V -PLcom/android/server/wm/WindowState;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(ZZ)V -PLcom/android/server/wm/WindowState;->reportResized()V -PLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V -PLcom/android/server/wm/WindowState;->restoreSavedSurface()Z -PLcom/android/server/wm/WindowState;->scheduleAnimationIfDimming()V -PLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V -PLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V PLcom/android/server/wm/WindowState;->setDragResizing()V -PLcom/android/server/wm/WindowState;->setHasSurface(Z)V -PLcom/android/server/wm/WindowState;->setReplacementWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z -PLcom/android/server/wm/WindowState;->setRequestedSize(II)V +PLcom/android/server/wm/WindowState;->setForceHideNonSystemOverlayWindowIfNeeded(Z)V +PLcom/android/server/wm/WindowState;->setOrientationChanging(Z)V PLcom/android/server/wm/WindowState;->setResizedWhileNotDragResizing(Z)V PLcom/android/server/wm/WindowState;->setShowToOwnerOnlyLocked(Z)V -PLcom/android/server/wm/WindowState;->setVisibleBeforeClientHidden()V -PLcom/android/server/wm/WindowState;->setWindowScale(II)V PLcom/android/server/wm/WindowState;->setupWindowForRemoveOnExit()V -PLcom/android/server/wm/WindowState;->shouldSaveSurface()Z -PLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z -PLcom/android/server/wm/WindowState;->updateLastInsetValues()V -PLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V -PLcom/android/server/wm/WindowState;->usesRelativeZOrdering()Z +PLcom/android/server/wm/WindowState;->shouldKeepVisibleDeadAppWindow()Z PLcom/android/server/wm/WindowState;->waitingForReplacement()Z -PLcom/android/server/wm/WindowStateAnimator;-><init>(Lcom/android/server/wm/WindowState;)V -PLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z -PLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V PLcom/android/server/wm/WindowStateAnimator;->clearAnimation()V -PLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z -PLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked(II)Lcom/android/server/wm/WindowSurfaceController; PLcom/android/server/wm/WindowStateAnimator;->destroyDeferredSurfaceLocked()V -PLcom/android/server/wm/WindowStateAnimator;->destroyPreservedSurfaceLocked()V -PLcom/android/server/wm/WindowStateAnimator;->destroySurface()V -PLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked()V -PLcom/android/server/wm/WindowStateAnimator;->detachChildren()V -PLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked()Z -PLcom/android/server/wm/WindowStateAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J -PLcom/android/server/wm/WindowStateAnimator;->getLayerStack()I -PLcom/android/server/wm/WindowStateAnimator;->hide(Ljava/lang/String;)V -PLcom/android/server/wm/WindowStateAnimator;->isDummyAnimation()Z -PLcom/android/server/wm/WindowStateAnimator;->isWindowAnimationSet()Z PLcom/android/server/wm/WindowStateAnimator;->markPreservedSurfaceForDestroy()V -PLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V PLcom/android/server/wm/WindowStateAnimator;->setAnimation(Landroid/view/animation/Animation;)V -PLcom/android/server/wm/WindowStateAnimator;->setAnimation(Landroid/view/animation/Animation;JI)V -PLcom/android/server/wm/WindowStateAnimator;->setMoveAnimation(II)V PLcom/android/server/wm/WindowStateAnimator;->setOpaqueLocked(Z)V PLcom/android/server/wm/WindowStateAnimator;->setTransparentRegionHintLocked(Landroid/graphics/Region;)V -PLcom/android/server/wm/WindowStateAnimator;->showSurfaceRobustlyLocked()Z -PLcom/android/server/wm/WindowStateAnimator;->stepAnimation(J)Z PLcom/android/server/wm/WindowStateAnimator;->tryChangeFormatInPlaceLocked()Z -PLcom/android/server/wm/WindowSurfaceController;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILcom/android/server/wm/WindowStateAnimator;II)V -PLcom/android/server/wm/WindowSurfaceController;->destroyInTransaction()V -PLcom/android/server/wm/WindowSurfaceController;->detachChildren()V PLcom/android/server/wm/WindowSurfaceController;->getLayer()I -PLcom/android/server/wm/WindowSurfaceController;->getShown()Z -PLcom/android/server/wm/WindowSurfaceController;->getSurface(Landroid/view/Surface;)V -PLcom/android/server/wm/WindowSurfaceController;->hideInTransaction(Ljava/lang/String;)V -PLcom/android/server/wm/WindowSurfaceController;->hideSurface()V -PLcom/android/server/wm/WindowSurfaceController;->prepareToShowInTransaction(FFFFFZ)Z -PLcom/android/server/wm/WindowSurfaceController;->setCropInTransaction(Landroid/graphics/Rect;Z)V -PLcom/android/server/wm/WindowSurfaceController;->setFinalCropInTransaction(Landroid/graphics/Rect;)V -PLcom/android/server/wm/WindowSurfaceController;->setLayer(I)V -PLcom/android/server/wm/WindowSurfaceController;->setLayerStackInTransaction(I)V PLcom/android/server/wm/WindowSurfaceController;->setOpaque(Z)V -PLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V -PLcom/android/server/wm/WindowSurfaceController;->setSizeInTransaction(IIZ)Z PLcom/android/server/wm/WindowSurfaceController;->setTransparentRegionHint(Landroid/graphics/Region;)V -PLcom/android/server/wm/WindowSurfaceController;->showRobustlyInTransaction()Z -PLcom/android/server/wm/WindowSurfaceController;->showSurface()Z -PLcom/android/server/wm/WindowSurfaceController;->updateVisibility()Z PLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;-><init>()V PLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;-><init>(Lcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;)V PLcom/android/server/wm/WindowSurfacePlacer;-><init>(Lcom/android/server/wm/WindowManagerService;)V -PLcom/android/server/wm/WindowSurfacePlacer;->canBeWallpaperTarget(Landroid/util/ArraySet;)Z -PLcom/android/server/wm/WindowSurfacePlacer;->continueLayout()V -PLcom/android/server/wm/WindowSurfacePlacer;->createThumbnailAppAnimator(ILcom/android/server/wm/AppWindowToken;II)V -PLcom/android/server/wm/WindowSurfacePlacer;->deferLayout()V -PLcom/android/server/wm/WindowSurfacePlacer;->destroyAfterTransaction(Landroid/view/SurfaceControl;)V -PLcom/android/server/wm/WindowSurfacePlacer;->handleAppTransitionReadyLocked()I -PLcom/android/server/wm/WindowSurfacePlacer;->handleClosingApps(ILandroid/view/WindowManager$LayoutParams;ZLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;)V PLcom/android/server/wm/WindowSurfacePlacer;->handleNonAppWindowsInTransition(II)V -PLcom/android/server/wm/WindowSurfacePlacer;->handleOpeningApps(ILandroid/view/WindowManager$LayoutParams;ZI)Lcom/android/server/wm/AppWindowToken; PLcom/android/server/wm/WindowSurfacePlacer;->isInLayout()Z -PLcom/android/server/wm/WindowSurfacePlacer;->lambda$-com_android_server_wm_WindowSurfacePlacer_5259()V -PLcom/android/server/wm/WindowSurfacePlacer;->maybeUpdateTransitToWallpaper(IZZ)I -PLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V -PLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V PLcom/android/server/wm/WindowSurfacePlacer;->processApplicationsAnimatingInPlace(I)V -PLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V -PLcom/android/server/wm/WindowSurfacePlacer;->transitionGoodToGo(I)Z PLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;Z)V -PLcom/android/server/wm/WindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V PLcom/android/server/wm/WindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken; -PLcom/android/server/wm/WindowToken;->getAnimLayerAdjustment()I -PLcom/android/server/wm/WindowToken;->getHighestAnimLayer()I -PLcom/android/server/wm/WindowToken;->getReplacingWindow()Lcom/android/server/wm/WindowState; PLcom/android/server/wm/WindowToken;->isEmpty()Z PLcom/android/server/wm/WindowToken;->lambda$-com_android_server_wm_WindowToken_3278(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I -PLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V PLcom/android/server/wm/WindowToken;->removeAllWindowsIfPossible()V PLcom/android/server/wm/WindowToken;->removeImmediately()V PLcom/android/server/wm/WindowToken;->setExiting()V -PLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z PLcom/android/server/wm/animation/ClipRectLRAnimation;-><init>(IIII)V -PLcom/android/server/wm/animation/ClipRectLRAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V PLcom/android/server/wm/animation/ClipRectTBAnimation;-><init>(IIIIIILandroid/view/animation/Interpolator;)V -PLcom/android/server/wm/animation/ClipRectTBAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V -PLcom/android/server/wm/animation/ClipRectTBAnimation;->getTransformation(JLandroid/view/animation/Transformation;)Z +PLcom/android/timezone/distro/installer/TimeZoneDistroInstaller;-><init>(Ljava/lang/String;Ljava/io/File;Ljava/io/File;)V +SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->$m$2()V +SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V +SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->run()V +SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->$m$0()V +SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;-><init>(B)V +SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->run()V +SPLcom/android/server/AppOpsService$1;-><init>(Lcom/android/server/AppOpsService;)V +SPLcom/android/server/AppOpsService$Callback;-><init>(Lcom/android/server/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;)V +SPLcom/android/server/AppOpsService$Ops;-><init>(Ljava/lang/String;Lcom/android/server/AppOpsService$UidState;Z)V +SPLcom/android/server/AppOpsService$UidState;-><init>(I)V +SPLcom/android/server/AppOpsService;-><init>(Ljava/io/File;Landroid/os/Handler;)V +SPLcom/android/server/AppOpsService;->publish(Landroid/content/Context;)V +SPLcom/android/server/AppOpsService;->readUidOps(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/DisplayThread;-><init>()V +SPLcom/android/server/DisplayThread;->ensureThreadLocked()V +SPLcom/android/server/DisplayThread;->get()Lcom/android/server/DisplayThread; +SPLcom/android/server/DisplayThread;->getHandler()Landroid/os/Handler; +SPLcom/android/server/FgThread;-><init>()V +SPLcom/android/server/FgThread;->ensureThreadLocked()V +SPLcom/android/server/FgThread;->get()Lcom/android/server/FgThread; +SPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler; +SPLcom/android/server/IntentResolver$1;-><init>()V +SPLcom/android/server/IntentResolver;-><init>()V +SPLcom/android/server/IntentResolver;->filterSet()Ljava/util/Set; +SPLcom/android/server/IoThread;-><init>()V +SPLcom/android/server/IoThread;->ensureThreadLocked()V +SPLcom/android/server/IoThread;->getHandler()Landroid/os/Handler; +SPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;I)Ljava/lang/Object; +SPLcom/android/server/LockGuard;->installNewLock(I)Ljava/lang/Object; +SPLcom/android/server/RecoverySystemService$BinderService;-><init>(Lcom/android/server/RecoverySystemService;)V +SPLcom/android/server/RecoverySystemService$BinderService;-><init>(Lcom/android/server/RecoverySystemService;Lcom/android/server/RecoverySystemService$BinderService;)V +SPLcom/android/server/RecoverySystemService;-><init>(Landroid/content/Context;)V +SPLcom/android/server/RecoverySystemService;->onStart()V +SPLcom/android/server/RescueParty$BootThreshold;-><init>()V +SPLcom/android/server/RescueParty$Threshold;-><init>(IIJ)V +SPLcom/android/server/RescueParty;->isDisabled()Z +SPLcom/android/server/RescueParty;->isUsbActive()Z +SPLcom/android/server/RescueParty;->noteBoot(Landroid/content/Context;)V +SPLcom/android/server/ServiceThread;-><init>(Ljava/lang/String;IZ)V +SPLcom/android/server/ServiceThread;->run()V +SPLcom/android/server/SystemServer;->-com_android_server_SystemServer-mthref-0()V +SPLcom/android/server/SystemServer;-><init>()V +SPLcom/android/server/SystemServer;->createSystemContext()V +SPLcom/android/server/SystemServer;->main([Ljava/lang/String;)V +SPLcom/android/server/SystemServer;->performPendingShutdown()V +SPLcom/android/server/SystemServer;->run()V +SPLcom/android/server/SystemServer;->startBootstrapServices()V +SPLcom/android/server/SystemServerInitThreadPool;-><init>()V +SPLcom/android/server/SystemServerInitThreadPool;->get()Lcom/android/server/SystemServerInitThreadPool; +SPLcom/android/server/SystemServerInitThreadPool;->lambda$-com_android_server_SystemServerInitThreadPool_2249(Ljava/lang/String;Ljava/lang/Runnable;)V +SPLcom/android/server/SystemServerInitThreadPool;->submit(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future; +SPLcom/android/server/SystemService;-><init>(Landroid/content/Context;)V +SPLcom/android/server/SystemService;->onBootPhase(I)V +SPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;)V +SPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;Z)V +SPLcom/android/server/SystemService;->publishLocalService(Ljava/lang/Class;Ljava/lang/Object;)V +SPLcom/android/server/SystemServiceManager;-><init>(Landroid/content/Context;)V +SPLcom/android/server/SystemServiceManager;->setRuntimeRestarted(Z)V +SPLcom/android/server/ThreadPriorityBooster$1;-><init>(Lcom/android/server/ThreadPriorityBooster;)V +SPLcom/android/server/ThreadPriorityBooster;-><init>(II)V +SPLcom/android/server/UiThread;-><init>()V +SPLcom/android/server/UiThread;->ensureThreadLocked()V +SPLcom/android/server/UiThread;->get()Lcom/android/server/UiThread; +SPLcom/android/server/UiThread;->getHandler()Landroid/os/Handler; +SPLcom/android/server/UiThread;->run()V +SPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>()V +SPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>(Lcom/android/server/Watchdog$BinderThreadMonitor;)V +SPLcom/android/server/Watchdog$HandlerChecker;-><init>(Lcom/android/server/Watchdog;Landroid/os/Handler;Ljava/lang/String;J)V +SPLcom/android/server/Watchdog$HandlerChecker;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V +SPLcom/android/server/Watchdog$OpenFdMonitor;-><init>(Ljava/io/File;Ljava/io/File;)V +SPLcom/android/server/Watchdog$OpenFdMonitor;->create()Lcom/android/server/Watchdog$OpenFdMonitor; +SPLcom/android/server/Watchdog;-><init>()V +SPLcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V +SPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;)V +SPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;J)V +SPLcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog; +SPLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;-><init>(B)V +SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->$m$0(Ljava/lang/Runnable;)Ljava/lang/Thread; +SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;-><init>()V +SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +SPLcom/android/server/am/ActiveServices$1;-><init>(Lcom/android/server/am/ActiveServices;)V +SPLcom/android/server/am/ActiveServices;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerConstants;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;)V +SPLcom/android/server/am/ActivityManagerConstants;->computeEmptyProcessLimit(I)I +SPLcom/android/server/am/ActivityManagerConstants;->updateMaxCachedProcesses()V +SPLcom/android/server/am/ActivityManagerService$1;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$4;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;)V +SPLcom/android/server/am/ActivityManagerService$Injector;-><init>()V +SPLcom/android/server/am/ActivityManagerService$Injector;->getAppOpsService(Ljava/io/File;Landroid/os/Handler;)Lcom/android/server/AppOpsService; +SPLcom/android/server/am/ActivityManagerService$Injector;->getUiHandler(Lcom/android/server/am/ActivityManagerService;)Landroid/os/Handler; +SPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->getAMSLock()Ljava/lang/Object; +SPLcom/android/server/am/ActivityManagerService$KillHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V +SPLcom/android/server/am/ActivityManagerService$Lifecycle;->getService()Lcom/android/server/am/ActivityManagerService; +SPLcom/android/server/am/ActivityManagerService$Lifecycle;->onStart()V +SPLcom/android/server/am/ActivityManagerService$LocalService;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$MainHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityManagerService$UiHandler;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;-><init>()V +SPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;-><init>(Lcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)V +SPLcom/android/server/am/ActivityManagerService;->-wrap10(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService;-><init>(Landroid/content/Context;)V +SPLcom/android/server/am/ActivityManagerService;->createStackSupervisor()Lcom/android/server/am/ActivityStackSupervisor; +SPLcom/android/server/am/ActivityManagerService;->initPowerManagement()V +SPLcom/android/server/am/ActivityManagerService;->setInstaller(Lcom/android/server/pm/Installer;)V +SPLcom/android/server/am/ActivityManagerService;->setSystemServiceManager(Lcom/android/server/SystemServiceManager;)V +SPLcom/android/server/am/ActivityManagerService;->start()V +SPLcom/android/server/am/ActivityMetricsLogger;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Landroid/content/Context;)V +SPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityStackSupervisor$FindTaskResult;-><init>()V +SPLcom/android/server/am/ActivityStackSupervisor;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityStackSupervisor;->getChildCount()I +SPLcom/android/server/am/ActivityStackSupervisor;->initPowerManagement()V +SPLcom/android/server/am/ActivityStackSupervisor;->setRecentTasks(Lcom/android/server/am/RecentTasks;)V +SPLcom/android/server/am/ActivityStartInterceptor;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V +SPLcom/android/server/am/ActivityStarter;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V +SPLcom/android/server/am/AppErrors;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/BatteryExternalStatsWorker$1;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V +SPLcom/android/server/am/BatteryExternalStatsWorker$2;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V +SPLcom/android/server/am/BatteryExternalStatsWorker$2;->run()V +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get0(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/String; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get1(Lcom/android/server/am/BatteryExternalStatsWorker;)Lcom/android/internal/os/BatteryStatsImpl; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get2(Lcom/android/server/am/BatteryExternalStatsWorker;)Landroid/util/IntArray; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get3(Lcom/android/server/am/BatteryExternalStatsWorker;)I +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get4(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/Object; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-set0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/util/concurrent/Future;)Ljava/util/concurrent/Future; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-set1(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;)Ljava/lang/String; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-set2(Lcom/android/server/am/BatteryExternalStatsWorker;I)I +SPLcom/android/server/am/BatteryExternalStatsWorker;->-wrap0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;I)V +SPLcom/android/server/am/BatteryExternalStatsWorker;-><init>(Landroid/content/Context;Lcom/android/internal/os/BatteryStatsImpl;)V +SPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$-com_android_server_am_BatteryExternalStatsWorker_2654(Ljava/lang/Runnable;)Ljava/lang/Thread; +SPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future; +SPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleWrite()Ljava/util/concurrent/Future; +SPLcom/android/server/am/BatteryStatsService$1;-><init>(Lcom/android/server/am/BatteryStatsService;)V +SPLcom/android/server/am/BatteryStatsService$1;->getUserIds()[I +SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;-><init>(Lcom/android/server/am/BatteryStatsService;)V +SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V +SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String; +SPLcom/android/server/am/BatteryStatsService;->-wrap0(Ljava/nio/ByteBuffer;)I +SPLcom/android/server/am/BatteryStatsService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Handler;)V +SPLcom/android/server/am/BatteryStatsService;->initPowerManagement()V +SPLcom/android/server/am/BatteryStatsService;->publish()V +SPLcom/android/server/am/BatteryStatsService;->scheduleWriteToDisk()V +SPLcom/android/server/am/BroadcastQueue$BroadcastHandler;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/os/Looper;)V +SPLcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Ljava/lang/String;JZ)V +SPLcom/android/server/am/CompatModePackages$CompatHandler;-><init>(Lcom/android/server/am/CompatModePackages;Landroid/os/Looper;)V +SPLcom/android/server/am/CompatModePackages;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;Landroid/os/Handler;)V +SPLcom/android/server/am/InstrumentationReporter;-><init>()V +SPLcom/android/server/am/KeyguardController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V +SPLcom/android/server/am/ProcessList;-><init>()V +SPLcom/android/server/am/ProcessList;->updateOomLevels(IIZ)V +SPLcom/android/server/am/ProcessStatsService$1;-><init>(Lcom/android/server/am/ProcessStatsService;)V +SPLcom/android/server/am/ProcessStatsService;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V +SPLcom/android/server/am/ProcessStatsService;->updateFile()V +SPLcom/android/server/am/ProviderMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/RecentTasks$1;-><init>()V +SPLcom/android/server/am/RecentTasks;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V +SPLcom/android/server/am/TaskChangeNotificationController$MainHandler;-><init>(Lcom/android/server/am/TaskChangeNotificationController;Landroid/os/Looper;)V +SPLcom/android/server/am/TaskChangeNotificationController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Handler;)V +SPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;-><init>(Lcom/android/server/am/TaskPersister;Ljava/lang/String;)V +SPLcom/android/server/am/TaskPersister;-><init>(Ljava/io/File;Lcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/RecentTasks;)V +SPLcom/android/server/am/UserController$Injector;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/UserController$Injector;->getContext()Landroid/content/Context; +SPLcom/android/server/am/UserController$Injector;->getHandler()Landroid/os/Handler; +SPLcom/android/server/am/UserController$Injector;->getLock()Ljava/lang/Object; +SPLcom/android/server/am/UserController$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils; +SPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/UserController$Injector;)V +SPLcom/android/server/am/UserController;->updateStartedUserArrayLocked()V +SPLcom/android/server/am/UserState;-><init>(Landroid/os/UserHandle;)V +SPLcom/android/server/am/VrController$1;-><init>(Lcom/android/server/am/VrController;)V +SPLcom/android/server/am/VrController;-><init>(Ljava/lang/Object;)V +SPLcom/android/server/display/-$Lambda$pe87L53A2dvYIZSUUR6Usyk2Zwo;-><init>()V +SPLcom/android/server/display/DisplayAdapter$1;-><init>(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V +SPLcom/android/server/display/DisplayAdapter$1;->run()V +SPLcom/android/server/display/DisplayAdapter$2;-><init>(Lcom/android/server/display/DisplayAdapter;)V +SPLcom/android/server/display/DisplayAdapter$2;->run()V +SPLcom/android/server/display/DisplayAdapter;->-get0(Lcom/android/server/display/DisplayAdapter;)Lcom/android/server/display/DisplayAdapter$Listener; +SPLcom/android/server/display/DisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Ljava/lang/String;)V +SPLcom/android/server/display/DisplayAdapter;->createMode(IIF)Landroid/view/Display$Mode; +SPLcom/android/server/display/DisplayAdapter;->getContext()Landroid/content/Context; +SPLcom/android/server/display/DisplayAdapter;->getHandler()Landroid/os/Handler; +SPLcom/android/server/display/DisplayAdapter;->registerLocked()V +SPLcom/android/server/display/DisplayAdapter;->sendDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V +SPLcom/android/server/display/DisplayAdapter;->sendTraversalRequestLocked()V +SPLcom/android/server/display/DisplayDevice;-><init>(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;)V +SPLcom/android/server/display/DisplayDevice;->getUniqueId()Ljava/lang/String; +SPLcom/android/server/display/DisplayDeviceInfo;-><init>()V +SPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I +SPLcom/android/server/display/DisplayDeviceInfo;->equals(Lcom/android/server/display/DisplayDeviceInfo;)Z +SPLcom/android/server/display/DisplayDeviceInfo;->equals(Ljava/lang/Object;)Z +SPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String; +SPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String; +SPLcom/android/server/display/DisplayDeviceInfo;->touchToString(I)Ljava/lang/String; +SPLcom/android/server/display/DisplayManagerService$BinderService;-><init>(Lcom/android/server/display/DisplayManagerService;)V +SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V +SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$DisplayAdapterListener;)V +SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V +SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onTraversalRequested()V +SPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;-><init>(Lcom/android/server/display/DisplayManagerService;Landroid/os/Looper;)V +SPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V +SPLcom/android/server/display/DisplayManagerService$Injector;-><init>()V +SPLcom/android/server/display/DisplayManagerService$Injector;->getDefaultDisplayDelayTimeout()J +SPLcom/android/server/display/DisplayManagerService$Injector;->getVirtualDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)Lcom/android/server/display/VirtualDisplayAdapter; +SPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;)V +SPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$LocalService;)V +SPLcom/android/server/display/DisplayManagerService$SyncRoot;-><init>()V +SPLcom/android/server/display/DisplayManagerService;->-get5(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot; +SPLcom/android/server/display/DisplayManagerService;->-wrap13(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->-wrap14(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->-wrap20(Lcom/android/server/display/DisplayManagerService;)V +SPLcom/android/server/display/DisplayManagerService;->-wrap28(Lcom/android/server/display/DisplayManagerService;Z)V +SPLcom/android/server/display/DisplayManagerService;->-wrap8(Lcom/android/server/display/DisplayManagerService;II)V +SPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;)V +SPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$Injector;)V +SPLcom/android/server/display/DisplayManagerService;->addLogicalDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay; +SPLcom/android/server/display/DisplayManagerService;->assignDisplayIdLocked(Z)I +SPLcom/android/server/display/DisplayManagerService;->assignLayerStackLocked(I)I +SPLcom/android/server/display/DisplayManagerService;->configureColorModeLocked(Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAdded(Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAddedLocked(Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->loadStableDisplayValuesLocked()V +SPLcom/android/server/display/DisplayManagerService;->onBootPhase(I)V +SPLcom/android/server/display/DisplayManagerService;->onStart()V +SPLcom/android/server/display/DisplayManagerService;->recordStableDisplayStatsIfNeededLocked(Lcom/android/server/display/LogicalDisplay;)V +SPLcom/android/server/display/DisplayManagerService;->registerDefaultDisplayAdapters()V +SPLcom/android/server/display/DisplayManagerService;->registerDisplayAdapterLocked(Lcom/android/server/display/DisplayAdapter;)V +SPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V +SPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(II)V +SPLcom/android/server/display/DisplayManagerService;->updateLogicalDisplaysLocked()Z +SPLcom/android/server/display/DisplayTransformManager;-><init>()V +SPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;-><init>(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)V +SPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Z +SPLcom/android/server/display/LocalDisplayAdapter$HotplugDisplayEventReceiver;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/Looper;)V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;I[Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayInfoIndexLocked(I)I +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord; +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->hasStableUniqueId()Z +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateColorModesLocked([II)Z +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDeviceInfoLocked()V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updatePhysicalDisplayInfoLocked([Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)Z +SPLcom/android/server/display/LocalDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V +SPLcom/android/server/display/LocalDisplayAdapter;->getPowerModeForState(I)I +SPLcom/android/server/display/LocalDisplayAdapter;->registerLocked()V +SPLcom/android/server/display/LocalDisplayAdapter;->tryConnectDisplayLocked(I)V +SPLcom/android/server/display/LogicalDisplay;-><init>(IILcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice; +SPLcom/android/server/display/LogicalDisplay;->isValidLocked()Z +SPLcom/android/server/display/LogicalDisplay;->setRequestedColorModeLocked(I)V +SPLcom/android/server/display/LogicalDisplay;->updateLocked(Ljava/util/List;)V +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->-wrap0(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)Landroid/graphics/Point; +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>()V +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)V +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->getDisplaySize()Landroid/graphics/Point; +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadIntValue(Lorg/xmlpull/v1/XmlPullParser;)I +SPLcom/android/server/display/PersistentDataStore;-><init>()V +SPLcom/android/server/display/PersistentDataStore;->clearState()V +SPLcom/android/server/display/PersistentDataStore;->getColorMode(Lcom/android/server/display/DisplayDevice;)I +SPLcom/android/server/display/PersistentDataStore;->getDisplayState(Ljava/lang/String;Z)Lcom/android/server/display/PersistentDataStore$DisplayState; +SPLcom/android/server/display/PersistentDataStore;->getStableDisplaySize()Landroid/graphics/Point; +SPLcom/android/server/display/PersistentDataStore;->load()V +SPLcom/android/server/display/PersistentDataStore;->loadDisplaysFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/display/PersistentDataStore;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/display/PersistentDataStore;->loadIfNeeded()V +SPLcom/android/server/display/PersistentDataStore;->loadRememberedWifiDisplaysFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V +SPLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;)V +SPLcom/android/server/display/VirtualDisplayAdapter;->registerLocked()V +SPLcom/android/server/firewall/AndFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/CategoryFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/FilterFactory;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/FilterFactory;->getTagName()Ljava/lang/String; +SPLcom/android/server/firewall/IntentFirewall$FirewallHandler;-><init>(Lcom/android/server/firewall/IntentFirewall;Landroid/os/Looper;)V +SPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>()V +SPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;)V +SPLcom/android/server/firewall/IntentFirewall$RuleObserver;-><init>(Lcom/android/server/firewall/IntentFirewall;Ljava/io/File;)V +SPLcom/android/server/firewall/IntentFirewall;-><init>(Lcom/android/server/firewall/IntentFirewall$AMSInterface;Landroid/os/Handler;)V +SPLcom/android/server/firewall/IntentFirewall;->getRulesDir()Ljava/io/File; +SPLcom/android/server/firewall/IntentFirewall;->readRulesDir(Ljava/io/File;)V +SPLcom/android/server/firewall/NotFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/OrFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/PortFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/SenderFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/SenderFilter$2;-><init>()V +SPLcom/android/server/firewall/SenderFilter$3;-><init>()V +SPLcom/android/server/firewall/SenderFilter$4;-><init>()V +SPLcom/android/server/firewall/SenderFilter$5;-><init>()V +SPLcom/android/server/firewall/SenderPackageFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/SenderPermissionFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$10;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$1;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$2;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$3;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$4;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$5;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$6;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$7;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$8;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$9;-><init>(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$ValueProvider;-><init>(Ljava/lang/String;)V +SPLcom/android/server/lights/Light;-><init>()V +SPLcom/android/server/lights/LightsManager;-><init>()V +SPLcom/android/server/lights/LightsService$1;-><init>(Lcom/android/server/lights/LightsService;)V +SPLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/Light; +SPLcom/android/server/lights/LightsService$2;-><init>(Lcom/android/server/lights/LightsService;)V +SPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;I)V +SPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;ILcom/android/server/lights/LightsService$LightImpl;)V +SPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;)V +SPLcom/android/server/lights/LightsService;->onBootPhase(I)V +SPLcom/android/server/lights/LightsService;->onStart()V +SPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;-><init>(Landroid/content/Context;)V +SPLcom/android/server/os/DeviceIdentifiersPolicyService;-><init>(Landroid/content/Context;)V +SPLcom/android/server/os/DeviceIdentifiersPolicyService;->onStart()V +SPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$1()V +SPLcom/android/server/pm/AbstractStatsBase;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V +SPLcom/android/server/pm/AbstractStatsBase;->getFile()Landroid/util/AtomicFile; +SPLcom/android/server/pm/AbstractStatsBase;->read(Ljava/lang/Object;)V +SPLcom/android/server/pm/BasePermission;->setGids([IZ)V +SPLcom/android/server/pm/CompilerStats;-><init>()V +SPLcom/android/server/pm/CompilerStats;->read()V +SPLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Object;)V +SPLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Void;)V +SPLcom/android/server/pm/DefaultPermissionGrantPolicy$1;-><init>(Lcom/android/server/pm/DefaultPermissionGrantPolicy;Landroid/os/Looper;)V +SPLcom/android/server/pm/DefaultPermissionGrantPolicy;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/Installer$1;-><init>(Lcom/android/server/pm/Installer;)V +SPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;)V +SPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;Z)V +SPLcom/android/server/pm/Installer;->connect()V +SPLcom/android/server/pm/Installer;->fixupAppData(Ljava/lang/String;I)V +SPLcom/android/server/pm/Installer;->invalidateMounts()V +SPLcom/android/server/pm/Installer;->onStart()V +SPLcom/android/server/pm/InstantAppRegistry$CookiePersistence;-><init>(Lcom/android/server/pm/InstantAppRegistry;Landroid/os/Looper;)V +SPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/KeySetHandle;-><init>(JI)V +SPLcom/android/server/pm/KeySetHandle;->getRefCountLPr()I +SPLcom/android/server/pm/KeySetHandle;->setRefCountLPw(I)V +SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;)V +SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;)V +SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->incrRefCountLPw()V +SPLcom/android/server/pm/KeySetManagerService;-><init>(Landroid/util/ArrayMap;)V +SPLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;)V +SPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V +SPLcom/android/server/pm/PackageInstallerService$1;-><init>()V +SPLcom/android/server/pm/PackageKeySetData;->setProperSigningKeySet(J)V +SPLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;)V +SPLcom/android/server/pm/PackageManagerService$1;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$2;-><init>()V +SPLcom/android/server/pm/PackageManagerService$3;-><init>()V +SPLcom/android/server/pm/PackageManagerService$9;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V +SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator; +SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$DefaultContainerConnection;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$MoveCallbacks;-><init>(Landroid/os/Looper;)V +SPLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;-><init>(Landroid/os/Looper;)V +SPLcom/android/server/pm/PackageManagerService$PackageHandler;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;)V +SPLcom/android/server/pm/PackageManagerService$PackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->findStaticOverlayPackages()V +SPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;-><init>()V +SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver;)V +SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/IntentFilter; +SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ProviderIntentInfo; +SPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)V +SPLcom/android/server/pm/PackageManagerService$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)V +SPLcom/android/server/pm/PackageManagerService;->-get12(Lcom/android/server/pm/PackageManagerService;)Ljava/util/List; +SPLcom/android/server/pm/PackageManagerService;->-get2()Ljava/util/Set; +SPLcom/android/server/pm/PackageManagerService;->-get5(Lcom/android/server/pm/PackageManagerService;)Z +SPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPr(Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry;Landroid/content/pm/PackageParser$Package;)V +SPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPw(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)Z +SPLcom/android/server/pm/PackageManagerService;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String; +SPLcom/android/server/pm/PackageManagerService;->checkDefaultBrowser()V +SPLcom/android/server/pm/PackageManagerService;->decompressSystemApplications(Ljava/util/List;I)V +SPLcom/android/server/pm/PackageManagerService;->deleteTempPackageFiles()V +SPLcom/android/server/pm/PackageManagerService;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String; +SPLcom/android/server/pm/PackageManagerService;->getDefaultDisplayMetrics(Landroid/content/Context;Landroid/util/DisplayMetrics;)V +SPLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageName()Ljava/lang/String; +SPLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName()Ljava/lang/String; +SPLcom/android/server/pm/PackageManagerService;->isExternal(Lcom/android/server/pm/PackageSetting;)Z +SPLcom/android/server/pm/PackageManagerService;->locationIsPrivileged(Ljava/io/File;)Z +SPLcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)Lcom/android/server/pm/PackageManagerService; +SPLcom/android/server/pm/PackageManagerService;->preparePackageParserCache(Z)Ljava/io/File; +SPLcom/android/server/pm/PackageManagerService;->scanDirTracedLI(Ljava/io/File;IIJ)V +SPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->checkProperties()V +SPLcom/android/server/pm/PackageSetting;->doCopy(Lcom/android/server/pm/PackageSetting;)V +SPLcom/android/server/pm/PackageSetting;->getSharedUserId()I +SPLcom/android/server/pm/PackageSettingBase;->getInstallStatus()I +SPLcom/android/server/pm/PackageSettingBase;->setIntentFilterVerificationInfo(Landroid/content/pm/IntentFilterVerificationInfo;)V +SPLcom/android/server/pm/PackageUsage;-><init>()V +SPLcom/android/server/pm/PackageUsage;->readInternal(Ljava/lang/Object;)V +SPLcom/android/server/pm/PackageUsage;->readInternal(Ljava/util/Map;)V +SPLcom/android/server/pm/ParallelPackageParser;-><init>([Ljava/lang/String;ZLandroid/util/DisplayMetrics;Ljava/io/File;Landroid/content/pm/PackageParser$Callback;)V +SPLcom/android/server/pm/ParallelPackageParser;->close()V +SPLcom/android/server/pm/PermissionsState$PermissionData;->revoke(I)Z +SPLcom/android/server/pm/PermissionsState;->ensureNoPermissionData(Ljava/lang/String;)V +SPLcom/android/server/pm/Policy$PolicyBuilder;->-get0(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Set; +SPLcom/android/server/pm/Policy$PolicyBuilder;->-get1(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Map; +SPLcom/android/server/pm/Policy$PolicyBuilder;->-get2(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/lang/String; +SPLcom/android/server/pm/Policy$PolicyBuilder;-><init>()V +SPLcom/android/server/pm/Policy$PolicyBuilder;->addInnerPackageMapOrThrow(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; +SPLcom/android/server/pm/Policy$PolicyBuilder;->addSignature(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; +SPLcom/android/server/pm/Policy$PolicyBuilder;->build()Lcom/android/server/pm/Policy; +SPLcom/android/server/pm/Policy$PolicyBuilder;->setGlobalSeinfoOrThrow(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; +SPLcom/android/server/pm/Policy$PolicyBuilder;->validateValue(Ljava/lang/String;)Z +SPLcom/android/server/pm/Policy;->-get0(Lcom/android/server/pm/Policy;)Ljava/util/Set; +SPLcom/android/server/pm/Policy;->-get1(Lcom/android/server/pm/Policy;)Ljava/util/Map; +SPLcom/android/server/pm/Policy;->-get2(Lcom/android/server/pm/Policy;)Ljava/lang/String; +SPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;)V +SPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;Lcom/android/server/pm/Policy;)V +SPLcom/android/server/pm/Policy;->getSignatures()Ljava/util/Set; +SPLcom/android/server/pm/Policy;->hasInnerPackages()Z +SPLcom/android/server/pm/PolicyComparator;-><init>()V +SPLcom/android/server/pm/PolicyComparator;->compare(Lcom/android/server/pm/Policy;Lcom/android/server/pm/Policy;)I +SPLcom/android/server/pm/PolicyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +SPLcom/android/server/pm/PolicyComparator;->foundDuplicate()Z +SPLcom/android/server/pm/PreferredActivity;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/pm/PreferredActivity;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z +SPLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/pm/PreferredComponent;->getParseError()Ljava/lang/String; +SPLcom/android/server/pm/PreferredIntentResolver;-><init>()V +SPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Landroid/content/IntentFilter; +SPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PreferredActivity; +SPLcom/android/server/pm/ProcessLoggingHandler;-><init>()V +SPLcom/android/server/pm/ProtectedPackages;-><init>(Landroid/content/Context;)V +SPLcom/android/server/pm/SELinuxMMAC;->readInstallPolicy()Z +SPLcom/android/server/pm/SELinuxMMAC;->readPackageOrThrow(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/Policy$PolicyBuilder;)V +SPLcom/android/server/pm/SELinuxMMAC;->readSeinfo(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/pm/SELinuxMMAC;->readSignerOrThrow(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/Policy; +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->handleMessage(Landroid/os/Message;)V +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-wrap1(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;I)V +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><init>(Lcom/android/server/pm/Settings;Ljava/lang/Object;)V +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSyncLPr(I)V +SPLcom/android/server/pm/Settings$VersionInfo;-><init>()V +SPLcom/android/server/pm/Settings;->-wrap0(Lcom/android/server/pm/Settings;I)Ljava/io/File; +SPLcom/android/server/pm/Settings;-><init>(Ljava/io/File;Ljava/lang/Object;)V +SPLcom/android/server/pm/Settings;-><init>(Ljava/lang/Object;)V +SPLcom/android/server/pm/Settings;->addSharedUserLPw(Ljava/lang/String;III)Lcom/android/server/pm/SharedUserSetting; +SPLcom/android/server/pm/Settings;->editPreferredActivitiesLPw(I)Lcom/android/server/pm/PreferredIntentResolver; +SPLcom/android/server/pm/Settings;->findOrCreateVersion(Ljava/lang/String;)Lcom/android/server/pm/Settings$VersionInfo; +SPLcom/android/server/pm/Settings;->getAllSharedUsersLPw()Ljava/util/Collection; +SPLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;IIZ)Lcom/android/server/pm/SharedUserSetting; +SPLcom/android/server/pm/Settings;->getUserPackagesStateBackupFile(I)Ljava/io/File; +SPLcom/android/server/pm/Settings;->getUserPackagesStateFile(I)Ljava/io/File; +SPLcom/android/server/pm/Settings;->getUserRuntimePermissionsFile(I)Ljava/io/File; +SPLcom/android/server/pm/Settings;->readCrossProfileIntentFiltersLPw(Lorg/xmlpull/v1/XmlPullParser;I)V +SPLcom/android/server/pm/Settings;->readDefaultAppsLPw(Lorg/xmlpull/v1/XmlPullParser;I)V +SPLcom/android/server/pm/Settings;->readDomainVerificationLPw(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PackageSettingBase;)V +SPLcom/android/server/pm/Settings;->readPersistentPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V +SPLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V +SPLcom/android/server/pm/SharedUserSetting;-><init>(Ljava/lang/String;II)V +SPLcom/android/server/pm/UserDataPreparer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Z)V +SPLcom/android/server/pm/UserManagerService$1;-><init>(Lcom/android/server/pm/UserManagerService;)V +SPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;)V +SPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$LocalService;)V +SPLcom/android/server/pm/UserManagerService$MainHandler;-><init>(Lcom/android/server/pm/UserManagerService;)V +SPLcom/android/server/pm/UserManagerService$UserData;-><init>()V +SPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;)V +SPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;Ljava/io/File;)V +SPLcom/android/server/pm/UserManagerService;->initDefaultGuestRestrictions()V +SPLcom/android/server/pm/UserManagerService;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I +SPLcom/android/server/pm/UserManagerService;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J +SPLcom/android/server/pm/UserManagerService;->readUserLP(I)Lcom/android/server/pm/UserManagerService$UserData; +SPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;)Lcom/android/server/pm/UserManagerService$UserData; +SPLcom/android/server/pm/UserManagerService;->readUserListLP()V +SPLcom/android/server/pm/UserManagerService;->updateUserIds()V +SPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(Landroid/os/Bundle;)V +SPLcom/android/server/pm/UserRestrictionsUtils;->newSetWithUniqueCheck([Ljava/lang/String;)Ljava/util/Set; +SPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/Bundle; +SPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V +SPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>()V +SPLcom/android/server/pm/dex/PackageDexUsage;-><init>()V +SPLcom/android/server/power/BatterySaverPolicy;-><init>(Landroid/os/Handler;)V +SPLcom/android/server/power/PowerManagerService$1;-><init>(Lcom/android/server/power/PowerManagerService;)V +SPLcom/android/server/power/PowerManagerService$2;-><init>(Lcom/android/server/power/PowerManagerService;)V +SPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;)V +SPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$BinderService;)V +SPLcom/android/server/power/PowerManagerService$Constants;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V +SPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;)V +SPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$LocalService;)V +SPLcom/android/server/power/PowerManagerService$LocalService;->getLowPowerState(I)Landroid/os/PowerSaveState; +SPLcom/android/server/power/PowerManagerService$LocalService;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V +SPLcom/android/server/power/PowerManagerService$PowerManagerHandler;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Looper;)V +SPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;-><init>(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)V +SPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire()V +SPLcom/android/server/power/PowerManagerService;->-get0(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/BatterySaverPolicy; +SPLcom/android/server/power/PowerManagerService;->-get10(Lcom/android/server/power/PowerManagerService;)Z +SPLcom/android/server/power/PowerManagerService;->-get11(Lcom/android/server/power/PowerManagerService;)Ljava/util/ArrayList; +SPLcom/android/server/power/PowerManagerService;->-wrap20(Ljava/lang/String;)V +SPLcom/android/server/power/PowerManagerService;-><init>(Landroid/content/Context;)V +SPLcom/android/server/power/PowerManagerService;->createSuspendBlockerLocked(Ljava/lang/String;)Lcom/android/server/power/SuspendBlocker; +SPLcom/android/server/power/PowerManagerService;->onBootPhase(I)V +SPLcom/android/server/power/PowerManagerService;->onStart()V diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java index 71f699c8da54..b9bea163a8a5 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java @@ -120,6 +120,18 @@ public final class AutofillManagerService extends SystemService { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) { + if (sDebug) Slog.d(TAG, "Close system dialogs"); + + // TODO(b/64940307): we need to destroy all sessions that are finished but showing + // Save UI because there is no way to show the Save UI back when the activity + // beneath it is brought back to top. Ideally, we should just hide the UI and + // bring it back when the activity resumes. + synchronized (mLock) { + for (int i = 0; i < mServicesCache.size(); i++) { + mServicesCache.valueAt(i).destroyFinishedSessionsLocked(); + } + } + mUi.hideAll(null); } } @@ -650,7 +662,22 @@ public final class AutofillManagerService extends SystemService { synchronized (mLock) { final AutofillManagerServiceImpl service = peekServiceForUserLocked(userId); if (service == null) return false; - return Objects.equals(packageName, service.getPackageName()); + return Objects.equals(packageName, service.getServicePackageName()); + } + } + + @Override + public void onPendingSaveUi(int operation, IBinder token) { + Preconditions.checkNotNull(token, "token"); + Preconditions.checkArgument(operation == AutofillManager.PENDING_UI_OPERATION_CANCEL + || operation == AutofillManager.PENDING_UI_OPERATION_RESTORE, + "invalid operation: %d", operation); + synchronized (mLock) { + final AutofillManagerServiceImpl service = peekServiceForUserLocked( + UserHandle.getCallingUserId()); + if (service != null) { + service.onPendingSaveUi(operation, token); + } } } diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java index 751c0547afd6..59022e3ff14e 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java @@ -34,6 +34,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Binder; import android.os.Bundle; @@ -41,7 +42,6 @@ import android.os.IBinder; import android.os.Looper; import android.os.RemoteCallbackList; import android.os.RemoteException; -import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.service.autofill.AutofillService; @@ -52,10 +52,12 @@ import android.service.autofill.FillResponse; import android.service.autofill.IAutoFillService; import android.text.TextUtils; import android.util.ArraySet; +import android.util.DebugUtils; import android.util.LocalLog; import android.util.Slog; import android.util.SparseArray; import android.view.autofill.AutofillId; +import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; import android.view.autofill.IAutoFillManagerClient; @@ -144,8 +146,9 @@ final class AutofillManagerServiceImpl { updateLocked(disabled); } + @Nullable CharSequence getServiceName() { - final String packageName = getPackageName(); + final String packageName = getServicePackageName(); if (packageName == null) { return null; } @@ -160,7 +163,8 @@ final class AutofillManagerServiceImpl { } } - String getPackageName() { + @Nullable + String getServicePackageName() { final ComponentName serviceComponent = getServiceComponentName(); if (serviceComponent != null) { return serviceComponent.getPackageName(); @@ -233,26 +237,6 @@ final class AutofillManagerServiceImpl { } } - /** - * Used by {@link AutofillManagerServiceShellCommand} to request save for the current top app. - */ - void requestSaveForUserLocked(IBinder activityToken) { - if (!isEnabled()) { - return; - } - - final int numSessions = mSessions.size(); - for (int i = 0; i < numSessions; i++) { - final Session session = mSessions.valueAt(i); - if (session.getActivityTokenLocked().equals(activityToken)) { - session.callSaveLocked(); - return; - } - } - - Slog.w(TAG, "requestSaveForUserLocked(): no session for " + activityToken); - } - boolean addClientLocked(IAutoFillManagerClient client) { if (mClients == null) { mClients = new RemoteCallbackList<>(); @@ -290,6 +274,7 @@ final class AutofillManagerServiceImpl { if (!isEnabled()) { return 0; } + if (sVerbose) Slog.v(TAG, "startSession(): token=" + activityToken + ", flags=" + flags); // Occasionally clean up abandoned sessions pruneAbandonedSessionsLocked(); @@ -461,6 +446,25 @@ final class AutofillManagerServiceImpl { } } + void onPendingSaveUi(int operation, @NonNull IBinder token) { + if (sVerbose) Slog.v(TAG, "onPendingSaveUi(" + operation + "): " + token); + synchronized (mLock) { + final int sessionCount = mSessions.size(); + for (int i = sessionCount - 1; i >= 0; i--) { + final Session session = mSessions.valueAt(i); + if (session.isSaveUiPendingForTokenLocked(token)) { + session.onPendingSaveUi(operation, token); + return; + } + } + } + if (sDebug) { + Slog.d(TAG, "No pending Save UI for token " + token + " and operation " + + DebugUtils.flagsToString(AutofillManager.class, "PENDING_UI_OPERATION_", + operation)); + } + } + void destroyLocked() { if (sVerbose) Slog.v(TAG, "destroyLocked()"); @@ -480,10 +484,16 @@ final class AutofillManagerServiceImpl { sendStateToClients(true); } + @NonNull CharSequence getServiceLabel() { return mInfo.getServiceInfo().loadLabel(mContext.getPackageManager()); } + @NonNull + Drawable getServiceIcon() { + return mInfo.getServiceInfo().loadIcon(mContext.getPackageManager()); + } + /** * Initializes the last fill selection after an autofill service returned a new * {@link FillResponse}. @@ -521,10 +531,11 @@ final class AutofillManagerServiceImpl { /** * Updates the last fill selection when an authentication was selected. */ - void setAuthenticationSelected(int sessionId) { + void setAuthenticationSelected(int sessionId, @Nullable Bundle clientState) { synchronized (mLock) { if (isValidEventLocked("setAuthenticationSelected()", sessionId)) { - mEventHistory.addEvent(new Event(Event.TYPE_AUTHENTICATION_SELECTED, null)); + mEventHistory + .addEvent(new Event(Event.TYPE_AUTHENTICATION_SELECTED, null, clientState)); } } } @@ -532,11 +543,13 @@ final class AutofillManagerServiceImpl { /** * Updates the last fill selection when an dataset authentication was selected. */ - void setDatasetAuthenticationSelected(@Nullable String selectedDataset, int sessionId) { + void logDatasetAuthenticationSelected(@Nullable String selectedDataset, int sessionId, + @Nullable Bundle clientState) { synchronized (mLock) { - if (isValidEventLocked("setDatasetAuthenticationSelected()", sessionId)) { + if (isValidEventLocked("logDatasetAuthenticationSelected()", sessionId)) { mEventHistory.addEvent( - new Event(Event.TYPE_DATASET_AUTHENTICATION_SELECTED, selectedDataset)); + new Event(Event.TYPE_DATASET_AUTHENTICATION_SELECTED, selectedDataset, + clientState)); } } } @@ -544,10 +557,10 @@ final class AutofillManagerServiceImpl { /** * Updates the last fill selection when an save Ui is shown. */ - void setSaveShown(int sessionId) { + void logSaveShown(int sessionId, @Nullable Bundle clientState) { synchronized (mLock) { - if (isValidEventLocked("setSaveShown()", sessionId)) { - mEventHistory.addEvent(new Event(Event.TYPE_SAVE_SHOWN, null)); + if (isValidEventLocked("logSaveShown()", sessionId)) { + mEventHistory.addEvent(new Event(Event.TYPE_SAVE_SHOWN, null, clientState)); } } } @@ -555,10 +568,12 @@ final class AutofillManagerServiceImpl { /** * Updates the last fill response when a dataset was selected. */ - void setDatasetSelected(@Nullable String selectedDataset, int sessionId) { + void logDatasetSelected(@Nullable String selectedDataset, int sessionId, + @Nullable Bundle clientState) { synchronized (mLock) { - if (isValidEventLocked("setDatasetSelected()", sessionId)) { - mEventHistory.addEvent(new Event(Event.TYPE_DATASET_SELECTED, selectedDataset)); + if (isValidEventLocked("logDatasetSelected()", sessionId)) { + mEventHistory.addEvent( + new Event(Event.TYPE_DATASET_SELECTED, selectedDataset, clientState)); } } } @@ -622,8 +637,24 @@ final class AutofillManagerServiceImpl { } void destroySessionsLocked() { + if (mSessions.size() == 0) { + mUi.destroyAll(null, null, false); + return; + } while (mSessions.size() > 0) { - mSessions.valueAt(0).removeSelfLocked(); + mSessions.valueAt(0).forceRemoveSelfLocked(); + } + } + + // TODO(b/64940307): remove this method if SaveUI is refactored to be attached on activities + void destroyFinishedSessionsLocked() { + final int sessionCount = mSessions.size(); + for (int i = sessionCount - 1; i >= 0; i--) { + final Session session = mSessions.valueAt(i); + if (session.isSavingLocked()) { + if (sDebug) Slog.d(TAG, "destroyFinishedSessionsLocked(): " + session.id); + session.forceRemoveSelfLocked(); + } } } diff --git a/services/autofill/java/com/android/server/autofill/Helper.java b/services/autofill/java/com/android/server/autofill/Helper.java index 086dd29f0c97..236fbfd94f53 100644 --- a/services/autofill/java/com/android/server/autofill/Helper.java +++ b/services/autofill/java/com/android/server/autofill/Helper.java @@ -18,6 +18,7 @@ package com.android.server.autofill; import android.annotation.NonNull; import android.annotation.Nullable; +import android.metrics.LogMaker; import android.os.Bundle; import android.service.autofill.Dataset; import android.util.ArrayMap; @@ -25,6 +26,8 @@ import android.util.ArraySet; import android.view.autofill.AutofillId; import android.view.autofill.AutofillValue; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; + import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; @@ -99,4 +102,14 @@ public final class Helper { } return fields; } + + @NonNull + public static LogMaker newLogMaker(int category, String packageName, + String servicePackageName) { + final LogMaker log = new LogMaker(category).setPackageName(packageName); + if (servicePackageName != null) { + log.addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName); + } + return log; + } } diff --git a/services/autofill/java/com/android/server/autofill/RemoteFillService.java b/services/autofill/java/com/android/server/autofill/RemoteFillService.java index dd980535f628..af55807ff1f0 100644 --- a/services/autofill/java/com/android/server/autofill/RemoteFillService.java +++ b/services/autofill/java/com/android/server/autofill/RemoteFillService.java @@ -387,8 +387,10 @@ final class RemoteFillService implements DeathRecipient { @Override public void executeMessage(Message message) { if (mDestroyed) { - Slog.w(LOG_TAG, "Not handling " + message + " as service for " - + mComponentName + " is already destroyed"); + if (sVerbose) { + Slog.v(LOG_TAG, "Not handling " + message + " as service for " + + mComponentName + " is already destroyed"); + } return; } switch (message.what) { @@ -574,6 +576,12 @@ final class RemoteFillService implements DeathRecipient { @Override public void run() { + synchronized (mLock) { + if (isCancelledLocked()) { + if (sDebug) Slog.d(LOG_TAG, "run() called after canceled: " + mRequest); + return; + } + } final RemoteFillService remoteService = getService(); if (remoteService != null) { try { diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index f8fb13a54115..f81ecf247ac7 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -77,6 +77,7 @@ import com.android.internal.os.HandlerCaller; import com.android.internal.os.IResultReceiver; import com.android.internal.util.ArrayUtils; import com.android.server.autofill.ui.AutoFillUI; +import com.android.server.autofill.ui.PendingUi; import java.io.PrintWriter; import java.util.ArrayList; @@ -164,10 +165,22 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState @GuardedBy("mLock") private boolean mDestroyed; - /** Whether the session is currently saving */ + /** Whether the session is currently saving. */ @GuardedBy("mLock") private boolean mIsSaving; + /** + * Helper used to handle state of Save UI when it must be hiding to show a custom description + * link and later recovered. + */ + @GuardedBy("mLock") + private PendingUi mPendingSaveUi; + + /** + * List of dataset ids selected by the user. + */ + @GuardedBy("mLock") + private ArrayList<String> mSelectedDatasetIds; /** * Receiver of assist data from the app's {@link Activity}. @@ -261,7 +274,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState value = state.getCurrentValue(); if (value == null) { if (sDebug) Slog.d(TAG, "getValue(): no current value for " + id); - value = getValueFromContexts(id); + value = getValueFromContextsLocked(id); } } if (value != null) { @@ -269,7 +282,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return value.getTextValue().toString(); } if (value.isList()) { - final CharSequence[] options = getAutofillOptionsFromContexts(id); + final CharSequence[] options = getAutofillOptionsFromContextsLocked(id); if (options != null) { final int index = value.getListValue(); final CharSequence option = options[index]; @@ -332,21 +345,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * Cancels the last request sent to the {@link #mRemoteFillService}. */ private void cancelCurrentRequestLocked() { - int canceledRequest = mRemoteFillService.cancelCurrentRequest(); + final int canceledRequest = mRemoteFillService.cancelCurrentRequest(); // Remove the FillContext as there will never be a response for the service if (canceledRequest != INVALID_REQUEST_ID && mContexts != null) { - int numContexts = mContexts.size(); + final int numContexts = mContexts.size(); // It is most likely the last context, hence search backwards for (int i = numContexts - 1; i >= 0; i--) { if (mContexts.get(i).getRequestId() == canceledRequest) { + if (sDebug) Slog.d(TAG, "cancelCurrentRequest(): id = " + canceledRequest); mContexts.remove(i); break; } } } - } /** @@ -404,7 +417,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState mPackageName = packageName; mClient = IAutoFillManagerClient.Stub.asInterface(client); - mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_STARTED, mPackageName); + writeLog(MetricsEvent.AUTOFILL_SESSION_STARTED); } /** @@ -449,14 +462,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } if (response == null) { - if (sVerbose) Slog.v(TAG, "canceling session " + id + " when server returned null"); - if ((requestFlags & FLAG_MANUAL_REQUEST) != 0) { - getUiForShowing().showError(R.string.autofill_error_cannot_autofill, this); - } - mService.resetLastResponse(); - // Nothing to be done, but need to notify client. - notifyUnavailableToClient(); - removeSelf(); + processNullResponseLocked(requestFlags); return; } @@ -465,19 +471,16 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if ((response.getDatasets() == null || response.getDatasets().isEmpty()) && response.getAuthentication() == null) { // Response is "empty" from an UI point of view, need to notify client. - notifyUnavailableToClient(); + notifyUnavailableToClient(false); } synchronized (mLock) { processResponseLocked(response, requestFlags); } - final LogMaker log = (new LogMaker(MetricsEvent.AUTOFILL_REQUEST)) + final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_REQUEST, servicePackageName) .setType(MetricsEvent.TYPE_SUCCESS) - .setPackageName(mPackageName) .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS, - response.getDatasets() == null ? 0 : response.getDatasets().size()) - .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, - servicePackageName); + response.getDatasets() == null ? 0 : response.getDatasets().size()); mMetricsLogger.write(log); } @@ -493,10 +496,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } mService.resetLastResponse(); } - LogMaker log = (new LogMaker(MetricsEvent.AUTOFILL_REQUEST)) - .setType(MetricsEvent.TYPE_FAILURE) - .setPackageName(mPackageName) - .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName); + LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_REQUEST, servicePackageName) + .setType(MetricsEvent.TYPE_FAILURE); mMetricsLogger.write(log); getUiForShowing().showError(message, this); @@ -515,11 +516,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return; } } - LogMaker log = (new LogMaker( - MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST)) - .setType(MetricsEvent.TYPE_SUCCESS) - .setPackageName(mPackageName) - .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName); + LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST, servicePackageName) + .setType(MetricsEvent.TYPE_SUCCESS); mMetricsLogger.write(log); // Nothing left to do... @@ -539,11 +537,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return; } } - LogMaker log = (new LogMaker( - MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST)) - .setType(MetricsEvent.TYPE_FAILURE) - .setPackageName(mPackageName) - .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName); + LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST, servicePackageName) + .setType(MetricsEvent.TYPE_FAILURE); mMetricsLogger.write(log); getUiForShowing().showError(message, this); @@ -577,20 +572,25 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // FillServiceCallbacks @Override public void authenticate(int requestId, int datasetIndex, IntentSender intent, Bundle extras) { + if (sDebug) { + Slog.d(TAG, "authenticate(): requestId=" + requestId + "; datasetIdx=" + datasetIndex + + "; intentSender=" + intent); + } final Intent fillInIntent; synchronized (mLock) { - synchronized (mLock) { - if (mDestroyed) { - Slog.w(TAG, "Call to Session#authenticate() rejected - session: " - + id + " destroyed"); - return; - } + if (mDestroyed) { + Slog.w(TAG, "Call to Session#authenticate() rejected - session: " + + id + " destroyed"); + return; + } + fillInIntent = createAuthFillInIntentLocked(requestId, extras); + if (fillInIntent == null) { + forceRemoveSelfLocked(); + return; } - fillInIntent = createAuthFillInIntent( - getFillContextByRequestIdLocked(requestId).getStructure(), extras); } - mService.setAuthenticationSelected(id); + mService.setAuthenticationSelected(id, mClientState); final int authenticationId = AutofillManager.makeAuthenticationId(requestId, datasetIndex); mHandlerCaller.getHandler().post(() -> startAuthentication(authenticationId, @@ -613,7 +613,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return; } } - mHandlerCaller.getHandler().post(() -> autoFill(requestId, datasetIndex, dataset)); + mHandlerCaller.getHandler().post(() -> autoFill(requestId, datasetIndex, dataset, true)); } // AutoFillUiCallback @@ -701,7 +701,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState mHandlerCaller.getHandler().post(() -> { try { synchronized (mLock) { - mClient.startIntentSender(intentSender); + mClient.startIntentSender(intentSender, null); } } catch (RemoteException e) { Slog.e(TAG, "Error launching auth intent", e); @@ -741,16 +741,25 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } final Parcelable result = data.getParcelable(AutofillManager.EXTRA_AUTHENTICATION_RESULT); + if (sDebug) Slog.d(TAG, "setAuthenticationResultLocked(): result=" + result); if (result instanceof FillResponse) { - final FillResponse response = (FillResponse) result; - mMetricsLogger.action(MetricsEvent.AUTOFILL_AUTHENTICATED, mPackageName); - replaceResponseLocked(authenticatedResponse, response); + writeLog(MetricsEvent.AUTOFILL_AUTHENTICATED); + replaceResponseLocked(authenticatedResponse, (FillResponse) result); } else if (result instanceof Dataset) { if (datasetIdx != AutofillManager.AUTHENTICATION_ID_DATASET_ID_UNDEFINED) { + writeLog(MetricsEvent.AUTOFILL_DATASET_AUTHENTICATED); final Dataset dataset = (Dataset) result; authenticatedResponse.getDatasets().set(datasetIdx, dataset); - autoFill(requestId, datasetIdx, dataset); + autoFill(requestId, datasetIdx, dataset, false); + } else { + writeLog(MetricsEvent.AUTOFILL_INVALID_DATASET_AUTHENTICATION); + } + } else { + if (result != null) { + Slog.w(TAG, "service returned invalid auth type: " + result); } + writeLog(MetricsEvent.AUTOFILL_INVALID_AUTHENTICATION); + processNullResponseLocked(0); } } @@ -763,43 +772,57 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState mHasCallback = hasIt; } - /** - * Shows the save UI, when session can be saved. - * - * @return {@code true} if session is done, or {@code false} if it's pending user action. - */ - public boolean showSaveLocked() { - if (mDestroyed) { - Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: " - + id + " destroyed"); - return false; - } + @Nullable + private FillResponse getLastResponseLocked(@Nullable String logPrefix) { if (mContexts == null) { - Slog.d(TAG, "showSaveLocked(): no contexts"); - return true; + if (sDebug && logPrefix != null) Slog.d(TAG, logPrefix + ": no contexts"); + return null; } if (mResponses == null) { // Happens when the activity / session was finished before the service replied, or // when the service cannot autofill it (and returned a null response). - if (sVerbose) { - Slog.v(TAG, "showSaveLocked(): no responses on session"); + if (sVerbose && logPrefix != null) { + Slog.v(TAG, logPrefix + ": no responses on session"); } - return true; + return null; } final int lastResponseIdx = getLastResponseIndexLocked(); if (lastResponseIdx < 0) { - Slog.w(TAG, "showSaveLocked(): did not get last response. mResponses=" + mResponses - + ", mViewStates=" + mViewStates); - return true; + if (logPrefix != null) { + Slog.w(TAG, logPrefix + ": did not get last response. mResponses=" + mResponses + + ", mViewStates=" + mViewStates); + } + return null; } final FillResponse response = mResponses.valueAt(lastResponseIdx); - final SaveInfo saveInfo = response.getSaveInfo(); - if (sVerbose) { - Slog.v(TAG, "showSaveLocked(): mResponses=" + mResponses + ", mContexts=" + mContexts + if (sVerbose && logPrefix != null) { + Slog.v(TAG, logPrefix + ": mResponses=" + mResponses + ", mContexts=" + mContexts + ", mViewStates=" + mViewStates); } + return response; + } + + @Nullable + private SaveInfo getSaveInfoLocked() { + final FillResponse response = getLastResponseLocked(null); + return response == null ? null : response.getSaveInfo(); + } + + /** + * Shows the save UI, when session can be saved. + * + * @return {@code true} if session is done, or {@code false} if it's pending user action. + */ + public boolean showSaveLocked() { + if (mDestroyed) { + Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: " + + id + " destroyed"); + return false; + } + final FillResponse response = getLastResponseLocked("showSaveLocked()"); + final SaveInfo saveInfo = response == null ? null : response.getSaveInfo(); /* * The Save dialog is only shown if all conditions below are met: @@ -838,7 +861,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState AutofillValue value = viewState.getCurrentValue(); if (value == null || value.isEmpty()) { - final AutofillValue initialValue = getValueFromContexts(id); + final AutofillValue initialValue = getValueFromContextsLocked(id); if (initialValue != null) { if (sDebug) { Slog.d(TAG, "Value of required field " + id + " didn't change; " @@ -892,7 +915,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } else { // Update current values cache based on initial value - final AutofillValue initialValue = getValueFromContexts(id); + final AutofillValue initialValue = getValueFromContextsLocked(id); if (sDebug) { Slog.d(TAG, "no current value for " + id + "; initial value is " + initialValue); @@ -911,15 +934,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState final InternalValidator validator = saveInfo.getValidator(); if (validator != null) { + final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_SAVE_VALIDATION); boolean isValid; try { isValid = validator.isValid(valueFinder); + log.setType(isValid + ? MetricsEvent.TYPE_SUCCESS + : MetricsEvent.TYPE_DISMISS); } catch (Exception e) { - Slog.e(TAG, "Not showing save UI because of exception during validation " - + e.getClass()); + Slog.e(TAG, "Not showing save UI because validation failed:", e); + log.setType(MetricsEvent.TYPE_FAILURE); + mMetricsLogger.write(log); return true; } + mMetricsLogger.write(log); if (!isValid) { Slog.i(TAG, "not showing save UI because fields failed validation"); return true; @@ -963,9 +992,19 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } if (sDebug) Slog.d(TAG, "Good news, everyone! All checks passed, show save UI!"); - mService.setSaveShown(id); - getUiForShowing().showSaveUi(mService.getServiceLabel(), saveInfo, - valueFinder, mPackageName, this); + mService.logSaveShown(id, mClientState); + final IAutoFillManagerClient client = getClient(); + mPendingSaveUi = new PendingUi(mActivityToken, id, client); + getUiForShowing().showSaveUi(mService.getServiceLabel(), mService.getServiceIcon(), + mService.getServicePackageName(), saveInfo, valueFinder, mPackageName, this, + mPendingSaveUi); + if (client != null) { + try { + client.setSaveUiState(id, true); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying client to set save UI state to shown: " + e); + } + } mIsSaving = true; return false; } @@ -990,7 +1029,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * Gets the latest non-empty value for the given id in the autofill contexts. */ @Nullable - private AutofillValue getValueFromContexts(AutofillId id) { + private AutofillValue getValueFromContextsLocked(AutofillId id) { final int numContexts = mContexts.size(); for (int i = numContexts - 1; i >= 0; i--) { final FillContext context = mContexts.get(i); @@ -1012,7 +1051,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * Gets the latest autofill options for the given id in the autofill contexts. */ @Nullable - private CharSequence[] getAutofillOptionsFromContexts(AutofillId id) { + private CharSequence[] getAutofillOptionsFromContextsLocked(AutofillId id) { final int numContexts = mContexts.size(); for (int i = numContexts - 1; i >= 0; i--) { @@ -1037,6 +1076,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if (sVerbose) Slog.v(TAG, "callSaveLocked(): mViewStates=" + mViewStates); + if (mContexts == null) { + Slog.w(TAG, "callSaveLocked(): no contexts"); + return; + } + final int numContexts = mContexts.size(); for (int contextNum = 0; contextNum < numContexts; contextNum++) { @@ -1082,7 +1126,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // until the dispatch happens. The items in the list don't need to be cloned // since we don't hold on them anywhere else. The client state is not touched // by us, so no need to copy. - final SaveRequest saveRequest = new SaveRequest(new ArrayList<>(mContexts), mClientState); + final SaveRequest saveRequest = new SaveRequest(new ArrayList<>(mContexts), mClientState, + mSelectedDatasetIds); mRemoteFillService.onSaveRequest(saveRequest); } @@ -1218,6 +1263,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState break; case ACTION_VALUE_CHANGED: if (value != null && !value.equals(viewState.getCurrentValue())) { + if (value.isEmpty() + && viewState.getCurrentValue() != null + && viewState.getCurrentValue().isText() + && viewState.getCurrentValue().getTextValue() != null + && getSaveInfoLocked() != null) { + final int length = viewState.getCurrentValue().getTextValue().length(); + if (sDebug) { + Slog.d(TAG, "updateLocked(" + id + "): resetting value that was " + + length + " chars long"); + } + final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_VALUE_RESET) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_PREVIOUS_LENGTH, length); + mMetricsLogger.write(log); + } + // Always update the internal state. viewState.setCurrentValue(value); @@ -1246,7 +1306,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // Remove the UI if the ViewState has changed. if (mCurrentViewId != viewState.id) { - hideFillUiIfOwnedByMe(); + mUi.hideFillUi(this); mCurrentViewId = viewState.id; } @@ -1256,7 +1316,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState case ACTION_VIEW_EXITED: if (mCurrentViewId == viewState.id) { if (sVerbose) Slog.d(TAG, "Exiting view " + id); - hideFillUiIfOwnedByMe(); + mUi.hideFillUi(this); mCurrentViewId = null; } break; @@ -1293,7 +1353,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState filterText = value.getTextValue().toString(); } - getUiForShowing().showFillUi(filledId, response, filterText, mPackageName, this); + getUiForShowing().showFillUi(filledId, response, filterText, + mService.getServicePackageName(), mPackageName, this); } boolean isDestroyed() { @@ -1308,11 +1369,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - private void notifyUnavailableToClient() { + private void notifyUnavailableToClient(boolean sessionFinished) { synchronized (mLock) { - if (!mHasCallback || mCurrentViewId == null) return; + if (mCurrentViewId == null) return; try { - mClient.notifyNoFillUi(id, mCurrentViewId); + if (mHasCallback) { + mClient.notifyNoFillUi(id, mCurrentViewId, sessionFinished); + } else if (sessionFinished) { + mClient.setSessionFinished(AutofillManager.STATE_FINISHED); + } } catch (RemoteException e) { Slog.e(TAG, "Error notifying client no fill UI: id=" + mCurrentViewId, e); } @@ -1393,10 +1458,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState processResponseLocked(newResponse, 0); } + private void processNullResponseLocked(int flags) { + if (sVerbose) Slog.v(TAG, "canceling session " + id + " when server returned null"); + if ((flags & FLAG_MANUAL_REQUEST) != 0) { + getUiForShowing().showError(R.string.autofill_error_cannot_autofill, this); + } + mService.resetLastResponse(); + // Nothing to be done, but need to notify client. + notifyUnavailableToClient(true); + removeSelf(); + } + private void processResponseLocked(@NonNull FillResponse newResponse, int flags) { // Make sure we are hiding the UI which will be shown // only if handling the current response requires it. - hideAllUiIfOwnedByMe(); + mUi.hideAll(this); final int requestId = newResponse.getRequestId(); if (sVerbose) { @@ -1507,7 +1583,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return viewState; } - void autoFill(int requestId, int datasetIndex, Dataset dataset) { + void autoFill(int requestId, int datasetIndex, Dataset dataset, boolean generateEvent) { + if (sDebug) { + Slog.d(TAG, "autoFill(): requestId=" + requestId + "; datasetIdx=" + datasetIndex + + "; dataset=" + dataset); + } synchronized (mLock) { if (mDestroyed) { Slog.w(TAG, "Call to Session#autoFill() rejected - session: " @@ -1516,21 +1596,26 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } // Autofill it directly... if (dataset.getAuthentication() == null) { - mService.setDatasetSelected(dataset.getId(), id); + if (generateEvent) { + mService.logDatasetSelected(dataset.getId(), id, mClientState); + } autoFillApp(dataset); return; } // ...or handle authentication. - mService.setDatasetAuthenticationSelected(dataset.getId(), id); + mService.logDatasetAuthenticationSelected(dataset.getId(), id, mClientState); setViewStatesLocked(null, dataset, ViewState.STATE_WAITING_DATASET_AUTH, false); - final Intent fillInIntent = createAuthFillInIntent( - getFillContextByRequestIdLocked(requestId).getStructure(), mClientState); - + final Intent fillInIntent = createAuthFillInIntentLocked(requestId, mClientState); + if (fillInIntent == null) { + forceRemoveSelfLocked(); + return; + } final int authenticationId = AutofillManager.makeAuthenticationId(requestId, datasetIndex); startAuthentication(authenticationId, dataset.getAuthentication(), fillInIntent); + } } @@ -1540,9 +1625,18 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - private Intent createAuthFillInIntent(AssistStructure structure, Bundle extras) { + // TODO: this should never be null, but we got at least one occurrence, probably due to a race. + @Nullable + private Intent createAuthFillInIntentLocked(int requestId, Bundle extras) { final Intent fillInIntent = new Intent(); - fillInIntent.putExtra(AutofillManager.EXTRA_ASSIST_STRUCTURE, structure); + + final FillContext context = getFillContextByRequestIdLocked(requestId); + if (context == null) { + Slog.wtf(TAG, "createAuthFillInIntentLocked(): no FillContext. requestId=" + requestId + + "; mContexts= " + mContexts); + return null; + } + fillInIntent.putExtra(AutofillManager.EXTRA_ASSIST_STRUCTURE, context.getStructure()); fillInIntent.putExtra(AutofillManager.EXTRA_CLIENT_STATE, extras); return fillInIntent; } @@ -1583,6 +1677,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState pw.print(prefix); pw.print("mViewStates size: "); pw.println(mViewStates.size()); pw.print(prefix); pw.print("mDestroyed: "); pw.println(mDestroyed); pw.print(prefix); pw.print("mIsSaving: "); pw.println(mIsSaving); + pw.print(prefix); pw.print("mPendingSaveUi: "); pw.println(mPendingSaveUi); for (Map.Entry<AutofillId, ViewState> entry : mViewStates.entrySet()) { pw.print(prefix); pw.print("State for id "); pw.println(entry.getKey()); entry.getValue().dump(prefix2, pw); @@ -1609,6 +1704,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState pw.print(prefix); pw.print("mHasCallback: "); pw.println(mHasCallback); pw.print(prefix); pw.print("mClientState: "); pw.println( Helper.bundleToString(mClientState)); + pw.print(prefix); pw.print("mSelectedDatasetIds: "); pw.println(mSelectedDatasetIds); mRemoteFillService.dump(prefix, pw); } @@ -1644,11 +1740,17 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } if (!ids.isEmpty()) { if (waitingDatasetAuth) { - hideFillUiIfOwnedByMe(); + mUi.hideFillUi(this); } if (sDebug) Slog.d(TAG, "autoFillApp(): the buck is on the app: " + dataset); mClient.autofill(id, ids, values); + if (dataset.getId() != null) { + if (mSelectedDatasetIds == null) { + mSelectedDatasetIds = new ArrayList<>(); + } + mSelectedDatasetIds.add(dataset.getId()); + } setViewStatesLocked(null, dataset, ViewState.STATE_AUTOFILLED, false); } } catch (RemoteException e) { @@ -1664,38 +1766,73 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } + /** + * Cleans up this session. + * + * <p>Typically called in 2 scenarios: + * + * <ul> + * <li>When the session naturally finishes (i.e., from {@link #removeSelfLocked()}. + * <li>When the service hosting the session is finished (for example, because the user + * disabled it). + * </ul> + */ RemoteFillService destroyLocked() { if (mDestroyed) { return null; } - hideAllUiIfOwnedByMe(); + mUi.destroyAll(mPendingSaveUi, this, true); mUi.clearCallback(this); mDestroyed = true; - mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_FINISHED, mPackageName); + writeLog(MetricsEvent.AUTOFILL_SESSION_FINISHED); return mRemoteFillService; } - private void hideAllUiIfOwnedByMe() { - mUi.hideAll(this); - } - - private void hideFillUiIfOwnedByMe() { - mUi.hideFillUi(this); + /** + * Cleans up this session and remove it from the service always, even if it does have a pending + * Save UI. + */ + void forceRemoveSelfLocked() { + if (sVerbose) Slog.v(TAG, "forceRemoveSelfLocked(): " + mPendingSaveUi); + + final boolean isPendingSaveUi = isSaveUiPendingLocked(); + mPendingSaveUi = null; + removeSelfLocked(); + mUi.destroyAll(mPendingSaveUi, this, false); + if (!isPendingSaveUi) { + try { + mClient.setSessionFinished(AutofillManager.STATE_UNKNOWN); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying client to finish session", e); + } + } } + /** + * Thread-safe version of {@link #removeSelfLocked()}. + */ private void removeSelf() { synchronized (mLock) { removeSelfLocked(); } } + /** + * Cleans up this session and remove it from the service, but but only if it does not have a + * pending Save UI. + */ void removeSelfLocked() { - if (sVerbose) Slog.v(TAG, "removeSelfLocked()"); + if (sVerbose) Slog.v(TAG, "removeSelfLocked(): " + mPendingSaveUi); if (mDestroyed) { Slog.w(TAG, "Call to Session#removeSelfLocked() rejected - session: " + id + " destroyed"); return; } + if (isSaveUiPendingLocked()) { + Slog.i(TAG, "removeSelfLocked() ignored, waiting for pending save ui"); + return; + } + final RemoteFillService remoteFillService = destroyLocked(); mService.removeSessionLocked(id); if (remoteFillService != null) { @@ -1703,6 +1840,26 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } + void onPendingSaveUi(int operation, @NonNull IBinder token) { + getUiForShowing().onPendingSaveUi(operation, token); + } + + /** + * Checks whether this session is hiding the Save UI to handle a custom description link for + * a specific {@code token} created by + * {@link PendingUi#PendingUi(IBinder, int, IAutoFillManagerClient)}. + */ + boolean isSaveUiPendingForTokenLocked(@NonNull IBinder token) { + return isSaveUiPendingLocked() && token.equals(mPendingSaveUi.getToken()); + } + + /** + * Checks whether this session is hiding the Save UI to handle a custom description link. + */ + private boolean isSaveUiPendingLocked() { + return mPendingSaveUi != null && mPendingSaveUi.getState() == PendingUi.STATE_PENDING; + } + private int getLastResponseIndexLocked() { // The response ids are monotonically increasing so // we just find the largest id which is the last. We @@ -1720,4 +1877,16 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } return lastResponseIdx; } + + private LogMaker newLogMaker(int category) { + return newLogMaker(category, mService.getServicePackageName()); + } + + private LogMaker newLogMaker(int category, String servicePackageName) { + return Helper.newLogMaker(category, mPackageName, servicePackageName); + } + + private void writeLog(int category) { + mMetricsLogger.write(newLogMaker(category)); + } } diff --git a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java index 67ee1858f583..36b95fc02ed8 100644 --- a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java +++ b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java @@ -22,9 +22,12 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.content.IntentSender; +import android.graphics.drawable.Drawable; import android.metrics.LogMaker; import android.os.Bundle; import android.os.Handler; +import android.os.IBinder; +import android.os.RemoteException; import android.service.autofill.Dataset; import android.service.autofill.FillResponse; import android.service.autofill.SaveInfo; @@ -37,8 +40,9 @@ import android.view.autofill.IAutofillWindowPresenter; import android.widget.Toast; import com.android.internal.logging.MetricsLogger; -import com.android.internal.logging.nano.MetricsProto; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.server.UiThread; +import com.android.server.autofill.Helper; import java.io.PrintWriter; @@ -143,7 +147,6 @@ public final class AutoFillUI { if (callback != mCallback) { return; } - hideSaveUiUiThread(callback); if (mFillUi != null) { mFillUi.setFilterText(filterText); } @@ -156,21 +159,22 @@ public final class AutoFillUI { * @param focusedId the currently focused field * @param response the current fill response * @param filterText text of the view to be filled + * @param servicePackageName package name of the autofill service filling the activity * @param packageName package name of the activity that is filled * @param callback Identifier for the caller */ public void showFillUi(@NonNull AutofillId focusedId, @NonNull FillResponse response, - @Nullable String filterText, @NonNull String packageName, - @NonNull AutoFillUiCallback callback) { + @Nullable String filterText, @Nullable String servicePackageName, + @NonNull String packageName, @NonNull AutoFillUiCallback callback) { if (sDebug) { final int size = filterText == null ? 0 : filterText.length(); Slog.d(TAG, "showFillUi(): id=" + focusedId + ", filter=" + size + " chars"); } - final LogMaker log = (new LogMaker(MetricsProto.MetricsEvent.AUTOFILL_FILL_UI)) - .setPackageName(packageName) - .addTaggedData(MetricsProto.MetricsEvent.FIELD_AUTOFILL_FILTERTEXT_LEN, + final LogMaker log = + Helper.newLogMaker(MetricsEvent.AUTOFILL_FILL_UI, packageName, servicePackageName) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_FILTERTEXT_LEN, filterText == null ? 0 : filterText.length()) - .addTaggedData(MetricsProto.MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS, + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS, response.getDatasets() == null ? 0 : response.getDatasets().size()); mHandler.post(() -> { @@ -182,7 +186,7 @@ public final class AutoFillUI { filterText, mOverlayControl, new FillUi.Callback() { @Override public void onResponsePicked(FillResponse response) { - log.setType(MetricsProto.MetricsEvent.TYPE_DETAIL); + log.setType(MetricsEvent.TYPE_DETAIL); hideFillUiUiThread(callback); if (mCallback != null) { mCallback.authenticate(response.getRequestId(), @@ -193,7 +197,7 @@ public final class AutoFillUI { @Override public void onDatasetPicked(Dataset dataset) { - log.setType(MetricsProto.MetricsEvent.TYPE_ACTION); + log.setType(MetricsEvent.TYPE_ACTION); hideFillUiUiThread(callback); if (mCallback != null) { final int datasetIndex = response.getDatasets().indexOf(dataset); @@ -203,14 +207,14 @@ public final class AutoFillUI { @Override public void onCanceled() { - log.setType(MetricsProto.MetricsEvent.TYPE_DISMISS); + log.setType(MetricsEvent.TYPE_DISMISS); hideFillUiUiThread(callback); } @Override public void onDestroy() { - if (log.getType() == MetricsProto.MetricsEvent.TYPE_UNKNOWN) { - log.setType(MetricsProto.MetricsEvent.TYPE_CLOSE); + if (log.getType() == MetricsEvent.TYPE_UNKNOWN) { + log.setType(MetricsEvent.TYPE_CLOSE); } mMetricsLogger.write(log); } @@ -243,38 +247,41 @@ public final class AutoFillUI { /** * Shows the UI asking the user to save for autofill. */ - public void showSaveUi(@NonNull CharSequence providerLabel, @NonNull SaveInfo info, + public void showSaveUi(@NonNull CharSequence serviceLabel, @NonNull Drawable serviceIcon, + @Nullable String servicePackageName, @NonNull SaveInfo info, @NonNull ValueFinder valueFinder, @NonNull String packageName, - @NonNull AutoFillUiCallback callback) { + @NonNull AutoFillUiCallback callback, @NonNull PendingUi pendingSaveUi) { if (sVerbose) Slog.v(TAG, "showSaveUi() for " + packageName + ": " + info); int numIds = 0; numIds += info.getRequiredIds() == null ? 0 : info.getRequiredIds().length; numIds += info.getOptionalIds() == null ? 0 : info.getOptionalIds().length; - LogMaker log = (new LogMaker(MetricsProto.MetricsEvent.AUTOFILL_SAVE_UI)) - .setPackageName(packageName).addTaggedData( - MetricsProto.MetricsEvent.FIELD_AUTOFILL_NUM_IDS, numIds); + final LogMaker log = + Helper.newLogMaker(MetricsEvent.AUTOFILL_SAVE_UI, packageName, servicePackageName) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_IDS, numIds); mHandler.post(() -> { if (callback != mCallback) { return; } hideAllUiThread(callback); - mSaveUi = new SaveUi(mContext, providerLabel, info, valueFinder, mOverlayControl, + mSaveUi = new SaveUi(mContext, pendingSaveUi, serviceLabel, serviceIcon, + servicePackageName, packageName, info, valueFinder, mOverlayControl, new SaveUi.OnSaveListener() { @Override public void onSave() { - log.setType(MetricsProto.MetricsEvent.TYPE_ACTION); - hideSaveUiUiThread(callback); + log.setType(MetricsEvent.TYPE_ACTION); + hideSaveUiUiThread(mCallback); if (mCallback != null) { mCallback.save(); } + destroySaveUiUiThread(pendingSaveUi, true); } @Override public void onCancel(IntentSender listener) { - log.setType(MetricsProto.MetricsEvent.TYPE_DISMISS); - hideSaveUiUiThread(callback); + log.setType(MetricsEvent.TYPE_DISMISS); + hideSaveUiUiThread(mCallback); if (listener != null) { try { listener.sendIntent(mContext, 0, null, null, null); @@ -286,12 +293,13 @@ public final class AutoFillUI { if (mCallback != null) { mCallback.cancelSave(); } + destroySaveUiUiThread(pendingSaveUi, true); } @Override public void onDestroy() { - if (log.getType() == MetricsProto.MetricsEvent.TYPE_UNKNOWN) { - log.setType(MetricsProto.MetricsEvent.TYPE_CLOSE); + if (log.getType() == MetricsEvent.TYPE_UNKNOWN) { + log.setType(MetricsEvent.TYPE_CLOSE); if (mCallback != null) { mCallback.cancelSave(); @@ -304,12 +312,33 @@ public final class AutoFillUI { } /** + * Executes an operation in the pending save UI, if any. + */ + public void onPendingSaveUi(int operation, @NonNull IBinder token) { + mHandler.post(() -> { + if (mSaveUi != null) { + mSaveUi.onPendingUi(operation, token); + } else { + Slog.w(TAG, "onPendingSaveUi(" + operation + "): no save ui"); + } + }); + } + + /** * Hides all UI affordances. */ public void hideAll(@Nullable AutoFillUiCallback callback) { mHandler.post(() -> hideAllUiThread(callback)); } + /** + * Destroy all UI affordances. + */ + public void destroyAll(@Nullable PendingUi pendingSaveUi, + @Nullable AutoFillUiCallback callback, boolean notifyClient) { + mHandler.post(() -> destroyAllUiThread(pendingSaveUi, callback, notifyClient)); + } + public void dump(PrintWriter pw) { pw.println("Autofill UI"); final String prefix = " "; @@ -337,20 +366,58 @@ public final class AutoFillUI { } @android.annotation.UiThread - private void hideSaveUiUiThread(@Nullable AutoFillUiCallback callback) { + @Nullable + private PendingUi hideSaveUiUiThread(@Nullable AutoFillUiCallback callback) { if (sVerbose) { Slog.v(TAG, "hideSaveUiUiThread(): mSaveUi=" + mSaveUi + ", callback=" + callback + ", mCallback=" + mCallback); } if (mSaveUi != null && (callback == null || callback == mCallback)) { - mSaveUi.destroy(); - mSaveUi = null; + return mSaveUi.hide(); + } + return null; + } + + @android.annotation.UiThread + private void destroySaveUiUiThread(@Nullable PendingUi pendingSaveUi, boolean notifyClient) { + if (mSaveUi == null) { + // Calling destroySaveUiUiThread() twice is normal - it usually happens when the + // first call is made after the SaveUI is hidden and the second when the session is + // finished. + if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): already destroyed"); + return; + } + + if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): " + pendingSaveUi); + mSaveUi.destroy(); + mSaveUi = null; + if (pendingSaveUi != null && notifyClient) { + try { + if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): notifying client"); + pendingSaveUi.client.setSaveUiState(pendingSaveUi.id, false); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying client to set save UI state to hidden: " + e); + } } } @android.annotation.UiThread + private void destroyAllUiThread(@Nullable PendingUi pendingSaveUi, + @Nullable AutoFillUiCallback callback, boolean notifyClient) { + hideFillUiUiThread(callback); + destroySaveUiUiThread(pendingSaveUi, notifyClient); + } + + @android.annotation.UiThread private void hideAllUiThread(@Nullable AutoFillUiCallback callback) { hideFillUiUiThread(callback); - hideSaveUiUiThread(callback); + final PendingUi pendingSaveUi = hideSaveUiUiThread(callback); + if (pendingSaveUi != null && pendingSaveUi.getState() == PendingUi.STATE_FINISHED) { + if (sDebug) { + Slog.d(TAG, "hideAllUiThread(): " + + "destroying Save UI because pending restoration is finished"); + } + destroySaveUiUiThread(pendingSaveUi, true); + } } } diff --git a/services/autofill/java/com/android/server/autofill/ui/FillUi.java b/services/autofill/java/com/android/server/autofill/ui/FillUi.java index 24f3b339b761..371e74d6f04e 100644 --- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java +++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java @@ -229,6 +229,13 @@ final class FillUi { public void setFilterText(@Nullable String filterText) { throwIfDestroyed(); if (mAdapter == null) { + // ViewState doesn't not support filtering - typically when it's for an authenticated + // FillResponse. + if (TextUtils.isEmpty(filterText)) { + mCallback.requestShowFillUi(mContentWidth, mContentHeight, mWindowPresenter); + } else { + mCallback.requestHideFillUi(); + } return; } @@ -510,8 +517,9 @@ final class FillUi { final ViewItem item = mAllItems.get(i); final String value = item.getValue(); // No value, i.e. null, matches any filter - if (value == null - || value.toLowerCase().startsWith(constraintLowerCase)) { + if ((value == null && item.mDataset.getAuthentication() == null) + || (value != null + && value.toLowerCase().startsWith(constraintLowerCase))) { filteredItems.add(item); } } @@ -525,9 +533,11 @@ final class FillUi { final boolean resultCountChanged; final int oldItemCount = mFilteredItems.size(); mFilteredItems.clear(); - @SuppressWarnings("unchecked") - final List<ViewItem> items = (List<ViewItem>) results.values; - mFilteredItems.addAll(items); + if (results.count > 0) { + @SuppressWarnings("unchecked") + final List<ViewItem> items = (List<ViewItem>) results.values; + mFilteredItems.addAll(items); + } resultCountChanged = (oldItemCount != mFilteredItems.size()); if (resultCountChanged) { announceSearchResultIfNeeded(); diff --git a/services/autofill/java/com/android/server/autofill/ui/PendingUi.java b/services/autofill/java/com/android/server/autofill/ui/PendingUi.java new file mode 100644 index 000000000000..0851d3bf12de --- /dev/null +++ b/services/autofill/java/com/android/server/autofill/ui/PendingUi.java @@ -0,0 +1,87 @@ +/* + * 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.server.autofill.ui; + +import android.annotation.NonNull; +import android.os.IBinder; +import android.util.DebugUtils; +import android.view.autofill.IAutoFillManagerClient; + +/** + * Helper class used to handle a pending Autofill affordance such as the Save UI. + * + * <p>This class is not thread safe. + */ +// NOTE: this class could be an interface implemented by Session, but that would make it harder +// to move the Autofill UI logic to a different process. +public final class PendingUi { + + public static final int STATE_CREATED = 1; + public static final int STATE_PENDING = 2; + public static final int STATE_FINISHED = 4; + + private final IBinder mToken; + private int mState; + public final int id; + public final IAutoFillManagerClient client; + + /** + * Default constructor. + * + * @param token token used to identify this pending UI. + */ + public PendingUi(@NonNull IBinder token, int id, @NonNull IAutoFillManagerClient client) { + mToken = token; + mState = STATE_CREATED; + this.id = id; + this.client = client; + } + + /** + * Gets the token used to identify this pending UI. + */ + @NonNull + public IBinder getToken() { + return mToken; + } + + /** + * Sets the current lifecycle state. + */ + public void setState(int state) { + mState = state; + } + + /** + * Gets the current lifecycle state. + */ + public int getState() { + return mState; + } + + /** + * Determines whether the given token matches the token used to identify this pending UI. + */ + public boolean matches(IBinder token) { + return mToken.equals(token); + } + + @Override + public String toString() { + return "PendingUi: [token=" + mToken + ", id=" + id + ", state=" + + DebugUtils.flagsToString(PendingUi.class, "STATE_", mState) + "]"; + } +} diff --git a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java index 3727c6eb0e6c..cd9bdb7205b1 100644 --- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java +++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java @@ -20,10 +20,18 @@ import static com.android.server.autofill.Helper.sDebug; import static com.android.server.autofill.Helper.sVerbose; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.Dialog; +import android.app.PendingIntent; import android.content.Context; +import android.content.Intent; import android.content.IntentSender; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.metrics.LogMaker; import android.os.Handler; +import android.os.IBinder; +import android.os.RemoteException; import android.service.autofill.CustomDescription; import android.service.autofill.SaveInfo; import android.service.autofill.ValueFinder; @@ -31,17 +39,21 @@ import android.text.Html; import android.util.ArraySet; import android.util.Slog; import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; +import android.view.autofill.AutofillManager; +import android.widget.ImageView; import android.widget.RemoteViews; import android.widget.ScrollView; import android.widget.TextView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; import com.android.internal.R; +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.server.UiThread; import java.io.PrintWriter; @@ -100,6 +112,7 @@ final class SaveUi { } private final Handler mHandler = UiThread.getHandler(); + private final MetricsLogger mMetricsLogger = new MetricsLogger(); private final @NonNull Dialog mDialog; @@ -109,14 +122,22 @@ final class SaveUi { private final CharSequence mTitle; private final CharSequence mSubTitle; + private final PendingUi mPendingUi; + private final String mServicePackageName; + private final String mPackageName; private boolean mDestroyed; - SaveUi(@NonNull Context context, @NonNull CharSequence providerLabel, @NonNull SaveInfo info, - @NonNull ValueFinder valueFinder, @NonNull OverlayControl overlayControl, - @NonNull OnSaveListener listener) { + SaveUi(@NonNull Context context, @NonNull PendingUi pendingUi, + @NonNull CharSequence serviceLabel, @NonNull Drawable serviceIcon, + @Nullable String servicePackageName, @NonNull String packageName, + @NonNull SaveInfo info, @NonNull ValueFinder valueFinder, + @NonNull OverlayControl overlayControl, @NonNull OnSaveListener listener) { + mPendingUi= pendingUi; mListener = new OneTimeListener(listener); mOverlayControl = overlayControl; + mServicePackageName = servicePackageName; + mPackageName = packageName; final LayoutInflater inflater = LayoutInflater.from(context); final View view = inflater.inflate(R.layout.autofill_save, null); @@ -145,34 +166,73 @@ final class SaveUi { switch (types.size()) { case 1: mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_type, - types.valueAt(0), providerLabel), 0); + types.valueAt(0), serviceLabel), 0); break; case 2: mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_2types, - types.valueAt(0), types.valueAt(1), providerLabel), 0); + types.valueAt(0), types.valueAt(1), serviceLabel), 0); break; case 3: mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_3types, - types.valueAt(0), types.valueAt(1), types.valueAt(2), providerLabel), 0); + types.valueAt(0), types.valueAt(1), types.valueAt(2), serviceLabel), 0); break; default: // Use generic if more than 3 or invalid type (size 0). mTitle = Html.fromHtml( - context.getString(R.string.autofill_save_title, providerLabel), 0); + context.getString(R.string.autofill_save_title, serviceLabel), 0); } - titleView.setText(mTitle); + setServiceIcon(context, view, serviceIcon); + ScrollView subtitleContainer = null; final CustomDescription customDescription = info.getCustomDescription(); if (customDescription != null) { + writeLog(MetricsEvent.AUTOFILL_SAVE_CUSTOM_DESCRIPTION, type); + mSubTitle = null; if (sDebug) Slog.d(TAG, "Using custom description"); final RemoteViews presentation = customDescription.getPresentation(valueFinder); if (presentation != null) { + final RemoteViews.OnClickHandler handler = new RemoteViews.OnClickHandler() { + @Override + public boolean onClickHandler(View view, PendingIntent pendingIntent, + Intent intent) { + final LogMaker log = + newLogMaker(MetricsEvent.AUTOFILL_SAVE_LINK_TAPPED, type); + // We need to hide the Save UI before launching the pending intent, and + // restore back it once the activity is finished, and that's achieved by + // adding a custom extra in the activity intent. + final boolean isValid = isValidLink(pendingIntent, intent); + if (!isValid) { + log.setType(MetricsEvent.TYPE_UNKNOWN); + mMetricsLogger.write(log); + return false; + } + if (sVerbose) Slog.v(TAG, "Intercepting custom description intent"); + final IBinder token = mPendingUi.getToken(); + intent.putExtra(AutofillManager.EXTRA_RESTORE_SESSION_TOKEN, token); + try { + pendingUi.client.startIntentSender(pendingIntent.getIntentSender(), + intent); + mPendingUi.setState(PendingUi.STATE_PENDING); + if (sDebug) Slog.d(TAG, "hiding UI until restored with token " + token); + hide(); + log.setType(MetricsEvent.TYPE_OPEN); + mMetricsLogger.write(log); + return true; + } catch (RemoteException e) { + Slog.w(TAG, "error triggering pending intent: " + intent); + log.setType(MetricsEvent.TYPE_FAILURE); + mMetricsLogger.write(log); + return false; + } + } + }; + try { - final View customSubtitleView = presentation.apply(context, null); + final View customSubtitleView = presentation.apply(context, null, handler); subtitleContainer = view.findViewById(R.id.autofill_save_custom_subtitle); subtitleContainer.addView(customSubtitleView); subtitleContainer.setVisibility(View.VISIBLE); @@ -185,6 +245,7 @@ final class SaveUi { } else { mSubTitle = info.getDescription(); if (mSubTitle != null) { + writeLog(MetricsEvent.AUTOFILL_SAVE_CUSTOM_SUBTITLE, type); subtitleContainer = view.findViewById(R.id.autofill_save_custom_subtitle); final TextView subtitleView = new TextView(context); subtitleView.setText(mSubTitle); @@ -202,9 +263,7 @@ final class SaveUi { } else { noButton.setText(R.string.autofill_save_no); } - View.OnClickListener cancelListener = - (v) -> mListener.onCancel(info.getNegativeActionListener()); - noButton.setOnClickListener(cancelListener); + noButton.setOnClickListener((v) -> mListener.onCancel(info.getNegativeActionListener())); final View yesButton = view.findViewById(R.id.autofill_save_yes); yesButton.setOnClickListener((v) -> mListener.onSave()); @@ -227,9 +286,114 @@ final class SaveUi { params.accessibilityTitle = context.getString(R.string.autofill_save_accessibility_title); params.windowAnimations = R.style.AutofillSaveAnimation; + show(); + } + + private void setServiceIcon(Context context, View view, Drawable serviceIcon) { + final ImageView iconView = view.findViewById(R.id.autofill_save_icon); + final Resources res = context.getResources(); + + final int maxWidth = res.getDimensionPixelSize(R.dimen.autofill_save_icon_max_size); + final int maxHeight = maxWidth; + final int actualWidth = serviceIcon.getMinimumWidth(); + final int actualHeight = serviceIcon.getMinimumHeight(); + + if (actualWidth <= maxWidth && actualHeight <= maxHeight) { + if (sDebug) { + Slog.d(TAG, "Adding service icon " + + "(" + actualWidth + "x" + actualHeight + ") as it's less than maximum " + + "(" + maxWidth + "x" + maxHeight + ")."); + } + iconView.setImageDrawable(serviceIcon); + } else { + Slog.w(TAG, "Not adding service icon of size " + + "(" + actualWidth + "x" + actualHeight + ") because maximum is " + + "(" + maxWidth + "x" + maxHeight + ")."); + ((ViewGroup)iconView.getParent()).removeView(iconView); + } + } + + private static boolean isValidLink(PendingIntent pendingIntent, Intent intent) { + if (pendingIntent == null) { + Slog.w(TAG, "isValidLink(): custom description without pending intent"); + return false; + } + if (!pendingIntent.isActivity()) { + Slog.w(TAG, "isValidLink(): pending intent not for activity"); + return false; + } + if (intent == null) { + Slog.w(TAG, "isValidLink(): no intent"); + return false; + } + return true; + } + + private LogMaker newLogMaker(int category, int saveType) { + return newLogMaker(category) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SAVE_TYPE, saveType); + } + + private LogMaker newLogMaker(int category) { + return new LogMaker(category) + .setPackageName(mPackageName) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, mServicePackageName); + } + + private void writeLog(int category, int saveType) { + mMetricsLogger.write(newLogMaker(category, saveType)); + } + + /** + * Update the pending UI, if any. + * + * @param operation how to update it. + * @param token token associated with the pending UI - if it doesn't match the pending token, + * the operation will be ignored. + */ + void onPendingUi(int operation, @NonNull IBinder token) { + if (!mPendingUi.matches(token)) { + Slog.w(TAG, "restore(" + operation + "): got token " + token + " instead of " + + mPendingUi.getToken()); + return; + } + final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_PENDING_SAVE_UI_OPERATION); + try { + switch (operation) { + case AutofillManager.PENDING_UI_OPERATION_RESTORE: + if (sDebug) Slog.d(TAG, "Restoring save dialog for " + token); + log.setType(MetricsEvent.TYPE_OPEN); + show(); + break; + case AutofillManager.PENDING_UI_OPERATION_CANCEL: + log.setType(MetricsEvent.TYPE_DISMISS); + if (sDebug) Slog.d(TAG, "Cancelling pending save dialog for " + token); + hide(); + break; + default: + log.setType(MetricsEvent.TYPE_FAILURE); + Slog.w(TAG, "restore(): invalid operation " + operation); + } + } finally { + mMetricsLogger.write(log); + } + mPendingUi.setState(PendingUi.STATE_FINISHED); + } + + private void show() { Slog.i(TAG, "Showing save dialog: " + mTitle); mDialog.show(); mOverlayControl.hideOverlays(); + } + + PendingUi hide() { + if (sVerbose) Slog.v(TAG, "Hiding save dialog."); + try { + mDialog.hide(); + } finally { + mOverlayControl.showOverlays(); + } + return mPendingUi; } void destroy() { @@ -238,7 +402,6 @@ final class SaveUi { throwIfDestroyed(); mListener.onDestroy(); mHandler.removeCallbacksAndMessages(mListener); - if (sVerbose) Slog.v(TAG, "destroy(): dismissing dialog"); mDialog.dismiss(); mDestroyed = true; } finally { @@ -260,6 +423,9 @@ final class SaveUi { void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("title: "); pw.println(mTitle); pw.print(prefix); pw.print("subtitle: "); pw.println(mSubTitle); + pw.print(prefix); pw.print("pendingUi: "); pw.println(mPendingUi); + pw.print(prefix); pw.print("service: "); pw.println(mServicePackageName); + pw.print(prefix); pw.print("app: "); pw.println(mPackageName); final View view = mDialog.getWindow().getDecorView(); final int[] loc = view.getLocationOnScreen(); diff --git a/services/backup/java/com/android/server/backup/BackupManagerConstants.java b/services/backup/java/com/android/server/backup/BackupManagerConstants.java new file mode 100644 index 000000000000..cd601826cb5d --- /dev/null +++ b/services/backup/java/com/android/server/backup/BackupManagerConstants.java @@ -0,0 +1,180 @@ +/* + * 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.server.backup; + +import android.app.AlarmManager; +import android.content.ContentResolver; +import android.content.Context; +import android.content.res.Resources; +import android.database.ContentObserver; +import android.net.Uri; +import android.os.Handler; +import android.provider.Settings; +import android.util.KeyValueListParser; +import android.util.Slog; + +/** + * Class to access backup manager constants. + * + * The backup manager constants are encoded as a key value list separated by commas + * and stored as a Settings.Secure. + */ +class BackupManagerConstants extends ContentObserver { + private static final String TAG = "BackupManagerConstants"; + + // Key names stored in the secure settings value. + private static final String KEY_VALUE_BACKUP_INTERVAL_MILLISECONDS = + "key_value_backup_interval_milliseconds"; + private static final String KEY_VALUE_BACKUP_FUZZ_MILLISECONDS = + "key_value_backup_fuzz_milliseconds"; + private static final String KEY_VALUE_BACKUP_REQUIRE_CHARGING = + "key_value_backup_require_charging"; + private static final String KEY_VALUE_BACKUP_REQUIRED_NETWORK_TYPE = + "key_value_backup_required_network_type"; + private static final String FULL_BACKUP_INTERVAL_MILLISECONDS = + "full_backup_interval_milliseconds"; + private static final String FULL_BACKUP_REQUIRE_CHARGING = + "full_backup_require_charging"; + private static final String FULL_BACKUP_REQUIRED_NETWORK_TYPE = + "full_backup_required_network_type"; + + // Hard coded default values. + private static final long DEFAULT_KEY_VALUE_BACKUP_INTERVAL_MILLISECONDS = + 4 * AlarmManager.INTERVAL_HOUR; + private static final long DEFAULT_KEY_VALUE_BACKUP_FUZZ_MILLISECONDS = + 10 * 60 * 1000; + private static final boolean DEFAULT_KEY_VALUE_BACKUP_REQUIRE_CHARGING = true; + private static final int DEFAULT_KEY_VALUE_BACKUP_REQUIRED_NETWORK_TYPE = 1; + private static final long DEFAULT_FULL_BACKUP_INTERVAL_MILLISECONDS = + 24 * AlarmManager.INTERVAL_HOUR; + private static final boolean DEFAULT_FULL_BACKUP_REQUIRE_CHARGING = true; + private static final int DEFAULT_FULL_BACKUP_REQUIRED_NETWORK_TYPE = 2; + + // Backup manager constants. + private long mKeyValueBackupIntervalMilliseconds; + private long mKeyValueBackupFuzzMilliseconds; + private boolean mKeyValueBackupRequireCharging; + private int mKeyValueBackupRequiredNetworkType; + private long mFullBackupIntervalMilliseconds; + private boolean mFullBackupRequireCharging; + private int mFullBackupRequiredNetworkType; + + private ContentResolver mResolver; + private final KeyValueListParser mParser = new KeyValueListParser(','); + + public BackupManagerConstants(Handler handler, ContentResolver resolver) { + super(handler); + mResolver = resolver; + updateSettings(); + } + + public void start() { + mResolver.registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.BACKUP_MANAGER_CONSTANTS), false, this); + } + + @Override + public void onChange(boolean selfChange, Uri uri) { + updateSettings(); + } + + private synchronized void updateSettings() { + try { + mParser.setString(Settings.Secure.getString(mResolver, + Settings.Secure.BACKUP_MANAGER_CONSTANTS)); + } catch (IllegalArgumentException e) { + // Failed to parse the settings string. Use defaults. + Slog.e(TAG, "Bad backup manager constants: " + e.getMessage()); + } + + mKeyValueBackupIntervalMilliseconds = mParser.getLong( + KEY_VALUE_BACKUP_INTERVAL_MILLISECONDS, + DEFAULT_KEY_VALUE_BACKUP_INTERVAL_MILLISECONDS); + mKeyValueBackupFuzzMilliseconds = mParser.getLong(KEY_VALUE_BACKUP_FUZZ_MILLISECONDS, + DEFAULT_KEY_VALUE_BACKUP_FUZZ_MILLISECONDS); + mKeyValueBackupRequireCharging = mParser.getBoolean(KEY_VALUE_BACKUP_REQUIRE_CHARGING, + DEFAULT_KEY_VALUE_BACKUP_REQUIRE_CHARGING); + mKeyValueBackupRequiredNetworkType = mParser.getInt(KEY_VALUE_BACKUP_REQUIRED_NETWORK_TYPE, + DEFAULT_KEY_VALUE_BACKUP_REQUIRED_NETWORK_TYPE); + mFullBackupIntervalMilliseconds = mParser.getLong(FULL_BACKUP_INTERVAL_MILLISECONDS, + DEFAULT_FULL_BACKUP_INTERVAL_MILLISECONDS); + mFullBackupRequireCharging = mParser.getBoolean(FULL_BACKUP_REQUIRE_CHARGING, + DEFAULT_FULL_BACKUP_REQUIRE_CHARGING); + mFullBackupRequiredNetworkType = mParser.getInt(FULL_BACKUP_REQUIRED_NETWORK_TYPE, + DEFAULT_FULL_BACKUP_REQUIRED_NETWORK_TYPE); + } + + // The following are access methods for the individual parameters. + // To be sure to retrieve values from the same set of settings, + // group the calls of these methods in a block syncrhonized on + // a reference of this object. + public synchronized long getKeyValueBackupIntervalMilliseconds() { + if (BackupManagerService.DEBUG_SCHEDULING) { + Slog.v(TAG, "getKeyValueBackupIntervalMilliseconds(...) returns " + + mKeyValueBackupIntervalMilliseconds); + } + return mKeyValueBackupIntervalMilliseconds; + } + + public synchronized long getKeyValueBackupFuzzMilliseconds() { + if (BackupManagerService.DEBUG_SCHEDULING) { + Slog.v(TAG, "getKeyValueBackupFuzzMilliseconds(...) returns " + + mKeyValueBackupFuzzMilliseconds); + } + return mKeyValueBackupFuzzMilliseconds; + } + + public synchronized boolean getKeyValueBackupRequireCharging() { + if (BackupManagerService.DEBUG_SCHEDULING) { + Slog.v(TAG, "getKeyValueBackupRequireCharging(...) returns " + + mKeyValueBackupRequireCharging); + } + return mKeyValueBackupRequireCharging; + } + + public synchronized int getKeyValueBackupRequiredNetworkType() { + if (BackupManagerService.DEBUG_SCHEDULING) { + Slog.v(TAG, "getKeyValueBackupRequiredNetworkType(...) returns " + + mKeyValueBackupRequiredNetworkType); + } + return mKeyValueBackupRequiredNetworkType; + } + + public synchronized long getFullBackupIntervalMilliseconds() { + if (BackupManagerService.DEBUG_SCHEDULING) { + Slog.v(TAG, "getFullBackupIntervalMilliseconds(...) returns " + + mFullBackupIntervalMilliseconds); + } + return mFullBackupIntervalMilliseconds; + } + + public synchronized boolean getFullBackupRequireCharging() { + if (BackupManagerService.DEBUG_SCHEDULING) { + Slog.v(TAG, "getFullBackupRequireCharging(...) returns " + mFullBackupRequireCharging); + } + return mFullBackupRequireCharging; + + } + + public synchronized int getFullBackupRequiredNetworkType() { + if (BackupManagerService.DEBUG_SCHEDULING) { + Slog.v(TAG, "getFullBackupRequiredNetworkType(...) returns " + + mFullBackupRequiredNetworkType); + } + return mFullBackupRequiredNetworkType; + } +} diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index 29d562b17deb..f525797870dc 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -293,14 +293,12 @@ public class BackupManagerService implements BackupManagerServiceInterface { // order to give them time to enter the backup password. static final long TIMEOUT_FULL_CONFIRMATION = 60 * 1000; - // How long between attempts to perform a full-data backup of any given app - static final long MIN_FULL_BACKUP_INTERVAL = 1000 * 60 * 60 * 24; // one day - // If an app is busy when we want to do a full-data backup, how long to defer the retry. // This is fuzzed, so there are two parameters; backoff_min + Rand[0, backoff_fuzz) static final long BUSY_BACKOFF_MIN_MILLIS = 1000 * 60 * 60; // one hour static final int BUSY_BACKOFF_FUZZ = 1000 * 60 * 60 * 2; // two hours + BackupManagerConstants mConstants; Context mContext; private PackageManager mPackageManager; IPackageManager mPackageManagerBinder; @@ -457,7 +455,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { if (mProvisioned && !wasProvisioned && mEnabled) { // we're now good to go, so start the backup alarms if (MORE_DEBUG) Slog.d(TAG, "Now provisioned, so starting backups"); - KeyValueBackupJob.schedule(mContext); + KeyValueBackupJob.schedule(mContext, mConstants); scheduleNextFullBackupJob(0); } } @@ -1315,7 +1313,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { mRunBackupIntent = PendingIntent.getBroadcast(context, MSG_RUN_BACKUP, backupIntent, 0); Intent initIntent = new Intent(RUN_INITIALIZE_ACTION); - backupIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); + initIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); mRunInitIntent = PendingIntent.getBroadcast(context, 0, initIntent, 0); // Set up the backup-request journaling @@ -1323,6 +1321,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { mJournalDir.mkdirs(); // creates mBaseStateDir along the way mJournal = null; // will be created on first use + mConstants = new BackupManagerConstants(mBackupHandler, mContext.getContentResolver()); + // Set up the various sorts of package tracking we do mFullBackupScheduleFile = new File(mBaseStateDir, "fb-schedule"); initPackageTracking(); @@ -2478,8 +2478,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { } // We don't want the backup jobs to kick in any time soon. // Reschedules them to run in the distant future. - KeyValueBackupJob.schedule(mContext, BUSY_BACKOFF_MIN_MILLIS); - FullBackupJob.schedule(mContext, 2 * BUSY_BACKOFF_MIN_MILLIS); + KeyValueBackupJob.schedule(mContext, BUSY_BACKOFF_MIN_MILLIS, mConstants); + FullBackupJob.schedule(mContext, 2 * BUSY_BACKOFF_MIN_MILLIS, mConstants); } finally { Binder.restoreCallingIdentity(oldToken); } @@ -3558,7 +3558,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { Slog.w(TAG, "Unable to contact transport for recommended backoff: " + e.getMessage()); delay = 0; // use the scheduler's default } - KeyValueBackupJob.schedule(mContext, delay); + KeyValueBackupJob.schedule(mContext, delay, mConstants); for (BackupRequest request : mOriginalQueue) { dataChangedImpl(request.packageName); @@ -4535,7 +4535,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { } mOutputFile.close(); } catch (IOException e) { - /* nothing we can do about this */ + Slog.e(TAG, "IO error closing adb backup file: " + e.getMessage()); } synchronized (mLatch) { mLatch.set(true); @@ -5370,12 +5370,12 @@ public class BackupManagerService implements BackupManagerServiceInterface { // due. final long upcomingLastBackup = mFullBackupQueue.get(0).lastBackup; final long timeSinceLast = System.currentTimeMillis() - upcomingLastBackup; - final long appLatency = (timeSinceLast < MIN_FULL_BACKUP_INTERVAL) - ? (MIN_FULL_BACKUP_INTERVAL - timeSinceLast) : 0; + final long interval = mConstants.getFullBackupIntervalMilliseconds(); + final long appLatency = (timeSinceLast < interval) ? (interval - timeSinceLast) : 0; final long latency = Math.max(transportMinLatency, appLatency); Runnable r = new Runnable() { @Override public void run() { - FullBackupJob.schedule(mContext, latency); + FullBackupJob.schedule(mContext, latency, mConstants); } }; mBackupHandler.postDelayed(r, 2500); @@ -5470,9 +5470,15 @@ public class BackupManagerService implements BackupManagerServiceInterface { */ @Override public boolean beginFullBackup(FullBackupJob scheduledJob) { - long now = System.currentTimeMillis(); + final long now = System.currentTimeMillis(); FullBackupEntry entry = null; - long latency = MIN_FULL_BACKUP_INTERVAL; + final long fullBackupInterval; + final long keyValueBackupInterval; + synchronized (mConstants) { + fullBackupInterval = mConstants.getFullBackupIntervalMilliseconds(); + keyValueBackupInterval = mConstants.getKeyValueBackupIntervalMilliseconds(); + } + long latency = fullBackupInterval; if (!mEnabled || !mProvisioned) { // Backups are globally disabled, so don't proceed. We also don't reschedule @@ -5491,7 +5497,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { mPowerManager.getPowerSaveState(ServiceType.FULL_BACKUP); if (result.batterySaverEnabled) { if (DEBUG) Slog.i(TAG, "Deferring scheduled full backups in battery saver mode"); - FullBackupJob.schedule(mContext, KeyValueBackupJob.BATCH_INTERVAL); + FullBackupJob.schedule(mContext, keyValueBackupInterval, mConstants); return false; } @@ -5534,20 +5540,20 @@ public class BackupManagerService implements BackupManagerServiceInterface { // Typically this means we haven't run a key/value backup yet. Back off // full-backup operations by the key/value job's run interval so that // next time we run, we are likely to be able to make progress. - latency = KeyValueBackupJob.BATCH_INTERVAL; + latency = keyValueBackupInterval; } if (runBackup) { entry = mFullBackupQueue.get(0); long timeSinceRun = now - entry.lastBackup; - runBackup = (timeSinceRun >= MIN_FULL_BACKUP_INTERVAL); + runBackup = (timeSinceRun >= fullBackupInterval); if (!runBackup) { // It's too early to back up the next thing in the queue, so bow out if (MORE_DEBUG) { Slog.i(TAG, "Device ready but too early to back up next app"); } // Wait until the next app in the queue falls due for a full data backup - latency = MIN_FULL_BACKUP_INTERVAL - timeSinceRun; + latency = fullBackupInterval - timeSinceRun; break; // we know we aren't doing work yet, so bail. } @@ -5583,8 +5589,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { // This relocates the app's entry from the head of the queue to // its order-appropriate position further down, so upon looping // a new candidate will be considered at the head. - enqueueFullBackup(entry.packageName, - nextEligible - MIN_FULL_BACKUP_INTERVAL); + enqueueFullBackup(entry.packageName, nextEligible - fullBackupInterval); } } catch (NameNotFoundException nnf) { // So, we think we want to back this up, but it turns out the package @@ -5605,7 +5610,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { final long deferTime = latency; // pin for the closure mBackupHandler.post(new Runnable() { @Override public void run() { - FullBackupJob.schedule(mContext, deferTime); + FullBackupJob.schedule(mContext, deferTime, mConstants); } }); return false; @@ -9851,7 +9856,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF } // ...and schedule a backup pass if necessary - KeyValueBackupJob.schedule(mContext); + KeyValueBackupJob.schedule(mContext, mConstants); } // Note: packageName is currently unused, but may be in the future @@ -10014,7 +10019,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF mPowerManager.getPowerSaveState(ServiceType.KEYVALUE_BACKUP); if (result.batterySaverEnabled) { if (DEBUG) Slog.v(TAG, "Not running backup while in battery save mode"); - KeyValueBackupJob.schedule(mContext); // try again in several hours + KeyValueBackupJob.schedule(mContext, mConstants); // try again in several hours } else { if (DEBUG) Slog.v(TAG, "Scheduling immediate backup pass"); synchronized (mQueueLock) { @@ -10112,7 +10117,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF try { fd.close(); } catch (IOException e) { - // just eat it + Slog.e(TAG, "IO error closing output for adb backup: " + e.getMessage()); } Binder.restoreCallingIdentity(oldId); Slog.d(TAG, "Adb backup processing complete."); @@ -10387,7 +10392,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF synchronized (mQueueLock) { if (enable && !wasEnabled && mProvisioned) { // if we've just been enabled, start scheduling backup passes - KeyValueBackupJob.schedule(mContext); + KeyValueBackupJob.schedule(mContext, mConstants); scheduleNextFullBackupJob(0); } else if (!enable) { // No longer enabled, so stop running backups @@ -10475,7 +10480,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF public ComponentName[] listAllTransportComponents() { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, "listAllTransportComponents"); - return mTransportManager.getAllTransportCompenents(); + return mTransportManager.getAllTransportComponents(); } @Override @@ -10520,7 +10525,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF Slog.v(TAG, "selectBackupTransportAsync() called with transport " + transport.flattenToShortString()); - mTransportManager.ensureTransportReady(transport, new SelectBackupTransportCallback() { + mTransportManager.ensureTransportReady(transport, new TransportManager.TransportReadyCallback() { @Override public void onSuccess(String transportName) { mTransportManager.selectTransport(transportName); diff --git a/services/backup/java/com/android/server/backup/FullBackupJob.java b/services/backup/java/com/android/server/backup/FullBackupJob.java index 7ad7657cdea3..82638b4ecee4 100644 --- a/services/backup/java/com/android/server/backup/FullBackupJob.java +++ b/services/backup/java/com/android/server/backup/FullBackupJob.java @@ -34,12 +34,14 @@ public class FullBackupJob extends JobService { JobParameters mParams; - public static void schedule(Context ctx, long minDelay) { + public static void schedule(Context ctx, long minDelay, BackupManagerConstants constants) { JobScheduler js = (JobScheduler) ctx.getSystemService(Context.JOB_SCHEDULER_SERVICE); - JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sIdleService) - .setRequiresDeviceIdle(true) - .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) - .setRequiresCharging(true); + JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sIdleService); + synchronized (constants) { + builder.setRequiresDeviceIdle(true) + .setRequiredNetworkType(constants.getFullBackupRequiredNetworkType()) + .setRequiresCharging(constants.getFullBackupRequireCharging()); + } if (minDelay > 0) { builder.setMinimumLatency(minDelay); } diff --git a/services/backup/java/com/android/server/backup/KeyValueBackupJob.java b/services/backup/java/com/android/server/backup/KeyValueBackupJob.java index e3ff5ce3dd5c..d8411e2a9ced 100644 --- a/services/backup/java/com/android/server/backup/KeyValueBackupJob.java +++ b/services/backup/java/com/android/server/backup/KeyValueBackupJob.java @@ -38,12 +38,6 @@ public class KeyValueBackupJob extends JobService { new ComponentName("android", KeyValueBackupJob.class.getName()); private static final int JOB_ID = 0x5039; - // Minimum wait time between backups even while we're on charger - static final long BATCH_INTERVAL = 4 * AlarmManager.INTERVAL_HOUR; - - // Random variation in next-backup scheduling time to avoid server load spikes - private static final int FUZZ_MILLIS = 10 * 60 * 1000; - // Once someone asks for a backup, this is how long we hold off until we find // an on-charging opportunity. If we hit this max latency we will run the operation // regardless. Privileged callers can always trigger an immediate pass via @@ -53,31 +47,43 @@ public class KeyValueBackupJob extends JobService { private static boolean sScheduled = false; private static long sNextScheduled = 0; - public static void schedule(Context ctx) { - schedule(ctx, 0); + public static void schedule(Context ctx, BackupManagerConstants constants) { + schedule(ctx, 0, constants); } - public static void schedule(Context ctx, long delay) { + public static void schedule(Context ctx, long delay, BackupManagerConstants constants) { synchronized (KeyValueBackupJob.class) { - if (!sScheduled) { - if (delay <= 0) { - delay = BATCH_INTERVAL + new Random().nextInt(FUZZ_MILLIS); - } - if (BackupManagerService.DEBUG_SCHEDULING) { - Slog.v(TAG, "Scheduling k/v pass in " - + (delay / 1000 / 60) + " minutes"); - } - JobScheduler js = (JobScheduler) ctx.getSystemService(Context.JOB_SCHEDULER_SERVICE); - JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sKeyValueJobService) - .setMinimumLatency(delay) - .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) - .setRequiresCharging(true) - .setOverrideDeadline(MAX_DEFERRAL); - js.schedule(builder.build()); - - sNextScheduled = System.currentTimeMillis() + delay; - sScheduled = true; + if (sScheduled) { + return; + } + + final long interval; + final long fuzz; + final int networkType; + final boolean needsCharging; + + synchronized (constants) { + interval = constants.getKeyValueBackupIntervalMilliseconds(); + fuzz = constants.getKeyValueBackupFuzzMilliseconds(); + networkType = constants.getKeyValueBackupRequiredNetworkType(); + needsCharging = constants.getKeyValueBackupRequireCharging(); } + if (delay <= 0) { + delay = interval + new Random().nextInt((int) fuzz); + } + if (BackupManagerService.DEBUG_SCHEDULING) { + Slog.v(TAG, "Scheduling k/v pass in " + (delay / 1000 / 60) + " minutes"); + } + JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sKeyValueJobService) + .setMinimumLatency(delay) + .setRequiredNetworkType(networkType) + .setRequiresCharging(needsCharging) + .setOverrideDeadline(MAX_DEFERRAL); + JobScheduler js = (JobScheduler) ctx.getSystemService(Context.JOB_SCHEDULER_SERVICE); + js.schedule(builder.build()); + + sNextScheduled = System.currentTimeMillis() + delay; + sScheduled = true; } } diff --git a/services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java b/services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java index 187d5d93bfdd..e29b7d58e018 100644 --- a/services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java +++ b/services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java @@ -21,7 +21,10 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.server.backup.RefactoredBackupManagerService; +import java.io.BufferedInputStream; +import java.io.DataInputStream; import java.io.EOFException; +import java.io.FileInputStream; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; @@ -130,7 +133,8 @@ final class ProcessedPackagesJournal { return; } - try (RandomAccessFile oldJournal = new RandomAccessFile(journalFile, "r")) { + try (DataInputStream oldJournal = new DataInputStream( + new BufferedInputStream(new FileInputStream(journalFile)))) { while (true) { String packageName = oldJournal.readUTF(); if (DEBUG) { diff --git a/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java b/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java index b01cfc572432..8b4cc7f6d22b 100644 --- a/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java +++ b/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java @@ -17,6 +17,7 @@ package com.android.server.backup; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND; + import static com.android.server.backup.internal.BackupHandler.MSG_BACKUP_OPERATION_TIMEOUT; import static com.android.server.backup.internal.BackupHandler.MSG_FULL_CONFIRMATION_TIMEOUT; import static com.android.server.backup.internal.BackupHandler.MSG_OP_COMPLETE; @@ -76,6 +77,7 @@ import android.os.RemoteException; import android.os.SELinux; import android.os.ServiceManager; import android.os.SystemClock; +import android.os.Trace; import android.os.UserHandle; import android.os.storage.IStorageManager; import android.os.storage.StorageManager; @@ -148,6 +150,7 @@ import java.util.Queue; import java.util.Random; import java.util.Set; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicInteger; public class RefactoredBackupManagerService implements BackupManagerServiceInterface { @@ -212,14 +215,12 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // order to give them time to enter the backup password. private static final long TIMEOUT_FULL_CONFIRMATION = 60 * 1000; - // How long between attempts to perform a full-data backup of any given app - private static final long MIN_FULL_BACKUP_INTERVAL = 1000 * 60 * 60 * 24; // one day - // If an app is busy when we want to do a full-data backup, how long to defer the retry. // This is fuzzed, so there are two parameters; backoff_min + Rand[0, backoff_fuzz) private static final long BUSY_BACKOFF_MIN_MILLIS = 1000 * 60 * 60; // one hour private static final int BUSY_BACKOFF_FUZZ = 1000 * 60 * 60 * 2; // two hours + private BackupManagerConstants mConstants; private Context mContext; private PackageManager mPackageManager; private IPackageManager mPackageManagerBinder; @@ -297,6 +298,10 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter return sInstance; } + public BackupManagerConstants getConstants() { + return mConstants; + } + public Context getContext() { return mContext; } @@ -543,9 +548,12 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter @Override public void onUnlockUser(int userId) { if (userId == UserHandle.USER_SYSTEM) { + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup init"); sInstance.initialize(userId); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); // Migrate legacy setting + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup migrate"); if (!backupSettingMigrated(userId)) { if (DEBUG) { Slog.i(TAG, "Backup enable apparently not migrated"); @@ -566,12 +574,15 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } } } + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup enable"); try { sInstance.setBackupEnabled(readBackupEnableState(userId)); } catch (RemoteException e) { // can't happen; it's a local object } + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } } } @@ -604,10 +615,10 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter * {@link RefactoredBackupManagerService#waitUntilOperationComplete(int)} is * used in various places to 'wait' for notifyAll and detect change of pending state of an * operation. So typically, an operation will be removed from this array by: - * - BackupRestoreTask#handleCancel and - * - BackupRestoreTask#operationComplete OR waitUntilOperationComplete. Do not remove at both - * these places because waitUntilOperationComplete relies on the operation being present to - * determine its completion status. + * - BackupRestoreTask#handleCancel and + * - BackupRestoreTask#operationComplete OR waitUntilOperationComplete. Do not remove at both + * these places because waitUntilOperationComplete relies on the operation being present to + * determine its completion status. * * If type of operation is OP_BACKUP, it is a task running backups. It provides a handle to * cancel backup tasks. @@ -616,6 +627,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter private final SparseArray<Operation> mCurrentOperations = new SparseArray<>(); private final Object mCurrentOpLock = new Object(); private final Random mTokenGenerator = new Random(); + final AtomicInteger mNextToken = new AtomicInteger(); private final SparseArray<AdbParams> mAdbBackupRestoreConfirmations = new SparseArray<>(); @@ -623,7 +635,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter private File mBaseStateDir; private File mDataDir; private File mJournalDir; - @Nullable private DataChangedJournal mJournal; + @Nullable + private DataChangedJournal mJournal; private final SecureRandom mRng = new SecureRandom(); @@ -654,18 +667,41 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter @GuardedBy("mQueueLock") private ArrayList<FullBackupEntry> mFullBackupQueue; - // Utility: build a new random integer token + // Utility: build a new random integer token. The low bits are the ordinal of the + // operation for near-time uniqueness, and the upper bits are random for app- + // side unpredictability. @Override public int generateRandomIntegerToken() { - int token; - do { - synchronized (mTokenGenerator) { - token = mTokenGenerator.nextInt(); - } - } while (token < 0); + int token = mTokenGenerator.nextInt(); + if (token < 0) token = -token; + token &= ~0xFF; + token |= (mNextToken.incrementAndGet() & 0xFF); return token; } + /* + * Construct a backup agent instance for the metadata pseudopackage. This is a + * process-local non-lifecycle agent instance, so we manually set up the context + * topology for it. + */ + public PackageManagerBackupAgent makeMetadataAgent() { + PackageManagerBackupAgent pmAgent = new PackageManagerBackupAgent(mPackageManager); + pmAgent.attach(mContext); + pmAgent.onCreate(); + return pmAgent; + } + + /* + * Same as above but with the explicit package-set configuration. + */ + public PackageManagerBackupAgent makeMetadataAgent(List<PackageInfo> packages) { + PackageManagerBackupAgent pmAgent = + new PackageManagerBackupAgent(mPackageManager, packages); + pmAgent.attach(mContext); + pmAgent.onCreate(); + return pmAgent; + } + // ----- Debug-only backup operation trace ----- public void addBackupTrace(String s) { if (DEBUG_BACKUP_TRACE) { @@ -745,7 +781,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter mRunBackupIntent = PendingIntent.getBroadcast(context, 0, backupIntent, 0); Intent initIntent = new Intent(RUN_INITIALIZE_ACTION); - backupIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); + initIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); mRunInitIntent = PendingIntent.getBroadcast(context, 0, initIntent, 0); // Set up the backup-request journaling @@ -753,6 +789,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter mJournalDir.mkdirs(); // creates mBaseStateDir along the way mJournal = null; // will be created on first use + mConstants = new BackupManagerConstants(mBackupHandler, mContext.getContentResolver()); + // Set up the various sorts of package tracking we do mFullBackupScheduleFile = new File(mBaseStateDir, "fb-schedule"); initPackageTracking(); @@ -794,17 +832,18 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // Remember our ancestral dataset mTokenFile = new File(mBaseStateDir, "ancestral"); - try (RandomAccessFile tf = new RandomAccessFile(mTokenFile, "r")) { - int version = tf.readInt(); + try (DataInputStream tokenStream = new DataInputStream(new BufferedInputStream( + new FileInputStream(mTokenFile)))) { + int version = tokenStream.readInt(); if (version == CURRENT_ANCESTRAL_RECORD_VERSION) { - mAncestralToken = tf.readLong(); - mCurrentToken = tf.readLong(); + mAncestralToken = tokenStream.readLong(); + mCurrentToken = tokenStream.readLong(); - int numPackages = tf.readInt(); + int numPackages = tokenStream.readInt(); if (numPackages >= 0) { mAncestralPackages = new HashSet<>(); for (int i = 0; i < numPackages; i++) { - String pkgName = tf.readUTF(); + String pkgName = tokenStream.readUTF(); mAncestralPackages.add(pkgName); } } @@ -872,7 +911,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter PackageInfo pkg = mPackageManager.getPackageInfo(pkgName, 0); if (AppBackupUtils.appGetsFullBackup(pkg) && AppBackupUtils.appIsEligibleForBackup( - pkg.applicationInfo)) { + pkg.applicationInfo, mPackageManager)) { schedule.add(new FullBackupEntry(pkgName, lastBackup)); } else { if (DEBUG) { @@ -893,7 +932,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter for (PackageInfo app : apps) { if (AppBackupUtils.appGetsFullBackup(app) && AppBackupUtils.appIsEligibleForBackup( - app.applicationInfo)) { + app.applicationInfo, mPackageManager)) { if (!foundApps.contains(app.packageName)) { if (MORE_DEBUG) { Slog.i(TAG, "New full backup app " + app.packageName + " found"); @@ -919,7 +958,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter schedule = new ArrayList<>(apps.size()); for (PackageInfo info : apps) { if (AppBackupUtils.appGetsFullBackup(info) && AppBackupUtils.appIsEligibleForBackup( - info.applicationInfo)) { + info.applicationInfo, mPackageManager)) { schedule.add(new FullBackupEntry(info.packageName, 0)); } } @@ -1204,7 +1243,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter PackageInfo app = mPackageManager.getPackageInfo(packageName, 0); if (AppBackupUtils.appGetsFullBackup(app) && AppBackupUtils.appIsEligibleForBackup( - app.applicationInfo)) { + app.applicationInfo, mPackageManager)) { enqueueFullBackup(packageName, now); scheduleNextFullBackupJob(0); } else { @@ -1501,7 +1540,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter long token = mAncestralToken; synchronized (mQueueLock) { - if (mProcessedPackagesJournal.hasBeenProcessed(packageName)) { + if (mCurrentToken != 0 && mProcessedPackagesJournal.hasBeenProcessed(packageName)) { if (MORE_DEBUG) { Slog.i(TAG, "App in ever-stored, so using current token"); } @@ -1532,8 +1571,9 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } if (!mEnabled || !mProvisioned) { - Slog.i(TAG, "Backup requested but e=" + mEnabled + " p=" +mProvisioned); - BackupObserverUtils.sendBackupFinished(observer, BackupManager.ERROR_BACKUP_NOT_ALLOWED); + Slog.i(TAG, "Backup requested but e=" + mEnabled + " p=" + mProvisioned); + BackupObserverUtils.sendBackupFinished(observer, + BackupManager.ERROR_BACKUP_NOT_ALLOWED); final int logTag = mProvisioned ? BackupManagerMonitor.LOG_EVENT_ID_BACKUP_DISABLED : BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED; @@ -1561,7 +1601,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter try { PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); - if (!AppBackupUtils.appIsEligibleForBackup(packageInfo.applicationInfo)) { + if (!AppBackupUtils.appIsEligibleForBackup(packageInfo.applicationInfo, + mPackageManager)) { BackupObserverUtils.sendBackupOnPackageResult(observer, packageName, BackupManager.ERROR_BACKUP_NOT_ALLOWED); continue; @@ -1626,8 +1667,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } // We don't want the backup jobs to kick in any time soon. // Reschedules them to run in the distant future. - KeyValueBackupJob.schedule(mContext, BUSY_BACKOFF_MIN_MILLIS); - FullBackupJob.schedule(mContext, 2 * BUSY_BACKOFF_MIN_MILLIS); + KeyValueBackupJob.schedule(mContext, BUSY_BACKOFF_MIN_MILLIS, mConstants); + FullBackupJob.schedule(mContext, 2 * BUSY_BACKOFF_MIN_MILLIS, mConstants); } finally { Binder.restoreCallingIdentity(oldToken); } @@ -1752,8 +1793,12 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // Can't delete op from mCurrentOperations here. waitUntilOperationComplete may be // called after we receive cancel here. We need this op's state there. - // Remove all pending timeout messages for this operation type. - mBackupHandler.removeMessages(getMessageIdForOperationType(op.type)); + // Remove all pending timeout messages of types OP_TYPE_BACKUP_WAIT and + // OP_TYPE_RESTORE_WAIT. On the other hand, OP_TYPE_BACKUP cannot time out and + // doesn't require cancellation. + if (op.type == OP_TYPE_BACKUP_WAIT || op.type == OP_TYPE_RESTORE_WAIT) { + mBackupHandler.removeMessages(getMessageIdForOperationType(op.type)); + } } mCurrentOpLock.notifyAll(); } @@ -1835,13 +1880,13 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // due. final long upcomingLastBackup = mFullBackupQueue.get(0).lastBackup; final long timeSinceLast = System.currentTimeMillis() - upcomingLastBackup; - final long appLatency = (timeSinceLast < MIN_FULL_BACKUP_INTERVAL) - ? (MIN_FULL_BACKUP_INTERVAL - timeSinceLast) : 0; + final long interval = mConstants.getFullBackupIntervalMilliseconds(); + final long appLatency = (timeSinceLast < interval) ? (interval - timeSinceLast) : 0; final long latency = Math.max(transportMinLatency, appLatency); Runnable r = new Runnable() { @Override public void run() { - FullBackupJob.schedule(mContext, latency); + FullBackupJob.schedule(mContext, latency, mConstants); } }; mBackupHandler.postDelayed(r, 2500); @@ -1932,13 +1977,19 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter * <p>This is the "start a full backup operation" entry point called by the scheduled job. * * @return Whether ongoing work will continue. The return value here will be passed - * along as the return value to the scheduled job's onStartJob() callback. + * along as the return value to the scheduled job's onStartJob() callback. */ @Override public boolean beginFullBackup(FullBackupJob scheduledJob) { - long now = System.currentTimeMillis(); + final long now = System.currentTimeMillis(); + final long fullBackupInterval; + final long keyValueBackupInterval; + synchronized (mConstants) { + fullBackupInterval = mConstants.getFullBackupIntervalMilliseconds(); + keyValueBackupInterval = mConstants.getKeyValueBackupIntervalMilliseconds(); + } FullBackupEntry entry = null; - long latency = MIN_FULL_BACKUP_INTERVAL; + long latency = fullBackupInterval; if (!mEnabled || !mProvisioned) { // Backups are globally disabled, so don't proceed. We also don't reschedule @@ -1957,7 +2008,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter mPowerManager.getPowerSaveState(ServiceType.FULL_BACKUP); if (result.batterySaverEnabled) { if (DEBUG) Slog.i(TAG, "Deferring scheduled full backups in battery saver mode"); - FullBackupJob.schedule(mContext, KeyValueBackupJob.BATCH_INTERVAL); + FullBackupJob.schedule(mContext, keyValueBackupInterval, mConstants); return false; } @@ -2000,20 +2051,20 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // Typically this means we haven't run a key/value backup yet. Back off // full-backup operations by the key/value job's run interval so that // next time we run, we are likely to be able to make progress. - latency = KeyValueBackupJob.BATCH_INTERVAL; + latency = keyValueBackupInterval; } if (runBackup) { entry = mFullBackupQueue.get(0); long timeSinceRun = now - entry.lastBackup; - runBackup = (timeSinceRun >= MIN_FULL_BACKUP_INTERVAL); + runBackup = (timeSinceRun >= fullBackupInterval); if (!runBackup) { // It's too early to back up the next thing in the queue, so bow out if (MORE_DEBUG) { Slog.i(TAG, "Device ready but too early to back up next app"); } // Wait until the next app in the queue falls due for a full data backup - latency = MIN_FULL_BACKUP_INTERVAL - timeSinceRun; + latency = fullBackupInterval - timeSinceRun; break; // we know we aren't doing work yet, so bail. } @@ -2049,8 +2100,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // This relocates the app's entry from the head of the queue to // its order-appropriate position further down, so upon looping // a new candidate will be considered at the head. - enqueueFullBackup(entry.packageName, - nextEligible - MIN_FULL_BACKUP_INTERVAL); + enqueueFullBackup(entry.packageName, nextEligible - fullBackupInterval); } } catch (NameNotFoundException nnf) { // So, we think we want to back this up, but it turns out the package @@ -2072,7 +2122,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter mBackupHandler.post(new Runnable() { @Override public void run() { - FullBackupJob.schedule(mContext, deferTime); + FullBackupJob.schedule(mContext, deferTime, mConstants); } }); return false; @@ -2096,14 +2146,26 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // so tear down any ongoing backup task right away. @Override public void endFullBackup() { - synchronized (mQueueLock) { - if (mRunningFullBackupTask != null) { - if (DEBUG_SCHEDULING) { - Slog.i(TAG, "Telling running backup to stop"); + // offload the mRunningFullBackupTask.handleCancel() call to another thread, + // as we might have to wait for mCancelLock + Runnable endFullBackupRunnable = new Runnable() { + @Override + public void run() { + PerformFullTransportBackupTask pftbt = null; + synchronized (mQueueLock) { + if (mRunningFullBackupTask != null) { + pftbt = mRunningFullBackupTask; + } + } + if (pftbt != null) { + if (DEBUG_SCHEDULING) { + Slog.i(TAG, "Telling running backup to stop"); + } + pftbt.handleCancel(true); } - mRunningFullBackupTask.handleCancel(true); } - } + }; + new Thread(endFullBackupRunnable, "end-full-backup").start(); } // Used by both incremental and full restore @@ -2153,7 +2215,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } // ...and schedule a backup pass if necessary - KeyValueBackupJob.schedule(mContext); + KeyValueBackupJob.schedule(mContext, mConstants); } // Note: packageName is currently unused, but may be in the future @@ -2222,7 +2284,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // Run an initialize operation for the given transport @Override public void initializeTransports(String[] transportNames, IBackupObserver observer) { - mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "initializeTransport"); + mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, + "initializeTransport"); if (MORE_DEBUG || true) { Slog.v(TAG, "initializeTransport(): " + Arrays.asList(transportNames)); } @@ -2296,7 +2359,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter mPowerManager.getPowerSaveState(ServiceType.KEYVALUE_BACKUP); if (result.batterySaverEnabled) { if (DEBUG) Slog.v(TAG, "Not running backup while in battery save mode"); - KeyValueBackupJob.schedule(mContext); // try again in several hours + KeyValueBackupJob.schedule(mContext, mConstants); // try again in several hours } else { if (DEBUG) Slog.v(TAG, "Scheduling immediate backup pass"); synchronized (mQueueLock) { @@ -2396,7 +2459,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter try { fd.close(); } catch (IOException e) { - // just eat it + Slog.e(TAG, "IO error closing output for adb backup: " + e.getMessage()); } Binder.restoreCallingIdentity(oldId); Slog.d(TAG, "Adb backup processing complete."); @@ -2672,7 +2735,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter synchronized (mQueueLock) { if (enable && !wasEnabled && mProvisioned) { // if we've just been enabled, start scheduling backup passes - KeyValueBackupJob.schedule(mContext); + KeyValueBackupJob.schedule(mContext, mConstants); scheduleNextFullBackupJob(0); } else if (!enable) { // No longer enabled, so stop running backups @@ -2762,7 +2825,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter public ComponentName[] listAllTransportComponents() { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, "listAllTransportComponents"); - return mTransportManager.getAllTransportCompenents(); + return mTransportManager.getAllTransportComponents(); } @Override @@ -2787,8 +2850,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter final long oldId = Binder.clearCallingIdentity(); try { String prevTransport = mTransportManager.selectTransport(transport); - Settings.Secure.putString(mContext.getContentResolver(), - Settings.Secure.BACKUP_TRANSPORT, transport); + updateStateForTransport(transport); Slog.v(TAG, "selectBackupTransport() set " + mTransportManager.getCurrentTransportName() + " returning " + prevTransport); return prevTransport; @@ -2808,35 +2870,58 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter Slog.v(TAG, "selectBackupTransportAsync() called with transport " + transport.flattenToShortString()); - mTransportManager.ensureTransportReady(transport, new SelectBackupTransportCallback() { - @Override - public void onSuccess(String transportName) { - mTransportManager.selectTransport(transportName); - Settings.Secure.putString(mContext.getContentResolver(), - Settings.Secure.BACKUP_TRANSPORT, - mTransportManager.getCurrentTransportName()); - Slog.v(TAG, "Transport successfully selected: " + transport.flattenToShortString()); - try { - listener.onSuccess(transportName); - } catch (RemoteException e) { - // Nothing to do here. - } - } + mTransportManager.ensureTransportReady(transport, + new TransportManager.TransportReadyCallback() { + @Override + public void onSuccess(String transportName) { + mTransportManager.selectTransport(transportName); + updateStateForTransport(mTransportManager.getCurrentTransportName()); + Slog.v(TAG, "Transport successfully selected: " + + transport.flattenToShortString()); + try { + listener.onSuccess(transportName); + } catch (RemoteException e) { + // Nothing to do here. + } + } - @Override - public void onFailure(int reason) { - Slog.v(TAG, "Failed to select transport: " + transport.flattenToShortString()); - try { - listener.onFailure(reason); - } catch (RemoteException e) { - // Nothing to do here. - } - } - }); + @Override + public void onFailure(int reason) { + Slog.v(TAG, + "Failed to select transport: " + transport.flattenToShortString()); + try { + listener.onFailure(reason); + } catch (RemoteException e) { + // Nothing to do here. + } + } + }); Binder.restoreCallingIdentity(oldId); } + private void updateStateForTransport(String newTransportName) { + // Publish the name change + Settings.Secure.putString(mContext.getContentResolver(), + Settings.Secure.BACKUP_TRANSPORT, newTransportName); + + // And update our current-dataset bookkeeping + IBackupTransport transport = mTransportManager.getTransportBinder(newTransportName); + if (transport != null) { + try { + mCurrentToken = transport.getCurrentRestoreSet(); + } catch (Exception e) { + // Oops. We can't know the current dataset token, so reset and figure it out + // when we do the next k/v backup operation on this transport. + mCurrentToken = 0; + } + } else { + // The named transport isn't bound at this particular moment, so we can't + // know yet what its current dataset token is. Reset as above. + mCurrentToken = 0; + } + } + // Supply the configuration Intent for the given transport. If the name is not one // of the available transports, or if the transport does not supply any configuration // UI, the method returns null. @@ -3146,19 +3231,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } } - // We also avoid backups of 'disabled' apps - private static boolean appIsDisabled(ApplicationInfo app, PackageManager pm) { - switch (pm.getApplicationEnabledSetting(app.packageName)) { - case PackageManager.COMPONENT_ENABLED_STATE_DISABLED: - case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER: - case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED: - return true; - - default: - return false; - } - } - @Override public boolean isAppEligibleForBackup(String packageName) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, @@ -3166,9 +3238,10 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter try { PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); - if (!AppBackupUtils.appIsEligibleForBackup(packageInfo.applicationInfo) || + if (!AppBackupUtils.appIsEligibleForBackup(packageInfo.applicationInfo, + mPackageManager) || AppBackupUtils.appIsStopped(packageInfo.applicationInfo) || - appIsDisabled(packageInfo.applicationInfo, mPackageManager)) { + AppBackupUtils.appIsDisabled(packageInfo.applicationInfo, mPackageManager)) { return false; } IBackupTransport transport = mTransportManager.getCurrentTransportBinder(); diff --git a/services/backup/java/com/android/server/backup/TransportManager.java b/services/backup/java/com/android/server/backup/TransportManager.java index fb2982eb0baa..9aae38416bd1 100644 --- a/services/backup/java/com/android/server/backup/TransportManager.java +++ b/services/backup/java/com/android/server/backup/TransportManager.java @@ -41,10 +41,12 @@ import android.util.Log; import android.util.Slog; import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.backup.IBackupTransport; import com.android.server.EventLogTags; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -57,7 +59,9 @@ public class TransportManager { private static final String TAG = "BackupTransportManager"; - private static final String SERVICE_ACTION_TRANSPORT_HOST = "android.backup.TRANSPORT_HOST"; + @VisibleForTesting + /* package */ static final String SERVICE_ACTION_TRANSPORT_HOST = + "android.backup.TRANSPORT_HOST"; private static final long REBINDING_TIMEOUT_UNPROVISIONED_MS = 30 * 1000; // 30 sec private static final long REBINDING_TIMEOUT_PROVISIONED_MS = 5 * 60 * 1000; // 5 mins @@ -91,11 +95,31 @@ public class TransportManager { @GuardedBy("mTransportLock") private final Map<String, ComponentName> mBoundTransports = new ArrayMap<>(); + /** + * Callback interface for {@link #ensureTransportReady(ComponentName, TransportReadyCallback)}. + */ + public interface TransportReadyCallback { + + /** + * Will be called when the transport is ready. + */ + void onSuccess(String transportName); + + /** + * Will be called when it's not possible to make transport ready. + */ + void onFailure(int reason); + } + TransportManager(Context context, Set<ComponentName> whitelist, String defaultTransport, TransportBoundListener listener, Looper looper) { mContext = context; mPackageManager = context.getPackageManager(); - mTransportWhitelist = (whitelist != null) ? whitelist : new ArraySet<>(); + if (whitelist != null) { + mTransportWhitelist = whitelist; + } else { + mTransportWhitelist = new ArraySet<>(); + } mCurrentTransportName = defaultTransport; mTransportBoundListener = listener; mHandler = new RebindOnTimeoutHandler(looper); @@ -186,7 +210,7 @@ public class TransportManager { } } - ComponentName[] getAllTransportCompenents() { + ComponentName[] getAllTransportComponents() { synchronized (mTransportLock) { return mValidTransports.keySet().toArray(new ComponentName[mValidTransports.size()]); } @@ -208,7 +232,8 @@ public class TransportManager { } } - void ensureTransportReady(ComponentName transportComponent, SelectBackupTransportCallback listener) { + void ensureTransportReady(ComponentName transportComponent, + TransportReadyCallback listener) { synchronized (mTransportLock) { TransportConnection conn = mValidTransports.get(transportComponent); if (conn == null) { @@ -252,7 +277,7 @@ public class TransportManager { intent, 0, UserHandle.USER_SYSTEM); if (hosts != null) { for (ResolveInfo host : hosts) { - final ComponentName infoComponentName = host.serviceInfo.getComponentName(); + final ComponentName infoComponentName = getComponentName(host.serviceInfo); boolean shouldBind = false; if (components != null && packageName != null) { for (String component : components) { @@ -310,14 +335,14 @@ public class TransportManager { Intent intent = new Intent(mTransportServiceIntent) .setComponent(componentName); return mContext.bindServiceAsUser(intent, connection, Context.BIND_AUTO_CREATE, - UserHandle.SYSTEM); + createSystemUserHandle()); } private class TransportConnection implements ServiceConnection { // Hold mTransportsLock to access these fields so as to provide a consistent view of them. private IBackupTransport mBinder; - private final List<SelectBackupTransportCallback> mListeners = new ArrayList<>(); + private final List<TransportReadyCallback> mListeners = new ArrayList<>(); private String mTransportName; private final ComponentName mTransportComponent; @@ -333,7 +358,7 @@ public class TransportManager { boolean success = false; EventLog.writeEvent(EventLogTags.BACKUP_TRANSPORT_LIFECYCLE, - component.flattenToShortString(), 1); + component.flattenToShortString(), 1); try { mTransportName = mBinder.name(); @@ -350,7 +375,7 @@ public class TransportManager { if (success) { Slog.d(TAG, "Bound to transport: " + componentShortString); mBoundTransports.put(mTransportName, component); - for (SelectBackupTransportCallback listener : mListeners) { + for (TransportReadyCallback listener : mListeners) { listener.onSuccess(mTransportName); } // cancel rebinding on timeout for this component as we've already connected @@ -363,7 +388,7 @@ public class TransportManager { mContext.unbindService(this); mValidTransports.remove(component); mBinder = null; - for (SelectBackupTransportCallback listener : mListeners) { + for (TransportReadyCallback listener : mListeners) { listener.onFailure(BackupManager.ERROR_TRANSPORT_INVALID); } } @@ -423,7 +448,7 @@ public class TransportManager { } } - private void addListener(SelectBackupTransportCallback listener) { + private void addListener(TransportReadyCallback listener) { synchronized (mTransportLock) { if (mBinder == null) { // We are waiting for bind to complete. If mBinder is set to null after the bind @@ -437,7 +462,8 @@ public class TransportManager { } private long getRebindTimeout() { - final boolean isDeviceProvisioned = Settings.Global.getInt(mContext.getContentResolver(), + final boolean isDeviceProvisioned = Settings.Global.getInt( + mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0; return isDeviceProvisioned ? REBINDING_TIMEOUT_PROVISIONED_MS @@ -445,7 +471,7 @@ public class TransportManager { } } - interface TransportBoundListener { + public interface TransportBoundListener { /** Should return true if this is a valid transport. */ boolean onTransportBound(IBackupTransport binder); } @@ -465,7 +491,7 @@ public class TransportManager { synchronized (mTransportLock) { if (mBoundTransports.containsValue(transportComponent)) { Slog.d(TAG, "Explicit rebinding timeout passed, but already bound to " - + componentShortString + " so not attempting to rebind"); + + componentShortString + " so not attempting to rebind"); return; } Slog.d(TAG, "Explicit rebinding timeout passed, attempting rebinding to: " @@ -492,4 +518,18 @@ public class TransportManager { Slog.v(TAG, message); } } + + // These only exists to make it testable with Robolectric, which is not updated to API level 24 + // yet. + // TODO: Get rid of this once Robolectric is updated. + private static ComponentName getComponentName(ServiceInfo serviceInfo) { + return new ComponentName(serviceInfo.packageName, serviceInfo.name); + } + + // These only exists to make it testable with Robolectric, which is not updated to API level 24 + // yet. + // TODO: Get rid of this once Robolectric is updated. + private static UserHandle createSystemUserHandle() { + return new UserHandle(UserHandle.USER_SYSTEM); + } } diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java index 804e92c88eb7..f0b3e4a023f0 100644 --- a/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java +++ b/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java @@ -236,12 +236,11 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor obbConnection.establish(); // we'll want this later sendStartBackup(); + PackageManager pm = backupManagerService.getPackageManager(); // doAllApps supersedes the package set if any if (mAllApps) { - List<PackageInfo> allPackages = - backupManagerService.getPackageManager().getInstalledPackages( - PackageManager.GET_SIGNATURES); + List<PackageInfo> allPackages = pm.getInstalledPackages(PackageManager.GET_SIGNATURES); for (int i = 0; i < allPackages.size(); i++) { PackageInfo pkg = allPackages.get(i); // Exclude system apps if we've been asked to do so @@ -288,7 +287,7 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor Iterator<Entry<String, PackageInfo>> iter = packagesToBackup.entrySet().iterator(); while (iter.hasNext()) { PackageInfo pkg = iter.next().getValue(); - if (!AppBackupUtils.appIsEligibleForBackup(pkg.applicationInfo) + if (!AppBackupUtils.appIsEligibleForBackup(pkg.applicationInfo, pm) || AppBackupUtils.appIsStopped(pkg.applicationInfo)) { iter.remove(); if (DEBUG) { @@ -459,7 +458,7 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor } mOutputFile.close(); } catch (IOException e) { - /* nothing we can do about this */ + Slog.e(TAG, "IO error closing adb backup file: " + e.getMessage()); } synchronized (mLatch) { mLatch.set(true); diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java index bc7c1174d17f..90134e1a3ead 100644 --- a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java +++ b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java @@ -140,10 +140,10 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba for (String pkg : whichPackages) { try { - PackageInfo info = backupManagerService.getPackageManager().getPackageInfo(pkg, - PackageManager.GET_SIGNATURES); + PackageManager pm = backupManagerService.getPackageManager(); + PackageInfo info = pm.getPackageInfo(pkg, PackageManager.GET_SIGNATURES); mCurrentPackage = info; - if (!AppBackupUtils.appIsEligibleForBackup(info.applicationInfo)) { + if (!AppBackupUtils.appIsEligibleForBackup(info.applicationInfo, pm)) { // Cull any packages that have indicated that backups are not permitted, // that run as system-domain uids but do not define their own backup agents, // as well as any explicit mention of the 'special' shared-storage agent @@ -306,6 +306,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba final int N = mPackages.size(); final byte[] buffer = new byte[8192]; for (int i = 0; i < N; i++) { + mBackupRunner = null; PackageInfo currentPackage = mPackages.get(i); String packageName = currentPackage.packageName; if (DEBUG) { @@ -491,7 +492,13 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } EventLog.writeEvent(EventLogTags.FULL_BACKUP_AGENT_FAILURE, packageName, "transport rejected"); - // Do nothing, clean up, and continue looping. + // This failure state can come either a-priori from the transport, or + // from the preflight pass. If we got as far as preflight, we now need + // to tear down the target process. + if (mBackupRunner != null) { + backupManagerService.tearDownAgentAndKill(currentPackage.applicationInfo); + } + // ... and continue looping. } else if (backupPackageStatus == BackupTransport.TRANSPORT_QUOTA_EXCEEDED) { BackupObserverUtils .sendBackupOnPackageResult(mBackupObserver, packageName, @@ -501,6 +508,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba EventLog.writeEvent(EventLogTags.FULL_BACKUP_QUOTA_EXCEEDED, packageName); } + backupManagerService.tearDownAgentAndKill(currentPackage.applicationInfo); // Do nothing, clean up, and continue looping. } else if (backupPackageStatus == BackupTransport.AGENT_ERROR) { BackupObserverUtils @@ -527,6 +535,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba EventLog.writeEvent(EventLogTags.FULL_BACKUP_TRANSPORT_FAILURE); // Abort entire backup pass. backupRunStatus = BackupManager.ERROR_TRANSPORT_ABORTED; + backupManagerService.tearDownAgentAndKill(currentPackage.applicationInfo); return; } else { // Success! diff --git a/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java b/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java index 5d4fcf4c16d9..7a8a920e7df7 100644 --- a/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java +++ b/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java @@ -227,9 +227,8 @@ public class PerformBackupTask implements BackupRestoreTask { if (!mFinished) { finalizeBackup(); } else { - Slog.e(TAG, "Duplicate finish"); + Slog.e(TAG, "Duplicate finish of K/V pass"); } - mFinished = true; break; } } @@ -322,8 +321,7 @@ public class PerformBackupTask implements BackupRestoreTask { // because it's cheap and this way we guarantee that we don't get out of // step even if we're selecting among various transports at run time. if (mStatus == BackupTransport.TRANSPORT_OK) { - PackageManagerBackupAgent pmAgent = new PackageManagerBackupAgent( - backupManagerService.getPackageManager()); + PackageManagerBackupAgent pmAgent = backupManagerService.makeMetadataAgent(); mStatus = invokeAgentForBackup( PACKAGE_MANAGER_SENTINEL, IBackupAgent.Stub.asInterface(pmAgent.onBind()), mTransport); @@ -391,11 +389,9 @@ public class PerformBackupTask implements BackupRestoreTask { // to sanity-check here. This also gives us the classname of the // package's backup agent. try { - mCurrentPackage = backupManagerService.getPackageManager().getPackageInfo( - request.packageName, - PackageManager.GET_SIGNATURES); - if (!AppBackupUtils.appIsEligibleForBackup( - mCurrentPackage.applicationInfo)) { + PackageManager pm = backupManagerService.getPackageManager(); + mCurrentPackage = pm.getPackageInfo(request.packageName, PackageManager.GET_SIGNATURES); + if (!AppBackupUtils.appIsEligibleForBackup(mCurrentPackage.applicationInfo, pm)) { // The manifest has changed but we had a stale backup request pending. // This won't happen again because the app won't be requesting further // backups. @@ -609,6 +605,7 @@ public class PerformBackupTask implements BackupRestoreTask { break; } } + mFinished = true; Slog.i(TAG, "K/V backup pass finished."); // Only once we're entirely finished do we release the wakelock for k/v backup. backupManagerService.getWakelock().release(); @@ -1060,7 +1057,8 @@ public class PerformBackupTask implements BackupRestoreTask { Slog.w(TAG, "Unable to contact transport for recommended backoff: " + e.getMessage()); delay = 0; // use the scheduler's default } - KeyValueBackupJob.schedule(backupManagerService.getContext(), delay); + KeyValueBackupJob.schedule(backupManagerService.getContext(), delay, + backupManagerService.getConstants()); for (BackupRequest request : mOriginalQueue) { backupManagerService.dataChangedImpl(request.packageName); diff --git a/services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java b/services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java index e92b8be6aaba..1001d3a2c8de 100644 --- a/services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java +++ b/services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java @@ -53,7 +53,8 @@ public class ProvisionedObserver extends ContentObserver { if (MORE_DEBUG) { Slog.d(TAG, "Now provisioned, so starting backups"); } - KeyValueBackupJob.schedule(backupManagerService.getContext()); + KeyValueBackupJob.schedule(backupManagerService.getContext(), + backupManagerService.getConstants()); backupManagerService.scheduleNextFullBackupJob(0); } } diff --git a/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java index 62ae065be1ac..22691bb60bfa 100644 --- a/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java +++ b/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java @@ -150,8 +150,7 @@ public class PerformAdbRestoreTask implements Runnable { mObserver = observer; mLatchObject = latch; mAgent = null; - mPackageManagerBackupAgent = new PackageManagerBackupAgent( - backupManagerService.getPackageManager()); + mPackageManagerBackupAgent = backupManagerService.makeMetadataAgent(); mAgentPackage = null; mTargetApp = null; mObbConnection = new FullBackupObbConnection(backupManagerService); diff --git a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java index 21d5dc21c196..b538c6d4e472 100644 --- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java +++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java @@ -198,8 +198,8 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { boolean hasSettings = false; for (int i = 0; i < filterSet.length; i++) { try { - PackageInfo info = backupManagerService.getPackageManager().getPackageInfo( - filterSet[i], 0); + PackageManager pm = backupManagerService.getPackageManager(); + PackageInfo info = pm.getPackageInfo(filterSet[i], 0); if ("android".equals(info.packageName)) { hasSystem = true; continue; @@ -209,8 +209,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { continue; } - if (AppBackupUtils.appIsEligibleForBackup( - info.applicationInfo)) { + if (AppBackupUtils.appIsEligibleForBackup(info.applicationInfo, pm)) { mAcceptSet.add(info); } } catch (NameNotFoundException e) { @@ -387,8 +386,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // Pull the Package Manager metadata from the restore set first mCurrentPackage = new PackageInfo(); mCurrentPackage.packageName = PACKAGE_MANAGER_SENTINEL; - mPmAgent = new PackageManagerBackupAgent(backupManagerService.getPackageManager(), - null); + mPmAgent = backupManagerService.makeMetadataAgent(null); mAgent = IBackupAgent.Stub.asInterface(mPmAgent.onBind()); if (MORE_DEBUG) { Slog.v(TAG, "initiating restore for PMBA"); @@ -779,6 +777,9 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // state RESTORE_FINISHED : provide the "no more data" signpost callback at the end private void restoreFinished() { + if (DEBUG) { + Slog.d(TAG, "restoreFinished packageName=" + mCurrentPackage.packageName); + } try { backupManagerService .prepareOperationTimeout(mEphemeralOpToken, diff --git a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java index 4abf18add469..d7cac7770cc8 100644 --- a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java +++ b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java @@ -22,6 +22,7 @@ import static com.android.server.backup.RefactoredBackupManagerService.TAG; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.content.pm.Signature; import android.os.Process; import android.util.Slog; @@ -44,7 +45,7 @@ public class AppBackupUtils { * <li>it is the special shared-storage backup package used for 'adb backup' * </ol> */ - public static boolean appIsEligibleForBackup(ApplicationInfo app) { + public static boolean appIsEligibleForBackup(ApplicationInfo app, PackageManager pm) { // 1. their manifest states android:allowBackup="false" if ((app.flags & ApplicationInfo.FLAG_ALLOW_BACKUP) == 0) { return false; @@ -60,11 +61,33 @@ public class AppBackupUtils { return false; } - return true; + // 4. it is an "instant" app + if (app.isInstantApp()) { + return false; + } + + // Everything else checks out; the only remaining roadblock would be if the + // package were disabled + return !appIsDisabled(app, pm); + } + + /** Avoid backups of 'disabled' apps. */ + public static boolean appIsDisabled(ApplicationInfo app, PackageManager pm) { + switch (pm.getApplicationEnabledSetting(app.packageName)) { + case PackageManager.COMPONENT_ENABLED_STATE_DISABLED: + case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER: + case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED: + return true; + + default: + return false; + } } /** - * Checks if the app is in a stopped state, that means it won't receive broadcasts. + * Checks if the app is in a stopped state. This is not part of the general "eligible for + * backup?" check because we *do* still need to restore data to apps in this state (e.g. + * newly-installing ones) */ public static boolean appIsStopped(ApplicationInfo app) { return ((app.flags & ApplicationInfo.FLAG_STOPPED) != 0); diff --git a/services/core/Android.mk b/services/core/Android.mk index 5e188e03307e..599485ffe5c1 100644 --- a/services/core/Android.mk +++ b/services/core/Android.mk @@ -4,7 +4,10 @@ include $(CLEAR_VARS) LOCAL_MODULE := services.core -LOCAL_AIDL_INCLUDES := system/netd/server/binder +LOCAL_AIDL_INCLUDES := \ + frameworks/native/aidl/binder \ + system/netd/server/binder \ + system/vold/binder LOCAL_SRC_FILES += \ $(call all-java-files-under,java) \ @@ -12,6 +15,9 @@ LOCAL_SRC_FILES += \ java/com/android/server/am/EventLogTags.logtags \ ../../../../system/netd/server/binder/android/net/INetd.aidl \ ../../../../system/netd/server/binder/android/net/metrics/INetdEventListener.aidl \ + ../../../../system/vold/binder/android/os/IVold.aidl \ + ../../../../system/vold/binder/android/os/IVoldListener.aidl \ + ../../../../system/vold/binder/android/os/IVoldTaskListener.aidl \ ../../../native/cmds/installd/binder/android/os/IInstalld.aidl \ LOCAL_AIDL_INCLUDES += \ diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java index d1cf0255b18c..4c08f6290c6c 100644 --- a/services/core/java/com/android/server/AlarmManagerService.java +++ b/services/core/java/com/android/server/AlarmManagerService.java @@ -46,6 +46,7 @@ import android.os.Message; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; +import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; @@ -54,6 +55,7 @@ import android.provider.Settings; import android.text.TextUtils; import android.text.format.DateFormat; import android.util.ArrayMap; +import android.util.ArraySet; import android.util.KeyValueListParser; import android.util.Log; import android.util.Slog; @@ -85,6 +87,8 @@ import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP; import static android.app.AlarmManager.ELAPSED_REALTIME; import com.android.internal.annotations.GuardedBy; +import com.android.internal.app.IAppOpsCallback; +import com.android.internal.app.IAppOpsService; import com.android.internal.util.DumpUtils; import com.android.internal.util.LocalLog; @@ -106,6 +110,7 @@ class AlarmManagerService extends SystemService { static final boolean DEBUG_ALARM_CLOCK = localLOGV || false; static final boolean DEBUG_LISTENER_CALLBACK = localLOGV || false; static final boolean DEBUG_WAKELOCK = localLOGV || false; + static final boolean DEBUG_BG_LIMIT = localLOGV || false; static final boolean RECORD_ALARMS_IN_HISTORY = true; static final boolean RECORD_DEVICE_IDLE_ALARMS = false; static final int ALARM_EVENT = 1; @@ -114,7 +119,7 @@ class AlarmManagerService extends SystemService { private final Intent mBackgroundIntent = new Intent().addFlags(Intent.FLAG_FROM_BACKGROUND); static final IncreasingTimeOrder sIncreasingTimeOrder = new IncreasingTimeOrder(); - + static final boolean WAKEUP_STATS = false; private static final Intent NEXT_ALARM_CLOCK_CHANGED_INTENT = @@ -125,10 +130,15 @@ class AlarmManagerService extends SystemService { final LocalLog mLog = new LocalLog(TAG); AppOpsManager mAppOps; + IAppOpsService mAppOpsService; DeviceIdleController.LocalService mLocalDeviceIdleController; final Object mLock = new Object(); + ArraySet<String> mForcedAppStandbyPackages = new ArraySet<>(); + SparseBooleanArray mForegroundUids = new SparseBooleanArray(); + // List of alarms per uid deferred due to user applied background restrictions on the source app + SparseArray<ArrayList<Alarm>> mPendingBackgroundAlarms = new SparseArray<>(); long mNativeData; private long mNextWakeup; private long mNextNonWakeup; @@ -225,6 +235,7 @@ class AlarmManagerService extends SystemService { private static final String KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION = "allow_while_idle_whitelist_duration"; private static final String KEY_LISTENER_TIMEOUT = "listener_timeout"; + private static final String KEY_BG_RESTRICTIONS_ENABLED = "limit_bg_alarms_enabled"; private static final long DEFAULT_MIN_FUTURITY = 5 * 1000; private static final long DEFAULT_MIN_INTERVAL = 60 * 1000; @@ -705,7 +716,7 @@ class AlarmManagerService extends SystemService { static final BatchTimeOrder sBatchOrder = new BatchTimeOrder(); final ArrayList<Batch> mAlarmBatches = new ArrayList<>(); - // set to null if in idle mode; while in this mode, any alarms we don't want + // set to non-null if in idle mode; while in this mode, any alarms we don't want // to run during this time are placed in mPendingWhileIdleAlarms Alarm mPendingIdleUntil = null; Alarm mNextWakeFromIdle = null; @@ -814,6 +825,108 @@ class AlarmManagerService extends SystemService { setImplLocked(a, true, doValidate); } + /** + * Sends alarms that were blocked due to user applied background restrictions - either because + * the user lifted those or the uid came to foreground. + * + * @param uid uid to filter on + * @param packageName package to filter on, or null for all packages in uid + */ + void sendPendingBackgroundAlarmsLocked(int uid, String packageName) { + final ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.get(uid); + if (alarmsForUid == null || alarmsForUid.size() == 0) { + return; + } + final ArrayList<Alarm> alarmsToDeliver; + if (packageName != null) { + if (DEBUG_BG_LIMIT) { + Slog.d(TAG, "Sending blocked alarms for uid " + uid + ", package " + packageName); + } + alarmsToDeliver = new ArrayList<>(); + for (int i = alarmsForUid.size() - 1; i >= 0; i--) { + final Alarm a = alarmsForUid.get(i); + if (a.matches(packageName)) { + alarmsToDeliver.add(alarmsForUid.remove(i)); + } + } + if (alarmsForUid.size() == 0) { + mPendingBackgroundAlarms.remove(uid); + } + } else { + if (DEBUG_BG_LIMIT) { + Slog.d(TAG, "Sending blocked alarms for uid " + uid); + } + alarmsToDeliver = alarmsForUid; + mPendingBackgroundAlarms.remove(uid); + } + deliverPendingBackgroundAlarmsLocked(alarmsToDeliver, SystemClock.elapsedRealtime()); + } + + void sendPendingBackgroundAlarmsForAppIdLocked(int appId) { + final ArrayList<Alarm> alarmsToDeliver = new ArrayList<>(); + for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i--) { + final int uid = mPendingBackgroundAlarms.keyAt(i); + final ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.valueAt(i); + if (UserHandle.getAppId(uid) == appId) { + alarmsToDeliver.addAll(alarmsForUid); + mPendingBackgroundAlarms.removeAt(i); + } + } + deliverPendingBackgroundAlarmsLocked(alarmsToDeliver, SystemClock.elapsedRealtime()); + } + + private void deliverPendingBackgroundAlarmsLocked(ArrayList<Alarm> alarms, long nowELAPSED) { + final int N = alarms.size(); + boolean hasWakeup = false; + for (int i = 0; i < N; i++) { + final Alarm alarm = alarms.get(i); + if (alarm.wakeup) { + hasWakeup = true; + } + alarm.count = 1; + // Recurring alarms may have passed several alarm intervals while the + // alarm was kept pending. Send the appropriate trigger count. + if (alarm.repeatInterval > 0) { + alarm.count += (nowELAPSED - alarm.whenElapsed) / alarm.repeatInterval; + // Also schedule its next recurrence + final long delta = alarm.count * alarm.repeatInterval; + final long nextElapsed = alarm.whenElapsed + delta; + setImplLocked(alarm.type, alarm.when + delta, nextElapsed, alarm.windowLength, + maxTriggerTime(nowELAPSED, nextElapsed, alarm.repeatInterval), + alarm.repeatInterval, alarm.operation, null, null, alarm.flags, true, + alarm.workSource, alarm.alarmClock, alarm.uid, alarm.packageName); + // Kernel alarms will be rescheduled as needed in setImplLocked + } + } + if (!hasWakeup && checkAllowNonWakeupDelayLocked(nowELAPSED)) { + // No need to wakeup for non wakeup alarms + if (mPendingNonWakeupAlarms.size() == 0) { + mStartCurrentDelayTime = nowELAPSED; + mNextNonWakeupDeliveryTime = nowELAPSED + + ((currentNonWakeupFuzzLocked(nowELAPSED)*3)/2); + } + mPendingNonWakeupAlarms.addAll(alarms); + mNumDelayedAlarms += alarms.size(); + } else { + if (DEBUG_BG_LIMIT) { + Slog.d(TAG, "Waking up to deliver pending blocked alarms"); + } + // Since we are waking up, also deliver any pending non wakeup alarms we have. + if (mPendingNonWakeupAlarms.size() > 0) { + alarms.addAll(mPendingNonWakeupAlarms); + final long thisDelayTime = nowELAPSED - mStartCurrentDelayTime; + mTotalDelayTime += thisDelayTime; + if (mMaxDelayTime < thisDelayTime) { + mMaxDelayTime = thisDelayTime; + } + mPendingNonWakeupAlarms.clear(); + } + calculateDeliveryPriorities(alarms); + Collections.sort(alarms, mAlarmDispatchComparator); + deliverAlarmsLocked(alarms, nowELAPSED); + } + } + void restorePendingWhileIdleAlarmsLocked() { if (RECORD_DEVICE_IDLE_ALARMS) { IdleDispatchEntry ent = new IdleDispatchEntry(); @@ -1032,11 +1145,14 @@ class AlarmManagerService extends SystemService { try { ActivityManager.getService().registerUidObserver(new UidObserver(), - ActivityManager.UID_OBSERVER_IDLE, ActivityManager.PROCESS_STATE_UNKNOWN, null); + ActivityManager.UID_OBSERVER_GONE | ActivityManager.UID_OBSERVER_IDLE + | ActivityManager.UID_OBSERVER_ACTIVE, + ActivityManager.PROCESS_STATE_UNKNOWN, null); } catch (RemoteException e) { // ignored; both services live in system_server } - + mAppOpsService = IAppOpsService.Stub.asInterface( + ServiceManager.getService(Context.APP_OPS_SERVICE)); publishBinderService(Context.ALARM_SERVICE, mService); publishLocalService(LocalService.class, new LocalService()); } @@ -1048,6 +1164,13 @@ class AlarmManagerService extends SystemService { mAppOps = (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE); mLocalDeviceIdleController = LocalServices.getService(DeviceIdleController.LocalService.class); + try { + mAppOpsService.startWatchingMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, null, + new AppOpsWatcher()); + } catch (RemoteException rexc) { + // Shouldn't happen as they are in the same process. + Slog.e(TAG, "AppOps service not reachable", rexc); + } } } @@ -1461,6 +1584,12 @@ class AlarmManagerService extends SystemService { mConstants.dump(pw); pw.println(); + pw.print(" Foreground uids: ["); + for (int i = 0; i < mForegroundUids.size(); i++) { + if (mForegroundUids.valueAt(i)) pw.print(mForegroundUids.keyAt(i) + " "); + } + pw.println("]"); + pw.println(" Forced app standby packages: " + mForcedAppStandbyPackages); final long nowRTC = System.currentTimeMillis(); final long nowELAPSED = SystemClock.elapsedRealtime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -1533,6 +1662,19 @@ class AlarmManagerService extends SystemService { dumpAlarmList(pw, b.alarms, " ", nowELAPSED, nowRTC, sdf); } } + pw.println(); + pw.println(" Pending user blocked background alarms: "); + boolean blocked = false; + for (int i = 0; i < mPendingBackgroundAlarms.size(); i++) { + final ArrayList<Alarm> blockedAlarms = mPendingBackgroundAlarms.valueAt(i); + if (blockedAlarms != null && blockedAlarms.size() > 0) { + blocked = true; + dumpAlarmList(pw, blockedAlarms, " ", nowELAPSED, nowRTC, sdf); + } + } + if (!blocked) { + pw.println(" none"); + } if (mPendingIdleUntil != null || mPendingWhileIdleAlarms.size() > 0) { pw.println(); pw.println(" Idle mode state:"); @@ -1799,6 +1941,22 @@ class AlarmManagerService extends SystemService { void setDeviceIdleUserWhitelistImpl(int[] appids) { synchronized (mLock) { + // appids are sorted, just send pending alarms for any new appids added to the whitelist + int i = 0, j = 0; + while (i < appids.length) { + while (j < mDeviceIdleUserWhitelist.length + && mDeviceIdleUserWhitelist[j] < appids[i]) { + j++; + } + if (j < mDeviceIdleUserWhitelist.length + && appids[i] != mDeviceIdleUserWhitelist[j]) { + if (DEBUG_BG_LIMIT) { + Slog.d(TAG, "Sending blocked alarms for whitelisted appid " + appids[j]); + } + sendPendingBackgroundAlarmsForAppIdLocked(appids[j]); + } + i++; + } mDeviceIdleUserWhitelist = appids; } } @@ -1979,7 +2137,18 @@ class AlarmManagerService extends SystemService { mPendingWhileIdleAlarms.remove(i); } } - + for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i--) { + final ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.valueAt(i); + for (int j = alarmsForUid.size() - 1; j >= 0; j--) { + if (alarmsForUid.get(j).matches(operation, directReceiver)) { + // Don't set didRemove, since this doesn't impact the scheduled alarms. + alarmsForUid.remove(j); + } + } + if (alarmsForUid.size() == 0) { + mPendingBackgroundAlarms.removeAt(i); + } + } if (didRemove) { if (DEBUG_BATCH) { Slog.v(TAG, "remove(operation) changed bounds; rebatching"); @@ -2016,7 +2185,17 @@ class AlarmManagerService extends SystemService { mPendingWhileIdleAlarms.remove(i); } } - + for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i --) { + final ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.valueAt(i); + for (int j = alarmsForUid.size() - 1; j >= 0; j--) { + if (alarmsForUid.get(j).matches(packageName)) { + alarmsForUid.remove(j); + } + } + if (alarmsForUid.size() == 0) { + mPendingBackgroundAlarms.removeAt(i); + } + } if (didRemove) { if (DEBUG_BATCH) { Slog.v(TAG, "remove(package) changed bounds; rebatching"); @@ -2043,7 +2222,11 @@ class AlarmManagerService extends SystemService { mPendingWhileIdleAlarms.remove(i); } } - + for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i--) { + if (mPendingBackgroundAlarms.keyAt(i) == uid) { + mPendingBackgroundAlarms.removeAt(i); + } + } if (didRemove) { if (DEBUG_BATCH) { Slog.v(TAG, "remove(package) changed bounds; rebatching"); @@ -2070,6 +2253,11 @@ class AlarmManagerService extends SystemService { mPendingWhileIdleAlarms.remove(i); } } + for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i--) { + if (UserHandle.getUserId(mPendingBackgroundAlarms.keyAt(i)) == userHandle) { + mPendingBackgroundAlarms.removeAt(i); + } + } for (int i = mLastAllowWhileIdleDispatch.size() - 1; i >= 0; i--) { if (UserHandle.getUserId(mLastAllowWhileIdleDispatch.keyAt(i)) == userHandle) { mLastAllowWhileIdleDispatch.removeAt(i); @@ -2184,6 +2372,24 @@ class AlarmManagerService extends SystemService { } } + private boolean isBackgroundRestricted(Alarm alarm) { + if (alarm.alarmClock != null) { + // Don't block alarm clocks + return false; + } + if (alarm.operation != null + && (alarm.operation.isActivity() || alarm.operation.isForegroundService())) { + // Don't block starting foreground components + return false; + } + final String sourcePackage = + (alarm.operation != null) ? alarm.operation.getCreatorPackage() : alarm.packageName; + final int sourceUid = alarm.creatorUid; + return mForcedAppStandbyPackages.contains(sourcePackage) && !mForegroundUids.get(sourceUid) + && Arrays.binarySearch(mDeviceIdleUserWhitelist, UserHandle.getAppId(sourceUid)) + < 0; + } + private native long init(); private native void close(long nativeData); private native void set(long nativeData, int type, long seconds, long nanoseconds); @@ -2239,6 +2445,19 @@ class AlarmManagerService extends SystemService { continue; } } + if (isBackgroundRestricted(alarm)) { + // Alarms with FLAG_WAKE_FROM_IDLE or mPendingIdleUntil alarm are not deferred + if (DEBUG_BG_LIMIT) { + Slog.d(TAG, "Deferring alarm " + alarm + " due to user forced app standby"); + } + ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.get(alarm.creatorUid); + if (alarmsForUid == null) { + alarmsForUid = new ArrayList<>(); + mPendingBackgroundAlarms.put(alarm.creatorUid, alarmsForUid); + } + alarmsForUid.add(alarm); + continue; + } alarm.count = 1; triggerList.add(alarm); @@ -2904,21 +3123,29 @@ class AlarmManagerService extends SystemService { } @Override public void onUidGone(int uid, boolean disabled) { - if (disabled) { - synchronized (mLock) { + synchronized (mLock) { + if (disabled) { removeForStoppedLocked(uid); } + mForegroundUids.delete(uid); } } @Override public void onUidActive(int uid) { + synchronized (mLock) { + if (!mForegroundUids.get(uid)) { + mForegroundUids.put(uid, true); + sendPendingBackgroundAlarmsLocked(uid, null); + } + } } @Override public void onUidIdle(int uid, boolean disabled) { - if (disabled) { - synchronized (mLock) { + synchronized (mLock) { + if (disabled) { removeForStoppedLocked(uid); } + mForegroundUids.delete(uid); } } @@ -2926,6 +3153,28 @@ class AlarmManagerService extends SystemService { } }; + private final class AppOpsWatcher extends IAppOpsCallback.Stub { + @Override + public void opChanged(int op, int uid, String packageName) throws RemoteException { + synchronized (mLock) { + final int mode = mAppOpsService.checkOperation(op, uid, packageName); + if (DEBUG_BG_LIMIT) { + Slog.d(TAG, + "Appop changed for " + uid + ", " + packageName + " to " + mode); + } + final boolean changed; + if (mode != AppOpsManager.MODE_ALLOWED) { + changed = mForcedAppStandbyPackages.add(packageName); + } else { + changed = mForcedAppStandbyPackages.remove(packageName); + } + if (changed && mode == AppOpsManager.MODE_ALLOWED) { + sendPendingBackgroundAlarmsLocked(uid, packageName); + } + } + } + } + private final BroadcastStats getStatsLocked(PendingIntent pi) { String pkg = pi.getCreatorPackage(); int uid = pi.getCreatorUid(); diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index ec83a03f8aff..3ac6f2e847f6 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -128,7 +128,6 @@ import com.android.server.connectivity.DataConnectionStats; import com.android.server.connectivity.KeepaliveTracker; import com.android.server.connectivity.LingerMonitor; import com.android.server.connectivity.MockableSystemProperties; -import com.android.server.connectivity.Nat464Xlat; import com.android.server.connectivity.NetworkAgentInfo; import com.android.server.connectivity.NetworkDiagnostics; import com.android.server.connectivity.NetworkMonitor; @@ -456,6 +455,11 @@ public class ConnectivityService extends IConnectivityManager.Stub private static final int MAX_WAKELOCK_LOGS = 20; private final LocalLog mWakelockLogs = new LocalLog(MAX_WAKELOCK_LOGS); + private int mTotalWakelockAcquisitions = 0; + private int mTotalWakelockReleases = 0; + private long mTotalWakelockDurationMs = 0; + private long mMaxWakelockDurationMs = 0; + private long mLastWakeLockAcquireTimestamp = 0; // Array of <Network,ReadOnlyLocalLogs> tracking network validation and results private static final int MAX_VALIDATION_LOGS = 10; @@ -1947,6 +1951,14 @@ public class ConnectivityService extends IConnectivityManager.Stub pw.println(); pw.println("NetTransition WakeLock activity (most recent first):"); pw.increaseIndent(); + pw.println("total acquisitions: " + mTotalWakelockAcquisitions); + pw.println("total releases: " + mTotalWakelockReleases); + pw.println("cumulative duration: " + (mTotalWakelockDurationMs / 1000) + "s"); + pw.println("longest duration: " + (mMaxWakelockDurationMs / 1000) + "s"); + if (mTotalWakelockAcquisitions > mTotalWakelockReleases) { + long duration = SystemClock.elapsedRealtime() - mLastWakeLockAcquireTimestamp; + pw.println("currently holding WakeLock for: " + (duration / 1000) + "s"); + } mWakelockLogs.reverseDump(fd, pw, args); pw.decreaseIndent(); } @@ -2011,16 +2023,7 @@ public class ConnectivityService extends IConnectivityManager.Stub break; } case NetworkAgent.EVENT_NETWORK_PROPERTIES_CHANGED: { - if (VDBG) { - log("Update of LinkProperties for " + nai.name() + - "; created=" + nai.created + - "; everConnected=" + nai.everConnected); - } - LinkProperties oldLp = nai.linkProperties; - synchronized (nai) { - nai.linkProperties = (LinkProperties)msg.obj; - } - if (nai.everConnected) updateLinkProperties(nai, oldLp); + handleUpdateLinkProperties(nai, (LinkProperties) msg.obj); break; } case NetworkAgent.EVENT_NETWORK_INFO_CHANGED: { @@ -2201,7 +2204,7 @@ public class ConnectivityService extends IConnectivityManager.Stub // A network factory has connected. Send it all current NetworkRequests. for (NetworkRequestInfo nri : mNetworkRequests.values()) { if (nri.request.isListen()) continue; - NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId); + NetworkAgentInfo nai = getNetworkForRequest(nri.request.requestId); ac.sendMessage(android.net.NetworkFactory.CMD_REQUEST_NETWORK, (nai != null ? nai.getCurrentScore() : 0), 0, nri.request); } @@ -2269,7 +2272,7 @@ public class ConnectivityService extends IConnectivityManager.Stub } nai.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_DISCONNECTED); mNetworkAgentInfos.remove(msg.replyTo); - updateClat(null, nai.linkProperties, nai); + nai.maybeStopClat(); synchronized (mNetworkForNetId) { // Remove the NetworkAgent, but don't mark the netId as // available until we've told netd to delete it below. @@ -2278,9 +2281,9 @@ public class ConnectivityService extends IConnectivityManager.Stub // Remove all previously satisfied requests. for (int i = 0; i < nai.numNetworkRequests(); i++) { NetworkRequest request = nai.requestAt(i); - NetworkAgentInfo currentNetwork = mNetworkForRequestId.get(request.requestId); + NetworkAgentInfo currentNetwork = getNetworkForRequest(request.requestId); if (currentNetwork != null && currentNetwork.network.netId == nai.network.netId) { - mNetworkForRequestId.remove(request.requestId); + clearNetworkForRequest(request.requestId); sendUpdatedScoreToFactories(request, 0); } } @@ -2356,7 +2359,7 @@ public class ConnectivityService extends IConnectivityManager.Stub } } rematchAllNetworksAndRequests(null, 0); - if (nri.request.isRequest() && mNetworkForRequestId.get(nri.request.requestId) == null) { + if (nri.request.isRequest() && getNetworkForRequest(nri.request.requestId) == null) { sendUpdatedScoreToFactories(nri.request, 0); } } @@ -2411,7 +2414,7 @@ public class ConnectivityService extends IConnectivityManager.Stub // 2. Unvalidated WiFi will not be reaped when validated cellular // is currently satisfying the request. This is desirable when // WiFi ends up validating and out scoring cellular. - mNetworkForRequestId.get(nri.request.requestId).getCurrentScore() < + getNetworkForRequest(nri.request.requestId).getCurrentScore() < nai.getCurrentScoreAsValidated())) { return false; } @@ -2438,7 +2441,7 @@ public class ConnectivityService extends IConnectivityManager.Stub if (mNetworkRequests.get(nri.request) == null) { return; } - if (mNetworkForRequestId.get(nri.request.requestId) != null) { + if (getNetworkForRequest(nri.request.requestId) != null) { return; } if (VDBG || (DBG && nri.request.isRequest())) { @@ -2478,7 +2481,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mNetworkRequestInfoLogs.log("RELEASE " + nri); if (nri.request.isRequest()) { boolean wasKept = false; - NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId); + NetworkAgentInfo nai = getNetworkForRequest(nri.request.requestId); if (nai != null) { boolean wasBackgroundNetwork = nai.isBackgroundNetwork(); nai.removeRequest(nri.request.requestId); @@ -2495,7 +2498,7 @@ public class ConnectivityService extends IConnectivityManager.Stub } else { wasKept = true; } - mNetworkForRequestId.remove(nri.request.requestId); + clearNetworkForRequest(nri.request.requestId); if (!wasBackgroundNetwork && nai.isBackgroundNetwork()) { // Went from foreground to background. updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities); @@ -3014,6 +3017,8 @@ public class ConnectivityService extends IConnectivityManager.Stub return; } mNetTransitionWakeLock.acquire(); + mLastWakeLockAcquireTimestamp = SystemClock.elapsedRealtime(); + mTotalWakelockAcquisitions++; } mWakelockLogs.log("ACQUIRE for " + forWhom); Message msg = mHandler.obtainMessage(EVENT_EXPIRE_NET_TRANSITION_WAKELOCK); @@ -3046,6 +3051,10 @@ public class ConnectivityService extends IConnectivityManager.Stub return; } mNetTransitionWakeLock.release(); + long lockDuration = SystemClock.elapsedRealtime() - mLastWakeLockAcquireTimestamp; + mTotalWakelockDurationMs += lockDuration; + mMaxWakelockDurationMs = Math.max(mMaxWakelockDurationMs, lockDuration); + mTotalWakelockReleases++; } mWakelockLogs.log(String.format("RELEASE (%s)", event)); } @@ -4286,7 +4295,8 @@ public class ConnectivityService extends IConnectivityManager.Stub * and the are the highest scored network available. * the are keyed off the Requests requestId. */ - // TODO: Yikes, this is accessed on multiple threads: add synchronization. + // NOTE: Accessed on multiple threads, must be synchronized on itself. + @GuardedBy("mNetworkForRequestId") private final SparseArray<NetworkAgentInfo> mNetworkForRequestId = new SparseArray<NetworkAgentInfo>(); @@ -4316,8 +4326,26 @@ public class ConnectivityService extends IConnectivityManager.Stub // priority networks like Wi-Fi are active. private final NetworkRequest mDefaultMobileDataRequest; + private NetworkAgentInfo getNetworkForRequest(int requestId) { + synchronized (mNetworkForRequestId) { + return mNetworkForRequestId.get(requestId); + } + } + + private void clearNetworkForRequest(int requestId) { + synchronized (mNetworkForRequestId) { + mNetworkForRequestId.remove(requestId); + } + } + + private void setNetworkForRequest(int requestId, NetworkAgentInfo nai) { + synchronized (mNetworkForRequestId) { + mNetworkForRequestId.put(requestId, nai); + } + } + private NetworkAgentInfo getDefaultNetwork() { - return mNetworkForRequestId.get(mDefaultRequest.requestId); + return getNetworkForRequest(mDefaultRequest.requestId); } private boolean isDefaultNetwork(NetworkAgentInfo nai) { @@ -4333,11 +4361,13 @@ public class ConnectivityService extends IConnectivityManager.Stub int currentScore, NetworkMisc networkMisc) { enforceConnectivityInternalPermission(); + LinkProperties lp = new LinkProperties(linkProperties); + lp.ensureDirectlyConnectedRoutes(); // TODO: Instead of passing mDefaultRequest, provide an API to determine whether a Network // satisfies mDefaultRequest. final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(), - new Network(reserveNetId()), new NetworkInfo(networkInfo), new LinkProperties( - linkProperties), new NetworkCapabilities(networkCapabilities), currentScore, + new Network(reserveNetId()), new NetworkInfo(networkInfo), lp, + new NetworkCapabilities(networkCapabilities), currentScore, mContext, mTrackerHandler, new NetworkMisc(networkMisc), mDefaultRequest, this); synchronized (this) { nai.networkMonitor.systemReady = mSystemReady; @@ -4382,7 +4412,8 @@ public class ConnectivityService extends IConnectivityManager.Stub updateRoutes(newLp, oldLp, netId); updateDnses(newLp, oldLp, netId); - updateClat(newLp, oldLp, networkAgent); + // Start or stop clat accordingly to network state. + networkAgent.updateClat(mNetd); if (isDefaultNetwork(networkAgent)) { handleApplyDefaultProxy(newLp.getHttpProxy()); } else { @@ -4397,18 +4428,6 @@ public class ConnectivityService extends IConnectivityManager.Stub mKeepaliveTracker.handleCheckKeepalivesStillValid(networkAgent); } - private void updateClat(LinkProperties newLp, LinkProperties oldLp, NetworkAgentInfo nai) { - final boolean wasRunningClat = nai.clatd != null && nai.clatd.isStarted(); - final boolean shouldRunClat = Nat464Xlat.requiresClat(nai); - - if (!wasRunningClat && shouldRunClat) { - nai.clatd = new Nat464Xlat(mContext, mNetd, mTrackerHandler, nai); - nai.clatd.start(); - } else if (wasRunningClat && !shouldRunClat) { - nai.clatd.stop(); - } - } - private void wakeupModifyInterface(String iface, NetworkCapabilities caps, boolean add) { // Marks are only available on WiFi interaces. Checking for // marks on unsupported interfaces is harmless. @@ -4442,12 +4461,9 @@ public class ConnectivityService extends IConnectivityManager.Stub private void updateInterfaces(LinkProperties newLp, LinkProperties oldLp, int netId, NetworkCapabilities caps) { - CompareResult<String> interfaceDiff = new CompareResult<String>(); - if (oldLp != null) { - interfaceDiff = oldLp.compareAllInterfaceNames(newLp); - } else if (newLp != null) { - interfaceDiff.added = newLp.getAllInterfaceNames(); - } + CompareResult<String> interfaceDiff = new CompareResult<String>( + oldLp != null ? oldLp.getAllInterfaceNames() : null, + newLp != null ? newLp.getAllInterfaceNames() : null); for (String iface : interfaceDiff.added) { try { if (DBG) log("Adding iface " + iface + " to network " + netId); @@ -4473,12 +4489,10 @@ public class ConnectivityService extends IConnectivityManager.Stub * @return true if routes changed between oldLp and newLp */ private boolean updateRoutes(LinkProperties newLp, LinkProperties oldLp, int netId) { - CompareResult<RouteInfo> routeDiff = new CompareResult<RouteInfo>(); - if (oldLp != null) { - routeDiff = oldLp.compareAllRoutes(newLp); - } else if (newLp != null) { - routeDiff.added = newLp.getAllRoutes(); - } + // Compare the route diff to determine which routes should be added and removed. + CompareResult<RouteInfo> routeDiff = new CompareResult<RouteInfo>( + oldLp != null ? oldLp.getAllRoutes() : null, + newLp != null ? newLp.getAllRoutes() : null); // add routes before removing old in case it helps with continuous connectivity @@ -4643,6 +4657,27 @@ public class ConnectivityService extends IConnectivityManager.Stub } } + public void handleUpdateLinkProperties(NetworkAgentInfo nai, LinkProperties newLp) { + if (mNetworkForNetId.get(nai.network.netId) != nai) { + // Ignore updates for disconnected networks + return; + } + // newLp is already a defensive copy. + newLp.ensureDirectlyConnectedRoutes(); + if (VDBG) { + log("Update of LinkProperties for " + nai.name() + + "; created=" + nai.created + + "; everConnected=" + nai.everConnected); + } + LinkProperties oldLp = nai.linkProperties; + synchronized (nai) { + nai.linkProperties = newLp; + } + if (nai.everConnected) { + updateLinkProperties(nai, oldLp); + } + } + private void sendUpdatedScoreToFactories(NetworkAgentInfo nai) { for (int i = 0; i < nai.numNetworkRequests(); i++) { NetworkRequest nr = nai.requestAt(i); @@ -4864,7 +4899,7 @@ public class ConnectivityService extends IConnectivityManager.Stub // requests or not, and doesn't affect the network's score. if (nri.request.isListen()) continue; - final NetworkAgentInfo currentNetwork = mNetworkForRequestId.get(nri.request.requestId); + final NetworkAgentInfo currentNetwork = getNetworkForRequest(nri.request.requestId); final boolean satisfies = newNetwork.satisfies(nri.request); if (newNetwork == currentNetwork && satisfies) { if (VDBG) { @@ -4896,7 +4931,7 @@ public class ConnectivityService extends IConnectivityManager.Stub if (VDBG) log(" accepting network in place of null"); } newNetwork.unlingerRequest(nri.request); - mNetworkForRequestId.put(nri.request.requestId, newNetwork); + setNetworkForRequest(nri.request.requestId, newNetwork); if (!newNetwork.addRequest(nri.request)) { Slog.wtf(TAG, "BUG: " + newNetwork.name() + " already has " + nri.request); } @@ -4930,7 +4965,7 @@ public class ConnectivityService extends IConnectivityManager.Stub } newNetwork.removeRequest(nri.request.requestId); if (currentNetwork == newNetwork) { - mNetworkForRequestId.remove(nri.request.requestId); + clearNetworkForRequest(nri.request.requestId); sendUpdatedScoreToFactories(nri.request, 0); } else { Slog.wtf(TAG, "BUG: Removing request " + nri.request.requestId + " from " + diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java index 0c2cf60ccea7..abbc89e45c99 100644 --- a/services/core/java/com/android/server/DeviceIdleController.java +++ b/services/core/java/com/android/server/DeviceIdleController.java @@ -35,7 +35,6 @@ import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.TriggerEvent; import android.hardware.TriggerEventListener; -import android.hardware.display.DisplayManager; import android.location.LocationRequest; import android.location.Location; import android.location.LocationListener; @@ -76,7 +75,6 @@ import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.TimeUtils; import android.util.Xml; -import android.view.Display; import com.android.internal.app.IBatteryStats; import com.android.internal.os.AtomicFile; @@ -123,14 +121,12 @@ public class DeviceIdleController extends SystemService private ConnectivityService mConnectivityService; private AlarmManagerService.LocalService mLocalAlarmManager; private INetworkPolicyManager mNetworkPolicyManager; - private DisplayManager mDisplayManager; private SensorManager mSensorManager; private Sensor mMotionSensor; private LocationManager mLocationManager; private LocationRequest mLocationRequest; private Intent mIdleIntent; private Intent mLightIdleIntent; - private Display mCurDisplay; private AnyMotionDetector mAnyMotionDetector; private boolean mLightEnabled; private boolean mDeepEnabled; @@ -402,19 +398,11 @@ public class DeviceIdleController extends SystemService } }; - private final DisplayManager.DisplayListener mDisplayListener - = new DisplayManager.DisplayListener() { - @Override public void onDisplayAdded(int displayId) { - } - - @Override public void onDisplayRemoved(int displayId) { - } - - @Override public void onDisplayChanged(int displayId) { - if (displayId == Display.DEFAULT_DISPLAY) { - synchronized (DeviceIdleController.this) { - updateDisplayLocked(); - } + private final BroadcastReceiver mInteractivityReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + synchronized (DeviceIdleController.this) { + updateInteractivityLocked(); } } }; @@ -1412,8 +1400,6 @@ public class DeviceIdleController extends SystemService mNetworkPolicyManager = INetworkPolicyManager.Stub.asInterface( ServiceManager.getService(Context.NETWORK_POLICY_SERVICE)); mNetworkPolicyManagerInternal = getLocalService(NetworkPolicyManagerInternal.class); - mDisplayManager = (DisplayManager) getContext().getSystemService( - Context.DISPLAY_SERVICE); mSensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE); int sigMotionSensorId = getContext().getResources().getInteger( com.android.internal.R.integer.config_autoPowerModeAnyMotionSensor); @@ -1468,11 +1454,16 @@ public class DeviceIdleController extends SystemService filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); getContext().registerReceiver(mReceiver, filter); + filter = new IntentFilter(); + filter.addAction(Intent.ACTION_SCREEN_OFF); + filter.addAction(Intent.ACTION_SCREEN_ON); + getContext().registerReceiver(mInteractivityReceiver, filter); + mLocalActivityManager.setDeviceIdleWhitelist(mPowerSaveWhitelistAllAppIdArray); mLocalPowerManager.setDeviceIdleWhitelist(mPowerSaveWhitelistAllAppIdArray); mLocalAlarmManager.setDeviceIdleUserWhitelist(mPowerSaveWhitelistUserAppIdArray); - mDisplayManager.registerDisplayListener(mDisplayListener, null); - updateDisplayLocked(); + + updateInteractivityLocked(); } updateConnectivityState(null); } @@ -1830,13 +1821,12 @@ public class DeviceIdleController extends SystemService } } - void updateDisplayLocked() { - mCurDisplay = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY); - // We consider any situation where the display is showing something to be it on, - // because if there is anything shown we are going to be updating it at some - // frequency so can't be allowed to go into deep sleeps. - boolean screenOn = mCurDisplay.getState() == Display.STATE_ON; - if (DEBUG) Slog.d(TAG, "updateDisplayLocked: screenOn=" + screenOn); + void updateInteractivityLocked() { + // The interactivity state from the power manager tells us whether the display is + // in a state that we need to keep things running so they will update at a normal + // frequency. + boolean screenOn = mPowerManager.isInteractive(); + if (DEBUG) Slog.d(TAG, "updateInteractivityLocked: screenOn=" + screenOn); if (!screenOn && mScreenOn) { mScreenOn = false; if (!mForceIdle) { @@ -3088,7 +3078,6 @@ public class DeviceIdleController extends SystemService pw.print(" mDeepEnabled="); pw.println(mDeepEnabled); pw.print(" mForceIdle="); pw.println(mForceIdle); pw.print(" mMotionSensor="); pw.println(mMotionSensor); - pw.print(" mCurDisplay="); pw.println(mCurDisplay); pw.print(" mScreenOn="); pw.println(mScreenOn); pw.print(" mNetworkConnected="); pw.println(mNetworkConnected); pw.print(" mCharging="); pw.println(mCharging); diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index 966e553a6396..340d672df21c 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -1542,18 +1542,7 @@ public class LocationManagerService extends ILocationManager.Stub { */ @Override public List<String> getAllProviders() { - ArrayList<String> out; - synchronized (mLock) { - out = new ArrayList<>(mProviders.size()); - for (LocationProviderInterface provider : mProviders) { - String name = provider.getName(); - if (LocationManager.FUSED_PROVIDER.equals(name)) { - continue; - } - out.add(name); - } - } - + List<String> out = getProviders(null /*criteria*/, false /*enabledOnly*/); if (D) Log.d(TAG, "getAllProviders()=" + out); return out; } diff --git a/services/core/java/com/android/server/NativeDaemonConnector.java b/services/core/java/com/android/server/NativeDaemonConnector.java index f5f773214124..b5a8332375f4 100644 --- a/services/core/java/com/android/server/NativeDaemonConnector.java +++ b/services/core/java/com/android/server/NativeDaemonConnector.java @@ -24,11 +24,13 @@ import android.os.Looper; import android.os.Message; import android.os.PowerManager; import android.os.SystemClock; +import android.os.SystemProperties; import android.util.LocalLog; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.Preconditions; +import com.android.server.power.ShutdownThread; import com.google.android.collect.Lists; import java.io.FileDescriptor; @@ -136,6 +138,12 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo listenToSocket(); } catch (Exception e) { loge("Error in NativeDaemonConnector: " + e); + String shutdownAct = SystemProperties.get( + ShutdownThread.SHUTDOWN_ACTION_PROPERTY, ""); + if (shutdownAct != null && shutdownAct.length() > 0) { + // The device is in middle of shutdown. + break; + } SystemClock.sleep(5000); } } diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index f17c770becde..2f95aa2cf2f6 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -76,6 +76,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.INetworkActivityListener; import android.os.INetworkManagementService; +import android.os.PersistableBundle; import android.os.PowerManager; import android.os.Process; import android.os.RemoteCallbackList; @@ -1897,38 +1898,34 @@ public class NetworkManagementService extends INetworkManagementService.Stub return new NetworkStats(SystemClock.elapsedRealtime(), 0); } - final NativeDaemonEvent[] events; + final PersistableBundle bundle; try { - events = mConnector.executeForList("bandwidth", "gettetherstats"); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + bundle = mNetdService.tetherGetStats(); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException("problem parsing tethering stats: ", e); } - final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 1); - for (NativeDaemonEvent event : events) { - if (event.getCode() != TetheringStatsListResult) continue; - // 114 ifaceIn ifaceOut rx_bytes rx_packets tx_bytes tx_packets - final StringTokenizer tok = new StringTokenizer(event.getMessage()); - try { - final String ifaceIn = tok.nextToken(); - final String ifaceOut = tok.nextToken(); + final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), + bundle.size()); + final NetworkStats.Entry entry = new NetworkStats.Entry(); - final NetworkStats.Entry entry = new NetworkStats.Entry(); - entry.iface = ifaceOut; + for (String iface : bundle.keySet()) { + long[] statsArray = bundle.getLongArray(iface); + try { + entry.iface = iface; entry.uid = UID_TETHERING; entry.set = SET_DEFAULT; entry.tag = TAG_NONE; - entry.rxBytes = Long.parseLong(tok.nextToken()); - entry.rxPackets = Long.parseLong(tok.nextToken()); - entry.txBytes = Long.parseLong(tok.nextToken()); - entry.txPackets = Long.parseLong(tok.nextToken()); + entry.rxBytes = statsArray[INetd.TETHER_STATS_RX_BYTES]; + entry.rxPackets = statsArray[INetd.TETHER_STATS_RX_PACKETS]; + entry.txBytes = statsArray[INetd.TETHER_STATS_TX_BYTES]; + entry.txPackets = statsArray[INetd.TETHER_STATS_TX_PACKETS]; stats.combineValues(entry); - } catch (NoSuchElementException e) { - throw new IllegalStateException("problem parsing tethering stats: " + event); - } catch (NumberFormatException e) { - throw new IllegalStateException("problem parsing tethering stats: " + event); + } catch (ArrayIndexOutOfBoundsException e) { + throw new IllegalStateException("invalid tethering stats for " + iface, e); } } + return stats; } diff --git a/services/core/java/com/android/server/RecoverySystemService.java b/services/core/java/com/android/server/RecoverySystemService.java index 3c8c699a65bb..1517887efec2 100644 --- a/services/core/java/com/android/server/RecoverySystemService.java +++ b/services/core/java/com/android/server/RecoverySystemService.java @@ -285,8 +285,9 @@ public final class RecoverySystemService extends SystemService { // Send the BCB commands if it's to setup BCB. if (isSetup) { - dos.writeInt(command.length()); - dos.writeBytes(command); + byte[] cmdUtf8 = command.getBytes("UTF-8"); + dos.writeInt(cmdUtf8.length); + dos.write(cmdUtf8, 0, cmdUtf8.length); dos.flush(); } diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 1ca0112cb4f3..c7e22be1972d 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -56,10 +56,14 @@ import android.os.FileUtils; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; +import android.os.IVold; +import android.os.IVoldListener; +import android.os.IVoldTaskListener; import android.os.Looper; import android.os.Message; import android.os.ParcelFileDescriptor; import android.os.ParcelableException; +import android.os.PersistableBundle; import android.os.PowerManager; import android.os.Process; import android.os.RemoteCallbackList; @@ -96,6 +100,7 @@ import android.util.Xml; import com.android.internal.annotations.GuardedBy; import com.android.internal.app.IMediaContainerService; import com.android.internal.os.AppFuseMount; +import com.android.internal.os.BackgroundThread; import com.android.internal.os.FuseUnavailableMountException; import com.android.internal.os.SomeArgs; import com.android.internal.os.Zygote; @@ -106,9 +111,6 @@ import com.android.internal.util.HexDump; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; import com.android.internal.widget.LockPatternUtils; -import com.android.server.NativeDaemonConnector.Command; -import com.android.server.NativeDaemonConnector.SensitiveArg; -import com.android.server.pm.PackageManagerException; import com.android.server.pm.PackageManagerService; import com.android.server.storage.AppFuseBridge; @@ -134,7 +136,6 @@ import java.security.spec.KeySpec; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -142,6 +143,7 @@ import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -156,8 +158,7 @@ import javax.crypto.spec.PBEKeySpec; * watch for and manage dynamically added storage, such as SD cards and USB mass * storage. Also decides how storage should be presented to users on the device. */ -class StorageManagerService extends IStorageManager.Stub - implements INativeDaemonConnectorCallbacks, Watchdog.Monitor { +class StorageManagerService extends IStorageManager.Stub implements Watchdog.Monitor { // Static direct instance pointer for the tightly-coupled idle service to use static StorageManagerService sSelf = null; @@ -221,70 +222,9 @@ class StorageManagerService extends IStorageManager.Stub private static final String TAG_STORAGE_BENCHMARK = "storage_benchmark"; private static final String TAG_STORAGE_TRIM = "storage_trim"; - private static final String VOLD_TAG = "VoldConnector"; - private static final String CRYPTD_TAG = "CryptdConnector"; - - /** Maximum number of ASEC containers allowed to be mounted. */ - private static final int MAX_CONTAINERS = 250; - /** Magic value sent by MoveTask.cpp */ private static final int MOVE_STATUS_COPY_FINISHED = 82; - /* - * Internal vold response code constants - */ - class VoldResponseCode { - /* - * 100 series - Requestion action was initiated; expect another reply - * before proceeding with a new command. - */ - public static final int VolumeListResult = 110; - public static final int AsecListResult = 111; - public static final int StorageUsersListResult = 112; - public static final int CryptfsGetfieldResult = 113; - - /* - * 200 series - Requestion action has been successfully completed. - */ - public static final int ShareStatusResult = 210; - public static final int AsecPathResult = 211; - public static final int ShareEnabledResult = 212; - - /* - * 400 series - Command was accepted, but the requested action - * did not take place. - */ - public static final int OpFailedNoMedia = 401; - public static final int OpFailedMediaBlank = 402; - public static final int OpFailedMediaCorrupt = 403; - public static final int OpFailedVolNotMounted = 404; - public static final int OpFailedStorageBusy = 405; - public static final int OpFailedStorageNotFound = 406; - - /* - * 600 series - Unsolicited broadcasts. - */ - public static final int DISK_CREATED = 640; - public static final int DISK_SIZE_CHANGED = 641; - public static final int DISK_LABEL_CHANGED = 642; - public static final int DISK_SCANNED = 643; - public static final int DISK_SYS_PATH_CHANGED = 644; - public static final int DISK_DESTROYED = 649; - - public static final int VOLUME_CREATED = 650; - public static final int VOLUME_STATE_CHANGED = 651; - public static final int VOLUME_FS_TYPE_CHANGED = 652; - public static final int VOLUME_FS_UUID_CHANGED = 653; - public static final int VOLUME_FS_LABEL_CHANGED = 654; - public static final int VOLUME_PATH_CHANGED = 655; - public static final int VOLUME_INTERNAL_PATH_CHANGED = 656; - public static final int VOLUME_DESTROYED = 659; - - public static final int MOVE_STATUS = 660; - public static final int BENCHMARK_RESULT = 661; - public static final int TRIM_RESULT = 662; - } - private static final int VERSION_INIT = 1; private static final int VERSION_ADD_PRIMARY = 2; private static final int VERSION_FIX_PRIMARY = 3; @@ -465,11 +405,7 @@ class StorageManagerService extends IStorageManager.Stub private final Context mContext; - private final NativeDaemonConnector mConnector; - private final NativeDaemonConnector mCryptConnector; - - private final Thread mConnectorThread; - private final Thread mCryptConnectorThread; + private volatile IVold mVold; private volatile boolean mSystemReady = false; private volatile boolean mBootCompleted = false; @@ -480,21 +416,11 @@ class StorageManagerService extends IStorageManager.Stub private final Callbacks mCallbacks; private final LockPatternUtils mLockPatternUtils; - // Two connectors - mConnector & mCryptConnector - private final CountDownLatch mConnectedSignal = new CountDownLatch(2); - private final CountDownLatch mAsecsScanned = new CountDownLatch(1); - private final Object mUnmountLock = new Object(); @GuardedBy("mUnmountLock") private CountDownLatch mUnmountSignal; /** - * Private hash of currently mounted secure containers. - * Used as a lock in methods to manipulate secure containers. - */ - final private HashSet<String> mAsecMountSet = new HashSet<String>(); - - /** * The size of the crypto algorithm key in bits for OBB files. Currently * Twofish is used which takes 128-bit keys. */ @@ -521,13 +447,13 @@ class StorageManagerService extends IStorageManager.Stub class ObbState implements IBinder.DeathRecipient { public ObbState(String rawPath, String canonicalPath, int callingUid, - IObbActionListener token, int nonce) { + IObbActionListener token, int nonce, String volId) { this.rawPath = rawPath; this.canonicalPath = canonicalPath; - this.ownerGid = UserHandle.getSharedAppGid(callingUid); this.token = token; this.nonce = nonce; + this.volId = volId; } final String rawPath; @@ -541,6 +467,8 @@ class StorageManagerService extends IStorageManager.Stub // Identifier to pass back to the token final int nonce; + String volId; + public IBinder getBinder() { return token.asBinder(); } @@ -567,6 +495,7 @@ class StorageManagerService extends IStorageManager.Stub sb.append(",ownerGid=").append(ownerGid); sb.append(",token=").append(token); sb.append(",binder=").append(getBinder()); + sb.append(",volId=").append(volId); sb.append('}'); return sb.toString(); } @@ -604,7 +533,7 @@ class StorageManagerService extends IStorageManager.Stub if (DEBUG_OBB) Slog.i(TAG, "onServiceDisconnected"); } - }; + } // Used in the ObbActionHandler private IMediaContainerService mContainerService = null; @@ -643,13 +572,6 @@ class StorageManagerService extends IStorageManager.Stub break; } case H_FSTRIM: { - if (!isReady()) { - Slog.i(TAG, "fstrim requested, but no daemon connection yet; trying again"); - sendMessageDelayed(obtainMessage(H_FSTRIM, msg.obj), - DateUtils.SECOND_IN_MILLIS); - break; - } - Slog.i(TAG, "Running fstrim idle maintenance"); // Remember when we kicked it off @@ -660,8 +582,8 @@ class StorageManagerService extends IStorageManager.Stub Slog.e(TAG, "Unable to record last fstrim!"); } - final int flags = shouldBenchmark() ? StorageManager.FSTRIM_FLAG_BENCHMARK : 0; - fstrim(flags); + // TODO: Reintroduce shouldBenchmark() test + fstrim(0); // invoke the completion callback, if any // TODO: fstrim is non-blocking, so remove this useless callback @@ -675,13 +597,15 @@ class StorageManagerService extends IStorageManager.Stub final IStorageShutdownObserver obs = (IStorageShutdownObserver) msg.obj; boolean success = false; try { - success = mConnector.execute("volume", "shutdown").isClassOk(); - } catch (NativeDaemonConnectorException ignored) { + mVold.shutdown(); + success = true; + } catch (Exception e) { + Slog.wtf(TAG, e); } if (obs != null) { try { obs.onShutDownComplete(success ? 0 : -1); - } catch (RemoteException ignored) { + } catch (Exception ignored) { } } break; @@ -693,9 +617,9 @@ class StorageManagerService extends IStorageManager.Stub break; } try { - mConnector.execute("volume", "mount", vol.id, vol.mountFlags, - vol.mountUserId); - } catch (NativeDaemonConnectorException ignored) { + mVold.mount(vol.id, vol.mountFlags, vol.mountUserId); + } catch (Exception e) { + Slog.wtf(TAG, e); } break; } @@ -755,7 +679,7 @@ class StorageManagerService extends IStorageManager.Stub if (Intent.ACTION_USER_ADDED.equals(action)) { final UserManager um = mContext.getSystemService(UserManager.class); final int userSerialNumber = um.getUserSerialNumber(userId); - mConnector.execute("volume", "user_added", userId, userSerialNumber); + mVold.onUserAdded(userId, userSerialNumber); } else if (Intent.ACTION_USER_REMOVED.equals(action)) { synchronized (mVolumes) { final int size = mVolumes.size(); @@ -767,21 +691,17 @@ class StorageManagerService extends IStorageManager.Stub } } } - mConnector.execute("volume", "user_removed", userId); + mVold.onUserRemoved(userId); } - } catch (NativeDaemonConnectorException e) { - Slog.w(TAG, "Failed to send user details to vold", e); + } catch (Exception e) { + Slog.wtf(TAG, e); } } }; @Override public void waitForAsecScan() { - waitForLatch(mAsecsScanned, "mAsecsScanned"); - } - - private void waitForReady() { - waitForLatch(mConnectedSignal, "mConnectedSignal"); + throw new UnsupportedOperationException(); } private void waitForLatch(CountDownLatch latch, String condition) { @@ -812,14 +732,6 @@ class StorageManagerService extends IStorageManager.Stub } } - private boolean isReady() { - try { - return mConnectedSignal.await(0, TimeUnit.MILLISECONDS); - } catch (InterruptedException e) { - return false; - } - } - private void handleSystemReady() { initIfReadyAndConnected(); resetIfReadyAndConnected(); @@ -886,13 +798,13 @@ class StorageManagerService extends IStorageManager.Stub for (UserInfo user : users) { try { if (initLocked) { - mCryptConnector.execute("cryptfs", "lock_user_key", user.id); + mVold.lockUserKey(user.id); } else { - mCryptConnector.execute("cryptfs", "unlock_user_key", user.id, - user.serialNumber, "!", "!"); + mVold.unlockUserKey(user.id, user.serialNumber, encodeBytes(null), + encodeBytes(null)); } - } catch (NativeDaemonConnectorException e) { - Slog.w(TAG, "Failed to init vold", e); + } catch (Exception e) { + Slog.wtf(TAG, e); } } } @@ -916,17 +828,17 @@ class StorageManagerService extends IStorageManager.Stub } try { - mConnector.execute("volume", "reset"); + mVold.reset(); // Tell vold about all existing and started users for (UserInfo user : users) { - mConnector.execute("volume", "user_added", user.id, user.serialNumber); + mVold.onUserAdded(user.id, user.serialNumber); } for (int userId : systemUnlockedUsers) { - mConnector.execute("volume", "user_started", userId); + mVold.onUserStarted(userId); } - } catch (NativeDaemonConnectorException e) { - Slog.w(TAG, "Failed to reset vold", e); + } catch (Exception e) { + Slog.wtf(TAG, e); } } } @@ -938,8 +850,9 @@ class StorageManagerService extends IStorageManager.Stub // staging area is ready so it's ready for zygote-forked apps to // bind mount against. try { - mConnector.execute("volume", "user_started", userId); - } catch (NativeDaemonConnectorException ignored) { + mVold.onUserStarted(userId); + } catch (Exception e) { + Slog.wtf(TAG, e); } // Record user as started so newly mounted volumes kick off events @@ -963,8 +876,9 @@ class StorageManagerService extends IStorageManager.Stub Slog.d(TAG, "onCleanupUser " + userId); try { - mConnector.execute("volume", "user_stopped", userId); - } catch (NativeDaemonConnectorException ignored) { + mVold.onUserStopped(userId); + } catch (Exception e) { + Slog.wtf(TAG, e); } synchronized (mLock) { @@ -988,10 +902,6 @@ class StorageManagerService extends IStorageManager.Stub return mLastMaintenance; } - /** - * Callback from NativeDaemonConnector - */ - @Override public void onDaemonConnected() { mDaemonConnected = true; mHandler.obtainMessage(H_DAEMON_CONNECTED).sendToTarget(); @@ -1001,27 +911,11 @@ class StorageManagerService extends IStorageManager.Stub initIfReadyAndConnected(); resetIfReadyAndConnected(); - /* - * Now that we've done our initialization, release - * the hounds! - */ - mConnectedSignal.countDown(); - if (mConnectedSignal.getCount() != 0) { - // More daemons need to connect - return; - } - // On an encrypted device we can't see system properties yet, so pull // the system locale out of the mount service. if ("".equals(SystemProperties.get("vold.encrypt_progress"))) { copyLocaleFromMountService(); } - - // Let package manager load internal ASECs. - mPms.scanAvailableAsecs(); - - // Notify people waiting for ASECs to be scanned that it's done. - mAsecsScanned.countDown(); } private void copyLocaleFromMountService() { @@ -1050,30 +944,10 @@ class StorageManagerService extends IStorageManager.Stub SystemProperties.set("persist.sys.locale", locale.toLanguageTag()); } - /** - * Callback from NativeDaemonConnector - */ - @Override - public boolean onCheckHoldWakeLock(int code) { - return false; - } - - /** - * Callback from NativeDaemonConnector - */ - @Override - public boolean onEvent(int code, String raw, String[] cooked) { - synchronized (mLock) { - return onEventLocked(code, raw, cooked); - } - } - - private boolean onEventLocked(int code, String raw, String[] cooked) { - switch (code) { - case VoldResponseCode.DISK_CREATED: { - if (cooked.length != 3) break; - final String id = cooked[1]; - int flags = Integer.parseInt(cooked[2]); + private final IVoldListener mListener = new IVoldListener.Stub() { + @Override + public void onDiskCreated(String diskId, int flags) { + synchronized (mLock) { if (SystemProperties.getBoolean(StorageManager.PROP_FORCE_ADOPTABLE, false) || mForceAdoptable) { flags |= DiskInfo.FLAG_ADOPTABLE; @@ -1083,178 +957,106 @@ class StorageManagerService extends IStorageManager.Stub && !SystemProperties.getBoolean(StorageManager.PROP_ADOPTABLE_FBE, false)) { flags &= ~DiskInfo.FLAG_ADOPTABLE; } - mDisks.put(id, new DiskInfo(id, flags)); - break; - } - case VoldResponseCode.DISK_SIZE_CHANGED: { - if (cooked.length != 3) break; - final DiskInfo disk = mDisks.get(cooked[1]); - if (disk != null) { - disk.size = Long.parseLong(cooked[2]); - } - break; - } - case VoldResponseCode.DISK_LABEL_CHANGED: { - final DiskInfo disk = mDisks.get(cooked[1]); - if (disk != null) { - final StringBuilder builder = new StringBuilder(); - for (int i = 2; i < cooked.length; i++) { - builder.append(cooked[i]).append(' '); - } - disk.label = builder.toString().trim(); - } - break; + mDisks.put(diskId, new DiskInfo(diskId, flags)); } - case VoldResponseCode.DISK_SCANNED: { - if (cooked.length != 2) break; - final DiskInfo disk = mDisks.get(cooked[1]); + } + + @Override + public void onDiskScanned(String diskId) { + synchronized (mLock) { + final DiskInfo disk = mDisks.get(diskId); if (disk != null) { onDiskScannedLocked(disk); } - break; } - case VoldResponseCode.DISK_SYS_PATH_CHANGED: { - if (cooked.length != 3) break; - final DiskInfo disk = mDisks.get(cooked[1]); + } + + @Override + public void onDiskMetadataChanged(String diskId, long sizeBytes, String label, + String sysPath) { + synchronized (mLock) { + final DiskInfo disk = mDisks.get(diskId); if (disk != null) { - disk.sysPath = cooked[2]; + disk.size = sizeBytes; + disk.label = label; + disk.sysPath = sysPath; } - break; } - case VoldResponseCode.DISK_DESTROYED: { - if (cooked.length != 2) break; - final DiskInfo disk = mDisks.remove(cooked[1]); + } + + @Override + public void onDiskDestroyed(String diskId) { + synchronized (mLock) { + final DiskInfo disk = mDisks.remove(diskId); if (disk != null) { mCallbacks.notifyDiskDestroyed(disk); } - break; } + } - case VoldResponseCode.VOLUME_CREATED: { - final String id = cooked[1]; - final int type = Integer.parseInt(cooked[2]); - final String diskId = TextUtils.nullIfEmpty(cooked[3]); - final String partGuid = TextUtils.nullIfEmpty(cooked[4]); - + @Override + public void onVolumeCreated(String volId, int type, String diskId, String partGuid) { + synchronized (mLock) { final DiskInfo disk = mDisks.get(diskId); - final VolumeInfo vol = new VolumeInfo(id, type, disk, partGuid); - mVolumes.put(id, vol); + final VolumeInfo vol = new VolumeInfo(volId, type, disk, partGuid); + mVolumes.put(volId, vol); onVolumeCreatedLocked(vol); - break; } - case VoldResponseCode.VOLUME_STATE_CHANGED: { - if (cooked.length != 3) break; - final VolumeInfo vol = mVolumes.get(cooked[1]); + } + + @Override + public void onVolumeStateChanged(String volId, int state) { + synchronized (mLock) { + final VolumeInfo vol = mVolumes.get(volId); if (vol != null) { final int oldState = vol.state; - final int newState = Integer.parseInt(cooked[2]); + final int newState = state; vol.state = newState; onVolumeStateChangedLocked(vol, oldState, newState); } - break; - } - case VoldResponseCode.VOLUME_FS_TYPE_CHANGED: { - if (cooked.length != 3) break; - final VolumeInfo vol = mVolumes.get(cooked[1]); - if (vol != null) { - vol.fsType = cooked[2]; - } - break; } - case VoldResponseCode.VOLUME_FS_UUID_CHANGED: { - if (cooked.length != 3) break; - final VolumeInfo vol = mVolumes.get(cooked[1]); - if (vol != null) { - vol.fsUuid = cooked[2]; - } - break; - } - case VoldResponseCode.VOLUME_FS_LABEL_CHANGED: { - final VolumeInfo vol = mVolumes.get(cooked[1]); - if (vol != null) { - final StringBuilder builder = new StringBuilder(); - for (int i = 2; i < cooked.length; i++) { - builder.append(cooked[i]).append(' '); - } - vol.fsLabel = builder.toString().trim(); - } - // TODO: notify listeners that label changed - break; - } - case VoldResponseCode.VOLUME_PATH_CHANGED: { - if (cooked.length != 3) break; - final VolumeInfo vol = mVolumes.get(cooked[1]); + } + + @Override + public void onVolumeMetadataChanged(String volId, String fsType, String fsUuid, + String fsLabel) { + synchronized (mLock) { + final VolumeInfo vol = mVolumes.get(volId); if (vol != null) { - vol.path = cooked[2]; + vol.fsType = fsType; + vol.fsUuid = fsUuid; + vol.fsLabel = fsLabel; } - break; } - case VoldResponseCode.VOLUME_INTERNAL_PATH_CHANGED: { - if (cooked.length != 3) break; - final VolumeInfo vol = mVolumes.get(cooked[1]); + } + + @Override + public void onVolumePathChanged(String volId, String path) { + synchronized (mLock) { + final VolumeInfo vol = mVolumes.get(volId); if (vol != null) { - vol.internalPath = cooked[2]; + vol.path = path; } - break; - } - case VoldResponseCode.VOLUME_DESTROYED: { - if (cooked.length != 2) break; - mVolumes.remove(cooked[1]); - break; - } - - case VoldResponseCode.MOVE_STATUS: { - final int status = Integer.parseInt(cooked[1]); - onMoveStatusLocked(status); - break; } - case VoldResponseCode.BENCHMARK_RESULT: { - if (cooked.length != 7) break; - final String path = cooked[1]; - final String ident = cooked[2]; - final long create = Long.parseLong(cooked[3]); - final long drop = Long.parseLong(cooked[4]); - final long run = Long.parseLong(cooked[5]); - final long destroy = Long.parseLong(cooked[6]); - - final DropBoxManager dropBox = mContext.getSystemService(DropBoxManager.class); - dropBox.addText(TAG_STORAGE_BENCHMARK, scrubPath(path) - + " " + ident + " " + create + " " + run + " " + destroy); - - final VolumeRecord rec = findRecordForPath(path); - if (rec != null) { - rec.lastBenchMillis = System.currentTimeMillis(); - writeSettingsLocked(); - } + } - break; - } - case VoldResponseCode.TRIM_RESULT: { - if (cooked.length != 4) break; - final String path = cooked[1]; - final long bytes = Long.parseLong(cooked[2]); - final long time = Long.parseLong(cooked[3]); - - final DropBoxManager dropBox = mContext.getSystemService(DropBoxManager.class); - dropBox.addText(TAG_STORAGE_TRIM, scrubPath(path) - + " " + bytes + " " + time); - - final VolumeRecord rec = findRecordForPath(path); - if (rec != null) { - rec.lastTrimMillis = System.currentTimeMillis(); - writeSettingsLocked(); + @Override + public void onVolumeInternalPathChanged(String volId, String internalPath) { + synchronized (mLock) { + final VolumeInfo vol = mVolumes.get(volId); + if (vol != null) { + vol.internalPath = internalPath; } - - break; } + } - default: { - Slog.d(TAG, "Unhandled vold event " + code); + @Override + public void onVolumeDestroyed(String volId) { + synchronized (mLock) { + mVolumes.remove(volId); } } - - return true; - } + }; private void onDiskScannedLocked(DiskInfo disk) { int volumeCount = 0; @@ -1540,24 +1342,6 @@ class StorageManagerService extends IStorageManager.Stub LocalServices.addService(StorageManagerInternal.class, mStorageManagerInternal); - /* - * Create the connection to vold with a maximum queue of twice the - * amount of containers we'd ever expect to have. This keeps an - * "asec list" from blocking a thread repeatedly. - */ - - mConnector = new NativeDaemonConnector(this, "vold", MAX_CONTAINERS * 2, VOLD_TAG, 25, - null); - mConnector.setDebug(true); - mConnector.setWarnIfHeld(mLock); - mConnectorThread = new Thread(mConnector, VOLD_TAG); - - // Reuse parameters from first connector since they are tested and safe - mCryptConnector = new NativeDaemonConnector(this, "cryptd", - MAX_CONTAINERS * 2, CRYPTD_TAG, 25, null); - mCryptConnector.setDebug(true); - mCryptConnectorThread = new Thread(mCryptConnector, CRYPTD_TAG); - final IntentFilter userFilter = new IntentFilter(); userFilter.addAction(Intent.ACTION_USER_ADDED); userFilter.addAction(Intent.ACTION_USER_REMOVED); @@ -1574,8 +1358,41 @@ class StorageManagerService extends IStorageManager.Stub } private void start() { - mConnectorThread.start(); - mCryptConnectorThread.start(); + connect(); + } + + private void connect() { + IBinder binder = ServiceManager.getService("vold"); + if (binder != null) { + try { + binder.linkToDeath(new DeathRecipient() { + @Override + public void binderDied() { + Slog.w(TAG, "vold died; reconnecting"); + connect(); + } + }, 0); + } catch (RemoteException e) { + binder = null; + } + } + + if (binder != null) { + mVold = IVold.Stub.asInterface(binder); + try { + mVold.setListener(mListener); + onDaemonConnected(); + return; + } catch (RemoteException e) { + Slog.w(TAG, "vold listener rejected; trying again", e); + } + } else { + Slog.w(TAG, "vold not found; trying again"); + } + + BackgroundThread.getHandler().postDelayed(() -> { + connect(); + }, DateUtils.SECOND_IN_MILLIS); } private void systemReady() { @@ -1760,23 +1577,21 @@ class StorageManagerService extends IStorageManager.Stub @Override public void mount(String volId) { enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); final VolumeInfo vol = findVolumeByIdOrThrow(volId); if (isMountDisallowed(vol)) { throw new SecurityException("Mounting " + volId + " restricted by policy"); } try { - mConnector.execute("volume", "mount", vol.id, vol.mountFlags, vol.mountUserId); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.mount(vol.id, vol.mountFlags, vol.mountUserId); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void unmount(String volId) { enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); final VolumeInfo vol = findVolumeByIdOrThrow(volId); @@ -1796,55 +1611,77 @@ class StorageManagerService extends IStorageManager.Stub } try { - mConnector.execute("volume", "unmount", vol.id); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.unmount(vol.id); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void format(String volId) { enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS); - waitForReady(); final VolumeInfo vol = findVolumeByIdOrThrow(volId); try { - mConnector.execute("volume", "format", vol.id, "auto"); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.format(vol.id, "auto"); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public long benchmark(String volId) { enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS); - waitForReady(); + // TODO: refactor for callers to provide a listener try { - // TODO: make benchmark async so we don't block other commands - final NativeDaemonEvent res = mConnector.execute(3 * DateUtils.MINUTE_IN_MILLIS, - "volume", "benchmark", volId); - return Long.parseLong(res.getMessage()); - } catch (NativeDaemonTimeoutException e) { + final CompletableFuture<PersistableBundle> result = new CompletableFuture<>(); + mVold.benchmark(volId, new IVoldTaskListener.Stub() { + @Override + public void onStatus(int status, PersistableBundle extras) { + // Not currently used + } + + @Override + public void onFinished(int status, PersistableBundle extras) { + result.complete(extras); + + final String path = extras.getString("path"); + final String ident = extras.getString("ident"); + final long create = extras.getLong("create"); + final long run = extras.getLong("run"); + final long destroy = extras.getLong("destroy"); + + final DropBoxManager dropBox = mContext.getSystemService(DropBoxManager.class); + dropBox.addText(TAG_STORAGE_BENCHMARK, scrubPath(path) + + " " + ident + " " + create + " " + run + " " + destroy); + + synchronized (mLock) { + final VolumeRecord rec = findRecordForPath(path); + if (rec != null) { + rec.lastBenchMillis = System.currentTimeMillis(); + writeSettingsLocked(); + } + } + } + }); + return result.get(3, TimeUnit.MINUTES).getLong("run", Long.MAX_VALUE); + } catch (Exception e) { + Slog.wtf(TAG, e); return Long.MAX_VALUE; - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); } } @Override public void partitionPublic(String diskId) { enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS); - waitForReady(); final CountDownLatch latch = findOrCreateDiskScanLatch(diskId); try { - mConnector.execute("volume", "partition", diskId, "public"); + mVold.partition(diskId, IVold.PARTITION_TYPE_PUBLIC, -1); waitForLatch(latch, "partitionPublic", 3 * DateUtils.MINUTE_IN_MILLIS); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); - } catch (TimeoutException e) { - throw new IllegalStateException(e); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @@ -1852,16 +1689,13 @@ class StorageManagerService extends IStorageManager.Stub public void partitionPrivate(String diskId) { enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS); enforceAdminUser(); - waitForReady(); final CountDownLatch latch = findOrCreateDiskScanLatch(diskId); try { - mConnector.execute("volume", "partition", diskId, "private"); + mVold.partition(diskId, IVold.PARTITION_TYPE_PRIVATE, -1); waitForLatch(latch, "partitionPrivate", 3 * DateUtils.MINUTE_IN_MILLIS); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); - } catch (TimeoutException e) { - throw new IllegalStateException(e); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @@ -1869,23 +1703,19 @@ class StorageManagerService extends IStorageManager.Stub public void partitionMixed(String diskId, int ratio) { enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS); enforceAdminUser(); - waitForReady(); final CountDownLatch latch = findOrCreateDiskScanLatch(diskId); try { - mConnector.execute("volume", "partition", diskId, "mixed", ratio); + mVold.partition(diskId, IVold.PARTITION_TYPE_MIXED, ratio); waitForLatch(latch, "partitionMixed", 3 * DateUtils.MINUTE_IN_MILLIS); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); - } catch (TimeoutException e) { - throw new IllegalStateException(e); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void setVolumeNickname(String fsUuid, String nickname) { enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); Preconditions.checkNotNull(fsUuid); synchronized (mLock) { @@ -1899,7 +1729,6 @@ class StorageManagerService extends IStorageManager.Stub @Override public void setVolumeUserFlags(String fsUuid, int flags, int mask) { enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); Preconditions.checkNotNull(fsUuid); synchronized (mLock) { @@ -1913,7 +1742,6 @@ class StorageManagerService extends IStorageManager.Stub @Override public void forgetVolume(String fsUuid) { enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); Preconditions.checkNotNull(fsUuid); @@ -1938,7 +1766,6 @@ class StorageManagerService extends IStorageManager.Stub @Override public void forgetAllVolumes() { enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); synchronized (mLock) { for (int i = 0; i < mRecords.size(); i++) { @@ -1962,63 +1789,61 @@ class StorageManagerService extends IStorageManager.Stub private void forgetPartition(String partGuid) { try { - mConnector.execute("volume", "forget_partition", partGuid); - } catch (NativeDaemonConnectorException e) { - Slog.w(TAG, "Failed to forget key for " + partGuid + ": " + e); + mVold.forgetPartition(partGuid); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void fstrim(int flags) { enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS); - waitForReady(); - - String cmd; - if ((flags & StorageManager.FSTRIM_FLAG_DEEP) != 0) { - cmd = "dodtrim"; - } else { - cmd = "dotrim"; - } - if ((flags & StorageManager.FSTRIM_FLAG_BENCHMARK) != 0) { - cmd += "bench"; - } try { - mConnector.execute("fstrim", cmd); - } catch (NativeDaemonConnectorException e) { - Slog.e(TAG, "Failed to run fstrim: " + e); + mVold.fstrim(flags, new IVoldTaskListener.Stub() { + @Override + public void onStatus(int status, PersistableBundle extras) { + // Ignore trim failures + if (status != 0) return; + + final String path = extras.getString("path"); + final long bytes = extras.getLong("bytes"); + final long time = extras.getLong("time"); + + final DropBoxManager dropBox = mContext.getSystemService(DropBoxManager.class); + dropBox.addText(TAG_STORAGE_TRIM, scrubPath(path) + " " + bytes + " " + time); + + synchronized (mLock) { + final VolumeRecord rec = findRecordForPath(path); + if (rec != null) { + rec.lastTrimMillis = System.currentTimeMillis(); + writeSettingsLocked(); + } + } + } + + @Override + public void onFinished(int status, PersistableBundle extras) { + // Not currently used + // TODO: benchmark when desired + } + }); + } catch (Exception e) { + Slog.wtf(TAG, e); } } private void remountUidExternalStorage(int uid, int mode) { - waitForReady(); - - String modeName = "none"; - switch (mode) { - case Zygote.MOUNT_EXTERNAL_DEFAULT: { - modeName = "default"; - } break; - - case Zygote.MOUNT_EXTERNAL_READ: { - modeName = "read"; - } break; - - case Zygote.MOUNT_EXTERNAL_WRITE: { - modeName = "write"; - } break; - } - try { - mConnector.execute("volume", "remount_uid", uid, modeName); - } catch (NativeDaemonConnectorException e) { - Slog.w(TAG, "Failed to remount UID " + uid + " as " + modeName + ": " + e); + mVold.remountUid(uid, mode); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void setDebugFlags(int flags, int mask) { enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); if ((mask & StorageManager.DEBUG_EMULATE_FBE) != 0) { if (!EMULATE_FBE_SUPPORTED) { @@ -2108,7 +1933,6 @@ class StorageManagerService extends IStorageManager.Stub @Override public void setPrimaryStorageUuid(String volumeUuid, IPackageMoveObserver callback) { enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); final VolumeInfo from; final VolumeInfo to; @@ -2162,37 +1986,27 @@ class StorageManagerService extends IStorageManager.Stub } try { - mConnector.execute("volume", "move_storage", from.id, to.id); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.moveStorage(from.id, to.id, new IVoldTaskListener.Stub() { + @Override + public void onStatus(int status, PersistableBundle extras) { + synchronized (mLock) { + onMoveStatusLocked(status); + } + } + + @Override + public void onFinished(int status, PersistableBundle extras) { + // Not currently used + } + }); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public int[] getStorageUsers(String path) { - enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); - waitForReady(); - try { - final String[] r = NativeDaemonEvent.filterMessageList( - mConnector.executeForList("storage", "users", path), - VoldResponseCode.StorageUsersListResult); - - // FMT: <pid> <process name> - int[] data = new int[r.length]; - for (int i = 0; i < r.length; i++) { - String[] tok = r[i].split(" "); - try { - data[i] = Integer.parseInt(tok[0]); - } catch (NumberFormatException nfe) { - Slog.e(TAG, String.format("Error parsing pid %s", tok[0])); - return new int[0]; - } - } - return data; - } catch (NativeDaemonConnectorException e) { - Slog.e(TAG, "Failed to retrieve storage users list", e); - return new int[0]; - } + throw new UnsupportedOperationException(); } private void warnOnNotMounted() { @@ -2209,278 +2023,65 @@ class StorageManagerService extends IStorageManager.Stub Slog.w(TAG, "No primary storage mounted!"); } + @Override public String[] getSecureContainerList() { - enforcePermission(android.Manifest.permission.ASEC_ACCESS); - waitForReady(); - warnOnNotMounted(); - - try { - return NativeDaemonEvent.filterMessageList( - mConnector.executeForList("asec", "list"), VoldResponseCode.AsecListResult); - } catch (NativeDaemonConnectorException e) { - return new String[0]; - } + throw new UnsupportedOperationException(); } + @Override public int createSecureContainer(String id, int sizeMb, String fstype, String key, int ownerUid, boolean external) { - enforcePermission(android.Manifest.permission.ASEC_CREATE); - waitForReady(); - warnOnNotMounted(); - - int rc = StorageResultCode.OperationSucceeded; - try { - mConnector.execute("asec", "create", id, sizeMb, fstype, new SensitiveArg(key), - ownerUid, external ? "1" : "0"); - } catch (NativeDaemonConnectorException e) { - rc = StorageResultCode.OperationFailedInternalError; - } - - if (rc == StorageResultCode.OperationSucceeded) { - synchronized (mAsecMountSet) { - mAsecMountSet.add(id); - } - } - return rc; + throw new UnsupportedOperationException(); } @Override public int resizeSecureContainer(String id, int sizeMb, String key) { - enforcePermission(android.Manifest.permission.ASEC_CREATE); - waitForReady(); - warnOnNotMounted(); - - int rc = StorageResultCode.OperationSucceeded; - try { - mConnector.execute("asec", "resize", id, sizeMb, new SensitiveArg(key)); - } catch (NativeDaemonConnectorException e) { - rc = StorageResultCode.OperationFailedInternalError; - } - return rc; + throw new UnsupportedOperationException(); } + @Override public int finalizeSecureContainer(String id) { - enforcePermission(android.Manifest.permission.ASEC_CREATE); - warnOnNotMounted(); - - int rc = StorageResultCode.OperationSucceeded; - try { - mConnector.execute("asec", "finalize", id); - /* - * Finalization does a remount, so no need - * to update mAsecMountSet - */ - } catch (NativeDaemonConnectorException e) { - rc = StorageResultCode.OperationFailedInternalError; - } - return rc; + throw new UnsupportedOperationException(); } + @Override public int fixPermissionsSecureContainer(String id, int gid, String filename) { - enforcePermission(android.Manifest.permission.ASEC_CREATE); - warnOnNotMounted(); - - int rc = StorageResultCode.OperationSucceeded; - try { - mConnector.execute("asec", "fixperms", id, gid, filename); - /* - * Fix permissions does a remount, so no need to update - * mAsecMountSet - */ - } catch (NativeDaemonConnectorException e) { - rc = StorageResultCode.OperationFailedInternalError; - } - return rc; + throw new UnsupportedOperationException(); } + @Override public int destroySecureContainer(String id, boolean force) { - enforcePermission(android.Manifest.permission.ASEC_DESTROY); - waitForReady(); - warnOnNotMounted(); - - /* - * Force a GC to make sure AssetManagers in other threads of the - * system_server are cleaned up. We have to do this since AssetManager - * instances are kept as a WeakReference and it's possible we have files - * open on the external storage. - */ - Runtime.getRuntime().gc(); - - int rc = StorageResultCode.OperationSucceeded; - try { - final Command cmd = new Command("asec", "destroy", id); - if (force) { - cmd.appendArg("force"); - } - mConnector.execute(cmd); - } catch (NativeDaemonConnectorException e) { - int code = e.getCode(); - if (code == VoldResponseCode.OpFailedStorageBusy) { - rc = StorageResultCode.OperationFailedStorageBusy; - } else { - rc = StorageResultCode.OperationFailedInternalError; - } - } - - if (rc == StorageResultCode.OperationSucceeded) { - synchronized (mAsecMountSet) { - if (mAsecMountSet.contains(id)) { - mAsecMountSet.remove(id); - } - } - } - - return rc; + throw new UnsupportedOperationException(); } + @Override public int mountSecureContainer(String id, String key, int ownerUid, boolean readOnly) { - enforcePermission(android.Manifest.permission.ASEC_MOUNT_UNMOUNT); - waitForReady(); - warnOnNotMounted(); - - synchronized (mAsecMountSet) { - if (mAsecMountSet.contains(id)) { - return StorageResultCode.OperationFailedStorageMounted; - } - } - - int rc = StorageResultCode.OperationSucceeded; - try { - mConnector.execute("asec", "mount", id, new SensitiveArg(key), ownerUid, - readOnly ? "ro" : "rw"); - } catch (NativeDaemonConnectorException e) { - int code = e.getCode(); - if (code != VoldResponseCode.OpFailedStorageBusy) { - rc = StorageResultCode.OperationFailedInternalError; - } - } - - if (rc == StorageResultCode.OperationSucceeded) { - synchronized (mAsecMountSet) { - mAsecMountSet.add(id); - } - } - return rc; + throw new UnsupportedOperationException(); } + @Override public int unmountSecureContainer(String id, boolean force) { - enforcePermission(android.Manifest.permission.ASEC_MOUNT_UNMOUNT); - waitForReady(); - warnOnNotMounted(); - - synchronized (mAsecMountSet) { - if (!mAsecMountSet.contains(id)) { - return StorageResultCode.OperationFailedStorageNotMounted; - } - } - - /* - * Force a GC to make sure AssetManagers in other threads of the - * system_server are cleaned up. We have to do this since AssetManager - * instances are kept as a WeakReference and it's possible we have files - * open on the external storage. - */ - Runtime.getRuntime().gc(); - - int rc = StorageResultCode.OperationSucceeded; - try { - final Command cmd = new Command("asec", "unmount", id); - if (force) { - cmd.appendArg("force"); - } - mConnector.execute(cmd); - } catch (NativeDaemonConnectorException e) { - int code = e.getCode(); - if (code == VoldResponseCode.OpFailedStorageBusy) { - rc = StorageResultCode.OperationFailedStorageBusy; - } else { - rc = StorageResultCode.OperationFailedInternalError; - } - } - - if (rc == StorageResultCode.OperationSucceeded) { - synchronized (mAsecMountSet) { - mAsecMountSet.remove(id); - } - } - return rc; + throw new UnsupportedOperationException(); } + @Override public boolean isSecureContainerMounted(String id) { - enforcePermission(android.Manifest.permission.ASEC_ACCESS); - waitForReady(); - warnOnNotMounted(); - - synchronized (mAsecMountSet) { - return mAsecMountSet.contains(id); - } + throw new UnsupportedOperationException(); } + @Override public int renameSecureContainer(String oldId, String newId) { - enforcePermission(android.Manifest.permission.ASEC_RENAME); - waitForReady(); - warnOnNotMounted(); - - synchronized (mAsecMountSet) { - /* - * Because a mounted container has active internal state which cannot be - * changed while active, we must ensure both ids are not currently mounted. - */ - if (mAsecMountSet.contains(oldId) || mAsecMountSet.contains(newId)) { - return StorageResultCode.OperationFailedStorageMounted; - } - } - - int rc = StorageResultCode.OperationSucceeded; - try { - mConnector.execute("asec", "rename", oldId, newId); - } catch (NativeDaemonConnectorException e) { - rc = StorageResultCode.OperationFailedInternalError; - } - - return rc; + throw new UnsupportedOperationException(); } + @Override public String getSecureContainerPath(String id) { - enforcePermission(android.Manifest.permission.ASEC_ACCESS); - waitForReady(); - warnOnNotMounted(); - - final NativeDaemonEvent event; - try { - event = mConnector.execute("asec", "path", id); - event.checkCode(VoldResponseCode.AsecPathResult); - return event.getMessage(); - } catch (NativeDaemonConnectorException e) { - int code = e.getCode(); - if (code == VoldResponseCode.OpFailedStorageNotFound) { - Slog.i(TAG, String.format("Container '%s' not found", id)); - return null; - } else { - throw new IllegalStateException(String.format("Unexpected response code %d", code)); - } - } + throw new UnsupportedOperationException(); } + @Override public String getSecureContainerFilesystemPath(String id) { - enforcePermission(android.Manifest.permission.ASEC_ACCESS); - waitForReady(); - warnOnNotMounted(); - - final NativeDaemonEvent event; - try { - event = mConnector.execute("asec", "fspath", id); - event.checkCode(VoldResponseCode.AsecPathResult); - return event.getMessage(); - } catch (NativeDaemonConnectorException e) { - int code = e.getCode(); - if (code == VoldResponseCode.OpFailedStorageNotFound) { - Slog.i(TAG, String.format("Container '%s' not found", id)); - return null; - } else { - throw new IllegalStateException(String.format("Unexpected response code %d", code)); - } - } + throw new UnsupportedOperationException(); } @Override @@ -2515,10 +2116,10 @@ class StorageManagerService extends IStorageManager.Stub return callerUid == packageUid; } + @Override public String getMountedObbPath(String rawPath) { Preconditions.checkNotNull(rawPath, "rawPath cannot be null"); - waitForReady(); warnOnNotMounted(); final ObbState state; @@ -2530,19 +2131,7 @@ class StorageManagerService extends IStorageManager.Stub return null; } - final NativeDaemonEvent event; - try { - event = mConnector.execute("obb", "path", state.canonicalPath); - event.checkCode(VoldResponseCode.AsecPathResult); - return event.getMessage(); - } catch (NativeDaemonConnectorException e) { - int code = e.getCode(); - if (code == VoldResponseCode.OpFailedStorageNotFound) { - return null; - } else { - throw new IllegalStateException(String.format("Unexpected response code %d", code)); - } - } + return findVolumeByIdOrThrow(state.volId).getPath().getAbsolutePath(); } @Override @@ -2561,7 +2150,8 @@ class StorageManagerService extends IStorageManager.Stub Preconditions.checkNotNull(token, "token cannot be null"); final int callingUid = Binder.getCallingUid(); - final ObbState obbState = new ObbState(rawPath, canonicalPath, callingUid, token, nonce); + final ObbState obbState = new ObbState(rawPath, canonicalPath, + callingUid, token, nonce, null); final ObbAction action = new MountObbAction(obbState, key, callingUid); mObbActionHandler.sendMessage(mObbActionHandler.obtainMessage(OBB_RUN_ACTION, action)); @@ -2581,8 +2171,8 @@ class StorageManagerService extends IStorageManager.Stub if (existingState != null) { // TODO: separate state object from request data final int callingUid = Binder.getCallingUid(); - final ObbState newState = new ObbState( - rawPath, existingState.canonicalPath, callingUid, token, nonce); + final ObbState newState = new ObbState(rawPath, existingState.canonicalPath, + callingUid, token, nonce, existingState.volId); final ObbAction action = new UnmountObbAction(newState, force); mObbActionHandler.sendMessage(mObbActionHandler.obtainMessage(OBB_RUN_ACTION, action)); @@ -2598,89 +2188,63 @@ class StorageManagerService extends IStorageManager.Stub mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "no permission to access the crypt keeper"); - waitForReady(); - - final NativeDaemonEvent event; try { - event = mCryptConnector.execute("cryptfs", "cryptocomplete"); - return Integer.parseInt(event.getMessage()); - } catch (NumberFormatException e) { - // Bad result - unexpected. - Slog.w(TAG, "Unable to parse result from cryptfs cryptocomplete"); - return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN; - } catch (NativeDaemonConnectorException e) { - // Something bad happened. - Slog.w(TAG, "Error in communicating with cryptfs in validating"); + return mVold.fdeComplete(); + } catch (Exception e) { + Slog.wtf(TAG, e); return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN; } } @Override public int decryptStorage(String password) { - if (TextUtils.isEmpty(password)) { - throw new IllegalArgumentException("password cannot be empty"); - } - mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "no permission to access the crypt keeper"); - waitForReady(); + if (TextUtils.isEmpty(password)) { + throw new IllegalArgumentException("password cannot be empty"); + } if (DEBUG_EVENTS) { Slog.i(TAG, "decrypting storage..."); } - final NativeDaemonEvent event; try { - event = mCryptConnector.execute("cryptfs", "checkpw", new SensitiveArg(password)); - - final int code = Integer.parseInt(event.getMessage()); - if (code == 0) { - // Decrypt was successful. Post a delayed message before restarting in order - // to let the UI to clear itself - mHandler.postDelayed(new Runnable() { - public void run() { - try { - mCryptConnector.execute("cryptfs", "restart"); - } catch (NativeDaemonConnectorException e) { - Slog.e(TAG, "problem executing in background", e); - } - } - }, 1000); // 1 second - } - - return code; - } catch (NativeDaemonConnectorException e) { - // Decryption failed - return e.getCode(); + mVold.fdeCheckPassword(password); + mHandler.postDelayed(() -> { + try { + mVold.fdeRestart(); + } catch (Exception e) { + Slog.wtf(TAG, e); + } + }, DateUtils.SECOND_IN_MILLIS); + return 0; + } catch (Exception e) { + Slog.wtf(TAG, e); + return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN; } } + @Override public int encryptStorage(int type, String password) { - if (TextUtils.isEmpty(password) && type != StorageManager.CRYPT_TYPE_DEFAULT) { - throw new IllegalArgumentException("password cannot be empty"); - } - mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "no permission to access the crypt keeper"); - waitForReady(); + if (type == StorageManager.CRYPT_TYPE_DEFAULT) { + password = ""; + } else if (TextUtils.isEmpty(password)) { + throw new IllegalArgumentException("password cannot be empty"); + } if (DEBUG_EVENTS) { Slog.i(TAG, "encrypting storage..."); } try { - if (type == StorageManager.CRYPT_TYPE_DEFAULT) { - mCryptConnector.execute("cryptfs", "enablecrypto", "inplace", - CRYPTO_TYPES[type]); - } else { - mCryptConnector.execute("cryptfs", "enablecrypto", "inplace", - CRYPTO_TYPES[type], new SensitiveArg(password)); - } - } catch (NativeDaemonConnectorException e) { - // Encryption failed - return e.getCode(); + mVold.fdeEnable(type, password, IVold.ENCRYPTION_FLAG_IN_PLACE); + } catch (Exception e) { + Slog.wtf(TAG, e); + return -1; } return 0; @@ -2690,23 +2254,27 @@ class StorageManagerService extends IStorageManager.Stub * @param type One of the CRYPTO_TYPE_XXX consts defined in StorageManager. * @param password The password to set. */ + @Override public int changeEncryptionPassword(int type, String password) { mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "no permission to access the crypt keeper"); - waitForReady(); + if (type == StorageManager.CRYPT_TYPE_DEFAULT) { + password = ""; + } else if (TextUtils.isEmpty(password)) { + throw new IllegalArgumentException("password cannot be empty"); + } if (DEBUG_EVENTS) { Slog.i(TAG, "changing encryption password..."); } try { - NativeDaemonEvent event = mCryptConnector.execute("cryptfs", "changepw", CRYPTO_TYPES[type], - new SensitiveArg(password)); - return Integer.parseInt(event.getMessage()); - } catch (NativeDaemonConnectorException e) { - // Encryption failed - return e.getCode(); + mVold.fdeChangePassword(type, password); + return 0; + } catch (Exception e) { + Slog.wtf(TAG, e); + return -1; } } @@ -2727,20 +2295,16 @@ class StorageManagerService extends IStorageManager.Stub throw new IllegalArgumentException("password cannot be empty"); } - waitForReady(); - if (DEBUG_EVENTS) { Slog.i(TAG, "validating encryption password..."); } - final NativeDaemonEvent event; try { - event = mCryptConnector.execute("cryptfs", "verifypw", new SensitiveArg(password)); - Slog.i(TAG, "cryptfs verifypw => " + event.getMessage()); - return Integer.parseInt(event.getMessage()); - } catch (NativeDaemonConnectorException e) { - // Encryption failed - return e.getCode(); + mVold.fdeVerifyPassword(password); + return 0; + } catch (Exception e) { + Slog.wtf(TAG, e); + return -1; } } @@ -2753,19 +2317,11 @@ class StorageManagerService extends IStorageManager.Stub mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "no permission to access the crypt keeper"); - waitForReady(); - - final NativeDaemonEvent event; try { - event = mCryptConnector.execute("cryptfs", "getpwtype"); - for (int i = 0; i < CRYPTO_TYPES.length; ++i) { - if (CRYPTO_TYPES[i].equals(event.getMessage())) - return i; - } - - throw new IllegalStateException("unexpected return from cryptfs"); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + return mVold.fdeGetPasswordType(); + } catch (Exception e) { + Slog.wtf(TAG, e); + return -1; } } @@ -2779,13 +2335,12 @@ class StorageManagerService extends IStorageManager.Stub mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "no permission to access the crypt keeper"); - waitForReady(); - - final NativeDaemonEvent event; try { - event = mCryptConnector.execute("cryptfs", "setfield", field, contents); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.fdeSetField(field, contents); + return; + } catch (Exception e) { + Slog.wtf(TAG, e); + return; } } @@ -2799,20 +2354,11 @@ class StorageManagerService extends IStorageManager.Stub mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "no permission to access the crypt keeper"); - waitForReady(); - - final NativeDaemonEvent event; try { - final String[] contents = NativeDaemonEvent.filterMessageList( - mCryptConnector.executeForList("cryptfs", "getfield", field), - VoldResponseCode.CryptfsGetfieldResult); - String result = new String(); - for (String content : contents) { - result += content; - } - return result; - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + return mVold.fdeGetField(field); + } catch (Exception e) { + Slog.wtf(TAG, e); + return null; } } @@ -2825,14 +2371,11 @@ class StorageManagerService extends IStorageManager.Stub mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "no permission to access the crypt keeper"); - waitForReady(); - - final NativeDaemonEvent event; try { - event = mCryptConnector.execute("cryptfs", "isConvertibleToFBE"); - return Integer.parseInt(event.getMessage()) != 0; - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + return mVold.isConvertibleToFbe(); + } catch (Exception e) { + Slog.wtf(TAG, e); + return false; } } @@ -2841,22 +2384,10 @@ class StorageManagerService extends IStorageManager.Stub mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "only keyguard can retrieve password"); - if (!isReady()) { - return new String(); - } - - final NativeDaemonEvent event; try { - event = mCryptConnector.execute("cryptfs", "getpw"); - if ("-1".equals(event.getMessage())) { - // -1 equals no password - return null; - } - return event.getMessage(); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); - } catch (IllegalArgumentException e) { - Slog.e(TAG, "Invalid response to getPassword"); + return mVold.fdeGetPassword(); + } catch (Exception e) { + Slog.wtf(TAG, e); return null; } } @@ -2866,48 +2397,42 @@ class StorageManagerService extends IStorageManager.Stub mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, "only keyguard can clear password"); - if (!isReady()) { - return; - } - - final NativeDaemonEvent event; try { - event = mCryptConnector.execute("cryptfs", "clearpw"); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.fdeClearPassword(); + return; + } catch (Exception e) { + Slog.wtf(TAG, e); + return; } } @Override public void createUserKey(int userId, int serialNumber, boolean ephemeral) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); try { - mCryptConnector.execute("cryptfs", "create_user_key", userId, serialNumber, - ephemeral ? 1 : 0); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.createUserKey(userId, serialNumber, ephemeral); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void destroyUserKey(int userId) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); try { - mCryptConnector.execute("cryptfs", "destroy_user_key", userId); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.destroyUserKey(userId); + } catch (Exception e) { + Slog.wtf(TAG, e); } } - private SensitiveArg encodeBytes(byte[] bytes) { + private String encodeBytes(byte[] bytes) { if (ArrayUtils.isEmpty(bytes)) { - return new SensitiveArg("!"); + return "!"; } else { - return new SensitiveArg(HexDump.toHexString(bytes)); + return HexDump.toHexString(bytes); } } @@ -2921,13 +2446,11 @@ class StorageManagerService extends IStorageManager.Stub @Override public void addUserKeyAuth(int userId, int serialNumber, byte[] token, byte[] secret) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); try { - mCryptConnector.execute("cryptfs", "add_user_key_auth", userId, serialNumber, - encodeBytes(token), encodeBytes(secret)); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.addUserKeyAuth(userId, serialNumber, encodeBytes(token), encodeBytes(secret)); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @@ -2937,19 +2460,17 @@ class StorageManagerService extends IStorageManager.Stub @Override public void fixateNewestUserKeyAuth(int userId) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); try { - mCryptConnector.execute("cryptfs", "fixate_newest_user_key_auth", userId); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.fixateNewestUserKeyAuth(userId); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void unlockUserKey(int userId, int serialNumber, byte[] token, byte[] secret) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); if (StorageManager.isFileEncryptedNativeOrEmulated()) { // When a user has secure lock screen, require secret to actually unlock. @@ -2959,10 +2480,11 @@ class StorageManagerService extends IStorageManager.Stub } try { - mCryptConnector.execute("cryptfs", "unlock_user_key", userId, serialNumber, - encodeBytes(token), encodeBytes(secret)); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.unlockUserKey(userId, serialNumber, encodeBytes(token), + encodeBytes(secret)); + } catch (Exception e) { + Slog.wtf(TAG, e); + return; } } @@ -2979,12 +2501,12 @@ class StorageManagerService extends IStorageManager.Stub @Override public void lockUserKey(int userId) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); try { - mCryptConnector.execute("cryptfs", "lock_user_key", userId); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.lockUserKey(userId); + } catch (Exception e) { + Slog.wtf(TAG, e); + return; } synchronized (mLock) { @@ -3002,38 +2524,33 @@ class StorageManagerService extends IStorageManager.Stub @Override public void prepareUserStorage(String volumeUuid, int userId, int serialNumber, int flags) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); try { - mCryptConnector.execute("cryptfs", "prepare_user_storage", escapeNull(volumeUuid), - userId, serialNumber, flags); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.prepareUserStorage(volumeUuid, userId, serialNumber, flags); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void destroyUserStorage(String volumeUuid, int userId, int flags) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); try { - mCryptConnector.execute("cryptfs", "destroy_user_storage", escapeNull(volumeUuid), - userId, flags); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.destroyUserStorage(volumeUuid, userId, flags); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @Override public void secdiscard(String path) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); - waitForReady(); try { - mCryptConnector.execute("cryptfs", "secdiscard", escapeNull(path)); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mVold.secdiscard(path); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @@ -3046,20 +2563,18 @@ class StorageManagerService extends IStorageManager.Stub @Override public ParcelFileDescriptor open() throws NativeDaemonConnectorException { - final NativeDaemonEvent event = StorageManagerService.this.mConnector.execute( - "appfuse", "mount", uid, Process.myPid(), mountId); - opened = true; - if (event.getFileDescriptors() == null || - event.getFileDescriptors().length == 0) { - throw new NativeDaemonConnectorException("Cannot obtain device FD"); + try { + return new ParcelFileDescriptor( + mVold.mountAppFuse(uid, Process.myPid(), mountId)); + } catch (Exception e) { + throw new NativeDaemonConnectorException("Failed to mount", e); } - return new ParcelFileDescriptor(event.getFileDescriptors()[0]); } @Override public void close() throws Exception { if (opened) { - mConnector.execute("appfuse", "unmount", uid, Process.myPid(), mountId); + mVold.unmountAppFuse(uid, Process.myPid(), mountId); opened = false; } } @@ -3148,10 +2663,10 @@ class StorageManagerService extends IStorageManager.Stub } try { - mConnector.execute("volume", "mkdirs", appPath); + mVold.mkdirs(appPath); return 0; - } catch (NativeDaemonConnectorException e) { - return e.getCode(); + } catch (Exception e) { + Slog.wtf(TAG, e); } } @@ -3700,7 +3215,6 @@ class StorageManagerService extends IStorageManager.Stub @Override public void handleExecute() throws IOException, RemoteException { - waitForReady(); warnOnNotMounted(); final ObbInfo obbInfo = getObbInfo(); @@ -3723,8 +3237,10 @@ class StorageManagerService extends IStorageManager.Stub } final String hashedKey; + final String binderKey; if (mKey == null) { hashedKey = "none"; + binderKey = ""; } else { try { SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); @@ -3734,6 +3250,7 @@ class StorageManagerService extends IStorageManager.Stub SecretKey key = factory.generateSecret(ks); BigInteger bi = new BigInteger(key.getEncoded()); hashedKey = bi.toString(16); + binderKey = hashedKey; } catch (NoSuchAlgorithmException e) { Slog.e(TAG, "Could not load PBKDF2 algorithm", e); sendNewStatusOrIgnore(OnObbStateChangeListener.ERROR_INTERNAL); @@ -3747,13 +3264,12 @@ class StorageManagerService extends IStorageManager.Stub int rc = StorageResultCode.OperationSucceeded; try { - mConnector.execute("obb", "mount", mObbState.canonicalPath, new SensitiveArg(hashedKey), + mObbState.volId = mVold.createObb(mObbState.canonicalPath, binderKey, mObbState.ownerGid); - } catch (NativeDaemonConnectorException e) { - int code = e.getCode(); - if (code != VoldResponseCode.OpFailedStorageBusy) { - rc = StorageResultCode.OperationFailedInternalError; - } + mVold.mount(mObbState.volId, 0, -1); + } catch (Exception e) { + Slog.w(TAG, e); + rc = StorageResultCode.OperationFailedInternalError; } if (rc == StorageResultCode.OperationSucceeded) { @@ -3797,7 +3313,6 @@ class StorageManagerService extends IStorageManager.Stub @Override public void handleExecute() throws IOException { - waitForReady(); warnOnNotMounted(); final ObbState existingState; @@ -3819,21 +3334,12 @@ class StorageManagerService extends IStorageManager.Stub int rc = StorageResultCode.OperationSucceeded; try { - final Command cmd = new Command("obb", "unmount", mObbState.canonicalPath); - if (mForceUnmount) { - cmd.appendArg("force"); - } - mConnector.execute(cmd); - } catch (NativeDaemonConnectorException e) { - int code = e.getCode(); - if (code == VoldResponseCode.OpFailedStorageBusy) { - rc = StorageResultCode.OperationFailedStorageBusy; - } else if (code == VoldResponseCode.OpFailedStorageNotFound) { - // If it's not mounted then we've already won. - rc = StorageResultCode.OperationSucceeded; - } else { - rc = StorageResultCode.OperationFailedInternalError; - } + mVold.unmount(mObbState.volId); + mVold.destroyObb(mObbState.volId); + mObbState.volId = null; + } catch (Exception e) { + Slog.w(TAG, e); + rc = StorageResultCode.OperationFailedInternalError; } if (rc == StorageResultCode.OperationSucceeded) { @@ -4061,18 +3567,6 @@ class StorageManagerService extends IStorageManager.Stub } pw.println(); - pw.println("mConnector:"); - pw.increaseIndent(); - mConnector.dump(fd, pw, args); - pw.decreaseIndent(); - - pw.println(); - pw.println("mCryptConnector:"); - pw.increaseIndent(); - mCryptConnector.dump(fd, pw, args); - pw.decreaseIndent(); - - pw.println(); pw.print("Last maintenance: "); pw.println(TimeUtils.formatForLogging(mLastMaintenance)); } @@ -4080,11 +3574,10 @@ class StorageManagerService extends IStorageManager.Stub /** {@inheritDoc} */ @Override public void monitor() { - if (mConnector != null) { - mConnector.monitor(); - } - if (mCryptConnector != null) { - mCryptConnector.monitor(); + try { + mVold.monitor(); + } catch (Exception e) { + Slog.wtf(TAG, e); } } diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java index 951a0734717b..7cd34065c427 100644 --- a/services/core/java/com/android/server/TextServicesManagerService.java +++ b/services/core/java/com/android/server/TextServicesManagerService.java @@ -16,7 +16,6 @@ package com.android.server; -import com.android.internal.annotations.GuardedBy; import com.android.internal.content.PackageMonitor; import com.android.internal.inputmethod.InputMethodUtils; import com.android.internal.textservice.ISpellCheckerService; @@ -37,6 +36,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; @@ -122,13 +122,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } private void putSelectedSpellChecker(@Nullable String sciId) { - if (TextUtils.isEmpty(sciId)) { - // OK to coalesce to null, since getSelectedSpellChecker() can take care of the - // empty data scenario. - putString(Settings.Secure.SELECTED_SPELL_CHECKER, null); - } else { - putString(Settings.Secure.SELECTED_SPELL_CHECKER, sciId); - } + putString(Settings.Secure.SELECTED_SPELL_CHECKER, sciId); } private void putSelectedSpellCheckerSubtype(int hashCode) { @@ -157,8 +151,12 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { return mSpellCheckerMap.get(curSpellCheckerId); } - public void setCurrentSpellChecker(SpellCheckerInfo sci) { - putSelectedSpellChecker(sci.getId()); + public void setCurrentSpellChecker(@Nullable SpellCheckerInfo sci) { + if (sci != null) { + putSelectedSpellChecker(sci.getId()); + } else { + putSelectedSpellChecker(""); + } putSelectedSpellCheckerSubtype(SpellCheckerSubtype.SUBTYPE_ID_NONE); } @@ -330,13 +328,11 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { tsd.initializeTextServicesData(); SpellCheckerInfo sci = tsd.getCurrentSpellChecker(); if (sci == null) { - sci = findAvailSpellCheckerLocked(null, tsd); - if (sci != null) { - // Set the current spell checker if there is one or more spell checkers - // available. In this case, "sci" is the first one in the available spell - // checkers. - setCurrentSpellCheckerLocked(sci, tsd); - } + sci = findAvailSystemSpellCheckerLocked(null, tsd); + // Set the current spell checker if there is one or more system spell checkers + // available. In this case, "sci" is the first one in the available spell + // checkers. + setCurrentSpellCheckerLocked(sci, tsd); } } @@ -355,20 +351,31 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { // TODO: Update for each locale SpellCheckerInfo sci = tsd.getCurrentSpellChecker(); tsd.initializeTextServicesData(); - // If no spell checker is enabled, just return. The user should explicitly + // If spell checker is disabled, just return. The user should explicitly // enable the spell checker. - if (sci == null) return; - final String packageName = sci.getPackageName(); - final int change = isPackageDisappearing(packageName); - if (DBG) Slog.d(TAG, "Changing package name: " + packageName); - if (// Package disappearing - change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE - // Package modified - || isPackageModified(packageName)) { - SpellCheckerInfo availSci = findAvailSpellCheckerLocked(packageName, tsd); - // Set the spell checker settings if different than before - if (availSci != null && !availSci.getId().equals(sci.getId())) { - setCurrentSpellCheckerLocked(availSci, tsd); + if (!tsd.isSpellCheckerEnabled()) return; + + if (sci == null) { + sci = findAvailSystemSpellCheckerLocked(null, tsd); + // Set the current spell checker if there is one or more system spell checkers + // available. In this case, "sci" is the first one in the available spell + // checkers. + setCurrentSpellCheckerLocked(sci, tsd); + } else { + final String packageName = sci.getPackageName(); + final int change = isPackageDisappearing(packageName); + if (DBG) Slog.d(TAG, "Changing package name: " + packageName); + if (// Package disappearing + change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE + // Package modified + || isPackageModified(packageName)) { + SpellCheckerInfo availSci = + findAvailSystemSpellCheckerLocked(packageName, tsd); + // Set the spell checker settings if different than before + if (availSci == null + || (availSci != null && !availSci.getId().equals(sci.getId()))) { + setCurrentSpellCheckerLocked(availSci, tsd); + } } } } @@ -393,9 +400,16 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { spellCheckerBindGroups.clear(); } - private SpellCheckerInfo findAvailSpellCheckerLocked(String prefPackage, + private SpellCheckerInfo findAvailSystemSpellCheckerLocked(String prefPackage, TextServicesData tsd) { - ArrayList<SpellCheckerInfo> spellCheckerList = tsd.mSpellCheckerList; + // Filter the spell checker list to remove spell checker services that are not pre-installed + ArrayList<SpellCheckerInfo> spellCheckerList = new ArrayList<>(); + for (SpellCheckerInfo sci : tsd.mSpellCheckerList) { + if ((sci.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { + spellCheckerList.add(sci); + } + } + final int spellCheckersCount = spellCheckerList.size(); if (spellCheckersCount == 0) { Slog.w(TAG, "no available spell checker services found"); @@ -406,7 +420,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { final SpellCheckerInfo sci = spellCheckerList.get(i); if (prefPackage.equals(sci.getPackageName())) { if (DBG) { - Slog.d(TAG, "findAvailSpellCheckerLocked: " + sci.getPackageName()); + Slog.d(TAG, "findAvailSystemSpellCheckerLocked: " + sci.getPackageName()); } return sci; } @@ -420,7 +434,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { final ArrayList<Locale> suitableLocales = InputMethodUtils.getSuitableLocalesForSpellChecker(systemLocal); if (DBG) { - Slog.w(TAG, "findAvailSpellCheckerLocked suitableLocales=" + Slog.w(TAG, "findAvailSystemSpellCheckerLocked suitableLocales=" + Arrays.toString(suitableLocales.toArray(new Locale[suitableLocales.size()]))); } final int localeCount = suitableLocales.size(); @@ -670,8 +684,8 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } } - private void setCurrentSpellCheckerLocked(SpellCheckerInfo sci, TextServicesData tsd) { - final String sciId = sci.getId(); + private void setCurrentSpellCheckerLocked(@Nullable SpellCheckerInfo sci, TextServicesData tsd) { + final String sciId = (sci != null) ? sci.getId() : ""; if (DBG) { Slog.w(TAG, "setCurrentSpellChecker: " + sciId); } diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index 473384081656..046eb761d1c0 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -728,6 +728,9 @@ public class VibratorService extends IVibratorService.Stub return timeout; } } + if (!prebaked.shouldFallback()) { + return 0; + } final int id = prebaked.getId(); if (id < 0 || id >= mFallbackEffects.length || mFallbackEffects[id] == null) { Slog.w(TAG, "Failed to play prebaked effect, no fallback"); diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 7e90c9276ff0..98e08e09049b 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -2191,7 +2191,7 @@ public class AccountManagerService return false; } else if (!isAccountManagedByCaller(account.type, callingUid, userId)) { String msg = String.format( - "uid %s cannot explicitly add accounts of type: %s", + "uid %s cannot explicitly remove accounts of type: %s", callingUid, account.type); throw new SecurityException(msg); @@ -5285,7 +5285,7 @@ public class AccountManagerService == PackageManager.PERMISSION_GRANTED) { // Checks runtime permission revocation. final int opCode = AppOpsManager.permissionToOpCode(perm); - if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOp( + if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOpNoThrow( opCode, uid, packageName) == AppOpsManager.MODE_ALLOWED) { return true; } @@ -5306,7 +5306,7 @@ public class AccountManagerService Log.v(TAG, " caller uid " + callingUid + " has " + perm); } final int opCode = AppOpsManager.permissionToOpCode(perm); - if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOp( + if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOpNoThrow( opCode, callingUid, opPackageName) == AppOpsManager.MODE_ALLOWED) { return true; } diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 756e2748b8cb..90ad8a5d0131 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -1926,6 +1926,9 @@ public final class ActiveServices { if (r.restartDelay == 0) { r.restartCount++; r.restartDelay = minDuration; + } else if (r.crashCount > 1) { + r.restartDelay = mAm.mConstants.BOUND_SERVICE_CRASH_RESTART_DURATION + * (r.crashCount - 1); } else { // If it has been a "reasonably long time" since the service // was started, then reset our restart duration back to @@ -2159,6 +2162,15 @@ public final class ActiveServices { } } + if (r.fgRequired) { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.v(TAG, "Whitelisting " + UserHandle.formatUid(r.appInfo.uid) + + " for fg-service launch"); + } + mAm.tempWhitelistUidLocked(r.appInfo.uid, + SERVICE_START_FOREGROUND_TIMEOUT, "fg-service-launch"); + } + if (!mPendingServices.contains(r)) { mPendingServices.add(r); } @@ -3129,8 +3141,9 @@ public final class ActiveServices { // Any services running in the application may need to be placed // back in the pending list. - if (allowRestart && sr.crashCount >= 2 && (sr.serviceInfo.applicationInfo.flags - &ApplicationInfo.FLAG_PERSISTENT) == 0) { + if (allowRestart && sr.crashCount >= mAm.mConstants.BOUND_SERVICE_MAX_CRASH_RETRY + && (sr.serviceInfo.applicationInfo.flags + &ApplicationInfo.FLAG_PERSISTENT) == 0) { Slog.w(TAG, "Service crashed " + sr.crashCount + " times, stopping: " + sr); EventLog.writeEvent(EventLogTags.AM_SERVICE_CRASHED_TOO_MUCH, diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java index 2cd2603bf554..b52db872f978 100644 --- a/services/core/java/com/android/server/am/ActivityManagerConstants.java +++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java @@ -32,6 +32,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_POWER_QUICK * Settings constants that can modify the activity manager's behavior. */ final class ActivityManagerConstants extends ContentObserver { + // Key names stored in the settings value. private static final String KEY_MAX_CACHED_PROCESSES = "max_cached_processes"; private static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time"; @@ -63,6 +64,8 @@ final class ActivityManagerConstants extends ContentObserver { static final String KEY_SERVICE_MIN_RESTART_TIME_BETWEEN = "service_min_restart_time_between"; static final String KEY_MAX_SERVICE_INACTIVITY = "service_max_inactivity"; static final String KEY_BG_START_TIMEOUT = "service_bg_start_timeout"; + static final String KEY_BOUND_SERVICE_CRASH_RESTART_DURATION = "service_crash_restart_duration"; + static final String KEY_BOUND_SERVICE_CRASH_MAX_RETRY = "service_crash_max_retry"; private static final int DEFAULT_MAX_CACHED_PROCESSES = 32; private static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60*1000; @@ -88,6 +91,9 @@ final class ActivityManagerConstants extends ContentObserver { private static final long DEFAULT_SERVICE_MIN_RESTART_TIME_BETWEEN = 10*1000; private static final long DEFAULT_MAX_SERVICE_INACTIVITY = 30*60*1000; private static final long DEFAULT_BG_START_TIMEOUT = 15*1000; + private static final long DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION = 30*60_000; + private static final int DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY = 16; + // Maximum number of cached processes we will allow. public int MAX_CACHED_PROCESSES = DEFAULT_MAX_CACHED_PROCESSES; @@ -190,6 +196,12 @@ final class ActivityManagerConstants extends ContentObserver { // allowing the next pending start to run. public long BG_START_TIMEOUT = DEFAULT_BG_START_TIMEOUT; + // Initial backoff delay for retrying bound foreground services + public long BOUND_SERVICE_CRASH_RESTART_DURATION = DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION; + + // Maximum number of retries for bound foreground services that crash soon after start + public long BOUND_SERVICE_MAX_CRASH_RETRY = DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY; + private final ActivityManagerService mService; private ContentResolver mResolver; private final KeyValueListParser mParser = new KeyValueListParser(','); @@ -308,6 +320,12 @@ final class ActivityManagerConstants extends ContentObserver { DEFAULT_MAX_SERVICE_INACTIVITY); BG_START_TIMEOUT = mParser.getLong(KEY_BG_START_TIMEOUT, DEFAULT_BG_START_TIMEOUT); + BOUND_SERVICE_CRASH_RESTART_DURATION = mParser.getLong( + KEY_BOUND_SERVICE_CRASH_RESTART_DURATION, + DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION); + BOUND_SERVICE_MAX_CRASH_RETRY = mParser.getInt(KEY_BOUND_SERVICE_CRASH_MAX_RETRY, + DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY); + updateMaxCachedProcesses(); } } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 1d96a437ea20..12778d82d387 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -145,7 +145,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_CLEANUP; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_CONFIGURATION; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_FOCUS; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_IMMERSIVE; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKSCREEN; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LRU; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_MU; @@ -163,7 +162,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SWITCH; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_UID_OBSERVERS; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_URI_PERMISSION; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILITY; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBLE_BEHIND; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.ActivityStackSupervisor.CREATE_IF_NEEDED; @@ -177,6 +175,7 @@ import static com.android.server.am.TaskRecord.INVALID_TASK_ID; import static com.android.server.am.TaskRecord.LOCK_TASK_AUTH_DONT_LOCK; import static com.android.server.am.TaskRecord.REPARENT_KEEP_STACK_AT_FRONT; import static com.android.server.am.TaskRecord.REPARENT_LEAVE_STACK_IN_PLACE; +import static com.android.server.am.proto.ActivityManagerServiceProto.ACTIVITIES; import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_OPEN; import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_RELAUNCH; import static com.android.server.wm.AppTransition.TRANSIT_NONE; @@ -197,7 +196,6 @@ import android.app.ActivityManager.RunningTaskInfo; import android.app.ActivityManager.StackId; import android.app.ActivityManager.StackInfo; import android.app.ActivityManager.TaskSnapshot; -import android.app.ActivityManager.TaskThumbnailInfo; import android.app.ActivityManagerInternal; import android.app.ActivityManagerInternal.SleepToken; import android.app.ActivityOptions; @@ -350,6 +348,7 @@ import android.util.SparseArray; import android.util.SparseIntArray; import android.util.TimeUtils; import android.util.Xml; +import android.util.proto.ProtoOutputStream; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -403,6 +402,7 @@ import com.android.server.firewall.IntentFirewall; import com.android.server.job.JobSchedulerInternal; import com.android.server.pm.Installer; import com.android.server.pm.Installer.InstallerException; +import com.android.server.utils.PriorityDump; import com.android.server.vr.VrManagerInternal; import com.android.server.wm.PinnedStackWindowController; import com.android.server.wm.WindowManagerService; @@ -463,7 +463,6 @@ public class ActivityManagerService extends IActivityManager.Stub private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION; private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS; private static final String TAG_IMMERSIVE = TAG + POSTFIX_IMMERSIVE; - private static final String TAG_LOCKSCREEN = TAG + POSTFIX_LOCKSCREEN; private static final String TAG_LOCKTASK = TAG + POSTFIX_LOCKTASK; private static final String TAG_LRU = TAG + POSTFIX_LRU; private static final String TAG_MU = TAG + POSTFIX_MU; @@ -481,7 +480,6 @@ public class ActivityManagerService extends IActivityManager.Stub private static final String TAG_UID_OBSERVERS = TAG + POSTFIX_UID_OBSERVERS; private static final String TAG_URI_PERMISSION = TAG + POSTFIX_URI_PERMISSION; private static final String TAG_VISIBILITY = TAG + POSTFIX_VISIBILITY; - private static final String TAG_VISIBLE_BEHIND = TAG + POSTFIX_VISIBLE_BEHIND; // Mock "pretend we're idle now" broadcast action to the job scheduler; declared // here so that while the job scheduler can depend on AMS, the other way around @@ -685,11 +683,6 @@ public class ActivityManagerService extends IActivityManager.Stub ActivityInfo mLastAddedTaskActivity; /** - * List of packages whitelisted by DevicePolicyManager for locktask. Indexed by userId. - */ - SparseArray<String[]> mLockTaskPackages = new SparseArray<>(); - - /** * The package name of the DeviceOwner. This package is not permitted to have its data cleared. */ String mDeviceOwnerName; @@ -715,9 +708,45 @@ public class ActivityManagerService extends IActivityManager.Stub @VisibleForTesting long mWaitForNetworkTimeoutMs; + /** + * Helper class which parses out priority arguments and dumps sections according to their + * priority. If priority arguments are omitted, function calls the legacy dump command. + */ + private final PriorityDump.PriorityDumper mPriorityDumper = new PriorityDump.PriorityDumper() { + @Override + public void dumpCritical(FileDescriptor fd, PrintWriter pw, String[] args) { + doDump(fd, pw, new String[] {"activities"}); + } + + @Override + public void dumpNormal(FileDescriptor fd, PrintWriter pw, String[] args) { + doDump(fd, pw, new String[] {"settings"}); + doDump(fd, pw, new String[] {"intents"}); + doDump(fd, pw, new String[] {"broadcasts"}); + doDump(fd, pw, new String[] {"providers"}); + doDump(fd, pw, new String[] {"permissions"}); + doDump(fd, pw, new String[] {"services"}); + doDump(fd, pw, new String[] {"recents"}); + doDump(fd, pw, new String[] {"lastanr"}); + doDump(fd, pw, new String[] {"starter"}); + if (mAssociations.size() > 0) { + doDump(fd, pw, new String[] {"associations"}); + } + doDump(fd, pw, new String[] {"processes"}); + doDump(fd, pw, new String[] {"-v", "all"}); + doDump(fd, pw, new String[] {"service", "all"}); + doDump(fd, pw, new String[] {"provider", "all"}); + } + + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + doDump(fd, pw, args); + } + }; + public boolean canShowErrorDialogs() { return mShowDialogs && !mSleeping && !mShuttingDown - && !mKeyguardController.isKeyguardShowing() + && !mKeyguardController.isKeyguardShowing(DEFAULT_DISPLAY) && !(UserManager.isDeviceInDemoMode(mContext) && mUserController.getCurrentUser().isDemo()); } @@ -1475,7 +1504,7 @@ public class ActivityManagerService extends IActivityManager.Stub * Flag that indicates if multi-window is enabled. * * For any particular form of multi-window to be enabled, generic multi-window must be enabled - * in {@link com.android.internal.R.bool.config_supportsMultiWindow} config or + * in {@link com.android.internal.R.bool#config_supportsMultiWindow} config or * {@link Settings.Global#DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES} development option set. * At least one of the forms of multi-window must be enabled in order for this flag to be * initialized to 'true'. @@ -1564,6 +1593,13 @@ public class ActivityManagerService extends IActivityManager.Stub final ArrayList<UidRecord.ChangeItem> mPendingUidChanges = new ArrayList<>(); final ArrayList<UidRecord.ChangeItem> mAvailUidChanges = new ArrayList<>(); + OomAdjObserver mCurOomAdjObserver; + int mCurOomAdjUid; + + interface OomAdjObserver { + void onOomAdjMessage(String msg); + } + /** * Runtime CPU use collection thread. This object's lock is used to * perform synchronization with the thread (notifying it to run). @@ -1649,43 +1685,32 @@ public class ActivityManagerService extends IActivityManager.Stub static final int DISPATCH_PROCESSES_CHANGED_UI_MSG = 31; static final int DISPATCH_PROCESS_DIED_UI_MSG = 32; static final int REPORT_MEM_USAGE_MSG = 33; - static final int REPORT_USER_SWITCH_MSG = 34; - static final int CONTINUE_USER_SWITCH_MSG = 35; - static final int USER_SWITCH_TIMEOUT_MSG = 36; static final int IMMERSIVE_MODE_LOCK_MSG = 37; static final int PERSIST_URI_GRANTS_MSG = 38; static final int REQUEST_ALL_PSS_MSG = 39; - static final int START_PROFILES_MSG = 40; static final int UPDATE_TIME_PREFERENCE_MSG = 41; - static final int SYSTEM_USER_START_MSG = 42; - static final int SYSTEM_USER_CURRENT_MSG = 43; static final int ENTER_ANIMATION_COMPLETE_MSG = 44; static final int FINISH_BOOTING_MSG = 45; - static final int START_USER_SWITCH_UI_MSG = 46; static final int SEND_LOCALE_TO_MOUNT_DAEMON_MSG = 47; static final int DISMISS_DIALOG_UI_MSG = 48; static final int NOTIFY_CLEARTEXT_NETWORK_MSG = 49; static final int POST_DUMP_HEAP_NOTIFICATION_MSG = 50; static final int DELETE_DUMPHEAP_MSG = 51; - static final int FOREGROUND_PROFILE_CHANGED_MSG = 52; static final int DISPATCH_UIDS_CHANGED_UI_MSG = 53; static final int REPORT_TIME_TRACKER_MSG = 54; - static final int REPORT_USER_SWITCH_COMPLETE_MSG = 55; static final int SHUTDOWN_UI_AUTOMATION_CONNECTION_MSG = 56; static final int CONTENT_PROVIDER_PUBLISH_TIMEOUT_MSG = 57; static final int IDLE_UIDS_MSG = 58; - static final int SYSTEM_USER_UNLOCK_MSG = 59; static final int LOG_STACK_STATE = 60; static final int VR_MODE_CHANGE_MSG = 61; static final int SHOW_UNSUPPORTED_DISPLAY_SIZE_DIALOG_MSG = 62; static final int HANDLE_TRUST_STORAGE_UPDATE_MSG = 63; - static final int REPORT_LOCKED_BOOT_COMPLETE_MSG = 64; static final int NOTIFY_VR_SLEEPING_MSG = 65; static final int SERVICE_FOREGROUND_TIMEOUT_MSG = 66; static final int DISPATCH_PENDING_INTENT_CANCEL_MSG = 67; static final int PUSH_TEMP_WHITELIST_UI_MSG = 68; static final int SERVICE_FOREGROUND_CRASH_MSG = 69; - static final int START_USER_SWITCH_FG_MSG = 712; + static final int DISPATCH_OOM_ADJ_OBSERVER_MSG = 70; static final int FIRST_ACTIVITY_STACK_MSG = 100; static final int FIRST_BROADCAST_QUEUE_MSG = 200; @@ -1898,10 +1923,6 @@ public class ActivityManagerService extends IActivityManager.Stub } break; } - case START_USER_SWITCH_UI_MSG: { - mUserController.showUserSwitchDialog((Pair<UserInfo, UserInfo>) msg.obj); - break; - } case DISMISS_DIALOG_UI_MSG: { final Dialog d = (Dialog) msg.obj; d.dismiss(); @@ -1920,6 +1941,9 @@ public class ActivityManagerService extends IActivityManager.Stub case DISPATCH_UIDS_CHANGED_UI_MSG: { dispatchUidsChanged(); } break; + case DISPATCH_OOM_ADJ_OBSERVER_MSG: { + dispatchOomAdjObserver((String)msg.obj); + } break; case PUSH_TEMP_WHITELIST_UI_MSG: { pushTempWhitelist(); } break; @@ -2127,22 +2151,6 @@ public class ActivityManagerService extends IActivityManager.Stub thread.start(); break; } - case START_USER_SWITCH_FG_MSG: { - mUserController.startUserInForeground(msg.arg1); - break; - } - case REPORT_USER_SWITCH_MSG: { - mUserController.dispatchUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2); - break; - } - case CONTINUE_USER_SWITCH_MSG: { - mUserController.continueUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2); - break; - } - case USER_SWITCH_TIMEOUT_MSG: { - mUserController.timeoutUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2); - break; - } case IMMERSIVE_MODE_LOCK_MSG: { final boolean nextState = (msg.arg1 != 0); if (mUpdateLock.isHeld() != nextState) { @@ -2167,12 +2175,6 @@ public class ActivityManagerService extends IActivityManager.Stub } break; } - case START_PROFILES_MSG: { - synchronized (ActivityManagerService.this) { - mUserController.startProfilesLocked(); - } - break; - } case UPDATE_TIME_PREFERENCE_MSG: { // The user's time format preference might have changed. // For convenience we re-use the Intent extra values. @@ -2191,35 +2193,6 @@ public class ActivityManagerService extends IActivityManager.Stub } break; } - case SYSTEM_USER_START_MSG: { - mBatteryStatsService.noteEvent(BatteryStats.HistoryItem.EVENT_USER_RUNNING_START, - Integer.toString(msg.arg1), msg.arg1); - mSystemServiceManager.startUser(msg.arg1); - break; - } - case SYSTEM_USER_UNLOCK_MSG: { - final int userId = msg.arg1; - mSystemServiceManager.unlockUser(userId); - synchronized (ActivityManagerService.this) { - mRecentTasks.loadUserRecentsLocked(userId); - } - if (userId == UserHandle.USER_SYSTEM) { - startPersistentApps(PackageManager.MATCH_DIRECT_BOOT_UNAWARE); - } - installEncryptionUnawareProviders(userId); - mUserController.finishUserUnlocked((UserState) msg.obj); - break; - } - case SYSTEM_USER_CURRENT_MSG: { - mBatteryStatsService.noteEvent( - BatteryStats.HistoryItem.EVENT_USER_FOREGROUND_FINISH, - Integer.toString(msg.arg2), msg.arg2); - mBatteryStatsService.noteEvent( - BatteryStats.HistoryItem.EVENT_USER_FOREGROUND_START, - Integer.toString(msg.arg1), msg.arg1); - mSystemServiceManager.switchUser(msg.arg1); - break; - } case ENTER_ANIMATION_COMPLETE_MSG: { synchronized (ActivityManagerService.this) { ActivityRecord r = ActivityRecord.forTokenLocked((IBinder) msg.obj); @@ -2359,19 +2332,10 @@ public class ActivityManagerService extends IActivityManager.Stub mMemWatchDumpUid = -1; } } break; - case FOREGROUND_PROFILE_CHANGED_MSG: { - mUserController.dispatchForegroundProfileChanged(msg.arg1); - } break; case REPORT_TIME_TRACKER_MSG: { AppTimeTracker tracker = (AppTimeTracker)msg.obj; tracker.deliverResult(mContext); } break; - case REPORT_USER_SWITCH_COMPLETE_MSG: { - mUserController.dispatchUserSwitchComplete(msg.arg1); - } break; - case REPORT_LOCKED_BOOT_COMPLETE_MSG: { - mUserController.dispatchLockedBootComplete(msg.arg1); - } break; case SHUTDOWN_UI_AUTOMATION_CONNECTION_MSG: { IUiAutomationConnection connection = (IUiAutomationConnection) msg.obj; try { @@ -2576,6 +2540,14 @@ public class ActivityManagerService extends IActivityManager.Stub static class MemBinder extends Binder { ActivityManagerService mActivityManagerService; + private final PriorityDump.PriorityDumper mPriorityDumper = + new PriorityDump.PriorityDumper() { + @Override + public void dumpNormal(FileDescriptor fd, PrintWriter pw, String[] args) { + mActivityManagerService.dumpApplicationMemoryUsage(fd, pw, " ", args, false, null); + } + }; + MemBinder(ActivityManagerService activityManagerService) { mActivityManagerService = activityManagerService; } @@ -2584,7 +2556,7 @@ public class ActivityManagerService extends IActivityManager.Stub protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, "meminfo", pw)) return; - mActivityManagerService.dumpApplicationMemoryUsage(fd, pw, " ", args, false, null); + PriorityDump.dump(mPriorityDumper, fd, pw, args); } } @@ -2618,19 +2590,27 @@ public class ActivityManagerService extends IActivityManager.Stub static class CpuBinder extends Binder { ActivityManagerService mActivityManagerService; + private final PriorityDump.PriorityDumper mPriorityDumper = + new PriorityDump.PriorityDumper() { + @Override + public void dumpCritical(FileDescriptor fd, PrintWriter pw, String[] args) { + if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, + "cpuinfo", pw)) return; + synchronized (mActivityManagerService.mProcessCpuTracker) { + pw.print(mActivityManagerService.mProcessCpuTracker.printCurrentLoad()); + pw.print(mActivityManagerService.mProcessCpuTracker.printCurrentState( + SystemClock.uptimeMillis())); + } + } + }; + CpuBinder(ActivityManagerService activityManagerService) { mActivityManagerService = activityManagerService; } @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, - "cpuinfo", pw)) return; - synchronized (mActivityManagerService.mProcessCpuTracker) { - pw.print(mActivityManagerService.mProcessCpuTracker.printCurrentLoad()); - pw.print(mActivityManagerService.mProcessCpuTracker.printCurrentState( - SystemClock.uptimeMillis())); - } + PriorityDump.dump(mPriorityDumper, fd, pw, args); } } @@ -3089,7 +3069,7 @@ public class ActivityManagerService extends IActivityManager.Stub */ void setResumedActivityUncheckLocked(ActivityRecord r, String reason) { final TaskRecord task = r.getTask(); - if (task.isApplicationTask()) { + if (task.isActivityTypeStandard()) { if (mCurAppTimeTracker != r.appTimeTracker) { // We are switching app tracking. Complete the current one. if (mCurAppTimeTracker != null) { @@ -3139,9 +3119,7 @@ public class ActivityManagerService extends IActivityManager.Stub } if (mLastResumedActivity != null && r.userId != mLastResumedActivity.userId) { - mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG); - mHandler.obtainMessage( - FOREGROUND_PROFILE_CHANGED_MSG, r.userId, 0).sendToTarget(); + mUserController.sendForegroundProfileChanged(r.userId); } mLastResumedActivity = r; @@ -3584,10 +3562,8 @@ public class ActivityManagerService extends IActivityManager.Stub } void notifyPackageUse(String packageName, int reason) { - IPackageManager pm = AppGlobals.getPackageManager(); - try { - pm.notifyPackageUse(packageName, reason); - } catch (RemoteException e) { + synchronized(this) { + getPackageManagerInternalLocked().notifyPackageUse(packageName, reason); } } @@ -3828,41 +3804,47 @@ public class ActivityManagerService extends IActivityManager.Stub uid = 0; } } - int debugFlags = 0; + int runtimeFlags = 0; if ((app.info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) { - debugFlags |= Zygote.DEBUG_ENABLE_JDWP; - debugFlags |= Zygote.DEBUG_JAVA_DEBUGGABLE; + runtimeFlags |= Zygote.DEBUG_ENABLE_JDWP; + runtimeFlags |= Zygote.DEBUG_JAVA_DEBUGGABLE; // Also turn on CheckJNI for debuggable apps. It's quite // awkward to turn on otherwise. - debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI; + runtimeFlags |= Zygote.DEBUG_ENABLE_CHECKJNI; } // Run the app in safe mode if its manifest requests so or the // system is booted in safe mode. if ((app.info.flags & ApplicationInfo.FLAG_VM_SAFE_MODE) != 0 || mSafeMode == true) { - debugFlags |= Zygote.DEBUG_ENABLE_SAFEMODE; + runtimeFlags |= Zygote.DEBUG_ENABLE_SAFEMODE; } if ("1".equals(SystemProperties.get("debug.checkjni"))) { - debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI; + runtimeFlags |= Zygote.DEBUG_ENABLE_CHECKJNI; } String genDebugInfoProperty = SystemProperties.get("debug.generate-debug-info"); if ("true".equals(genDebugInfoProperty)) { - debugFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO; + runtimeFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO; } if ("1".equals(SystemProperties.get("debug.jni.logging"))) { - debugFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING; + runtimeFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING; } if ("1".equals(SystemProperties.get("debug.assert"))) { - debugFlags |= Zygote.DEBUG_ENABLE_ASSERT; + runtimeFlags |= Zygote.DEBUG_ENABLE_ASSERT; } if (mNativeDebuggingApp != null && mNativeDebuggingApp.equals(app.processName)) { // Enable all debug flags required by the native debugger. - debugFlags |= Zygote.DEBUG_ALWAYS_JIT; // Don't interpret anything - debugFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO; // Generate debug info - debugFlags |= Zygote.DEBUG_NATIVE_DEBUGGABLE; // Disbale optimizations + runtimeFlags |= Zygote.DEBUG_ALWAYS_JIT; // Don't interpret anything + runtimeFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO; // Generate debug info + runtimeFlags |= Zygote.DEBUG_NATIVE_DEBUGGABLE; // Disbale optimizations mNativeDebuggingApp = null; } + if (app.info.isPrivilegedApp() && + !SystemProperties.getBoolean("pm.dexopt.priv-apps", true)) { + runtimeFlags |= Zygote.DISABLE_VERIFIER; + runtimeFlags |= Zygote.ONLY_USE_SYSTEM_OAT_FILES; + } + String invokeWith = null; if ((app.info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) { // Debuggable apps may include a wrapper script with their library directory. @@ -3908,12 +3890,12 @@ public class ActivityManagerService extends IActivityManager.Stub ProcessStartResult startResult; if (hostingType.equals("webview_service")) { startResult = startWebView(entryPoint, - app.processName, uid, uid, gids, debugFlags, mountExternal, + app.processName, uid, uid, gids, runtimeFlags, mountExternal, app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet, app.info.dataDir, null, null); } else { startResult = Process.start(entryPoint, - app.processName, uid, uid, gids, debugFlags, mountExternal, + app.processName, uid, uid, gids, runtimeFlags, mountExternal, app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet, app.info.dataDir, invokeWith, null); } @@ -4145,15 +4127,6 @@ public class ActivityManagerService extends IActivityManager.Stub } } - void enforceShellRestriction(String restriction, int userHandle) { - if (Binder.getCallingUid() == SHELL_UID) { - if (userHandle < 0 || mUserController.hasUserRestriction(restriction, userHandle)) { - throw new SecurityException("Shell does not have permission to access user " - + userHandle); - } - } - } - @Override public int getFrontActivityScreenCompatMode() { enforceNotIsolatedCaller("getFrontActivityScreenCompatMode"); @@ -4458,6 +4431,38 @@ public class ActivityManagerService extends IActivityManager.Stub } } + void dispatchOomAdjObserver(String msg) { + OomAdjObserver observer; + synchronized (this) { + observer = mCurOomAdjObserver; + } + + if (observer != null) { + observer.onOomAdjMessage(msg); + } + } + + void setOomAdjObserver(int uid, OomAdjObserver observer) { + synchronized (this) { + mCurOomAdjUid = uid; + mCurOomAdjObserver = observer; + } + } + + void clearOomAdjObserver() { + synchronized (this) { + mCurOomAdjUid = -1; + mCurOomAdjObserver = null; + } + } + + void reportOomAdjMessageLocked(String tag, String msg) { + Slog.d(tag, msg); + if (mCurOomAdjObserver != null) { + mUiHandler.obtainMessage(DISPATCH_OOM_ADJ_OBSERVER_MSG, msg).sendToTarget(); + } + } + @Override public final int startActivity(IApplicationThread caller, String callingPackage, Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, @@ -6964,7 +6969,7 @@ public class ActivityManagerService extends IActivityManager.Stub mProfileProc = app; profilerInfo = (mProfilerInfo != null && mProfilerInfo.profileFile != null) ? new ProfilerInfo(mProfilerInfo) : null; - agent = profilerInfo.agent; + agent = mProfilerInfo != null ? mProfilerInfo.agent : null; } else if (app.instr != null && app.instr.mProfileFile != null) { profilerInfo = new ProfilerInfo(app.instr.mProfileFile, null, 0, false, false, null); @@ -7328,7 +7333,7 @@ public class ActivityManagerService extends IActivityManager.Stub } } }); - scheduleStartProfilesLocked(); + mUserController.scheduleStartProfilesLocked(); } } } @@ -7828,6 +7833,15 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override + public boolean isIntentSenderAForegroundService(IIntentSender pendingResult) { + if (pendingResult instanceof PendingIntentRecord) { + final PendingIntentRecord res = (PendingIntentRecord) pendingResult; + return res.key.type == ActivityManager.INTENT_SENDER_FOREGROUND_SERVICE; + } + return false; + } + + @Override public Intent getIntentForIntentSender(IIntentSender pendingResult) { enforceCallingPermission(Manifest.permission.GET_INTENT_SENDER_INTENT, "getIntentForIntentSender()"); @@ -8065,7 +8079,7 @@ public class ActivityManagerService extends IActivityManager.Stub stack.setPictureInPictureActions(actions); MetricsLogger.action(mContext, MetricsEvent.ACTION_PICTURE_IN_PICTURE_ENTERED, - r.supportsPictureInPictureWhilePausing); + r.supportsEnterPipOnTaskSwitch); logPictureInPictureArgs(params); }; @@ -9930,7 +9944,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (!allowed) { // If the caller doesn't have the GET_TASKS permission, then only // allow them to see a small subset of tasks -- their own and home. - if (!tr.isHomeTask() && tr.effectiveUid != callingUid) { + if (!tr.isActivityTypeHome() && tr.effectiveUid != callingUid) { if (DEBUG_RECENTS) Slog.d(TAG_RECENTS, "Skipping, not allowed: " + tr); continue; } @@ -9991,26 +10005,12 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public ActivityManager.TaskThumbnail getTaskThumbnail(int id) { - synchronized (this) { - enforceCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER, - "getTaskThumbnail()"); - final TaskRecord tr = mStackSupervisor.anyTaskForIdLocked( - id, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID); - if (tr != null) { - return tr.getTaskThumbnailLocked(); - } - } - return null; - } - - @Override public ActivityManager.TaskDescription getTaskDescription(int id) { synchronized (this) { enforceCallingPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS, "getTaskDescription()"); final TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(id, - MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID); + MATCH_TASK_IN_STACKS_OR_RECENT_TASKS); if (tr != null) { return tr.lastTaskDescription; } @@ -10071,7 +10071,7 @@ public class ActivityManagerService extends IActivityManager.Stub TaskRecord task = new TaskRecord(this, mStackSupervisor.getNextTaskIdForUserLocked(r.userId), - ainfo, intent, description, new TaskThumbnailInfo()); + ainfo, intent, description); int trimIdx = mRecentTasks.trimForTaskLocked(task, false); if (trimIdx >= 0) { @@ -10090,8 +10090,8 @@ public class ActivityManagerService extends IActivityManager.Stub mRecentTasks.add(task); r.getStack().addTask(task, false, "addAppTask"); - task.setLastThumbnailLocked(thumbnail); - task.freeLastThumbnail(); + // TODO: Send the thumbnail to WM to store it. + return task.taskId; } } finally { @@ -10123,7 +10123,7 @@ public class ActivityManagerService extends IActivityManager.Stub public void setTaskResizeable(int taskId, int resizeableMode) { synchronized (this) { final TaskRecord task = mStackSupervisor.anyTaskForIdLocked( - taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID); + taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS); if (task == null) { Slog.w(TAG, "setTaskResizeable: taskId=" + taskId + " not found"); return; @@ -10186,7 +10186,7 @@ public class ActivityManagerService extends IActivityManager.Stub try { synchronized (this) { final TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId, - MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID); + MATCH_TASK_IN_STACKS_OR_RECENT_TASKS); if (task == null) { Slog.w(TAG, "getTaskBounds: taskId=" + taskId + " not found"); return rect; @@ -10218,7 +10218,7 @@ public class ActivityManagerService extends IActivityManager.Stub try { synchronized (this) { final TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId, - MATCH_TASK_IN_STACKS_ONLY, INVALID_STACK_ID); + MATCH_TASK_IN_STACKS_ONLY); if (task == null) { Slog.w(TAG, "cancelTaskWindowTransition: taskId=" + taskId + " not found"); return; @@ -10237,7 +10237,7 @@ public class ActivityManagerService extends IActivityManager.Stub try { synchronized (this) { final TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId, - MATCH_TASK_IN_STACKS_ONLY, INVALID_STACK_ID); + MATCH_TASK_IN_STACKS_ONLY); if (task == null) { Slog.w(TAG, "cancelTaskThumbnailTransition: taskId=" + taskId + " not found"); return; @@ -10257,7 +10257,7 @@ public class ActivityManagerService extends IActivityManager.Stub final TaskRecord task; synchronized (this) { task = mStackSupervisor.anyTaskForIdLocked(taskId, - MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID); + MATCH_TASK_IN_STACKS_OR_RECENT_TASKS); if (task == null) { Slog.w(TAG, "getTaskSnapshot: taskId=" + taskId + " not found"); return null; @@ -10571,56 +10571,6 @@ public class ActivityManagerService extends IActivityManager.Stub } } - @Override - public void swapDockedAndFullscreenStack() throws RemoteException { - enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "swapDockedAndFullscreenStack()"); - synchronized (this) { - long ident = Binder.clearCallingIdentity(); - try { - final ActivityStack fullscreenStack = mStackSupervisor.getStack( - FULLSCREEN_WORKSPACE_STACK_ID); - final TaskRecord topTask = fullscreenStack != null ? fullscreenStack.topTask() - : null; - final ActivityStack dockedStack = mStackSupervisor.getStack(DOCKED_STACK_ID); - final ArrayList<TaskRecord> tasks = dockedStack != null ? dockedStack.getAllTasks() - : null; - if (topTask == null || tasks == null || tasks.size() == 0) { - Slog.w(TAG, - "Unable to swap tasks, either docked or fullscreen stack is empty."); - return; - } - - // TODO: App transition - mWindowManager.prepareAppTransition(TRANSIT_ACTIVITY_RELAUNCH, false); - - // Defer the resume until we move all the docked tasks to the fullscreen stack below - topTask.reparent(DOCKED_STACK_ID, ON_TOP, REPARENT_KEEP_STACK_AT_FRONT, ANIMATE, - DEFER_RESUME, "swapDockedAndFullscreenStack - DOCKED_STACK"); - final int size = tasks.size(); - for (int i = 0; i < size; i++) { - final int id = tasks.get(i).taskId; - if (id == topTask.taskId) { - continue; - } - - // Defer the resume until after all the tasks have been moved - tasks.get(i).reparent(FULLSCREEN_WORKSPACE_STACK_ID, ON_TOP, - REPARENT_KEEP_STACK_AT_FRONT, ANIMATE, DEFER_RESUME, - "swapDockedAndFullscreenStack - FULLSCREEN_STACK"); - } - - // Because we deferred the resume to avoid conflicts with stack switches while - // resuming, we need to do it after all the tasks are moved. - mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); - mStackSupervisor.resumeFocusedStackTopActivityLocked(); - - mWindowManager.executeAppTransition(); - } finally { - Binder.restoreCallingIdentity(ident); - } - } - } - /** * Moves the input task to the docked stack. * @@ -10844,7 +10794,6 @@ public class ActivityManagerService extends IActivityManager.Stub @Override public void updateLockTaskPackages(int userId, String[] packages) { - // TODO: move this into LockTaskController final int callingUid = Binder.getCallingUid(); if (callingUid != 0 && callingUid != SYSTEM_UID) { enforceCallingPermission(android.Manifest.permission.UPDATE_LOCK_TASK_PACKAGES, @@ -10853,8 +10802,7 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (this) { if (DEBUG_LOCKTASK) Slog.w(TAG_LOCKTASK, "Whitelisting " + userId + ":" + Arrays.toString(packages)); - mLockTaskPackages.put(userId, packages); - mLockTaskController.onLockTaskPackagesUpdated(); + mLockTaskController.updateLockTaskPackages(userId, packages); } } @@ -12035,7 +11983,7 @@ public class ActivityManagerService extends IActivityManager.Stub //mUsageStatsService.monitorPackages(); } - private void startPersistentApps(int matchFlags) { + void startPersistentApps(int matchFlags) { if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL) return; synchronized (this) { @@ -12056,7 +12004,7 @@ public class ActivityManagerService extends IActivityManager.Stub * When a user is unlocked, we need to install encryption-unaware providers * belonging to any running apps. */ - private void installEncryptionUnawareProviders(int userId) { + void installEncryptionUnawareProviders(int userId) { // We're only interested in providers that are encryption unaware, and // we don't care about uninstalled apps, since there's no way they're // running at this point. @@ -12361,19 +12309,14 @@ public class ActivityManagerService extends IActivityManager.Stub void onWakefulnessChanged(int wakefulness) { synchronized(this) { + boolean wasAwake = mWakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE; + boolean isAwake = wakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE; mWakefulness = wakefulness; - // Also update state in a special way for running foreground services UI. - switch (mWakefulness) { - case PowerManagerInternal.WAKEFULNESS_ASLEEP: - case PowerManagerInternal.WAKEFULNESS_DREAMING: - case PowerManagerInternal.WAKEFULNESS_DOZING: - mServices.updateScreenStateLocked(false /* screenOn */); - break; - case PowerManagerInternal.WAKEFULNESS_AWAKE: - default: - mServices.updateScreenStateLocked(true /* screenOn */); - break; + if (wasAwake != isAwake) { + // Also update state in a special way for running foreground services UI. + mServices.updateScreenStateLocked(isAwake); + sendNotifyVrManagerOfSleepState(!isAwake); } } } @@ -12409,7 +12352,6 @@ public class ActivityManagerService extends IActivityManager.Stub } mStackSupervisor.applySleepTokensLocked(true /* applyToStacks */); if (wasSleeping) { - sendNotifyVrManagerOfSleepState(false); updateOomAdjLocked(); } } else if (!mSleeping && shouldSleep) { @@ -12419,7 +12361,6 @@ public class ActivityManagerService extends IActivityManager.Stub } mTopProcessState = ActivityManager.PROCESS_STATE_TOP_SLEEPING; mStackSupervisor.goingToSleepLocked(); - sendNotifyVrManagerOfSleepState(true); updateOomAdjLocked(); } } @@ -12513,7 +12454,7 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public void setLockScreenShown(boolean showing) { + public void setLockScreenShown(boolean showing, int secondaryDisplayShowing) { if (checkCallingPermission(android.Manifest.permission.DEVICE_POWER) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Requires permission " @@ -12523,7 +12464,7 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized(this) { long ident = Binder.clearCallingIdentity(); try { - mKeyguardController.setKeyguardShown(showing); + mKeyguardController.setKeyguardShown(showing, secondaryDisplayShowing); } finally { Binder.restoreCallingIdentity(ident); } @@ -12955,7 +12896,7 @@ public class ActivityManagerService extends IActivityManager.Stub int userId; synchronized (this) { final ActivityStack focusedStack = getFocusedStack(); - if (focusedStack == null || focusedStack.isAssistantStack()) { + if (focusedStack == null || focusedStack.isActivityTypeAssistant()) { return false; } @@ -13060,7 +13001,7 @@ public class ActivityManagerService extends IActivityManager.Stub pae = new PendingAssistExtras(activity, extras, intent, hint, receiver, receiverExtras, userHandle); - pae.isHome = activity.isHomeActivity(); + pae.isHome = activity.isActivityTypeHome(); // Increment the sessionId if necessary if (newSessionId) { @@ -13129,7 +13070,6 @@ public class ActivityManagerService extends IActivityManager.Stub return; } } - // We are now ready to launch the assist activity. IResultReceiver sendReceiver = null; Bundle sendBundle = null; @@ -13159,17 +13099,24 @@ public class ActivityManagerService extends IActivityManager.Stub return; } - long ident = Binder.clearCallingIdentity(); + final long ident = Binder.clearCallingIdentity(); try { - pae.intent.replaceExtras(pae.extras); - pae.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_SINGLE_TOP - | Intent.FLAG_ACTIVITY_CLEAR_TOP); - closeSystemDialogs("assist"); - try { - mContext.startActivityAsUser(pae.intent, new UserHandle(pae.userHandle)); - } catch (ActivityNotFoundException e) { - Slog.w(TAG, "No activity to handle assist action.", e); + if (TextUtils.equals(pae.intent.getAction(), + android.service.voice.VoiceInteractionService.SERVICE_INTERFACE)) { + pae.intent.putExtras(pae.extras); + mContext.startServiceAsUser(pae.intent, new UserHandle(pae.userHandle)); + } else { + pae.intent.replaceExtras(pae.extras); + pae.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK + | Intent.FLAG_ACTIVITY_SINGLE_TOP + | Intent.FLAG_ACTIVITY_CLEAR_TOP); + closeSystemDialogs("assist"); + + try { + mContext.startActivityAsUser(pae.intent, new UserHandle(pae.userHandle)); + } catch (ActivityNotFoundException e) { + Slog.w(TAG, "No activity to handle assist action.", e); + } } } finally { Binder.restoreCallingIdentity(ident); @@ -13287,7 +13234,7 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (this) { final ActivityRecord r = ActivityRecord.isInStackLocked(token); if (r != null) { - final ActivityOptions activityOptions = r.pendingOptions; + final ActivityOptions activityOptions = r.takeOptionsLocked(); return activityOptions == null ? null : activityOptions.toBundle(); } return null; @@ -13360,7 +13307,7 @@ public class ActivityManagerService extends IActivityManager.Stub /** * Schedule the given thread a normal scheduling priority. * - * @param newTid the tid of the thread to adjust the scheduling of. + * @param tid the tid of the thread to adjust the scheduling of. * @param suppressLogs {@code true} if any error logging should be disabled. * * @return {@code true} if this succeeded. @@ -13373,6 +13320,10 @@ public class ActivityManagerService extends IActivityManager.Stub if (!suppressLogs) { Slog.w(TAG, "Failed to set scheduling policy, thread does not exist:\n" + e); } + } catch (SecurityException e) { + if (!suppressLogs) { + Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e); + } } return false; } @@ -13380,7 +13331,7 @@ public class ActivityManagerService extends IActivityManager.Stub /** * Schedule the given thread an FIFO scheduling priority. * - * @param newTid the tid of the thread to adjust the scheduling of. + * @param tid the tid of the thread to adjust the scheduling of. * @param suppressLogs {@code true} if any error logging should be disabled. * * @return {@code true} if this succeeded. @@ -13393,6 +13344,10 @@ public class ActivityManagerService extends IActivityManager.Stub if (!suppressLogs) { Slog.w(TAG, "Failed to set scheduling policy, thread does not exist:\n" + e); } + } catch (SecurityException e) { + if (!suppressLogs) { + Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e); + } } return false; } @@ -13930,10 +13885,10 @@ public class ActivityManagerService extends IActivityManager.Stub mContext.getPackageManager().hasSystemFeature(FEATURE_FREEFORM_WINDOW_MANAGEMENT) || Settings.Global.getInt( resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0; - final boolean supportsPictureInPicture = - mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); final boolean supportsMultiWindow = ActivityManager.supportsMultiWindow(mContext); + final boolean supportsPictureInPicture = supportsMultiWindow && + mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); final boolean supportsSplitScreenMultiWindow = ActivityManager.supportsSplitScreenMultiWindow(mContext); final boolean supportsMultiDisplay = mContext.getPackageManager() @@ -14891,6 +14846,13 @@ public class ActivityManagerService extends IActivityManager.Stub @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + PriorityDump.dump(mPriorityDumper, fd, pw, args); + } + + /** + * Wrapper function to print out debug data filtered by specified arguments. + */ + private void doDump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return; boolean dumpAll = false; @@ -14899,6 +14861,7 @@ public class ActivityManagerService extends IActivityManager.Stub boolean dumpCheckinFormat = false; boolean dumpVisibleStacksOnly = false; boolean dumpFocusedStackOnly = false; + boolean useProto = false; String dumpPackage = null; int opti = 0; @@ -14932,12 +14895,26 @@ public class ActivityManagerService extends IActivityManager.Stub } else if ("-h".equals(opt)) { ActivityManagerShellCommand.dumpHelp(pw, true); return; + } else if ("--proto".equals(opt)) { + useProto = true; } else { pw.println("Unknown argument: " + opt + "; use -h for help"); } } long origId = Binder.clearCallingIdentity(); + + if (useProto) { + //TODO: Options when dumping proto + final ProtoOutputStream proto = new ProtoOutputStream(fd); + synchronized (this) { + writeActivitiesToProtoLocked(proto); + } + proto.flush(); + Binder.restoreCallingIdentity(origId); + return; + } + boolean more = false; // Is the caller requesting to dump a particular piece of data? if (opti < args.length) { @@ -15281,6 +15258,10 @@ public class ActivityManagerService extends IActivityManager.Stub Binder.restoreCallingIdentity(origId); } + private void writeActivitiesToProtoLocked(ProtoOutputStream proto) { + mStackSupervisor.writeToProto(proto, ACTIVITIES); + } + private void dumpLastANRLocked(PrintWriter pw) { pw.println("ACTIVITY MANAGER LAST ANR (dumpsys activity lastanr)"); if (mLastANRState == null) { @@ -21874,10 +21855,12 @@ public class ActivityManagerService extends IActivityManager.Stub int changes = 0; if (app.curAdj != app.setAdj) { - ProcessList.setOomAdj(app.pid, app.info.uid, app.curAdj); - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, - "Set " + app.pid + " " + app.processName + " adj " + app.curAdj + ": " - + app.adjType); + ProcessList.setOomAdj(app.pid, app.uid, app.curAdj); + if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.info.uid) { + String msg = "Set " + app.pid + " " + app.processName + " adj " + + app.curAdj + ": " + app.adjType; + reportOomAdjMessageLocked(TAG_OOM_ADJ, msg); + } app.setAdj = app.curAdj; app.verifiedAdj = ProcessList.INVALID_ADJ; } @@ -21885,9 +21868,11 @@ public class ActivityManagerService extends IActivityManager.Stub if (app.setSchedGroup != app.curSchedGroup) { int oldSchedGroup = app.setSchedGroup; app.setSchedGroup = app.curSchedGroup; - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, - "Setting sched group of " + app.processName - + " to " + app.curSchedGroup); + if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.uid) { + String msg = "Setting sched group of " + app.processName + + " to " + app.curSchedGroup; + reportOomAdjMessageLocked(TAG_OOM_ADJ, msg); + } if (app.waitingToKill != null && app.curReceivers.isEmpty() && app.setSchedGroup == ProcessList.SCHED_GROUP_BACKGROUND) { app.kill(app.waitingToKill, true); @@ -21946,13 +21931,21 @@ public class ActivityManagerService extends IActivityManager.Stub app.curSchedGroup != ProcessList.SCHED_GROUP_TOP_APP) { mVrController.onTopProcChangedLocked(app); if (mUseFifoUiScheduling) { - // Reset UI pipeline to SCHED_OTHER - setThreadScheduler(app.pid, SCHED_OTHER, 0); - setThreadPriority(app.pid, app.savedPriority); - if (app.renderThreadTid != 0) { - setThreadScheduler(app.renderThreadTid, - SCHED_OTHER, 0); - setThreadPriority(app.renderThreadTid, -4); + try { + // Reset UI pipeline to SCHED_OTHER + setThreadScheduler(app.pid, SCHED_OTHER, 0); + setThreadPriority(app.pid, app.savedPriority); + if (app.renderThreadTid != 0) { + setThreadScheduler(app.renderThreadTid, + SCHED_OTHER, 0); + setThreadPriority(app.renderThreadTid, -4); + } + } catch (IllegalArgumentException e) { + Slog.w(TAG, + "Failed to set scheduling policy, thread does not exist:\n" + + e); + } catch (SecurityException e) { + Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e); } } else { // Reset priority for top app UI and render threads @@ -22024,9 +22017,11 @@ public class ActivityManagerService extends IActivityManager.Stub "Not requesting PSS of " + app + ": next=" + (app.nextPssTime-now)); } if (app.setProcState != app.curProcState) { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, - "Proc state change of " + app.processName - + " to " + app.curProcState); + if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.uid) { + String msg = "Proc state change of " + app.processName + + " to " + app.curProcState; + reportOomAdjMessageLocked(TAG_OOM_ADJ, msg); + } boolean setImportant = app.setProcState < ActivityManager.PROCESS_STATE_SERVICE; boolean curImportant = app.curProcState < ActivityManager.PROCESS_STATE_SERVICE; if (setImportant && !curImportant) { @@ -22752,6 +22747,8 @@ public class ActivityManagerService extends IActivityManager.Stub requestPssAllProcsLocked(now, false, mProcessStats.isMemFactorLowered()); } + ArrayList<UidRecord> becameIdle = null; + // Update from any uid changes. if (mLocalPowerManager != null) { mLocalPowerManager.startUidChanges(); @@ -22784,6 +22781,10 @@ public class ActivityManagerService extends IActivityManager.Stub } if (uidRec.idle && !uidRec.setIdle) { uidChange = UidRecord.CHANGE_IDLE; + if (becameIdle == null) { + becameIdle = new ArrayList<>(); + } + becameIdle.add(uidRec); } } else { if (uidRec.idle) { @@ -22815,6 +22816,14 @@ public class ActivityManagerService extends IActivityManager.Stub mLocalPowerManager.finishUidChanges(); } + if (becameIdle != null) { + // If we have any new uids that became idle this time, we need to make sure + // they aren't left with running services. + for (int i = becameIdle.size() - 1; i >= 0; i--) { + mServices.stopInBackgroundLocked(becameIdle.get(i).uid); + } + } + if (mProcessStats.shouldWriteNowLocked(now)) { mHandler.post(new Runnable() { @Override public void run() { @@ -23486,54 +23495,7 @@ public class ActivityManagerService extends IActivityManager.Stub @Override public boolean switchUser(final int targetUserId) { - enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, targetUserId); - int currentUserId; - UserInfo targetUserInfo; - synchronized (this) { - currentUserId = mUserController.getCurrentUserIdLocked(); - targetUserInfo = mUserController.getUserInfo(targetUserId); - if (targetUserId == currentUserId) { - Slog.i(TAG, "user #" + targetUserId + " is already the current user"); - return true; - } - if (targetUserInfo == null) { - Slog.w(TAG, "No user info for user #" + targetUserId); - return false; - } - if (!targetUserInfo.isDemo() && UserManager.isDeviceInDemoMode(mContext)) { - Slog.w(TAG, "Cannot switch to non-demo user #" + targetUserId - + " when device is in demo mode"); - return false; - } - if (!targetUserInfo.supportsSwitchTo()) { - Slog.w(TAG, "Cannot switch to User #" + targetUserId + ": not supported"); - return false; - } - if (targetUserInfo.isManagedProfile()) { - Slog.w(TAG, "Cannot switch to User #" + targetUserId + ": not a full user"); - return false; - } - mUserController.setTargetUserIdLocked(targetUserId); - } - if (mUserController.mUserSwitchUiEnabled) { - UserInfo currentUserInfo = mUserController.getUserInfo(currentUserId); - Pair<UserInfo, UserInfo> userNames = new Pair<>(currentUserInfo, targetUserInfo); - mUiHandler.removeMessages(START_USER_SWITCH_UI_MSG); - mUiHandler.sendMessage(mHandler.obtainMessage( - START_USER_SWITCH_UI_MSG, userNames)); - } else { - mHandler.removeMessages(START_USER_SWITCH_FG_MSG); - mHandler.sendMessage(mHandler.obtainMessage( - START_USER_SWITCH_FG_MSG, targetUserId, 0)); - } - return true; - } - - void scheduleStartProfilesLocked() { - if (!mHandler.hasMessages(START_PROFILES_MSG)) { - mHandler.sendMessageDelayed(mHandler.obtainMessage(START_PROFILES_MSG), - DateUtils.SECOND_IN_MILLIS); - } + return mUserController.switchUser(targetUserId); } @Override @@ -23945,7 +23907,7 @@ public class ActivityManagerService extends IActivityManager.Stub @Override public void notifyKeyguardTrustedChanged() { synchronized (ActivityManagerService.this) { - if (mKeyguardController.isKeyguardShowing()) { + if (mKeyguardController.isKeyguardShowing(DEFAULT_DISPLAY)) { mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); } } diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index 403e01d5ae44..5e0724e94b41 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -55,7 +55,6 @@ import android.text.TextUtils; import android.util.ArrayMap; import android.util.DebugUtils; import android.util.DisplayMetrics; -import android.view.IWindowManager; import com.android.internal.util.HexDump; import com.android.internal.util.Preconditions; @@ -76,6 +75,8 @@ import static android.app.ActivityManager.RESIZE_MODE_SYSTEM; import static android.app.ActivityManager.RESIZE_MODE_USER; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.INVALID_STACK_ID; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.view.Display.INVALID_DISPLAY; import static com.android.server.am.TaskRecord.INVALID_TASK_ID; @@ -116,7 +117,8 @@ final class ActivityManagerShellCommand extends ShellCommand { private boolean mStreaming; // Streaming the profiling output to a file. private String mAgent; // Agent to attach on startup. private int mDisplayId; - private int mStackId; + private int mWindowingMode; + private int mActivityType; private int mTaskId; private boolean mIsTaskOverlay; @@ -272,7 +274,8 @@ final class ActivityManagerShellCommand extends ShellCommand { mStreaming = false; mUserId = defUser; mDisplayId = INVALID_DISPLAY; - mStackId = INVALID_STACK_ID; + mWindowingMode = WINDOWING_MODE_UNDEFINED; + mActivityType = ACTIVITY_TYPE_UNDEFINED; mTaskId = INVALID_TASK_ID; mIsTaskOverlay = false; @@ -309,8 +312,10 @@ final class ActivityManagerShellCommand extends ShellCommand { mReceiverPermission = getNextArgRequired(); } else if (opt.equals("--display")) { mDisplayId = Integer.parseInt(getNextArgRequired()); - } else if (opt.equals("--stack")) { - mStackId = Integer.parseInt(getNextArgRequired()); + } else if (opt.equals("--windowingMode")) { + mWindowingMode = Integer.parseInt(getNextArgRequired()); + } else if (opt.equals("--activityType")) { + mActivityType = Integer.parseInt(getNextArgRequired()); } else if (opt.equals("--task")) { mTaskId = Integer.parseInt(getNextArgRequired()); } else if (opt.equals("--task-overlay")) { @@ -397,9 +402,17 @@ final class ActivityManagerShellCommand extends ShellCommand { options = ActivityOptions.makeBasic(); options.setLaunchDisplayId(mDisplayId); } - if (mStackId != INVALID_STACK_ID) { - options = ActivityOptions.makeBasic(); - options.setLaunchStackId(mStackId); + if (mWindowingMode != WINDOWING_MODE_UNDEFINED) { + if (options == null) { + options = ActivityOptions.makeBasic(); + } + options.setLaunchWindowingMode(mWindowingMode); + } + if (mActivityType != ACTIVITY_TYPE_UNDEFINED) { + if (options == null) { + options = ActivityOptions.makeBasic(); + } + options.setLaunchActivityType(mActivityType); } if (mTaskId != INVALID_TASK_ID) { options = ActivityOptions.makeBasic(); @@ -1296,19 +1309,24 @@ final class ActivityManagerShellCommand extends ShellCommand { return 0; } - static final class MyUidObserver extends IUidObserver.Stub { + static final class MyUidObserver extends IUidObserver.Stub + implements ActivityManagerService.OomAdjObserver { final IActivityManager mInterface; + final ActivityManagerService mInternal; final PrintWriter mPw; final InputStream mInput; + final int mUid; static final int STATE_NORMAL = 0; int mState; - MyUidObserver(IActivityManager iam, PrintWriter pw, InputStream input) { - mInterface = iam; + MyUidObserver(ActivityManagerService service, PrintWriter pw, InputStream input, int uid) { + mInterface = service; + mInternal = service; mPw = pw; mInput = input; + mUid = uid; } @Override @@ -1367,6 +1385,15 @@ final class ActivityManagerShellCommand extends ShellCommand { } } + @Override + public void onOomAdjMessage(String msg) { + synchronized (this) { + mPw.print("# "); + mPw.println(msg); + mPw.flush(); + } + } + void printMessageForState() { switch (mState) { case STATE_NORMAL: @@ -1385,6 +1412,9 @@ final class ActivityManagerShellCommand extends ShellCommand { | ActivityManager.UID_OBSERVER_GONE | ActivityManager.UID_OBSERVER_PROCSTATE | ActivityManager.UID_OBSERVER_IDLE | ActivityManager.UID_OBSERVER_CACHED, ActivityManager.PROCESS_STATE_UNKNOWN, null); + if (mUid >= 0) { + mInternal.setOomAdjObserver(mUid, this); + } mState = STATE_NORMAL; InputStreamReader converter = new InputStreamReader(mInput); @@ -1414,6 +1444,9 @@ final class ActivityManagerShellCommand extends ShellCommand { e.printStackTrace(mPw); mPw.flush(); } finally { + if (mUid >= 0) { + mInternal.clearOomAdjObserver(); + } mInterface.unregisterUidObserver(this); } } @@ -1421,12 +1454,18 @@ final class ActivityManagerShellCommand extends ShellCommand { int runWatchUids(PrintWriter pw) throws RemoteException { String opt; + int uid = -1; while ((opt=getNextOption()) != null) { - getErrPrintWriter().println("Error: Unknown option: " + opt); - return -1; + if (opt.equals("--oom")) { + uid = Integer.parseInt(getNextArgRequired()); + } else { + getErrPrintWriter().println("Error: Unknown option: " + opt); + return -1; + + } } - MyUidObserver controller = new MyUidObserver(mInterface, pw, getRawInputStream()); + MyUidObserver controller = new MyUidObserver(mInternal, pw, getRawInputStream(), uid); controller.run(); return 0; } @@ -1858,8 +1897,12 @@ final class ActivityManagerShellCommand extends ShellCommand { level = ComponentCallbacks2.TRIM_MEMORY_COMPLETE; break; default: - getErrPrintWriter().println("Error: Unknown level option: " + levelArg); - return -1; + try { + level = Integer.parseInt(levelArg); + } catch (NumberFormatException e) { + getErrPrintWriter().println("Error: Unknown level option: " + levelArg); + return -1; + } } if (!mInterface.setProcessMemoryTrimLevel(proc, userId, level)) { getErrPrintWriter().println("Unknown error: failed to set trim level"); @@ -2632,6 +2675,7 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" -p: limit output to given package."); pw.println(" --checkin: output checkin format, resetting data."); pw.println(" --C: output checkin format, not resetting data."); + pw.println(" --proto: output dump in protocol buffer format."); } else { pw.println("Activity manager (activity) commands:"); pw.println(" help"); @@ -2656,7 +2700,8 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" --track-allocation: enable tracking of object allocations"); pw.println(" --user <USER_ID> | current: Specify which user to run as; if not"); pw.println(" specified then run as the current user."); - pw.println(" --stack <STACK_ID>: Specify into which stack should the activity be put."); + pw.println(" --windowingMode <WINDOWING_MODE>: The windowing mode to launch the activity into."); + pw.println(" --activityType <ACTIVITY_TYPE>: The activity type to launch the activity as."); pw.println(" start-service [--user <USER_ID> | current] <INTENT>"); pw.println(" Start a Service. Options are:"); pw.println(" --user <USER_ID> | current: Specify which user to run as; if not"); @@ -2744,8 +2789,9 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" monitor [--gdb <port>]"); pw.println(" Start monitoring for crashes or ANRs."); pw.println(" --gdb: start gdbserv on the given port at crash/ANR"); - pw.println(" watch-uids [--gdb <port>]"); + pw.println(" watch-uids [--oom <uid>"); pw.println(" Start watching for and reporting uid state changes."); + pw.println(" --oom: specify a uid for which to report detailed change messages."); pw.println(" hang [--allow-restart]"); pw.println(" Hang the system."); pw.println(" --allow-restart: allow watchdog to perform normal system restart"); @@ -2804,7 +2850,7 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" Returns the inactive state of an app."); pw.println(" send-trim-memory [--user <USER_ID>] <PROCESS>"); pw.println(" [HIDDEN|RUNNING_MODERATE|BACKGROUND|RUNNING_LOW|MODERATE|RUNNING_CRITICAL|COMPLETE]"); - pw.println(" Send a memory trim event to a <PROCESS>."); + pw.println(" Send a memory trim event to a <PROCESS>. May also supply a raw trim int level."); pw.println(" display [COMMAND] [...]: sub-commands for operating on displays."); pw.println(" move-stack <STACK_ID> <DISPLAY_ID>"); pw.println(" Move <STACK_ID> from its current display to <DISPLAY_ID>."); diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java index aae98a6e5013..0c8321d5b5c8 100644 --- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java @@ -6,10 +6,12 @@ import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManagerInternal.APP_TRANSITION_TIMEOUT; -import static android.app.WindowConfiguration.WINDOWING_MODE_DOCKED; +import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; +import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_BIND_APPLICATION_DELAY_MS; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_CALLING_PACKAGE_NAME; @@ -111,31 +113,34 @@ class ActivityMetricsLogger { } mLastLogTimeSecs = now; - ActivityStack stack = mSupervisor.getStack(DOCKED_STACK_ID); - if (stack != null && stack.shouldBeVisible(null) != STACK_INVISIBLE) { - mWindowState = WINDOW_STATE_SIDE_BY_SIDE; + mWindowState = WINDOW_STATE_INVALID; + ActivityStack stack = mSupervisor.getFocusedStack(); + if (stack.isActivityTypeAssistant()) { + mWindowState = WINDOW_STATE_ASSISTANT; return; } - mWindowState = WINDOW_STATE_INVALID; - stack = mSupervisor.getFocusedStack(); + int windowingMode = stack.getWindowingMode(); if (windowingMode == WINDOWING_MODE_PINNED) { stack = mSupervisor.findStackBehind(stack); windowingMode = stack.getWindowingMode(); } - if (StackId.isHomeOrRecentsStack(stack.mStackId) - || windowingMode == WINDOWING_MODE_FULLSCREEN) { - mWindowState = WINDOW_STATE_STANDARD; - } else if (windowingMode == WINDOWING_MODE_DOCKED) { - Slog.wtf(TAG, "Docked stack shouldn't be the focused stack, because it reported not" - + " being visible."); - mWindowState = WINDOW_STATE_INVALID; - } else if (windowingMode == WINDOWING_MODE_FREEFORM) { - mWindowState = WINDOW_STATE_FREEFORM; - } else if (stack.mStackId == ASSISTANT_STACK_ID) { - mWindowState = WINDOW_STATE_ASSISTANT; - } else if (StackId.isStaticStack(stack.mStackId)) { - throw new IllegalStateException("Unknown stack=" + stack); + switch (windowingMode) { + case WINDOWING_MODE_FULLSCREEN: + mWindowState = WINDOW_STATE_STANDARD; + break; + case WINDOWING_MODE_SPLIT_SCREEN_PRIMARY: + case WINDOWING_MODE_SPLIT_SCREEN_SECONDARY: + mWindowState = WINDOW_STATE_SIDE_BY_SIDE; + break; + case WINDOW_STATE_FREEFORM: + mWindowState = WINDOW_STATE_FREEFORM; + break; + default: + if (windowingMode != WINDOWING_MODE_UNDEFINED) { + throw new IllegalStateException("Unknown windowing mode for stack=" + stack + + " windowingMode=" + windowingMode); + } } } diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 74a52e26ddd3..142c97ba0e7b 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -16,13 +16,9 @@ package com.android.server.am; -import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS; import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; -import static android.app.ActivityManager.StackId; -import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; -import static android.app.ActivityManager.StackId.HOME_STACK_ID; import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.app.ActivityManager.TaskDescription.ATTR_TASKDESCRIPTION_PREFIX; @@ -36,6 +32,11 @@ import static android.app.ActivityOptions.ANIM_THUMBNAIL_SCALE_DOWN; import static android.app.ActivityOptions.ANIM_THUMBNAIL_SCALE_UP; import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.OP_PICTURE_IN_PICTURE; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.activityTypeToString; import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.CATEGORY_HOME; import static android.content.Intent.CATEGORY_LAUNCHER; @@ -48,11 +49,12 @@ import static android.content.pm.ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; import static android.content.pm.ActivityInfo.CONFIG_UI_MODE; import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION; import static android.content.pm.ActivityInfo.FLAG_ALWAYS_FOCUSABLE; -import static android.content.pm.ActivityInfo.FLAG_SHOW_WHEN_LOCKED; import static android.content.pm.ActivityInfo.FLAG_EXCLUDE_FROM_RECENTS; import static android.content.pm.ActivityInfo.FLAG_IMMERSIVE; import static android.content.pm.ActivityInfo.FLAG_MULTIPROCESS; +import static android.content.pm.ActivityInfo.FLAG_NO_HISTORY; import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS; +import static android.content.pm.ActivityInfo.FLAG_SHOW_WHEN_LOCKED; import static android.content.pm.ActivityInfo.FLAG_STATE_NOT_NEEDED; import static android.content.pm.ActivityInfo.FLAG_TURN_SCREEN_ON; import static android.content.pm.ActivityInfo.LAUNCH_MULTIPLE; @@ -65,7 +67,6 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; -import static android.content.pm.ActivityInfo.FLAG_NO_HISTORY; import static android.content.pm.ActivityInfo.isFixedOrientationLandscape; import static android.content.pm.ActivityInfo.isFixedOrientationPortrait; import static android.content.res.Configuration.EMPTY; @@ -79,24 +80,18 @@ import static android.os.Build.VERSION_CODES.O_MR1; import static android.os.Process.SYSTEM_UID; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; import static android.view.WindowManagerPolicy.NAV_BAR_LEFT; - import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SAVED_STATE; -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SCREENSHOTS; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_STATES; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SWITCH; -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_THUMBNAILS; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_VISIBILITY; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_CONFIGURATION; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SAVED_STATE; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SCREENSHOTS; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_STATES; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SWITCH; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_THUMBNAILS; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILITY; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; -import static com.android.server.am.ActivityManagerService.TAKE_FULLSCREEN_SCREENSHOTS; import static com.android.server.am.ActivityStack.ActivityState.DESTROYED; import static com.android.server.am.ActivityStack.ActivityState.DESTROYING; import static com.android.server.am.ActivityStack.ActivityState.INITIALIZING; @@ -117,6 +112,16 @@ import static com.android.server.am.EventLogTags.AM_RELAUNCH_RESUME_ACTIVITY; import static com.android.server.am.TaskPersister.DEBUG; import static com.android.server.am.TaskPersister.IMAGE_EXTENSION; import static com.android.server.am.TaskRecord.INVALID_TASK_ID; +import static com.android.server.am.proto.ActivityRecordProto.CONFIGURATION_CONTAINER; +import static com.android.server.am.proto.ActivityRecordProto.FRONT_OF_TASK; +import static com.android.server.am.proto.ActivityRecordProto.IDENTIFIER; +import static com.android.server.am.proto.ActivityRecordProto.PROC_ID; +import static com.android.server.am.proto.ActivityRecordProto.STATE; +import static com.android.server.am.proto.ActivityRecordProto.VISIBLE; +import static com.android.server.wm.proto.IdentifierProto.HASH_CODE; +import static com.android.server.wm.proto.IdentifierProto.TITLE; +import static com.android.server.wm.proto.IdentifierProto.USER_ID; + import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; import static org.xmlpull.v1.XmlPullParser.END_TAG; import static org.xmlpull.v1.XmlPullParser.START_TAG; @@ -154,6 +159,7 @@ import android.util.Log; import android.util.MergedConfiguration; import android.util.Slog; import android.util.TimeUtils; +import android.util.proto.ProtoOutputStream; import android.view.AppTransitionAnimationSpec; import android.view.IAppTransitionAnimationSpecsFuture; import android.view.IApplicationToken; @@ -192,10 +198,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityRecord" : TAG_AM; private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION; private static final String TAG_SAVED_STATE = TAG + POSTFIX_SAVED_STATE; - private static final String TAG_SCREENSHOTS = TAG + POSTFIX_SCREENSHOTS; private static final String TAG_STATES = TAG + POSTFIX_STATES; private static final String TAG_SWITCH = TAG + POSTFIX_SWITCH; - private static final String TAG_THUMBNAILS = TAG + POSTFIX_THUMBNAILS; private static final String TAG_VISIBILITY = TAG + POSTFIX_VISIBILITY; private static final boolean SHOW_ACTIVITY_START_TIME = true; @@ -233,12 +237,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo private final boolean componentSpecified; // did caller specify an explicit component? final boolean rootVoiceInteraction; // was this the root activity of a voice interaction? - static final int APPLICATION_ACTIVITY_TYPE = 0; - static final int HOME_ACTIVITY_TYPE = 1; - static final int RECENTS_ACTIVITY_TYPE = 2; - static final int ASSISTANT_ACTIVITY_TYPE = 3; - int mActivityType; - private CharSequence nonLocalizedLabel; // the label information from the package mgr. private int labelRes; // the label information from the package mgr. private int icon; // resource identifier of activity's icon. @@ -300,9 +298,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo boolean frozenBeforeDestroy;// has been frozen but not yet destroyed. boolean immersive; // immersive mode (don't interrupt if possible) boolean forceNewConfig; // force re-create with new config next time - boolean supportsPictureInPictureWhilePausing; // This flag is set by the system to indicate - // that the activity can enter picture in picture while pausing (ie. only when another - // task is brought to front or started) + boolean supportsEnterPipOnTaskSwitch; // This flag is set by the system to indicate that the + // activity can enter picture in picture while pausing (only when switching to another task) PictureInPictureParams pictureInPictureArgs = new PictureInPictureParams.Builder().build(); // The PiP params used when deferring the entering of picture-in-picture. int launchCount; // count of launches since last state @@ -320,8 +317,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo int mStartingWindowState = STARTING_WINDOW_NOT_SHOWN; boolean mTaskOverlay = false; // Task is always on-top of other activities in the task. - boolean mUpdateTaskThumbnailWhenHidden; - TaskDescription taskDescription; // the recents information for this activity boolean mLaunchTaskBehind; // this activity is actively being launched with // ActivityOptions.setLaunchTaskBehind, will be cleared once launch is completed. @@ -398,7 +393,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } pw.print(prefix); pw.print("stateNotNeeded="); pw.print(stateNotNeeded); pw.print(" componentSpecified="); pw.print(componentSpecified); - pw.print(" mActivityType="); pw.println(mActivityType); + pw.print(" mActivityType="); pw.println( + activityTypeToString(getActivityType())); if (rootVoiceInteraction) { pw.print(prefix); pw.print("rootVoiceInteraction="); pw.println(rootVoiceInteraction); } @@ -505,7 +501,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo pw.print(prefix); pw.print("frozenBeforeDestroy="); pw.print(frozenBeforeDestroy); pw.print(" forceNewConfig="); pw.println(forceNewConfig); pw.print(prefix); pw.print("mActivityType="); - pw.println(activityTypeToString(mActivityType)); + pw.println(activityTypeToString(getActivityType())); if (requestedVrComponent != null) { pw.print(prefix); pw.print("requestedVrComponent="); @@ -547,8 +543,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo + " mLastReportedPictureInPictureMode=" + mLastReportedPictureInPictureMode); if (info.supportsPictureInPicture()) { pw.println(prefix + "supportsPictureInPicture=" + info.supportsPictureInPicture()); - pw.println(prefix + "supportsPictureInPictureWhilePausing: " - + supportsPictureInPictureWhilePausing); + pw.println(prefix + "supportsEnterPipOnTaskSwitch: " + + supportsEnterPipOnTaskSwitch); } if (info.maxAspectRatio != 0) { pw.println(prefix + "maxAspectRatio=" + info.maxAspectRatio); @@ -662,14 +658,14 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } } - void updatePictureInPictureMode(Rect targetStackBounds) { + void updatePictureInPictureMode(Rect targetStackBounds, boolean forceUpdate) { if (task == null || task.getStack() == null || app == null || app.thread == null) { return; } final boolean inPictureInPictureMode = (task.getStackId() == PINNED_STACK_ID) && (targetStackBounds != null); - if (inPictureInPictureMode != mLastReportedPictureInPictureMode) { + if (inPictureInPictureMode != mLastReportedPictureInPictureMode || forceUpdate) { // Picture-in-picture mode changes also trigger a multi-window mode change as well, so // update that here in order mLastReportedPictureInPictureMode = inPictureInPictureMode; @@ -684,8 +680,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo private void schedulePictureInPictureModeChanged(Configuration overrideConfig) { try { app.thread.schedulePictureInPictureModeChanged(appToken, - mLastReportedPictureInPictureMode, - overrideConfig); + mLastReportedPictureInPictureMode, overrideConfig); } catch (Exception e) { // If process died, no one cares. } @@ -947,8 +942,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo (info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0, info.configChanges, task.voiceSession != null, mLaunchTaskBehind, isAlwaysFocusable(), appInfo.targetSdkVersion, mRotationAnimationHint, - ActivityManagerService.getInputDispatchingTimeoutLocked(this) * 1000000L, - getOverrideConfiguration(), mBounds); + ActivityManagerService.getInputDispatchingTimeoutLocked(this) * 1000000L, mBounds); task.addActivityToTop(this); @@ -1038,10 +1032,11 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo private void setActivityType(boolean componentSpecified, int launchedFromUid, Intent intent, ActivityOptions options, ActivityRecord sourceRecord) { + int activityType = ACTIVITY_TYPE_UNDEFINED; if ((!componentSpecified || canLaunchHomeActivity(launchedFromUid, sourceRecord)) && isHomeIntent(intent) && !isResolverActivity()) { // This sure looks like a home activity! - mActivityType = HOME_ACTIVITY_TYPE; + activityType = ACTIVITY_TYPE_HOME; if (info.resizeMode == RESIZE_MODE_FORCE_RESIZEABLE || info.resizeMode == RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION) { @@ -1049,13 +1044,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo info.resizeMode = RESIZE_MODE_UNRESIZEABLE; } } else if (realActivity.getClassName().contains(RECENTS_PACKAGE_NAME)) { - mActivityType = RECENTS_ACTIVITY_TYPE; - } else if (options != null && options.getLaunchStackId() == ASSISTANT_STACK_ID + activityType = ACTIVITY_TYPE_RECENTS; + } else if (options != null && options.getLaunchActivityType() == ACTIVITY_TYPE_ASSISTANT && canLaunchAssistActivity(launchedFromPackage)) { - mActivityType = ASSISTANT_ACTIVITY_TYPE; - } else { - mActivityType = APPLICATION_ACTIVITY_TYPE; + activityType = ACTIVITY_TYPE_ASSISTANT; } + setActivityType(activityType); } void setTaskToAffiliateWith(TaskRecord taskToAffiliateWith) { @@ -1106,18 +1100,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo return stack != null && stack.isInStackLocked(this) != null; } - boolean isHomeActivity() { - return mActivityType == HOME_ACTIVITY_TYPE; - } - - boolean isRecentsActivity() { - return mActivityType == RECENTS_ACTIVITY_TYPE; - } - - boolean isAssistantActivity() { - return mActivityType == ASSISTANT_ACTIVITY_TYPE; - } - boolean isPersistable() { return (info.persistableMode == PERSIST_ROOT_ONLY || info.persistableMode == PERSIST_ACROSS_REBOOTS) && @@ -1144,7 +1126,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo * @return whether this activity supports PiP multi-window and can be put in the pinned stack. */ boolean supportsPictureInPicture() { - return service.mSupportsPictureInPicture && !isHomeActivity() + return service.mSupportsPictureInPicture && isActivityTypeStandardOrUndefined() && info.supportsPictureInPicture(); } @@ -1170,7 +1152,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo * @return whether this activity supports non-PiP multi-window. */ private boolean supportsResizeableMultiWindow() { - return service.mSupportsMultiWindow && !isHomeActivity() + return service.mSupportsMultiWindow && !isActivityTypeHome() && (ActivityInfo.isResizeableMode(info.resizeMode) || service.mForceResizableActivities); } @@ -1182,8 +1164,15 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo * can be put a secondary screen. */ boolean canBeLaunchedOnDisplay(int displayId) { + final TaskRecord task = getTask(); + + // The resizeability of an Activity's parent task takes precendence over the ActivityInfo. + // This allows for a non resizable activity to be launched into a resizeable task. + final boolean resizeable = + task != null ? task.isResizeable() : supportsResizeableMultiWindow(); + return service.mStackSupervisor.canPlaceEntityOnDisplay(displayId, - supportsResizeableMultiWindow(), launchedFromPid, launchedFromUid, info); + resizeable, launchedFromPid, launchedFromUid, info); } /** @@ -1224,19 +1213,19 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo // When visible, allow entering PiP if the app is not locked. If it is over the // keyguard, then we will prompt to unlock in the caller before entering PiP. return !isCurrentAppLocked && - (supportsPictureInPictureWhilePausing || !beforeStopping); + (supportsEnterPipOnTaskSwitch || !beforeStopping); case PAUSING: case PAUSED: // When pausing, then only allow enter PiP as in the resume state, and in addition, // require that there is not an existing PiP activity and that the current system // state supports entering PiP return isNotLockedOrOnKeyguard && !hasPinnedStack - && supportsPictureInPictureWhilePausing; + && supportsEnterPipOnTaskSwitch; case STOPPING: // When stopping in a valid state, then only allow enter PiP as in the pause state. // Otherwise, fall through to throw an exception if the caller is trying to enter // PiP in an invalid stopping state. - if (supportsPictureInPictureWhilePausing) { + if (supportsEnterPipOnTaskSwitch) { return isNotLockedOrOnKeyguard && !hasPinnedStack; } default: @@ -1497,72 +1486,10 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } } - void updateThumbnailLocked(Bitmap newThumbnail, CharSequence description) { - if (newThumbnail != null) { - if (DEBUG_THUMBNAILS) Slog.i(TAG_THUMBNAILS, - "Setting thumbnail of " + this + " to " + newThumbnail); - boolean thumbnailUpdated = task.setLastThumbnailLocked(newThumbnail); - if (thumbnailUpdated && isPersistable()) { - service.notifyTaskPersisterLocked(task, false); - } - } + private void updateTaskDescription(CharSequence description) { task.lastDescription = description; } - final Bitmap screenshotActivityLocked() { - if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, "screenshotActivityLocked: " + this); - - if (ENABLE_TASK_SNAPSHOTS) { - // No need to screenshot if snapshots are enabled. - if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, - "\tSnapshots are enabled, abort taking screenshot"); - return null; - } - - if (noDisplay) { - if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, "\tNo display"); - return null; - } - - final ActivityStack stack = getStack(); - if (stack.isHomeOrRecentsStack()) { - // This is an optimization -- since we never show Home or Recents within Recents itself, - // we can just go ahead and skip taking the screenshot if this is the home stack. - if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, stack.getStackId() == HOME_STACK_ID ? - "\tHome stack" : "\tRecents stack"); - return null; - } - - int w = service.mThumbnailWidth; - int h = service.mThumbnailHeight; - - if (w <= 0) { - Slog.e(TAG, "\tInvalid thumbnail dimensions: " + w + "x" + h); - return null; - } - - if (stack.mStackId == DOCKED_STACK_ID && mStackSupervisor.mIsDockMinimized) { - // When the docked stack is minimized its app windows are cropped significantly so any - // screenshot taken will not display the apps contain. So, we avoid taking a screenshot - // in that case. - if (DEBUG_SCREENSHOTS) Slog.e(TAG, "\tIn minimized docked stack"); - return null; - } - - float scale = 0; - if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, "\tTaking screenshot"); - - // When this flag is set, we currently take the fullscreen screenshot of the activity but - // scaled to half the size. This gives us a "good-enough" fullscreen thumbnail to use within - // SystemUI while keeping memory usage low. - if (TAKE_FULLSCREEN_SCREENSHOTS) { - w = h = -1; - scale = service.mFullscreenThumbnailScale; - } - - return mWindowContainerController.screenshotApplications(getDisplayId(), w, h, scale); - } - void setDeferHidingClient(boolean deferHidingClient) { if (mDeferHidingClient == deferHidingClient) { return; @@ -1584,10 +1511,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo void setVisible(boolean newVisible) { visible = newVisible; mDeferHidingClient = !visible && mDeferHidingClient; - if (!visible && mUpdateTaskThumbnailWhenHidden) { - updateThumbnailLocked(screenshotActivityLocked(), null /* description */); - mUpdateTaskThumbnailWhenHidden = false; - } setVisibility(visible); mStackSupervisor.mAppVisibilitiesChangedSinceLastPause = true; } @@ -1597,7 +1520,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } void notifyUnknownVisibilityLaunched() { - mWindowContainerController.notifyUnknownVisibilityLaunched(); + + // No display activities never add a window, so there is no point in waiting them for + // relayout. + if (!noDisplay) { + mWindowContainerController.notifyUnknownVisibilityLaunched(); + } } /** @@ -1613,7 +1541,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo boolean isVisible = !behindFullscreenActivity || mLaunchTaskBehind; - if (service.mSupportsLeanbackOnly && isVisible && isRecentsActivity()) { + if (service.mSupportsLeanbackOnly && isVisible && isActivityTypeRecents()) { // On devices that support leanback only (Android TV), Recents activity can only be // visible if the home stack is the focused stack or we are in split-screen mode. isVisible = mStackSupervisor.getStack(DOCKED_STACK_ID) != null @@ -1691,7 +1619,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo newIntents = null; stopped = false; - if (isHomeActivity()) { + if (isActivityTypeHome()) { ProcessRecord app = task.mActivities.get(0).app; if (app != null && app != service.mHomeProcess) { service.mHomeProcess = app; @@ -1753,7 +1681,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo icicle = newIcicle; haveState = true; launchCount = 0; - updateThumbnailLocked(null /* newThumbnail */, description); + updateTaskDescription(description); } if (!stopped) { if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to STOPPED: " + this + " (stop complete)"); @@ -2221,7 +2149,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo config.getOverrideConfiguration()); } - void setLastReportedConfiguration(Configuration global, Configuration override) { + private void setLastReportedConfiguration(Configuration global, Configuration override) { mLastReportedConfiguration.setConfiguration(global, override); } @@ -2794,16 +2722,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo return r; } - private static String activityTypeToString(int type) { - switch (type) { - case APPLICATION_ACTIVITY_TYPE: return "APPLICATION_ACTIVITY_TYPE"; - case HOME_ACTIVITY_TYPE: return "HOME_ACTIVITY_TYPE"; - case RECENTS_ACTIVITY_TYPE: return "RECENTS_ACTIVITY_TYPE"; - case ASSISTANT_ACTIVITY_TYPE: return "ASSISTANT_ACTIVITY_TYPE"; - default: return Integer.toString(type); - } - } - private static boolean isInVrUiMode(Configuration config) { return (config.uiMode & UI_MODE_TYPE_MASK) == UI_MODE_TYPE_VR_HEADSET; } @@ -2866,4 +2784,25 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo stringName = sb.toString(); return toString(); } + + void writeIdentifierToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + proto.write(HASH_CODE, System.identityHashCode(this)); + proto.write(USER_ID, userId); + proto.write(TITLE, intent.getComponent().flattenToShortString()); + proto.end(token); + } + + public void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + super.writeToProto(proto, CONFIGURATION_CONTAINER); + writeIdentifierToProto(proto, IDENTIFIER); + proto.write(STATE, state.toString()); + proto.write(VISIBLE, visible); + proto.write(FRONT_OF_TASK, frontOfTask); + if (app != null) { + proto.write(PROC_ID, app.pid); + } + proto.end(token); + } } diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 78a16794b8d4..8d21862142d7 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -23,7 +23,13 @@ import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID; import static android.app.ActivityManager.StackId.HOME_STACK_ID; import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; -import static android.app.ActivityManager.StackId.RECENTS_STACK_ID; +import static android.app.ActivityManager.StackId.getActivityTypeForStackId; +import static android.app.ActivityManager.StackId.getWindowingModeForStackId; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.pm.ActivityInfo.CONFIG_SCREEN_LAYOUT; import static android.content.pm.ActivityInfo.FLAG_RESUME_WHILE_PAUSING; import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS; @@ -64,9 +70,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_USER_LEAV import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILITY; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; -import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.ASSISTANT_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE; +import static com.android.server.am.ActivityStack.ActivityState.PAUSED; import static com.android.server.am.ActivityStack.ActivityState.STOPPED; import static com.android.server.am.ActivityStack.ActivityState.STOPPING; import static com.android.server.am.ActivityStackSupervisor.FindTaskResult; @@ -74,6 +78,13 @@ import static com.android.server.am.ActivityStackSupervisor.ON_TOP; import static com.android.server.am.ActivityStackSupervisor.PAUSE_IMMEDIATELY; import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS; import static com.android.server.am.ActivityStackSupervisor.REMOVE_FROM_RECENTS; +import static com.android.server.am.proto.ActivityStackProto.BOUNDS; +import static com.android.server.am.proto.ActivityStackProto.CONFIGURATION_CONTAINER; +import static com.android.server.am.proto.ActivityStackProto.DISPLAY_ID; +import static com.android.server.am.proto.ActivityStackProto.FULLSCREEN; +import static com.android.server.am.proto.ActivityStackProto.ID; +import static com.android.server.am.proto.ActivityStackProto.RESUMED_ACTIVITY; +import static com.android.server.am.proto.ActivityStackProto.TASKS; import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_CLOSE; import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_OPEN; import static com.android.server.wm.AppTransition.TRANSIT_NONE; @@ -82,6 +93,7 @@ import static com.android.server.wm.AppTransition.TRANSIT_TASK_OPEN; import static com.android.server.wm.AppTransition.TRANSIT_TASK_OPEN_BEHIND; import static com.android.server.wm.AppTransition.TRANSIT_TASK_TO_BACK; import static com.android.server.wm.AppTransition.TRANSIT_TASK_TO_FRONT; + import static java.lang.Integer.MAX_VALUE; import android.app.Activity; @@ -118,6 +130,7 @@ import android.util.IntArray; import android.util.Log; import android.util.Slog; import android.util.SparseArray; +import android.util.proto.ProtoOutputStream; import android.view.Display; import com.android.internal.annotations.VisibleForTesting; @@ -460,24 +473,35 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai mTaskPositioner = mStackId == FREEFORM_WORKSPACE_STACK_ID ? new LaunchingTaskPositioner() : null; mTmpRect2.setEmpty(); - final Configuration overrideConfig = getOverrideConfiguration(); + updateOverrideConfiguration(); mWindowContainerController = createStackWindowController(display.mDisplayId, onTop, - mTmpRect2, overrideConfig); - onOverrideConfigurationChanged(overrideConfig); + mTmpRect2); mStackSupervisor.mStacks.put(mStackId, this); postAddToDisplay(display, mTmpRect2.isEmpty() ? null : mTmpRect2, onTop); } - T createStackWindowController(int displayId, boolean onTop, Rect outBounds, - Configuration outOverrideConfig) { - return (T) new StackWindowController(mStackId, this, displayId, onTop, outBounds, - outOverrideConfig); + T createStackWindowController(int displayId, boolean onTop, Rect outBounds) { + return (T) new StackWindowController(mStackId, this, displayId, onTop, outBounds); } T getWindowContainerController() { return mWindowContainerController; } + // TODO: Not needed once we are no longer using stack ids as the override config. can be passed + // in. + private void updateOverrideConfiguration() { + final int windowingMode = getWindowingModeForStackId( + mStackId, mStackSupervisor.getStack(DOCKED_STACK_ID) != null); + if (windowingMode != WINDOWING_MODE_UNDEFINED) { + setWindowingMode(windowingMode); + } + final int activityType = getActivityTypeForStackId(mStackId); + if (activityType != ACTIVITY_TYPE_UNDEFINED) { + setActivityType(activityType); + } + } + /** Adds the stack to specified display and calls WindowManager to do the same. */ void reparent(ActivityStackSupervisor.ActivityDisplay activityDisplay, boolean onTop) { removeFromDisplay(); @@ -821,14 +845,6 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai return hadit; } - final boolean isHomeStack() { - return mStackId == HOME_STACK_ID; - } - - final boolean isRecentsStack() { - return mStackId == RECENTS_STACK_ID; - } - final boolean isHomeOrRecentsStack() { return StackId.isHomeOrRecentsStack(mStackId); } @@ -841,10 +857,6 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai return mStackId == PINNED_STACK_ID; } - final boolean isAssistantStack() { - return mStackId == ASSISTANT_STACK_ID; - } - final boolean isOnHomeDisplay() { return isAttached() && mDisplayId == DEFAULT_DISPLAY; } @@ -959,13 +971,15 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": different user"); continue; } - final ActivityRecord r = task.getTopActivity(); + + // Overlays should not be considered as the task's logical top activity. + final ActivityRecord r = task.getTopActivity(false /* includeOverlays */); if (r == null || r.finishing || r.userId != userId || r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch root " + r); continue; } - if (r.mActivityType != target.mActivityType) { + if (!r.hasCompatibleActivityType(target)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch activity type"); continue; } @@ -1331,11 +1345,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai prev.getTask().touchActiveTime(); clearLaunchTime(prev); final ActivityRecord next = mStackSupervisor.topRunningActivityLocked(); - if (mService.mHasRecents - && (next == null || next.noDisplay || next.getTask() != prev.getTask() - || uiSleeping)) { - prev.mUpdateTaskThumbnailWhenHidden = true; - } + stopFullyDrawnTraceIfNeeded(); mService.updateCpuStats(); @@ -1650,7 +1660,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } if (!isHomeOrRecentsStack() && r.frontOfTask && task.isOverHomeStack() - && !StackId.isHomeOrRecentsStack(stackBehindId) && !isAssistantStack()) { + && !StackId.isHomeOrRecentsStack(stackBehindId) + && !isActivityTypeAssistant()) { // Stack isn't translucent if it's top activity should have the home stack // behind it and the stack currently behind it isn't the home or recents stack // or the assistant stack. @@ -1697,7 +1708,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (mStackId == DOCKED_STACK_ID) { // If the assistant stack is focused and translucent, then the docked stack is always // visible - if (topStack.isAssistantStack()) { + if (topStack.isActivityTypeAssistant()) { return (topStack.isStackTranslucent(starting, DOCKED_STACK_ID)) ? STACK_VISIBLE : STACK_INVISIBLE; } @@ -1829,14 +1840,6 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { final ActivityRecord r = activities.get(activityNdx); if (r.finishing) { - // Normally the screenshot will be taken in makeInvisible(). When an activity - // is finishing, we no longer change its visibility, but we still need to take - // the screenshots if startPausingLocked decided it should be taken. - if (r.mUpdateTaskThumbnailWhenHidden) { - r.updateThumbnailLocked(r.screenshotActivityLocked(), - null /* description */); - r.mUpdateTaskThumbnailWhenHidden = false; - } continue; } final boolean isTop = r == top; @@ -1907,39 +1910,22 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // status of an activity in a previous task affects other. behindFullscreenActivity = stackVisibility == STACK_INVISIBLE; } else if (mStackId == HOME_STACK_ID) { - if (task.isHomeTask()) { - if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home task: at " + task - + " stackInvisible=" + stackInvisible - + " behindFullscreenActivity=" + behindFullscreenActivity); - // No other task in the home stack should be visible behind the home activity. - // Home activities is usually a translucent activity with the wallpaper behind - // them. However, when they don't have the wallpaper behind them, we want to - // show activities in the next application stack behind them vs. another - // task in the home stack like recents. - behindFullscreenActivity = true; - } else if (task.isRecentsTask() - && task.getTaskToReturnTo() == APPLICATION_ACTIVITY_TYPE) { - if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, - "Recents task returning to app: at " + task - + " stackInvisible=" + stackInvisible - + " behindFullscreenActivity=" + behindFullscreenActivity); - // We don't want any other tasks in the home stack visible if the recents - // activity is going to be returning to an application activity type. - // We do this to preserve the visible order the user used to get into the - // recents activity. The recents activity is normally translucent and if it - // doesn't have the wallpaper behind it the next activity in the home stack - // shouldn't be visible when the home stack is brought to the front to display - // the recents activity from an app. - behindFullscreenActivity = true; - } + if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home task: at " + task + + " stackInvisible=" + stackInvisible + + " behindFullscreenActivity=" + behindFullscreenActivity); + // No other task in the home stack should be visible behind the home activity. + // Home activities is usually a translucent activity with the wallpaper behind + // them. However, when they don't have the wallpaper behind them, we want to + // show activities in the next application stack behind them vs. another + // task in the home stack like recents. + behindFullscreenActivity = true; } else if (mStackId == FULLSCREEN_WORKSPACE_STACK_ID) { if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Skipping after task=" + task + " returning to non-application type=" + task.getTaskToReturnTo()); // Once we reach a fullscreen stack task that has a running activity and should // return to another stack task, then no other activities behind that one should // be visible. - if (task.topRunningActivityLocked() != null && - task.getTaskToReturnTo() != APPLICATION_ACTIVITY_TYPE) { + if (task.topRunningActivityLocked() != null && !task.returnsToStandardTask()) { behindFullscreenActivity = true; } } @@ -1985,7 +1971,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai boolean checkKeyguardVisibility(ActivityRecord r, boolean shouldBeVisible, boolean isTop) { final boolean isInPinnedStack = r.getStack().getStackId() == PINNED_STACK_ID; - final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing(); + final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing( + mDisplayId != INVALID_DISPLAY ? mDisplayId : DEFAULT_DISPLAY); final boolean keyguardLocked = mStackSupervisor.mKeyguardController.isKeyguardLocked(); final boolean showWhenLocked = r.canShowWhenLocked() && !isInPinnedStack; final boolean dismissKeyguard = r.hasDismissKeyguardWindows(); @@ -2084,10 +2071,15 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai try { final boolean canEnterPictureInPicture = r.checkEnterPictureInPictureState( "makeInvisible", true /* beforeStopping */); - // Defer telling the client it is hidden if it can enter Pip and isn't current stopped - // or stopping. This gives it a chance to enter Pip in onPause(). + // Defer telling the client it is hidden if it can enter Pip and isn't current paused, + // stopped or stopping. This gives it a chance to enter Pip in onPause(). + // TODO: There is still a question surrounding activities in multi-window mode that want + // to enter Pip after they are paused, but are still visible. I they should be okay to + // enter Pip in those cases, but not "auto-Pip" which is what this condition covers and + // the current contract for "auto-Pip" is that the app should enter it before onPause + // returns. Just need to confirm this reasoning makes sense. final boolean deferHidingClient = canEnterPictureInPicture - && r.state != STOPPING && r.state != STOPPED; + && r.state != STOPPING && r.state != STOPPED && r.state != PAUSED; r.setDeferHidingClient(deferHidingClient); r.setVisible(false); @@ -2102,7 +2094,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // Reset the flag indicating that an app can enter picture-in-picture once the // activity is hidden - r.supportsPictureInPictureWhilePausing = false; + r.supportsEnterPipOnTaskSwitch = false; break; case INITIALIZING: @@ -2336,10 +2328,10 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // This task is going away but it was supposed to return to the home stack. // Now the task above it has to return to the home task instead. final int taskNdx = mTaskHistory.indexOf(prevTask) + 1; - mTaskHistory.get(taskNdx).setTaskToReturnTo(HOME_ACTIVITY_TYPE); + mTaskHistory.get(taskNdx).setTaskToReturnTo(ACTIVITY_TYPE_HOME); } else if (!isOnHomeDisplay()) { return false; - } else if (!isHomeStack()){ + } else if (!isActivityTypeHome()){ if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Launching home next"); return isOnHomeDisplay() && @@ -2587,6 +2579,16 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // the screen based on the new activity order. boolean notUpdated = true; if (mStackSupervisor.isFocusedStack(this)) { + + // We have special rotation behavior when Keyguard is locked. Make sure all activity + // visibilities are set correctly as well as the transition is updated if needed to + // get the correct rotation behavior. + // TODO: Remove this once visibilities are set correctly immediately when starting + // an activity. + if (mStackSupervisor.mKeyguardController.isKeyguardLocked()) { + mStackSupervisor.ensureActivitiesVisibleLocked(null /* starting */, + 0 /* configChanges */, false /* preserveWindows */); + } final Configuration config = mWindowManager.updateOrientationFromAppTokens( mStackSupervisor.getDisplayOverrideConfiguration(mDisplayId), next.mayFreezeScreenLocked(next.app) ? next.appToken : null, mDisplayId); @@ -2812,7 +2814,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // If this is not on the default display, then just set the return type to application if (!isOnHomeDisplay()) { - task.setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE); + task.setTaskToReturnTo(ACTIVITY_TYPE_STANDARD); return; } @@ -2824,8 +2826,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } // If the task was launched from the assistant stack, set the return type to assistant - if (lastStack.isAssistantStack()) { - task.setTaskToReturnTo(ASSISTANT_ACTIVITY_TYPE); + if (lastStack.isActivityTypeAssistant()) { + task.setTaskToReturnTo(ACTIVITY_TYPE_ASSISTANT); return; } @@ -2837,9 +2839,10 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // If it's a last task over home - we default to keep its return to type not to // make underlying task focused when this one will be finished. int returnToType = isLastTaskOverHome - ? task.getTaskToReturnTo() : APPLICATION_ACTIVITY_TYPE; + ? task.getTaskToReturnTo() : ACTIVITY_TYPE_STANDARD; if (fromHomeOrRecents && StackId.allowTopTaskToReturnHome(mStackId)) { - returnToType = topTask == null ? HOME_ACTIVITY_TYPE : topTask.taskType; + returnToType = topTask == null + ? ACTIVITY_TYPE_HOME : topTask.getActivityType(); } task.setTaskToReturnTo(returnToType); } @@ -2924,11 +2927,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // supporting picture-in-picture while pausing only if the starting activity // would not be considered an overlay on top of the current activity // (eg. not fullscreen, or the assistant) - if (focusedTopActivity != null - && focusedTopActivity.getStackId() != PINNED_STACK_ID - && r.getStackId() != ASSISTANT_STACK_ID - && r.fullscreen) { - focusedTopActivity.supportsPictureInPictureWhilePausing = true; + if (canEnterPipOnTaskSwitch(focusedTopActivity, + null /* toFrontTask */, r, options)) { + focusedTopActivity.supportsEnterPipOnTaskSwitch = true; } transit = TRANSIT_TASK_OPEN; } @@ -2983,6 +2984,30 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } } + /** + * @return Whether the switch to another task can trigger the currently running activity to + * enter PiP while it is pausing (if supported). Only one of {@param toFrontTask} or + * {@param toFrontActivity} should be set. + */ + private boolean canEnterPipOnTaskSwitch(ActivityRecord pipCandidate, + TaskRecord toFrontTask, ActivityRecord toFrontActivity, ActivityOptions opts) { + if (opts != null && opts.disallowEnterPictureInPictureWhileLaunching()) { + // Ensure the caller has requested not to trigger auto-enter PiP + return false; + } + if (pipCandidate == null || pipCandidate.getStackId() == PINNED_STACK_ID) { + // Ensure that we do not trigger entering PiP an activity on the pinned stack + return false; + } + final int targetStackId = toFrontTask != null ? toFrontTask.getStackId() + : toFrontActivity.getStackId(); + if (targetStackId == ASSISTANT_STACK_ID) { + // Ensure the task/activity being brought forward is not the assistant + return false; + } + return true; + } + private boolean isTaskSwitch(ActivityRecord r, ActivityRecord topFocusedActivity) { return topFocusedActivity != null && r.getTask() != topFocusedActivity.getTask(); @@ -3062,7 +3087,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } else { targetTask = createTaskRecord( mStackSupervisor.getNextTaskIdForUserLocked(target.userId), - target.info, null, null, null, false, target.mActivityType); + target.info, null, null, null, false); targetTask.affinityIntent = target.intent; if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Start pushing activity " + target + " out to new task " + targetTask); @@ -3373,8 +3398,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai throw new IllegalStateException("activity no longer associated with task:" + r); } - final boolean isAssistantOrOverAssistant = task.getStack().isAssistantStack() || - task.isOverAssistantStack(); + final boolean isAssistantOrOverAssistant = + task.getStack().isActivityTypeAssistant() || task.isOverAssistantStack(); if (r.frontOfTask && isATopFinishingTask(task) && (task.isOverHomeStack() || isAssistantOrOverAssistant)) { // For non-fullscreen or assistant stack, we want to move the focus to the next @@ -3409,8 +3434,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai * @param allowFocusSelf Is the focus allowed to remain on the same stack. */ private boolean adjustFocusToNextFocusableStackLocked(String reason, boolean allowFocusSelf) { - if (isAssistantStack() && bottomTask() != null && - bottomTask().getTaskToReturnTo() == HOME_ACTIVITY_TYPE) { + if (isActivityTypeAssistant() && bottomTask() != null + && bottomTask().returnsToHomeTask()) { // If the current stack is the assistant stack, then use the return-to type to determine // whether to return to the home screen. This is needed to workaround an issue where // launching a fullscreen task (and subequently returning from that task) will cause @@ -3435,8 +3460,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai return mStackSupervisor.moveHomeStackTaskToTop(reason); } - if (stack.isAssistantStack() && top != null - && top.getTask().getTaskToReturnTo() == HOME_ACTIVITY_TYPE) { + if (stack.isActivityTypeAssistant() && top != null + && top.getTask().returnsToHomeTask()) { // It is possible for the home stack to not be directly underneath the assistant stack. // For example, the assistant may start an activity in the fullscreen stack. Upon // returning to the assistant stack, we must ensure that the home stack is underneath @@ -3574,7 +3599,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (r.state == ActivityState.RESUMED || r.state == ActivityState.PAUSING || r.state == ActivityState.PAUSED) { - if (!r.isHomeActivity() || mService.mHomeProcess != r.app) { + if (!r.isActivityTypeHome() || mService.mHomeProcess != r.app) { Slog.w(TAG, " Force finishing activity " + r.intent.getComponent().flattenToShortString()); finishActivityLocked(r, Activity.RESULT_CANCELED, null, reason, false); @@ -3891,7 +3916,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (srec.frontOfTask && task != null && task.getBaseIntent() != null && task.getBaseIntent().isDocument()) { // Okay, this activity is at the root of its task. What to do, what to do... - if (task.getTaskToReturnTo() != ActivityRecord.APPLICATION_ACTIVITY_TYPE) { + if (!task.returnsToStandardTask()) { // Finishing won't return to an application, so we need to recreate. return true; } @@ -3901,11 +3926,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai Slog.w(TAG, "shouldUpRecreateTask: task not in history for " + srec); return false; } - if (taskIdx == 0) { - // At the bottom of the stack, nothing to go back to. - return true; - } - TaskRecord prevTask = mTaskHistory.get(taskIdx); + final TaskRecord prevTask = mTaskHistory.get(taskIdx); if (!task.affinity.equals(prevTask.affinity)) { // These are different apps, so need to recreate. return true; @@ -4490,17 +4511,18 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } void moveHomeStackTaskToTop() { + if (!isActivityTypeHome()) { + throw new IllegalStateException("Calling moveHomeStackTaskToTop() on non-home stack: " + + this); + } final int top = mTaskHistory.size() - 1; - for (int taskNdx = top; taskNdx >= 0; --taskNdx) { - final TaskRecord task = mTaskHistory.get(taskNdx); - if (task.taskType == HOME_ACTIVITY_TYPE) { - if (DEBUG_TASKS || DEBUG_STACK) Slog.d(TAG_STACK, - "moveHomeStackTaskToTop: moving " + task); - mTaskHistory.remove(taskNdx); - mTaskHistory.add(top, task); - updateTaskMovement(task, true); - return; - } + if (top >= 0) { + final TaskRecord task = mTaskHistory.get(top); + if (DEBUG_TASKS || DEBUG_STACK) Slog.d(TAG_STACK, + "moveHomeStackTaskToTop: moving " + task); + mTaskHistory.remove(top); + mTaskHistory.add(top, task); + updateTaskMovement(task, true); } } @@ -4558,9 +4580,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // If a new task is moved to the front, then mark the existing top activity as supporting // picture-in-picture while paused only if the task would not be considered an oerlay on top // of the current activity (eg. not fullscreen, or the assistant) - if (topActivity != null && topActivity.getStackId() != PINNED_STACK_ID - && tr.getStackId() != ASSISTANT_STACK_ID && tr.containsOnlyFullscreenActivities()) { - topActivity.supportsPictureInPictureWhilePausing = true; + if (canEnterPipOnTaskSwitch(topActivity, tr, null /* toFrontActivity */, + options)) { + topActivity.supportsEnterPipOnTaskSwitch = true; } mStackSupervisor.resumeFocusedStackTopActivityLocked(); @@ -4623,7 +4645,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // If true, we should resume the home activity next if the task we are moving to the // back is over the home stack. We force to false if the task we are moving to back // is the home task and we don't want it resumed after moving to the back. - final boolean canGoHome = !tr.isHomeTask() && tr.isOverHomeStack(); + final boolean canGoHome = !tr.isActivityTypeHome() && tr.isOverHomeStack(); if (canGoHome) { final TaskRecord nextTask = getNextTask(tr); if (nextTask != null) { @@ -4658,7 +4680,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } if (taskNdx == 1) { // Set the last task before tr to go to home. - task.setTaskToReturnTo(HOME_ACTIVITY_TYPE); + task.setTaskToReturnTo(ACTIVITY_TYPE_HOME); } } @@ -4668,7 +4690,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // Not ready yet! return false; } - tr.setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE); + tr.setTaskToReturnTo(ACTIVITY_TYPE_STANDARD); return mStackSupervisor.resumeHomeStackTask(null, "moveTaskToBack"); } @@ -4882,7 +4904,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } return true; } - if (r.isHomeActivity()) { + if (r.isActivityTypeHome()) { if (homeActivity != null && homeActivity.equals(r.realActivity)) { Slog.i(TAG, "Skip force-stop again " + r); continue; @@ -4925,7 +4947,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai int numActivities = 0; int numRunning = 0; final ArrayList<ActivityRecord> activities = task.mActivities; - if (!allowed && !task.isHomeTask() && task.effectiveUid != callingUid) { + if (!allowed && !task.isActivityTypeHome() && task.effectiveUid != callingUid) { continue; } for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { @@ -5025,24 +5047,29 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } boolean dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, boolean dumpAll, - boolean dumpClient, String dumpPackage, boolean needSep, String header) { - boolean printed = false; + boolean dumpClient, String dumpPackage, boolean needSep) { + + if (mTaskHistory.isEmpty()) { + return false; + } + final String prefix = " "; for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { final TaskRecord task = mTaskHistory.get(taskNdx); - printed |= ActivityStackSupervisor.dumpHistoryList(fd, pw, - mTaskHistory.get(taskNdx).mActivities, " ", "Hist", true, !dumpAll, - dumpClient, dumpPackage, needSep, header, - " Task id #" + task.taskId + "\n" + - " mFullscreen=" + task.mFullscreen + "\n" + - " mBounds=" + task.mBounds + "\n" + - " mMinWidth=" + task.mMinWidth + "\n" + - " mMinHeight=" + task.mMinHeight + "\n" + - " mLastNonFullscreenBounds=" + task.mLastNonFullscreenBounds); - if (printed) { - header = null; - } + if (needSep) { + pw.println(""); + } + pw.println(prefix + "Task id #" + task.taskId); + pw.println(prefix + "mFullscreen=" + task.mFullscreen); + pw.println(prefix + "mBounds=" + task.mBounds); + pw.println(prefix + "mMinWidth=" + task.mMinWidth); + pw.println(prefix + "mMinHeight=" + task.mMinHeight); + pw.println(prefix + "mLastNonFullscreenBounds=" + task.mLastNonFullscreenBounds); + pw.println(prefix + "* " + task); + task.dump(pw, prefix + " "); + ActivityStackSupervisor.dumpHistoryList(fd, pw, mTaskHistory.get(taskNdx).mActivities, + prefix, "Hist", true, !dumpAll, dumpClient, dumpPackage, false, null, task); } - return printed; + return true; } ArrayList<ActivityRecord> getDumpActivitiesLocked(String name) { @@ -5116,7 +5143,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (task.isOverHomeStack() && taskNdx < topTaskNdx) { final TaskRecord nextTask = mTaskHistory.get(taskNdx + 1); if (!nextTask.isOverHomeStack() && !nextTask.isOverAssistantStack()) { - nextTask.setTaskToReturnTo(HOME_ACTIVITY_TYPE); + nextTask.setTaskToReturnTo(ACTIVITY_TYPE_HOME); } } mTaskHistory.remove(task); @@ -5172,13 +5199,13 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, - boolean toTop, int type) { - TaskRecord task = new TaskRecord(mService, taskId, info, intent, voiceSession, - voiceInteractor, type); + boolean toTop) { + final TaskRecord task = new TaskRecord(mService, taskId, info, intent, voiceSession, + voiceInteractor); // add the task to stack first, mTaskPositioner might need the stack association addTask(task, toTop, "createTaskRecord"); - final boolean isLockscreenShown = - mService.mStackSupervisor.mKeyguardController.isKeyguardShowing(); + final boolean isLockscreenShown = mService.mStackSupervisor.mKeyguardController + .isKeyguardShowing(mDisplayId != INVALID_DISPLAY ? mDisplayId : DEFAULT_DISPLAY); if (!layoutTaskInStack(task, info.windowLayout) && mBounds != null && task.isResizeable() && !isLockscreenShown) { task.updateOverrideConfiguration(mBounds); @@ -5339,4 +5366,23 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai boolean shouldSleepOrShutDownActivities() { return shouldSleepActivities() || mService.isShuttingDownLocked(); } + + public void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + super.writeToProto(proto, CONFIGURATION_CONTAINER); + proto.write(ID, mStackId); + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final TaskRecord task = mTaskHistory.get(taskNdx); + task.writeToProto(proto, TASKS); + } + if (mResumedActivity != null) { + mResumedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY); + } + proto.write(DISPLAY_ID, mDisplayId); + if (mBounds != null) { + mBounds.writeToProto(proto, BOUNDS); + } + proto.write(FULLSCREEN, mFullscreen); + proto.end(token); + } } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index f36b7b81aaea..45c4df993801 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -20,8 +20,8 @@ import static android.Manifest.permission.ACTIVITY_EMBEDDING; import static android.Manifest.permission.INTERNAL_SYSTEM_WINDOW; import static android.Manifest.permission.START_ANY_ACTIVITY; import static android.Manifest.permission.START_TASKS_FROM_RECENTS; -import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED; import static android.app.ActivityManager.START_TASK_TO_FRONT; +import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.FIRST_DYNAMIC_STACK_ID; import static android.app.ActivityManager.StackId.FIRST_STATIC_STACK_ID; @@ -32,8 +32,20 @@ import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManager.StackId.LAST_STATIC_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.app.ActivityManager.StackId.RECENTS_STACK_ID; +import static android.app.ActivityManager.StackId.getStackIdForActivityType; +import static android.app.ActivityManager.StackId.getStackIdForWindowingMode; import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SECONDARY_DISPLAY; import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SPLIT_SCREEN; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; +import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; +import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.PowerManager.PARTIAL_WAKE_LOCK; @@ -68,8 +80,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.ActivityManagerService.ANIMATE; import static com.android.server.am.ActivityManagerService.FIRST_SUPERVISOR_STACK_MSG; -import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE; import static com.android.server.am.ActivityStack.ActivityState.DESTROYED; import static com.android.server.am.ActivityStack.ActivityState.DESTROYING; import static com.android.server.am.ActivityStack.ActivityState.INITIALIZING; @@ -81,17 +91,26 @@ import static com.android.server.am.ActivityStack.ActivityState.STOPPING; import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING; import static com.android.server.am.ActivityStack.STACK_INVISIBLE; import static com.android.server.am.ActivityStack.STACK_VISIBLE; +import static com.android.server.am.TaskRecord.INVALID_TASK_ID; import static com.android.server.am.TaskRecord.LOCK_TASK_AUTH_LAUNCHABLE; import static com.android.server.am.TaskRecord.LOCK_TASK_AUTH_LAUNCHABLE_PRIV; import static com.android.server.am.TaskRecord.REPARENT_KEEP_STACK_AT_FRONT; import static com.android.server.am.TaskRecord.REPARENT_LEAVE_STACK_IN_PLACE; import static com.android.server.am.TaskRecord.REPARENT_MOVE_STACK_TO_FRONT; +import static com.android.server.am.proto.ActivityStackSupervisorProto.DISPLAYS; +import static com.android.server.am.proto.ActivityStackSupervisorProto.FOCUSED_STACK_ID; +import static com.android.server.am.proto.ActivityStackSupervisorProto.KEYGUARD_CONTROLLER; +import static com.android.server.am.proto.ActivityStackSupervisorProto.RESUMED_ACTIVITY; +import static com.android.server.am.proto.ActivityStackSupervisorProto.CONFIGURATION_CONTAINER; +import static com.android.server.am.proto.ActivityDisplayProto.STACKS; +import static com.android.server.am.proto.ActivityDisplayProto.ID; import static com.android.server.wm.AppTransition.TRANSIT_DOCK_TASK_FROM_RECENTS; import static java.lang.Integer.MAX_VALUE; import android.Manifest; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.Activity; import android.app.ActivityManager; @@ -145,6 +164,7 @@ import android.util.Slog; import android.util.SparseArray; import android.util.SparseIntArray; import android.util.TimeUtils; +import android.util.proto.ProtoOutputStream; import android.view.Display; import com.android.internal.annotations.VisibleForTesting; @@ -154,6 +174,7 @@ import com.android.internal.os.TransferPipe; import com.android.internal.util.ArrayUtils; import com.android.server.LocalServices; import com.android.server.am.ActivityStack.ActivityState; +import com.android.server.am.proto.ActivityDisplayProto; import com.android.server.wm.ConfigurationContainer; import com.android.server.wm.PinnedStackWindowController; import com.android.server.wm.WindowManagerService; @@ -164,7 +185,6 @@ import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -690,7 +710,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } if (prev != null) { - prev.getTask().setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE); + prev.getTask().setTaskToReturnTo(ACTIVITY_TYPE_STANDARD); } mHomeStack.moveHomeStackTaskToTop(); @@ -706,24 +726,26 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } TaskRecord anyTaskForIdLocked(int id) { - return anyTaskForIdLocked(id, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE, - INVALID_STACK_ID); + return anyTaskForIdLocked(id, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE); + } + + TaskRecord anyTaskForIdLocked(int id, @AnyTaskForIdMatchTaskMode int matchMode) { + return anyTaskForIdLocked(id, matchMode, null); } /** * Returns a {@link TaskRecord} for the input id if available. {@code null} otherwise. * @param id Id of the task we would like returned. * @param matchMode The mode to match the given task id in. - * @param stackId The stack to restore the task to (default launch stack will be used if - * stackId is {@link android.app.ActivityManager.StackId#INVALID_STACK_ID}). Only - * valid if the matchMode is - * {@link #MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE}. + * @param aOptions The activity options to use for restoration. Can be null. */ - TaskRecord anyTaskForIdLocked(int id, @AnyTaskForIdMatchTaskMode int matchMode, int stackId) { + TaskRecord anyTaskForIdLocked(int id, @AnyTaskForIdMatchTaskMode int matchMode, + @Nullable ActivityOptions aOptions) { // If there is a stack id set, ensure that we are attempting to actually restore a task - if (matchMode != MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE && - stackId != INVALID_STACK_ID) { - throw new IllegalArgumentException("Should not specify stackId for non-restore lookup"); + // TODO: Don't really know if this is needed... + if (matchMode != MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE && aOptions != null) { + throw new IllegalArgumentException("Should not specify activity options for non-restore" + + " lookup"); } int numDisplays = mActivityDisplays.size(); @@ -761,7 +783,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } // Implicitly, this case is MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE - if (!restoreRecentTaskLocked(task, stackId)) { + if (!restoreRecentTaskLocked(task, aOptions)) { if (DEBUG_RECENTS) Slog.w(TAG_RECENTS, "Couldn't restore task id=" + id + " found in recents"); return null; @@ -856,8 +878,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // was 10, user 0 could only have taskIds 0 to 9, user 1: 10 to 19, user 2: 20 to 29, so on. int candidateTaskId = nextTaskIdForUser(currentTaskId, userId); while (mRecentTasks.taskIdTakenForUserLocked(candidateTaskId, userId) - || anyTaskForIdLocked(candidateTaskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, - INVALID_STACK_ID) != null) { + || anyTaskForIdLocked( + candidateTaskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS) != null) { candidateTaskId = nextTaskIdForUser(candidateTaskId, userId); if (candidateTaskId == currentTaskId) { // Something wrong! @@ -1269,6 +1291,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D r.app = app; + if (mKeyguardController.isKeyguardLocked()) { + r.notifyUnknownVisibilityLaunched(); + } + // Have the window manager re-evaluate the orientation of the screen based on the new // activity order. Note that as a result of this, it can call back into the activity // manager with a new orientation. We don't care about that, because the activity is @@ -1295,9 +1321,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D r.setVisibility(true); } - if (mKeyguardController.isKeyguardLocked()) { - r.notifyUnknownVisibilityLaunched(); - } final int applicationInfoUid = (r.info.applicationInfo != null) ? r.info.applicationInfo.uid : -1; if ((r.userId != app.userId) || (r.appInfo.uid != applicationInfoUid)) { @@ -1343,7 +1366,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D + " newIntents=" + newIntents + " andResume=" + andResume); EventLog.writeEvent(EventLogTags.AM_RESTART_ACTIVITY, r.userId, System.identityHashCode(r), task.taskId, r.shortComponentName); - if (r.isHomeActivity()) { + if (r.isActivityTypeHome()) { // Home process is the root process of the task. mService.mHomeProcess = task.mActivities.get(0).app; } @@ -1636,6 +1659,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return true; } + // Check if caller is already present on display + final boolean uidPresentOnDisplay = activityDisplay.isUidPresent(callingUid); + final int displayOwnerUid = activityDisplay.mDisplay.getOwnerUid(); if (activityDisplay.mDisplay.getType() == TYPE_VIRTUAL && displayOwnerUid != SYSTEM_UID && displayOwnerUid != aInfo.applicationInfo.uid) { @@ -1648,7 +1674,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } // Check if the caller is allowed to embed activities from other apps. if (mService.checkPermission(ACTIVITY_EMBEDDING, callingPid, callingUid) - == PERMISSION_DENIED) { + == PERMISSION_DENIED && !uidPresentOnDisplay) { if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:" + " disallow activity embedding without permission."); return false; @@ -1669,8 +1695,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return true; } - // Check if caller is present on display - if (activityDisplay.isUidPresent(callingUid)) { + if (uidPresentOnDisplay) { if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:" + " allow launch for caller present on the display"); return true; @@ -2078,40 +2103,37 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if ((flags & ActivityManager.MOVE_TASK_WITH_HOME) != 0) { // Caller wants the home activity moved with it. To accomplish this, // we'll just indicate that this task returns to the home task. - task.setTaskToReturnTo(HOME_ACTIVITY_TYPE); + task.setTaskToReturnTo(ACTIVITY_TYPE_HOME); } - ActivityStack currentStack = task.getStack(); + final ActivityStack currentStack = task.getStack(); if (currentStack == null) { Slog.e(TAG, "findTaskToMoveToFrontLocked: can't move task=" + task + " to front. Stack is null"); return; } - if (task.isResizeable() && options != null) { - int stackId = options.getLaunchStackId(); - if (canUseActivityOptionsLaunchBounds(options, stackId)) { - final Rect bounds = TaskRecord.validateBounds(options.getLaunchBounds()); - task.updateOverrideConfiguration(bounds); - if (stackId == INVALID_STACK_ID) { - stackId = task.getLaunchStackId(); - } - if (stackId != currentStack.mStackId) { - task.reparent(stackId, ON_TOP, REPARENT_KEEP_STACK_AT_FRONT, !ANIMATE, - DEFER_RESUME, "findTaskToMoveToFrontLocked"); - stackId = currentStack.mStackId; - // moveTaskToStackUncheckedLocked() should already placed the task on top, - // still need moveTaskToFrontLocked() below for any transition settings. - } - if (StackId.resizeStackWithLaunchBounds(stackId)) { - resizeStackLocked(stackId, bounds, - null /* tempTaskBounds */, null /* tempTaskInsetBounds */, - !PRESERVE_WINDOWS, true /* allowResizeInDockedMode */, !DEFER_RESUME); - } else { - // WM resizeTask must be done after the task is moved to the correct stack, - // because Task's setBounds() also updates dim layer's bounds, but that has - // dependency on the stack. - task.resizeWindowContainer(); - } + if (task.isResizeable() && canUseActivityOptionsLaunchBounds(options)) { + final Rect bounds = TaskRecord.validateBounds(options.getLaunchBounds()); + task.updateOverrideConfiguration(bounds); + + int stackId = getLaunchStackId(null, options, task); + + if (stackId != currentStack.mStackId) { + task.reparent(stackId, ON_TOP, REPARENT_KEEP_STACK_AT_FRONT, !ANIMATE, + DEFER_RESUME, "findTaskToMoveToFrontLocked"); + stackId = currentStack.mStackId; + // moveTaskToStackUncheckedLocked() should already placed the task on top, + // still need moveTaskToFrontLocked() below for any transition settings. + } + if (StackId.resizeStackWithLaunchBounds(stackId)) { + resizeStackLocked(stackId, bounds, + null /* tempTaskBounds */, null /* tempTaskInsetBounds */, + !PRESERVE_WINDOWS, true /* allowResizeInDockedMode */, !DEFER_RESUME); + } else { + // WM resizeTask must be done after the task is moved to the correct stack, + // because Task's setBounds() also updates dim layer's bounds, but that has + // dependency on the stack. + task.resizeWindowContainer(); } } @@ -2122,17 +2144,18 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (DEBUG_STACK) Slog.d(TAG_STACK, "findTaskToMoveToFront: moved to front of stack=" + currentStack); - handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, DEFAULT_DISPLAY, + handleNonResizableTaskIfNeeded(task, WINDOWING_MODE_UNDEFINED, DEFAULT_DISPLAY, currentStack.mStackId, forceNonResizeable); } - boolean canUseActivityOptionsLaunchBounds(ActivityOptions options, int launchStackId) { + boolean canUseActivityOptionsLaunchBounds(ActivityOptions options) { // We use the launch bounds in the activity options is the device supports freeform // window management or is launching into the pinned stack. - if (options.getLaunchBounds() == null) { + if (options == null || options.getLaunchBounds() == null) { return false; } - return (mService.mSupportsPictureInPicture && launchStackId == PINNED_STACK_ID) + return (mService.mSupportsPictureInPicture + && options.getLaunchWindowingMode() == WINDOWING_MODE_PINNED) || mService.mSupportsFreeformWindowManagement; } @@ -2157,6 +2180,179 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return (T) createStackOnDisplay(stackId, DEFAULT_DISPLAY, createOnTop); } + private int resolveWindowingMode(@Nullable ActivityRecord r, @Nullable ActivityOptions options, + @Nullable TaskRecord task) { + + // First preference if the windowing mode in the activity options if set. + int windowingMode = (options != null) + ? options.getLaunchWindowingMode() : WINDOWING_MODE_UNDEFINED; + + // If windowing mode is unset, then next preference is the candidate task, then the + // activity record. + if (windowingMode == WINDOWING_MODE_UNDEFINED) { + if (task != null) { + windowingMode = task.getWindowingMode(); + } + if (windowingMode == WINDOWING_MODE_UNDEFINED && r != null) { + windowingMode = r.getWindowingMode(); + } + } + + // Make sure the windowing mode we are trying to use makes sense for what is supported. + if (!mService.mSupportsMultiWindow && windowingMode != WINDOWING_MODE_FULLSCREEN) { + windowingMode = WINDOWING_MODE_FULLSCREEN; + } + + if (!mService.mSupportsSplitScreenMultiWindow + && (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY + || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY)) { + windowingMode = WINDOWING_MODE_FULLSCREEN; + } + + if (windowingMode == WINDOWING_MODE_FREEFORM + && !mService.mSupportsFreeformWindowManagement) { + windowingMode = WINDOWING_MODE_FULLSCREEN; + } + + return windowingMode; + } + + private int resolveActivityType(@Nullable ActivityRecord r, @Nullable ActivityOptions options, + @Nullable TaskRecord task) { + // First preference if the activity type in the activity options if set. + int activityType = (options != null) + ? options.getLaunchActivityType() : ACTIVITY_TYPE_UNDEFINED; + + if (activityType != ACTIVITY_TYPE_UNDEFINED) { + return activityType; + } + + // If activity type is unset, then next preference is the task, then the activity record. + if (task != null) { + activityType = task.getActivityType(); + } + if (activityType == ACTIVITY_TYPE_UNDEFINED && r != null) { + activityType = r.getActivityType(); + } + return activityType; + } + + int getLaunchStackId(@Nullable ActivityRecord r, @Nullable ActivityOptions options, + @Nullable TaskRecord candidateTask) { + return getLaunchStackId(r, options, candidateTask, INVALID_DISPLAY); + } + + /** + * Returns the right stack to use for launching factoring in all the input parameters. + * + * @param r The activity we are trying to launch. Can be null. + * @param options The activity options used to the launch. Can be null. + * @param candidateTask The possible task the activity might be launched in. Can be null. + * + * @return The stack to use for the launch or INVALID_STACK_ID. + */ + int getLaunchStackId(@Nullable ActivityRecord r, @Nullable ActivityOptions options, + @Nullable TaskRecord candidateTask, int candidateDisplayId) { + int taskId = INVALID_TASK_ID; + int displayId = INVALID_DISPLAY; + //Rect bounds = null; + + // We give preference to the launch preference in activity options. + if (options != null) { + taskId = options.getLaunchTaskId(); + displayId = options.getLaunchDisplayId(); + // TODO: Need to work this into the equation... + //bounds = options.getLaunchBounds(); + } + + // First preference for stack goes to the task Id set in the activity options. Use the stack + // associated with that if possible. + if (taskId != INVALID_TASK_ID) { + // Temporarily set the task id to invalid in case in re-entry. + options.setLaunchTaskId(INVALID_TASK_ID); + final TaskRecord task = anyTaskForIdLocked(taskId, + MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE, options); + options.setLaunchTaskId(taskId); + if (task != null) { + return task.getStack().mStackId; + } + } + + final int windowingMode = resolveWindowingMode(r, options, candidateTask); + final int activityType = resolveActivityType(r, options, candidateTask); + ActivityStack stack = null; + + // Next preference for stack goes to the display Id set in the activity options or the + // candidate display. + if (displayId == INVALID_DISPLAY) { + displayId = candidateDisplayId; + } + if (displayId != INVALID_DISPLAY) { + if (r != null) { + // TODO: This should also take in the windowing mode and activity type into account. + stack = getValidLaunchStackOnDisplay(displayId, r); + if (stack != null) { + return stack.mStackId; + } + } + final ActivityDisplay display = getActivityDisplayOrCreateLocked(displayId); + if (display != null) { + for (int i = display.mStacks.size() - 1; i >= 0; --i) { + stack = display.mStacks.get(i); + if (stack.getWindowingMode() == windowingMode + && stack.getActivityType() == activityType) { + return stack.mStackId; + } + } + // TODO: We should create the stack we want on the display at this point. + } + } + + // Give preference to the stack and display of the input task and activity if they match the + // mode we want to launch into. + if (candidateTask != null) { + stack = candidateTask.getStack(); + } + if (stack == null && r != null) { + stack = r.getStack(); + } + if (stack != null) { + if (stack.getWindowingMode() == windowingMode + && stack.getActivityType() == activityType) { + return stack.mStackId; + } + ActivityDisplay display = stack.getDisplay(); + + if (display != null) { + for (int i = display.mStacks.size() - 1; i >= 0; --i) { + stack = display.mStacks.get(i); + if (stack.getWindowingMode() == windowingMode + && stack.getActivityType() == activityType) { + return stack.mStackId; + } + } + } + } + + // Give preference to the type of activity we are trying to launch followed by the windowing + // mode. + int stackId = getStackIdForActivityType(activityType); + if (stackId != INVALID_STACK_ID) { + return stackId; + } + stackId = getStackIdForWindowingMode(windowingMode); + if (stackId != INVALID_STACK_ID) { + return stackId; + } + + // Whatever...return some default for now. + if (candidateTask != null && candidateTask.mBounds != null + && mService.mSupportsFreeformWindowManagement) { + return FREEFORM_WORKSPACE_STACK_ID; + } + return FULLSCREEN_WORKSPACE_STACK_ID; + } + /** * Get a topmost stack on the display, that is a valid launch stack for specified activity. * If there is no such stack, new dynamic stack can be created. @@ -2174,7 +2370,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // Return the topmost valid stack on the display. for (int i = activityDisplay.mStacks.size() - 1; i >= 0; --i) { final ActivityStack stack = activityDisplay.mStacks.get(i); - if (mService.mActivityStarter.isValidLaunchStackId(stack.mStackId, displayId, r)) { + if (isValidLaunchStackId(stack.mStackId, displayId, r)) { return stack; } } @@ -2182,7 +2378,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // If there is no valid stack on the external display - check if new dynamic stack will do. if (displayId != Display.DEFAULT_DISPLAY) { final int newDynamicStackId = getNextStackId(); - if (mService.mActivityStarter.isValidLaunchStackId(newDynamicStackId, displayId, r)) { + if (isValidLaunchStackId(newDynamicStackId, displayId, r)) { return createStackOnDisplay(newDynamicStackId, displayId, true /*onTop*/); } } @@ -2191,6 +2387,32 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return null; } + boolean isValidLaunchStackId(int stackId, int displayId, ActivityRecord r) { + switch (stackId) { + case INVALID_STACK_ID: + case HOME_STACK_ID: + return false; + case FULLSCREEN_WORKSPACE_STACK_ID: + return true; + case FREEFORM_WORKSPACE_STACK_ID: + return r.supportsFreeform(); + case DOCKED_STACK_ID: + return r.supportsSplitScreen(); + case PINNED_STACK_ID: + return r.supportsPictureInPicture(); + case RECENTS_STACK_ID: + return r.isActivityTypeRecents(); + case ASSISTANT_STACK_ID: + return r.isActivityTypeAssistant(); + default: + if (StackId.isDynamicStack(stackId)) { + return r.canBeLaunchedOnDisplay(displayId); + } + Slog.e(TAG, "isValidLaunchStackId: Unexpected stackId=" + stackId); + return false; + } + } + ArrayList<ActivityStack> getStacks() { ArrayList<ActivityStack> allStacks = new ArrayList<>(); for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { @@ -2264,11 +2486,11 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D final ArrayList<TaskRecord> tasks = mHomeStack.getAllTasks(); for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) { final TaskRecord task = tasks.get(taskNdx); - if (task.isHomeTask()) { + if (task.isActivityTypeHome()) { final ArrayList<ActivityRecord> activities = task.mActivities; for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { final ActivityRecord r = activities.get(activityNdx); - if (r.isHomeActivity() + if (r.isActivityTypeHome() && ((userId == UserHandle.USER_ALL) || (r.userId == userId))) { return r; } @@ -2278,15 +2500,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return null; } - /** - * Returns if a stack should be treated as if it's docked. Returns true if the stack is - * the docked stack itself, or if it's side-by-side to the docked stack. - */ - boolean isStackDockedInEffect(int stackId) { - return stackId == DOCKED_STACK_ID || - (StackId.isResizeableByDockedStack(stackId) && getStack(DOCKED_STACK_ID) != null); - } - void resizeStackLocked(int stackId, Rect bounds, Rect tempTaskBounds, Rect tempTaskInsetBounds, boolean preserveWindows, boolean allowResizeInDockedMode, boolean deferResume) { if (stackId == DOCKED_STACK_ID) { @@ -2300,9 +2513,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return; } + final boolean splitScreenActive = getStack(DOCKED_STACK_ID) != null; if (!allowResizeInDockedMode - && !stack.getWindowConfiguration().tasksAreFloating() - && getStack(DOCKED_STACK_ID) != null) { + && !stack.getWindowConfiguration().tasksAreFloating() && splitScreenActive) { // If the docked stack exists, don't resize non-floating stacks independently of the // size computed from the docked stack size (otherwise they will be out of sync) return; @@ -2311,6 +2524,16 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "am.resizeStack_" + stackId); mWindowManager.deferSurfaceLayout(); try { + if (stack.supportSplitScreenWindowingMode()) { + if (bounds == null && stack.inSplitScreenWindowingMode()) { + // null bounds = fullscreen windowing mode...at least for now. + stack.setWindowingMode(WINDOWING_MODE_FULLSCREEN); + } else if (splitScreenActive) { + // If we are in split-screen mode and this stack support split-screen, then + // it should be split-screen secondary mode. i.e. adjacent to the docked stack. + stack.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY); + } + } stack.resize(bounds, tempTaskBounds, tempTaskInsetBounds); if (!deferResume) { stack.ensureVisibleActivitiesConfigurationLocked( @@ -2322,14 +2545,14 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } } - void deferUpdateBounds(int stackId) { + private void deferUpdateBounds(int stackId) { final ActivityStack stack = getStack(stackId); if (stack != null) { stack.deferUpdateBounds(); } } - void continueUpdateBounds(int stackId) { + private void continueUpdateBounds(int stackId) { final ActivityStack stack = getStack(stackId); if (stack != null) { stack.continueUpdateBounds(); @@ -2340,8 +2563,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D continueUpdateBounds(RECENTS_STACK_ID); for (int i = mResizingTasksDuringAnimation.size() - 1; i >= 0; i--) { final int taskId = mResizingTasksDuringAnimation.valueAt(i); - final TaskRecord task = - anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_ONLY, INVALID_STACK_ID); + final TaskRecord task = anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_ONLY); if (task != null) { task.setTaskDockedResizing(false); } @@ -2364,13 +2586,15 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // which is dismissing the docked stack, so resize all other stacks to // fullscreen here already so we don't end up with resize trashing. for (int i = FIRST_STATIC_STACK_ID; i <= LAST_STATIC_STACK_ID; i++) { - if (StackId.isResizeableByDockedStack(i)) { - ActivityStack otherStack = getStack(i); - if (otherStack != null) { - resizeStackLocked(i, null, null, null, PRESERVE_WINDOWS, - true /* allowResizeInDockedMode */, DEFER_RESUME); - } + final ActivityStack otherStack = getStack(i); + if (otherStack == null) { + continue; + } + if (!otherStack.inSplitScreenSecondaryWindowingMode()) { + continue; } + resizeStackLocked(i, null, null, null, PRESERVE_WINDOWS, + true /* allowResizeInDockedMode */, DEFER_RESUME); } // Also disable docked stack resizing since we have manually adjusted the @@ -2401,8 +2625,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // Update the return-to to reflect where the pinned stack task was moved // from so that we retain the stack that was previously visible if the // pinned stack is recreated. See moveActivityToPinnedStackLocked(). - task.setTaskToReturnTo(isFullscreenStackVisible && onTop ? - APPLICATION_ACTIVITY_TYPE : HOME_ACTIVITY_TYPE); + task.setTaskToReturnTo(isFullscreenStackVisible ? + ACTIVITY_TYPE_STANDARD : ACTIVITY_TYPE_HOME); } // Defer resume until all the tasks have been moved to the fullscreen stack task.reparent(FULLSCREEN_WORKSPACE_STACK_ID, ON_TOP, @@ -2484,18 +2708,24 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // screen controls and is also the same for all stacks. final Rect otherTaskRect = new Rect(); for (int i = FIRST_STATIC_STACK_ID; i <= LAST_STATIC_STACK_ID; i++) { + if (i == DOCKED_STACK_ID) { + continue; + } final ActivityStack current = getStack(i); - if (current != null && StackId.isResizeableByDockedStack(i)) { - current.getStackDockedModeBounds( - tempOtherTaskBounds /* currentTempTaskBounds */, - tempRect /* outStackBounds */, - otherTaskRect /* outTempTaskBounds */, true /* ignoreVisibility */); - - resizeStackLocked(i, !tempRect.isEmpty() ? tempRect : null, - !otherTaskRect.isEmpty() ? otherTaskRect : tempOtherTaskBounds, - tempOtherTaskInsetBounds, preserveWindows, - true /* allowResizeInDockedMode */, deferResume); + if (current == null || !current.supportSplitScreenWindowingMode()) { + continue; } + // Need to set windowing mode here before we try to get the dock bounds. + current.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY); + current.getStackDockedModeBounds( + tempOtherTaskBounds /* currentTempTaskBounds */, + tempRect /* outStackBounds */, + otherTaskRect /* outTempTaskBounds */, true /* ignoreVisibility */); + + resizeStackLocked(i, !tempRect.isEmpty() ? tempRect : null, + !otherTaskRect.isEmpty() ? otherTaskRect : tempOtherTaskBounds, + tempOtherTaskInsetBounds, preserveWindows, + true /* allowResizeInDockedMode */, deferResume); } } if (!deferResume) { @@ -2628,8 +2858,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D */ boolean removeTaskByIdLocked(int taskId, boolean killProcess, boolean removeFromRecents, boolean pauseImmediately) { - final TaskRecord tr = anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, - INVALID_STACK_ID); + final TaskRecord tr = anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS); if (tr != null) { tr.removeTaskActivitiesLocked(pauseImmediately); cleanUpRemovedTaskLocked(tr, killProcess, removeFromRecents); @@ -2728,23 +2957,11 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D /** * Restores a recent task to a stack * @param task The recent task to be restored. - * @param stackId The stack to restore the task to (default launch stack will be used - * if stackId is {@link android.app.ActivityManager.StackId#INVALID_STACK_ID} - * or is not a static stack). + * @param aOptions The activity options to use for restoration. * @return true if the task has been restored successfully. */ - boolean restoreRecentTaskLocked(TaskRecord task, int stackId) { - if (!StackId.isStaticStack(stackId)) { - // If stack is not static (or stack id is invalid) - use the default one. - // This means that tasks that were on external displays will be restored on the - // primary display. - stackId = task.getLaunchStackId(); - } else if (stackId == DOCKED_STACK_ID && !task.supportsSplitScreen()) { - // Preferred stack is the docked stack, but the task can't go in the docked stack. - // Put it in the fullscreen stack. - stackId = FULLSCREEN_WORKSPACE_STACK_ID; - } - + boolean restoreRecentTaskLocked(TaskRecord task, ActivityOptions aOptions) { + final int stackId = getLaunchStackId(null, aOptions, task); final ActivityStack currentStack = task.getStack(); if (currentStack != null) { // Task has already been restored once. See if we need to do anything more @@ -2757,15 +2974,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D currentStack.removeTask(task, "restoreRecentTaskLocked", REMOVE_TASK_MODE_MOVING); } - final ActivityStack stack = - getStack(stackId, CREATE_IF_NEEDED, !ON_TOP); - - if (stack == null) { - // What does this mean??? Not sure how we would get here... - if (DEBUG_RECENTS) Slog.v(TAG_RECENTS, - "Unable to find/create stack to restore recent task=" + task); - return false; - } + final ActivityStack stack = getStack(stackId, CREATE_IF_NEEDED, !ON_TOP); stack.addTask(task, false /* toTop */, "restoreRecentTask"); // TODO: move call for creation here and other place into Stack.addTask() @@ -2922,8 +3131,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // move the home stack forward if we are currently entering picture-in-picture // while pausing because that changes the focused stack and may prevent the new // starting activity from resuming. - if (moveHomeStackToFront && task.getTaskToReturnTo() == HOME_ACTIVITY_TYPE - && (r.state == RESUMED || !r.supportsPictureInPictureWhilePausing)) { + if (moveHomeStackToFront && task.returnsToHomeTask() + && (r.state == RESUMED || !r.supportsEnterPipOnTaskSwitch)) { // Move the home stack forward if the task we just moved to the pinned stack // was launched from home so home should be visible behind it. moveHomeStackToFront(reason); @@ -2941,8 +3150,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // ensures that all the necessary work to migrate states in the old and new stacks // is also done. final TaskRecord newTask = task.getStack().createTaskRecord( - getNextTaskIdForUserLocked(r.userId), r.info, r.intent, null, null, true, - r.mActivityType); + getNextTaskIdForUserLocked(r.userId), r.info, r.intent, null, null, true); r.reparent(newTask, MAX_VALUE, "moveActivityToStack"); // Defer resume until below, and do not schedule PiP changes until we animate below @@ -2952,7 +3160,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // Reset the state that indicates it can enter PiP while pausing after we've moved it // to the pinned stack - r.supportsPictureInPictureWhilePausing = false; + r.supportsEnterPipOnTaskSwitch = false; } finally { mWindowManager.continueSurfaceLayout(); } @@ -2972,7 +3180,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); resumeFocusedStackTopActivityLocked(); - mService.mTaskChangeNotificationController.notifyActivityPinned(r.packageName, + mService.mTaskChangeNotificationController.notifyActivityPinned(r.packageName, r.userId, r.getTask().taskId); } @@ -3014,7 +3222,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = stacks.get(stackNdx); - if (!checkActivityBelongsInStack(r, stack)) { + if (!r.hasCompatibleActivityType(stack)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping stack: (mismatch activity/stack) " + stack); continue; @@ -3033,6 +3241,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // tasks should always have lower priority than any affinity-matching tasks // in the fullscreen stacks affinityMatch = mTmpFindTaskResult.r; + } else if (DEBUG_TASKS && mTmpFindTaskResult.matchedByRootAffinity) { + Slog.d(TAG_TASKS, "Skipping match on different display " + + mTmpFindTaskResult.r.getDisplayId() + " " + displayId); } } } @@ -3042,21 +3253,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return affinityMatch; } - /** - * Checks that for the given activity {@param r}, its activity type matches the {@param stack} - * type. - */ - private boolean checkActivityBelongsInStack(ActivityRecord r, ActivityStack stack) { - if (r.isHomeActivity()) { - return stack.isHomeStack(); - } else if (r.isRecentsActivity()) { - return stack.isRecentsStack(); - } else if (r.isAssistantActivity()) { - return stack.isAssistantStack(); - } - return true; - } - ActivityRecord findActivityLocked(Intent intent, ActivityInfo info, boolean compareIntentFilters) { for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { @@ -3234,6 +3430,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } boolean reportResumedActivityLocked(ActivityRecord r) { + // A resumed activity cannot be stopping. remove from list + mStoppingActivities.remove(r); + final ActivityStack stack = r.getStack(); if (isFocusedStack(stack)) { mService.updateUsageStats(r, true); @@ -3263,7 +3462,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D final ActivityStack stack = task.getStack(); r.mLaunchTaskBehind = false; - task.setLastThumbnailLocked(r.screenshotActivityLocked()); mRecentTasks.addLocked(task); mService.mTaskChangeNotificationController.notifyTaskStackChanged(); r.setVisibility(false); @@ -3437,7 +3635,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (stack == null) { stack = mHomeStack; } - final boolean homeInFront = stack.isHomeStack(); + final boolean homeInFront = stack.isActivityTypeHome(); if (stack.isOnHomeDisplay()) { stack.moveToFront("switchUserOnHomeDisplay"); } else { @@ -3558,15 +3756,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D pw.println("mCurTaskIdForUser=" + mCurTaskIdForUser); pw.print(prefix); pw.println("mUserStackInFront=" + mUserStackInFront); pw.print(prefix); pw.println("mStacks=" + mStacks); - // TODO: move this to LockTaskController - final SparseArray<String[]> packages = mService.mLockTaskPackages; - if (packages.size() > 0) { - pw.print(prefix); pw.println("mLockTaskPackages (userId:packages)="); - for (int i = 0; i < packages.size(); ++i) { - pw.print(prefix); pw.print(prefix); pw.print(packages.keyAt(i)); - pw.print(":"); pw.println(Arrays.toString(packages.valueAt(i))); - } - } if (!mWaitingForActivityVisible.isEmpty()) { pw.print(prefix); pw.println("mWaitingForActivityVisible="); for (int i = 0; i < mWaitingForActivityVisible.size(); ++i) { @@ -3578,6 +3767,26 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D mService.mLockTaskController.dump(pw, prefix); } + public void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + super.writeToProto(proto, CONFIGURATION_CONTAINER); + for (int displayNdx = 0; displayNdx < mActivityDisplays.size(); ++displayNdx) { + ActivityDisplay activityDisplay = mActivityDisplays.valueAt(displayNdx); + activityDisplay.writeToProto(proto, DISPLAYS); + } + mKeyguardController.writeToProto(proto, KEYGUARD_CONTROLLER); + if (mFocusedStack != null) { + proto.write(FOCUSED_STACK_ID, mFocusedStack.mStackId); + ActivityRecord focusedActivity = getResumedActivityLocked(); + if (focusedActivity != null) { + focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY); + } + } else { + proto.write(FOCUSED_STACK_ID, INVALID_STACK_ID); + } + proto.end(token); + } + /** * Dump all connected displays' configurations. * @param prefix Prefix to apply to each line of the dump. @@ -3643,25 +3852,14 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D ArrayList<ActivityStack> stacks = activityDisplay.mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = stacks.get(stackNdx); - StringBuilder stackHeader = new StringBuilder(128); - stackHeader.append(" Stack #"); - stackHeader.append(stack.mStackId); - stackHeader.append(":"); - stackHeader.append("\n"); - stackHeader.append(" mFullscreen=" + stack.mFullscreen); - stackHeader.append("\n"); - stackHeader.append(" isSleeping=" + stack.shouldSleepActivities()); - stackHeader.append("\n"); - stackHeader.append(" mBounds=" + stack.mBounds); - - final boolean printedStackHeader = stack.dumpActivitiesLocked(fd, pw, dumpAll, - dumpClient, dumpPackage, needSep, stackHeader.toString()); - printed |= printedStackHeader; - if (!printedStackHeader) { - // Ensure we always dump the stack header even if there are no activities - pw.println(); - pw.println(stackHeader); - } + pw.println(); + pw.println(" Stack #" + stack.mStackId + ":"); + pw.println(" mFullscreen=" + stack.mFullscreen); + pw.println(" isSleeping=" + stack.shouldSleepActivities()); + pw.println(" mBounds=" + stack.mBounds); + + printed |= stack.dumpActivitiesLocked(fd, pw, dumpAll, dumpClient, dumpPackage, + needSep); printed |= dumpHistoryList(fd, pw, stack.mLRUActivities, " ", "Run", false, !dumpAll, false, dumpPackage, true, @@ -3709,8 +3907,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D static boolean dumpHistoryList(FileDescriptor fd, PrintWriter pw, List<ActivityRecord> list, String prefix, String label, boolean complete, boolean brief, boolean client, - String dumpPackage, boolean needNL, String header1, String header2) { - TaskRecord lastTask = null; + String dumpPackage, boolean needNL, String header, TaskRecord lastTask) { String innerPrefix = null; String[] args = null; boolean printed = false; @@ -3729,13 +3926,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D pw.println(""); needNL = false; } - if (header1 != null) { - pw.println(header1); - header1 = null; - } - if (header2 != null) { - pw.println(header2); - header2 = null; + if (header != null) { + pw.println(header); + header = null; } if (lastTask != r.getTask()) { lastTask = r.getTask(); @@ -4041,19 +4234,21 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return list; } - void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredStackId, + void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredWindowingMode, int preferredDisplayId, int actualStackId) { - handleNonResizableTaskIfNeeded(task, preferredStackId, preferredDisplayId, actualStackId, - false /* forceNonResizable */); + handleNonResizableTaskIfNeeded(task, preferredWindowingMode, preferredDisplayId, + actualStackId, false /* forceNonResizable */); } - void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredStackId, + void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredWindowingMode, int preferredDisplayId, int actualStackId, boolean forceNonResizable) { final boolean isSecondaryDisplayPreferred = - (preferredDisplayId != DEFAULT_DISPLAY && preferredDisplayId != INVALID_DISPLAY) - || StackId.isDynamicStack(preferredStackId); - if (((!isStackDockedInEffect(actualStackId) && preferredStackId != DOCKED_STACK_ID) - && !isSecondaryDisplayPreferred) || task.isHomeTask()) { + (preferredDisplayId != DEFAULT_DISPLAY && preferredDisplayId != INVALID_DISPLAY); + final ActivityStack actualStack = getStack(actualStackId); + final boolean inSplitScreenMode = actualStack != null + && actualStack.inSplitScreenWindowingMode(); + if (((!inSplitScreenMode && preferredWindowingMode != WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) + && !isSecondaryDisplayPreferred) || task.isActivityTypeHome()) { return; } @@ -4150,31 +4345,29 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return; } - scheduleUpdatePictureInPictureModeIfNeeded(task, stack.mBounds, false /* immediate */); + scheduleUpdatePictureInPictureModeIfNeeded(task, stack.mBounds); } - void scheduleUpdatePictureInPictureModeIfNeeded(TaskRecord task, Rect targetStackBounds, - boolean immediate) { - - if (immediate) { - mHandler.removeMessages(REPORT_PIP_MODE_CHANGED_MSG); - for (int i = task.mActivities.size() - 1; i >= 0; i--) { - final ActivityRecord r = task.mActivities.get(i); - if (r.app != null && r.app.thread != null) { - r.updatePictureInPictureMode(targetStackBounds); - } - } - } else { - for (int i = task.mActivities.size() - 1; i >= 0; i--) { - final ActivityRecord r = task.mActivities.get(i); - if (r.app != null && r.app.thread != null) { - mPipModeChangedActivities.add(r); - } + void scheduleUpdatePictureInPictureModeIfNeeded(TaskRecord task, Rect targetStackBounds) { + for (int i = task.mActivities.size() - 1; i >= 0; i--) { + final ActivityRecord r = task.mActivities.get(i); + if (r.app != null && r.app.thread != null) { + mPipModeChangedActivities.add(r); } - mPipModeChangedTargetStackBounds = targetStackBounds; + } + mPipModeChangedTargetStackBounds = targetStackBounds; + + if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) { + mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG); + } + } - if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) { - mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG); + void updatePictureInPictureMode(TaskRecord task, Rect targetStackBounds, boolean forceUpdate) { + mHandler.removeMessages(REPORT_PIP_MODE_CHANGED_MSG); + for (int i = task.mActivities.size() - 1; i >= 0; i--) { + final ActivityRecord r = task.mActivities.get(i); + if (r.app != null && r.app.thread != null) { + r.updatePictureInPictureMode(targetStackBounds, forceUpdate); } } } @@ -4236,7 +4429,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D synchronized (mService) { for (int i = mPipModeChangedActivities.size() - 1; i >= 0; i--) { final ActivityRecord r = mPipModeChangedActivities.remove(i); - r.updatePictureInPictureMode(mPipModeChangedTargetStackBounds); + r.updatePictureInPictureMode(mPipModeChangedTargetStackBounds, + false /* forceUpdate */); } } } break; @@ -4414,6 +4608,17 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D void setIsSleeping(boolean asleep) { mSleeping = asleep; } + + public void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + super.writeToProto(proto, ActivityDisplayProto.CONFIGURATION_CONTAINER); + proto.write(ID, mDisplayId); + for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { + final ActivityStack stack = mStacks.get(stackNdx); + stack.writeToProto(proto, STACKS); + } + proto.end(token); + } } ActivityStack findStackBehind(ActivityStack stack) { @@ -4448,18 +4653,22 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D final String callingPackage; final Intent intent; final int userId; + int activityType = ACTIVITY_TYPE_UNDEFINED; + int windowingMode = WINDOWING_MODE_UNDEFINED; final ActivityOptions activityOptions = (bOptions != null) ? new ActivityOptions(bOptions) : null; - final int launchStackId = (activityOptions != null) - ? activityOptions.getLaunchStackId() : INVALID_STACK_ID; - if (StackId.isHomeOrRecentsStack(launchStackId)) { + if (activityOptions != null) { + activityType = activityOptions.getLaunchActivityType(); + windowingMode = activityOptions.getLaunchWindowingMode(); + } + if (activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS) { throw new IllegalArgumentException("startActivityFromRecentsInner: Task " + taskId + " can't be launch in the home/recents stack."); } mWindowManager.deferSurfaceLayout(); try { - if (launchStackId == DOCKED_STACK_ID) { + if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { mWindowManager.setDockedStackCreateState( activityOptions.getDockCreateMode(), null /* initialBounds */); @@ -4471,7 +4680,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } task = anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE, - launchStackId); + activityOptions); if (task == null) { continueUpdateBounds(RECENTS_STACK_ID); mWindowManager.executeAppTransition(); @@ -4482,14 +4691,13 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // Since we don't have an actual source record here, we assume that the currently // focused activity was the source. final ActivityStack focusedStack = getFocusedStack(); - final ActivityRecord sourceRecord = - focusedStack != null ? focusedStack.topActivity() : null; + final ActivityRecord sourceRecord = focusedStack != null + ? focusedStack.topActivity() : null; + final int stackId = getLaunchStackId(null, activityOptions, task); - if (launchStackId != INVALID_STACK_ID) { - if (task.getStackId() != launchStackId) { - task.reparent(launchStackId, ON_TOP, REPARENT_MOVE_STACK_TO_FRONT, ANIMATE, - DEFER_RESUME, "startActivityFromRecents"); - } + if (stackId != INVALID_STACK_ID && task.getStackId() != stackId) { + task.reparent(stackId, ON_TOP, REPARENT_MOVE_STACK_TO_FRONT, ANIMATE, DEFER_RESUME, + "startActivityFromRecents"); } // If the user must confirm credentials (e.g. when first launching a work app and the @@ -4508,7 +4716,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // If we are launching the task in the docked stack, put it into resizing mode so // the window renders full-screen with the background filling the void. Also only // call this at the end to make sure that tasks exists on the window manager side. - if (launchStackId == DOCKED_STACK_ID) { + if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { setResizingDuringAnimation(task); } @@ -4526,7 +4734,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D userId = task.userId; int result = mService.startActivityInPackage(callingUid, callingPackage, intent, null, null, null, 0, 0, bOptions, userId, task, "startActivityFromRecents"); - if (launchStackId == DOCKED_STACK_ID) { + if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { setResizingDuringAnimation(task); } return result; diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index 235477e24a27..fab4d0d21b8e 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -36,6 +36,11 @@ import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.app.ActivityManager.StackId.RECENTS_STACK_ID; import static android.app.ActivityManager.StackId.isDynamicStack; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; @@ -72,9 +77,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_USER_LEAV import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.ActivityManagerService.ANIMATE; -import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.ASSISTANT_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE; import static com.android.server.am.ActivityStack.ActivityState.RESUMED; import static com.android.server.am.ActivityStack.STACK_INVISIBLE; import static com.android.server.am.ActivityStackSupervisor.CREATE_IF_NEEDED; @@ -167,7 +169,8 @@ class ActivityStarter { private boolean mDoResume; private int mStartFlags; private ActivityRecord mSourceRecord; - private int mSourceDisplayId; + // The display to launch the activity onto, barring any strong reason to do otherwise. + private int mPreferredDisplayId; private TaskRecord mInTask; private boolean mAddingToTask; @@ -222,7 +225,7 @@ class ActivityStarter { mDoResume = false; mStartFlags = 0; mSourceRecord = null; - mSourceDisplayId = INVALID_DISPLAY; + mPreferredDisplayId = INVALID_DISPLAY; mInTask = null; mAddingToTask = false; @@ -1024,10 +1027,12 @@ class ActivityStarter { ActivityRecord reusedActivity = getReusableIntentActivity(); - final int preferredLaunchStackId = - (mOptions != null) ? mOptions.getLaunchStackId() : INVALID_STACK_ID; - final int preferredLaunchDisplayId = - (mOptions != null) ? mOptions.getLaunchDisplayId() : DEFAULT_DISPLAY; + int preferredWindowingMode = WINDOWING_MODE_UNDEFINED; + int preferredLaunchDisplayId = DEFAULT_DISPLAY; + if (mOptions != null) { + preferredWindowingMode = mOptions.getLaunchWindowingMode(); + preferredLaunchDisplayId = mOptions.getLaunchDisplayId(); + } if (reusedActivity != null) { // When the flags NEW_TASK and CLEAR_TASK are set, then the task gets reused but @@ -1158,7 +1163,7 @@ class ActivityStarter { // Don't use mStartActivity.task to show the toast. We're not starting a new activity // but reusing 'top'. Fields in mStartActivity may not be fully initialized. - mSupervisor.handleNonResizableTaskIfNeeded(top.getTask(), preferredLaunchStackId, + mSupervisor.handleNonResizableTaskIfNeeded(top.getTask(), preferredWindowingMode, preferredLaunchDisplayId, topStack.mStackId); return START_DELIVERED_TO_TOP; @@ -1173,8 +1178,7 @@ class ActivityStarter { if (mStartActivity.resultTo == null && mInTask == null && !mAddingToTask && (mLaunchFlags & FLAG_ACTIVITY_NEW_TASK) != 0) { newTask = true; - result = setTaskFromReuseOrCreateNewTask( - taskToAffiliate, preferredLaunchStackId, topStack); + result = setTaskFromReuseOrCreateNewTask(taskToAffiliate, topStack); } else if (mSourceRecord != null) { result = setTaskFromSourceRecord(); } else if (mInTask != null) { @@ -1241,7 +1245,7 @@ class ActivityStarter { } mSupervisor.updateUserStackLocked(mStartActivity.userId, mTargetStack); - mSupervisor.handleNonResizableTaskIfNeeded(mStartActivity.getTask(), preferredLaunchStackId, + mSupervisor.handleNonResizableTaskIfNeeded(mStartActivity.getTask(), preferredWindowingMode, preferredLaunchDisplayId, mTargetStack.mStackId); return START_SUCCESS; @@ -1260,7 +1264,7 @@ class ActivityStarter { mVoiceSession = voiceSession; mVoiceInteractor = voiceInteractor; - mSourceDisplayId = getSourceDisplayId(mSourceRecord, mStartActivity); + mPreferredDisplayId = getPreferedDisplayId(mSourceRecord, mStartActivity, options); mLaunchBounds = getOverrideBounds(r, options, inTask); @@ -1507,7 +1511,7 @@ class ActivityStarter { // There can be one and only one instance of single instance activity in the // history, and it is always in its own unique task, so we do a special search. intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info, - mStartActivity.isHomeActivity()); + mStartActivity.isActivityTypeHome()); } else if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) { // For the launch adjacent case we only want to put the activity in an existing // task if the activity already exists in the history. @@ -1515,7 +1519,7 @@ class ActivityStarter { !mLaunchSingleTask); } else { // Otherwise find the best task to put the activity in. - intentActivity = mSupervisor.findTaskLocked(mStartActivity, mSourceDisplayId); + intentActivity = mSupervisor.findTaskLocked(mStartActivity, mPreferredDisplayId); } } return intentActivity; @@ -1523,10 +1527,12 @@ class ActivityStarter { /** * Returns the ID of the display to use for a new activity. If the device is in VR mode, - * then return the Vr mode's virtual display ID. If not, if the source activity has - * a explicit display ID set, use that to launch the activity. + * then return the Vr mode's virtual display ID. If not, if the activity was started with + * a launchDisplayId, use that. Otherwise, if the source activity has a explicit display ID + * set, use that to launch the activity. */ - private int getSourceDisplayId(ActivityRecord sourceRecord, ActivityRecord startingActivity) { + private int getPreferedDisplayId( + ActivityRecord sourceRecord, ActivityRecord startingActivity, ActivityOptions options) { // Check if the Activity is a VR activity. If so, the activity should be launched in // main display. if (startingActivity != null && startingActivity.requestedVrComponent != null) { @@ -1543,6 +1549,13 @@ class ActivityStarter { return displayId; } + // If the caller requested a display, prefer that display. + final int launchDisplayId = + (options != null) ? options.getLaunchDisplayId() : INVALID_DISPLAY; + if (launchDisplayId != INVALID_DISPLAY) { + return launchDisplayId; + } + displayId = sourceRecord != null ? sourceRecord.getDisplayId() : INVALID_DISPLAY; // If the activity has a displayId set explicitly, launch it on the same displayId. if (displayId != INVALID_DISPLAY) { @@ -1654,8 +1667,8 @@ class ActivityStarter { mTargetStack.moveToFront("intentActivityFound"); } - mSupervisor.handleNonResizableTaskIfNeeded(intentActivity.getTask(), INVALID_STACK_ID, - DEFAULT_DISPLAY, mTargetStack.mStackId); + mSupervisor.handleNonResizableTaskIfNeeded(intentActivity.getTask(), + WINDOWING_MODE_UNDEFINED, DEFAULT_DISPLAY, mTargetStack.mStackId); // If the caller has requested that the target task be reset, then do so. if ((mLaunchFlags & FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) != 0) { @@ -1669,21 +1682,20 @@ class ActivityStarter { if ((launchFlags & (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_TASK_ON_HOME)) == (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_TASK_ON_HOME)) { // Caller wants to appear on home activity. - task.setTaskToReturnTo(HOME_ACTIVITY_TYPE); + task.setTaskToReturnTo(ACTIVITY_TYPE_HOME); return; - } else if (focusedStack == null || focusedStack.isHomeStack()) { + } else if (focusedStack == null || focusedStack.isActivityTypeHome()) { // Task will be launched over the home stack, so return home. - task.setTaskToReturnTo(HOME_ACTIVITY_TYPE); + task.setTaskToReturnTo(ACTIVITY_TYPE_HOME); return; - } else if (focusedStack != null && focusedStack != task.getStack() && - focusedStack.isAssistantStack()) { + } else if (focusedStack != task.getStack() && focusedStack.isActivityTypeAssistant()) { // Task was launched over the assistant stack, so return there - task.setTaskToReturnTo(ASSISTANT_ACTIVITY_TYPE); + task.setTaskToReturnTo(ACTIVITY_TYPE_ASSISTANT); return; } // Else we are coming from an application stack so return to an application. - task.setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE); + task.setTaskToReturnTo(ACTIVITY_TYPE_STANDARD); } private void setTaskFromIntentActivity(ActivityRecord intentActivity) { @@ -1779,7 +1791,7 @@ class ActivityStarter { } private int setTaskFromReuseOrCreateNewTask( - TaskRecord taskToAffiliate, int preferredLaunchStackId, ActivityStack topStack) { + TaskRecord taskToAffiliate, ActivityStack topStack) { mTargetStack = computeStackFocus( mStartActivity, true, mLaunchBounds, mLaunchFlags, mOptions); @@ -1791,7 +1803,7 @@ class ActivityStarter { mSupervisor.getNextTaskIdForUserLocked(mStartActivity.userId), mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info, mNewTaskIntent != null ? mNewTaskIntent : mIntent, mVoiceSession, - mVoiceInteractor, !mLaunchTaskBehind /* toTop */, mStartActivity.mActivityType); + mVoiceInteractor, !mLaunchTaskBehind /* toTop */); addOrReparentStartingActivity(task, "setTaskFromReuseOrCreateNewTask - mReuseTask"); if (mLaunchBounds != null) { final int stackId = mTargetStack.mStackId; @@ -1821,8 +1833,10 @@ class ActivityStarter { // If stack id is specified in activity options, usually it means that activity is // launched not from currently focused stack (e.g. from SysUI or from shell) - in // that case we check the target stack. + // TODO: Not sure I understand the value or use of the commented out code and the + // comment above. See if this causes any issues and why... updateTaskReturnToType(mStartActivity.getTask(), mLaunchFlags, - preferredLaunchStackId != INVALID_STACK_ID ? mTargetStack : topStack); + /*preferredLaunchStackId != INVALID_STACK_ID ? mTargetStack : */topStack); } if (mDoResume) { mTargetStack.moveToFront("reuseOrNewTask"); @@ -1964,7 +1978,8 @@ class ActivityStarter { if (mLaunchBounds != null) { mInTask.updateOverrideConfiguration(mLaunchBounds); - int stackId = mInTask.getLaunchStackId(); + // TODO: Shouldn't we already know what stack to use by the time we get here? + int stackId = mSupervisor.getLaunchStackId(null, null, mInTask); if (stackId != mInTask.getStackId()) { mInTask.reparent(stackId, ON_TOP, REPARENT_KEEP_STACK_AT_FRONT, !ANIMATE, DEFER_RESUME, "inTaskToFront"); @@ -1995,7 +2010,7 @@ class ActivityStarter { final ActivityRecord prev = mTargetStack.topActivity(); final TaskRecord task = (prev != null) ? prev.getTask() : mTargetStack.createTaskRecord( mSupervisor.getNextTaskIdForUserLocked(mStartActivity.userId), mStartActivity.info, - mIntent, null, null, true, mStartActivity.mActivityType); + mIntent, null, null, true); addOrReparentStartingActivity(task, "setTaskToCurrentTopOrCreateNewTask"); mTargetStack.positionChildWindowContainerAtTop(task); if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Starting new activity " + mStartActivity @@ -2079,15 +2094,15 @@ class ActivityStarter { return mSupervisor.mFocusedStack; } - if (mSourceDisplayId != DEFAULT_DISPLAY) { + if (mPreferredDisplayId != DEFAULT_DISPLAY) { // Try to put the activity in a stack on a secondary display. - stack = mSupervisor.getValidLaunchStackOnDisplay(mSourceDisplayId, r); + stack = mSupervisor.getValidLaunchStackOnDisplay(mPreferredDisplayId, r); if (stack == null) { // If source display is not suitable - look for topmost valid stack in the system. if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, - "computeStackFocus: Can't launch on mSourceDisplayId=" + mSourceDisplayId - + ", looking on all displays."); - stack = mSupervisor.getNextValidLaunchStackLocked(r, mSourceDisplayId); + "computeStackFocus: Can't launch on mPreferredDisplayId=" + + mPreferredDisplayId + ", looking on all displays."); + stack = mSupervisor.getNextValidLaunchStackLocked(r, mPreferredDisplayId); } } if (stack == null) { @@ -2102,9 +2117,10 @@ class ActivityStarter { } } // If there is no suitable dynamic stack then we figure out which static stack to use. - final int stackId = task != null ? task.getLaunchStackId() : - bounds != null ? FREEFORM_WORKSPACE_STACK_ID : - FULLSCREEN_WORKSPACE_STACK_ID; + final int stackId = task != null ? mSupervisor.getLaunchStackId(r, aOptions, task) + // TODO: This should go in mSupervisor.getLaunchStackId method... + : bounds != null && mService.mSupportsFreeformWindowManagement + ? FREEFORM_WORKSPACE_STACK_ID : FULLSCREEN_WORKSPACE_STACK_ID; stack = mSupervisor.getStack(stackId, CREATE_IF_NEEDED, ON_TOP); } if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, "computeStackFocus: New stack r=" @@ -2124,7 +2140,7 @@ class ActivityStarter { canUseFocusedStack = true; break; case ASSISTANT_STACK_ID: - canUseFocusedStack = r.isAssistantActivity(); + canUseFocusedStack = r.isActivityTypeAssistant(); break; case DOCKED_STACK_ID: // Any activity which supports split screen can go in the docked stack. @@ -2142,8 +2158,8 @@ class ActivityStarter { } return canUseFocusedStack && !newTask - // We strongly prefer to launch activities on the same display as their source. - && (mSourceDisplayId == focusedStack.mDisplayId); + // Using the focus stack isn't important enough to override the prefered display. + && (mPreferredDisplayId == focusedStack.mDisplayId); } private ActivityStack getLaunchStack(ActivityRecord r, int launchFlags, TaskRecord task, @@ -2155,28 +2171,26 @@ class ActivityStarter { // If the activity is of a specific type, return the associated stack, creating it if // necessary - if (r.isHomeActivity()) { + if (r.isActivityTypeHome()) { return mSupervisor.mHomeStack; } - if (r.isRecentsActivity()) { + if (r.isActivityTypeRecents()) { return mSupervisor.getStack(RECENTS_STACK_ID, CREATE_IF_NEEDED, ON_TOP); } - if (r.isAssistantActivity()) { + if (r.isActivityTypeAssistant()) { return mSupervisor.getStack(ASSISTANT_STACK_ID, CREATE_IF_NEEDED, ON_TOP); } - final int launchDisplayId = - (aOptions != null) ? aOptions.getLaunchDisplayId() : INVALID_DISPLAY; - - final int launchStackId = - (aOptions != null) ? aOptions.getLaunchStackId() : INVALID_STACK_ID; - - if (launchStackId != INVALID_STACK_ID && launchDisplayId != INVALID_DISPLAY) { - throw new IllegalArgumentException( - "Stack and display id can't be set at the same time."); + int launchDisplayId = INVALID_DISPLAY; + int launchStackId = INVALID_STACK_ID; + if (aOptions != null) { + launchDisplayId = aOptions.getLaunchDisplayId(); + final int vrDisplayId = mUsingVr2dDisplay ? mPreferredDisplayId : INVALID_DISPLAY; + launchStackId = mSupervisor.getLaunchStackId(r, aOptions, task, vrDisplayId); } - if (isValidLaunchStackId(launchStackId, launchDisplayId, r)) { + // TODO: Will no longer be needed once we are on longer using static stack ids. + if (mSupervisor.isValidLaunchStackId(launchStackId, launchDisplayId, r)) { return mSupervisor.getStack(launchStackId, CREATE_IF_NEEDED, ON_TOP); } if (launchStackId == DOCKED_STACK_ID) { @@ -2184,14 +2198,16 @@ class ActivityStarter { // for this activity, so we put the activity in the fullscreen stack. return mSupervisor.getStack(FULLSCREEN_WORKSPACE_STACK_ID, CREATE_IF_NEEDED, ON_TOP); } + // TODO: Can probably be removed since ASS.getLaunchStackId() does display resolution. if (launchDisplayId != INVALID_DISPLAY) { // Stack id has higher priority than display id. return mSupervisor.getValidLaunchStackOnDisplay(launchDisplayId, r); } // If we are using Vr2d display, find the virtual display stack. + // TODO: Can be removed. if (mUsingVr2dDisplay) { - ActivityStack as = mSupervisor.getValidLaunchStackOnDisplay(mSourceDisplayId, r); + ActivityStack as = mSupervisor.getValidLaunchStackOnDisplay(mPreferredDisplayId, r); if (DEBUG_STACK) { Slog.v(TAG, "Launch stack for app: " + r.toString() + ", on virtual display stack:" + as.toString()); @@ -2200,7 +2216,7 @@ class ActivityStarter { } if (((launchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) == 0) - || mSourceDisplayId != DEFAULT_DISPLAY) { + || mPreferredDisplayId != DEFAULT_DISPLAY) { return null; } // Otherwise handle adjacent launch. @@ -2240,39 +2256,11 @@ class ActivityStarter { } } - boolean isValidLaunchStackId(int stackId, int displayId, ActivityRecord r) { - switch (stackId) { - case INVALID_STACK_ID: - case HOME_STACK_ID: - return false; - case FULLSCREEN_WORKSPACE_STACK_ID: - return true; - case FREEFORM_WORKSPACE_STACK_ID: - return r.supportsFreeform(); - case DOCKED_STACK_ID: - return r.supportsSplitScreen(); - case PINNED_STACK_ID: - return r.supportsPictureInPicture(); - case RECENTS_STACK_ID: - return r.isRecentsActivity(); - case ASSISTANT_STACK_ID: - return r.isAssistantActivity(); - default: - if (StackId.isDynamicStack(stackId)) { - return r.canBeLaunchedOnDisplay(displayId); - } - Slog.e(TAG, "isValidLaunchStackId: Unexpected stackId=" + stackId); - return false; - } - } - - Rect getOverrideBounds(ActivityRecord r, ActivityOptions options, TaskRecord inTask) { + private Rect getOverrideBounds(ActivityRecord r, ActivityOptions options, TaskRecord inTask) { Rect newBounds = null; - if (options != null && (r.isResizeable() || (inTask != null && inTask.isResizeable()))) { - if (mSupervisor.canUseActivityOptionsLaunchBounds( - options, options.getLaunchStackId())) { - newBounds = TaskRecord.validateBounds(options.getLaunchBounds()); - } + if (mSupervisor.canUseActivityOptionsLaunchBounds(options) + && (r.isResizeable() || (inTask != null && inTask.isResizeable()))) { + newBounds = TaskRecord.validateBounds(options.getLaunchBounds()); } return newBounds; } diff --git a/services/core/java/com/android/server/am/AppErrorDialog.java b/services/core/java/com/android/server/am/AppErrorDialog.java index 51ce30ef08f3..541226682bac 100644 --- a/services/core/java/com/android/server/am/AppErrorDialog.java +++ b/services/core/java/com/android/server/am/AppErrorDialog.java @@ -40,7 +40,6 @@ final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListen private final ProcessRecord mProc; private final boolean mRepeating; private final boolean mIsRestartable; - private CharSequence mName; static int CANT_SHOW = -1; @@ -110,17 +109,16 @@ final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListen LayoutInflater.from(context).inflate( com.android.internal.R.layout.app_error_dialog, frame, true); - boolean hasRestart = !mRepeating && mIsRestartable; final boolean hasReceiver = mProc.errorReportReceiver != null; final TextView restart = findViewById(com.android.internal.R.id.aerr_restart); restart.setOnClickListener(this); - restart.setVisibility(hasRestart ? View.VISIBLE : View.GONE); + restart.setVisibility(mIsRestartable ? View.VISIBLE : View.GONE); final TextView report = findViewById(com.android.internal.R.id.aerr_report); report.setOnClickListener(this); report.setVisibility(hasReceiver ? View.VISIBLE : View.GONE); final TextView close = findViewById(com.android.internal.R.id.aerr_close); - close.setVisibility(!hasRestart ? View.VISIBLE : View.GONE); + close.setVisibility(mRepeating ? View.VISIBLE : View.GONE); close.setOnClickListener(this); boolean showMute = !Build.IS_USER && Settings.Global.getInt(context.getContentResolver(), diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java index fc03db1203bd..440b3d3baedd 100644 --- a/services/core/java/com/android/server/am/AppErrors.java +++ b/services/core/java/com/android/server/am/AppErrors.java @@ -55,7 +55,6 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Set; import static com.android.server.Watchdog.NATIVE_STACKS_OF_INTEREST; @@ -593,20 +592,46 @@ class AppErrors { boolean handleAppCrashLocked(ProcessRecord app, String reason, String shortMsg, String longMsg, String stackTrace, AppErrorDialog.Data data) { - long now = SystemClock.uptimeMillis(); - boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(), + final long now = SystemClock.uptimeMillis(); + final boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0; + final boolean procIsBoundForeground = + (app.curProcState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); + Long crashTime; Long crashTimePersistent; + boolean tryAgain = false; + if (!app.isolated) { crashTime = mProcessCrashTimes.get(app.info.processName, app.uid); crashTimePersistent = mProcessCrashTimesPersistent.get(app.info.processName, app.uid); } else { crashTime = crashTimePersistent = null; } - if (crashTime != null && now < crashTime+ProcessList.MIN_CRASH_INTERVAL) { - // This process loses! + + // Bump up the crash count of any services currently running in the proc. + for (int i = app.services.size() - 1; i >= 0; i--) { + // Any services running in the application need to be placed + // back in the pending list. + ServiceRecord sr = app.services.valueAt(i); + // If the service was restarted a while ago, then reset crash count, else increment it. + if (now > sr.restartTime + ProcessList.MIN_CRASH_INTERVAL) { + sr.crashCount = 1; + } else { + sr.crashCount++; + } + // Allow restarting for started or bound foreground services that are crashing. + // This includes wallpapers. + if (sr.crashCount < mService.mConstants.BOUND_SERVICE_MAX_CRASH_RETRY + && (sr.isForeground || procIsBoundForeground)) { + tryAgain = true; + } + } + + if (crashTime != null && now < crashTime + ProcessList.MIN_CRASH_INTERVAL) { + // The process crashed again very quickly. If it was a bound foreground service, let's + // try to restart again in a while, otherwise the process loses! Slog.w(TAG, "Process " + app.info.processName + " has crashed too many times: killing!"); EventLog.writeEvent(EventLogTags.AM_PROCESS_CRASHED_TOO_MUCH, @@ -631,7 +656,7 @@ class AppErrors { // Don't let services in this process be restarted and potentially // annoy the user repeatedly. Unless it is persistent, since those // processes run critical code. - mService.removeProcessLocked(app, false, false, "crash"); + mService.removeProcessLocked(app, false, tryAgain, "crash"); mService.mStackSupervisor.resumeFocusedStackTopActivityLocked(); if (!showBackground) { return false; @@ -650,21 +675,8 @@ class AppErrors { } } - boolean procIsBoundForeground = - (app.curProcState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); - // Bump up the crash count of any services currently running in the proc. - for (int i=app.services.size()-1; i>=0; i--) { - // Any services running in the application need to be placed - // back in the pending list. - ServiceRecord sr = app.services.valueAt(i); - sr.crashCount++; - - // Allow restarting for started or bound foreground services that are crashing the - // first time. This includes wallpapers. - if ((data != null) && (sr.crashCount <= 1) - && (sr.isForeground || procIsBoundForeground)) { - data.isRestartableForService = true; - } + if (data != null && tryAgain) { + data.isRestartableForService = true; } // If the crashing process is what we consider to be the "home process" and it has been @@ -676,7 +688,7 @@ class AppErrors { && (mService.mHomeProcess.info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { final ActivityRecord r = activities.get(activityNdx); - if (r.isHomeActivity()) { + if (r.isActivityTypeHome()) { Log.i(TAG, "Clearing package preferred activities from " + r.packageName); try { ActivityThread.getPackageManager() @@ -690,7 +702,7 @@ class AppErrors { if (!app.isolated) { // XXX Can't keep track of crash times for isolated processes, - // because they don't have a perisistent identity. + // because they don't have a persistent identity. mProcessCrashTimes.put(app.info.processName, app.uid, now); mProcessCrashTimesPersistent.put(app.info.processName, app.uid, now); } diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java index 5ff04798110f..f3ccba5490d6 100644 --- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java +++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java @@ -38,6 +38,7 @@ import com.android.internal.os.BatteryStatsImpl; import libcore.util.EmptyArray; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -116,6 +117,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { } public synchronized Future<?> scheduleWrite() { + if (mExecutorService.isShutdown()) { + return CompletableFuture.failedFuture(new IllegalStateException("worker shutdown")); + } + scheduleSyncLocked("write", UPDATE_ALL); // Since we use a single threaded executor, we can assume the next scheduled task's // Future finishes after the sync. @@ -127,7 +132,9 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { * within the task, never wait on the resulting Future. This will result in a deadlock. */ public synchronized void scheduleRunnable(Runnable runnable) { - mExecutorService.submit(runnable); + if (!mExecutorService.isShutdown()) { + mExecutorService.submit(runnable); + } } public void shutdown() { @@ -135,6 +142,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { } private Future<?> scheduleSyncLocked(String reason, int flags) { + if (mExecutorService.isShutdown()) { + return CompletableFuture.failedFuture(new IllegalStateException("worker shutdown")); + } + if (mCurrentFuture == null) { mUpdateFlags = flags; mCurrentReason = reason; @@ -253,6 +264,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { mStats.updateKernelMemoryBandwidthLocked(); } + if ((updateFlags & UPDATE_RPM) != 0) { + mStats.updateRpmStatsLocked(); + } + if (bluetoothInfo != null) { if (bluetoothInfo.isValid()) { mStats.updateBluetoothStateLocked(bluetoothInfo); diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 33568cd02c0d..e839003b957e 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -49,9 +49,11 @@ import com.android.internal.app.IBatteryStats; import com.android.internal.os.BatteryStatsHelper; import com.android.internal.os.BatteryStatsImpl; import com.android.internal.os.PowerProfile; +import com.android.internal.os.RpmStats; import com.android.internal.util.DumpUtils; import com.android.server.LocalServices; import com.android.server.power.BatterySaverPolicy.ServiceType; +import android.util.StatsLog; import java.io.File; import java.io.FileDescriptor; @@ -84,6 +86,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub private final Context mContext; private final BatteryExternalStatsWorker mWorker; + private native void getLowPowerStats(RpmStats rpmStats); private native int getPlatformLowPowerStats(ByteBuffer outBuffer); private native int getSubsystemLowPowerStats(ByteBuffer outBuffer); private CharsetDecoder mDecoderStat = StandardCharsets.UTF_8 @@ -95,6 +98,19 @@ public final class BatteryStatsService extends IBatteryStats.Stub private CharBuffer mUtf16BufferStat = CharBuffer.allocate(MAX_LOW_POWER_STATS_SIZE); private static final int MAX_LOW_POWER_STATS_SIZE = 512; + /** + * Replaces the information in the given rpmStats with up-to-date information. + */ + @Override + public void fillLowPowerStats(RpmStats rpmStats) { + if (DBG) Slog.d(TAG, "begin getLowPowerStats"); + try { + getLowPowerStats(rpmStats); + } finally { + if (DBG) Slog.d(TAG, "end getLowPowerStats"); + } + } + @Override public String getPlatformLowPowerStats() { if (DBG) Slog.d(TAG, "begin getPlatformLowPowerStats"); @@ -119,7 +135,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub @Override public String getSubsystemLowPowerStats() { - Slog.d(TAG, "begin getSubsystemLowPowerStats"); + if (DBG) Slog.d(TAG, "begin getSubsystemLowPowerStats"); try { mUtf8BufferStat.clear(); mUtf16BufferStat.clear(); @@ -135,7 +151,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub mUtf16BufferStat.flip(); return mUtf16BufferStat.toString(); } finally { - Slog.d(TAG, "end getSubsystemLowPowerStats"); + if (DBG) Slog.d(TAG, "end getSubsystemLowPowerStats"); } } @@ -281,12 +297,26 @@ public final class BatteryStatsService extends IBatteryStats.Stub void noteProcessStart(String name, int uid) { synchronized (mStats) { mStats.noteProcessStartLocked(name, uid); + + // TODO: remove this once we figure out properly where and how + // PROCESS_EVENT = 1112 + // KEY_STATE = 1 + // KEY_PACKAGE_NAME: 1002 + // KEY_UID: 2 + StatsLog.writeArray(1112, 1, 1, 1002, name, 2, uid); } } void noteProcessCrash(String name, int uid) { synchronized (mStats) { mStats.noteProcessCrashLocked(name, uid); + + // TODO: remove this once we figure out properly where and how + // PROCESS_EVENT = 1112 + // KEY_STATE = 1 + // KEY_PACKAGE_NAME: 1002 + // KEY_UID: 2 + StatsLog.writeArray(1112, 1, 2, 1002, name, 2, uid); } } @@ -478,14 +508,14 @@ public final class BatteryStatsService extends IBatteryStats.Stub mStats.noteStartSensorLocked(uid, sensor); } } - + public void noteStopSensor(int uid, int sensor) { enforceCallingPermission(); synchronized (mStats) { mStats.noteStopSensorLocked(uid, sensor); } } - + public void noteVibratorOn(int uid, long durationMillis) { enforceCallingPermission(); synchronized (mStats) { @@ -506,37 +536,42 @@ public final class BatteryStatsService extends IBatteryStats.Stub mStats.noteStartGpsLocked(uid); } } - + public void noteStopGps(int uid) { enforceCallingPermission(); synchronized (mStats) { mStats.noteStopGpsLocked(uid); } } - + public void noteScreenState(int state) { enforceCallingPermission(); if (DBG) Slog.d(TAG, "begin noteScreenState"); synchronized (mStats) { mStats.noteScreenStateLocked(state); + // TODO: remove this once we figure out properly where and how + // SCREEN_EVENT = 2 + // KEY_STATE: 1 + // State value: state. We can change this to our own def later. + StatsLog.writeArray(2, 1, state); } if (DBG) Slog.d(TAG, "end noteScreenState"); } - + public void noteScreenBrightness(int brightness) { enforceCallingPermission(); synchronized (mStats) { mStats.noteScreenBrightnessLocked(brightness); } } - + public void noteUserActivity(int uid, int event) { enforceCallingPermission(); synchronized (mStats) { mStats.noteUserActivityLocked(uid, event); } } - + public void noteWakeUp(String reason, int reasonUid) { enforceCallingPermission(); synchronized (mStats) { diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index 7c7eda7a3efe..d83545491d2d 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -1445,20 +1445,19 @@ public final class BroadcastQueue { r.receiverTime = now; r.anrCount++; - // Current receiver has passed its expiration date. - if (r.nextReceiver <= 0) { - Slog.w(TAG, "Timeout on receiver with nextReceiver <= 0"); - return; - } - ProcessRecord app = null; String anrMessage = null; - Object curReceiver = r.receivers.get(r.nextReceiver-1); - r.delivery[r.nextReceiver-1] = BroadcastRecord.DELIVERY_TIMEOUT; - Slog.w(TAG, "Receiver during timeout: " + curReceiver); + Object curReceiver; + if (r.nextReceiver > 0) { + curReceiver = r.receivers.get(r.nextReceiver-1); + r.delivery[r.nextReceiver-1] = BroadcastRecord.DELIVERY_TIMEOUT; + } else { + curReceiver = r.curReceiver; + } + Slog.w(TAG, "Receiver during timeout of " + r + " : " + curReceiver); logBroadcastReceiverDiscardLocked(r); - if (curReceiver instanceof BroadcastFilter) { + if (curReceiver != null && curReceiver instanceof BroadcastFilter) { BroadcastFilter bf = (BroadcastFilter)curReceiver; if (bf.receiverList.pid != 0 && bf.receiverList.pid != ActivityManagerService.MY_PID) { diff --git a/services/core/java/com/android/server/am/KeyguardController.java b/services/core/java/com/android/server/am/KeyguardController.java index cea80c8d0e9d..e03c530d0c92 100644 --- a/services/core/java/com/android/server/am/KeyguardController.java +++ b/services/core/java/com/android/server/am/KeyguardController.java @@ -19,12 +19,15 @@ package com.android.server.am; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.Display.INVALID_DISPLAY; import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_NO_WINDOW_ANIMATIONS; import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_TO_SHADE; import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_WITH_WALLPAPER; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS; +import static com.android.server.am.proto.KeyguardControllerProto.KEYGUARD_OCCLUDED; +import static com.android.server.am.proto.KeyguardControllerProto.KEYGUARD_SHOWING; import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_NO_ANIMATION; import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_TO_SHADE; import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_WITH_WALLPAPER; @@ -38,6 +41,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.Trace; import android.util.Slog; +import android.util.proto.ProtoOutputStream; import com.android.internal.policy.IKeyguardDismissCallback; import com.android.server.wm.WindowManagerService; @@ -66,6 +70,7 @@ class KeyguardController { private int mBeforeUnoccludeTransit; private int mVisibilityTransactionDepth; private SleepToken mSleepToken; + private int mSecondaryDisplayShowing = INVALID_DISPLAY; KeyguardController(ActivityManagerService service, ActivityStackSupervisor stackSupervisor) { @@ -78,10 +83,12 @@ class KeyguardController { } /** - * @return true if Keyguard is showing, not going away, and not being occluded, false otherwise + * @return true if Keyguard is showing, not going away, and not being occluded on the given + * display, false otherwise */ - boolean isKeyguardShowing() { - return mKeyguardShowing && !mKeyguardGoingAway && !mOccluded; + boolean isKeyguardShowing(int displayId) { + return mKeyguardShowing && !mKeyguardGoingAway && + (displayId == DEFAULT_DISPLAY ? !mOccluded : displayId == mSecondaryDisplayShowing); } /** @@ -94,15 +101,19 @@ class KeyguardController { /** * Update the Keyguard showing state. */ - void setKeyguardShown(boolean showing) { - if (showing == mKeyguardShowing) { + void setKeyguardShown(boolean showing, int secondaryDisplayShowing) { + boolean showingChanged = showing != mKeyguardShowing; + if (!showingChanged && secondaryDisplayShowing == mSecondaryDisplayShowing) { return; } mKeyguardShowing = showing; - dismissDockedStackIfNeeded(); - if (showing) { - setKeyguardGoingAway(false); - mDismissalRequested = false; + mSecondaryDisplayShowing = secondaryDisplayShowing; + if (showingChanged) { + dismissDockedStackIfNeeded(); + if (showing) { + setKeyguardGoingAway(false); + mDismissalRequested = false; + } } mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); updateKeyguardSleepToken(); @@ -337,9 +348,9 @@ class KeyguardController { } private void updateKeyguardSleepToken() { - if (mSleepToken == null && isKeyguardShowing()) { + if (mSleepToken == null && isKeyguardShowing(DEFAULT_DISPLAY)) { mSleepToken = mService.acquireSleepToken("Keyguard", DEFAULT_DISPLAY); - } else if (mSleepToken != null && !isKeyguardShowing()) { + } else if (mSleepToken != null && !isKeyguardShowing(DEFAULT_DISPLAY)) { mSleepToken.release(); mSleepToken = null; } @@ -354,4 +365,11 @@ class KeyguardController { pw.println(prefix + " mDismissalRequested=" + mDismissalRequested); pw.println(prefix + " mVisibilityTransactionDepth=" + mVisibilityTransactionDepth); } + + void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + proto.write(KEYGUARD_SHOWING, mKeyguardShowing); + proto.write(KEYGUARD_OCCLUDED, mOccluded); + proto.end(token); + } } diff --git a/services/core/java/com/android/server/am/LockTaskController.java b/services/core/java/com/android/server/am/LockTaskController.java index c03ac86a2bf9..72b5de88e50f 100644 --- a/services/core/java/com/android/server/am/LockTaskController.java +++ b/services/core/java/com/android/server/am/LockTaskController.java @@ -25,11 +25,14 @@ import static android.app.StatusBarManager.DISABLE_HOME; import static android.app.StatusBarManager.DISABLE_MASK; import static android.app.StatusBarManager.DISABLE_NONE; import static android.app.StatusBarManager.DISABLE_RECENT; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.Context.DEVICE_POLICY_SERVICE; import static android.content.Context.STATUS_BAR_SERVICE; import static android.os.UserHandle.USER_ALL; +import static android.os.UserHandle.USER_CURRENT; import static android.provider.Settings.Secure.LOCK_TO_APP_EXIT_LOCKED; import static android.view.Display.DEFAULT_DISPLAY; + import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; @@ -54,7 +57,9 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.provider.Settings; import android.util.Slog; +import android.util.SparseArray; +import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.widget.LockPatternUtils; @@ -64,6 +69,7 @@ import com.android.server.wm.WindowManagerService; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.Arrays; /** * Helper class that deals with all things related to task locking. This includes the screen pinning @@ -122,6 +128,11 @@ public class LockTaskController { private final ArrayList<TaskRecord> mLockTaskModeTasks = new ArrayList<>(); /** + * Packages that are allowed to be launched into the lock task mode for each user. + */ + private final SparseArray<String[]> mLockTaskPackages = new SparseArray<>(); + + /** * Store the current lock task mode. Possible values: * {@link ActivityManager#LOCK_TASK_MODE_NONE}, {@link ActivityManager#LOCK_TASK_MODE_LOCKED}, * {@link ActivityManager#LOCK_TASK_MODE_PINNED} @@ -158,8 +169,8 @@ public class LockTaskController { } /** - * @return whether the given task can be moved to the back of the stack. Locked tasks cannot be - * moved to the back of the stack. + * @return whether the given task is locked at the moment. Locked tasks cannot be moved to the + * back of the stack. */ boolean checkLockedTask(TaskRecord task) { if (mLockTaskModeTasks.contains(task)) { @@ -320,9 +331,10 @@ public class LockTaskController { } getLockTaskNotify().show(false); try { - boolean shouldLockKeyguard = Settings.Secure.getInt( + boolean shouldLockKeyguard = Settings.Secure.getIntForUser( mContext.getContentResolver(), - LOCK_TO_APP_EXIT_LOCKED) != 0; + LOCK_TO_APP_EXIT_LOCKED, + USER_CURRENT) != 0; if (mLockTaskModeState == LOCK_TASK_MODE_PINNED && shouldLockKeyguard) { mWindowManager.lockNow(null); mWindowManager.dismissKeyguard(null /* callback */); @@ -420,8 +432,8 @@ public class LockTaskController { mSupervisor.resumeFocusedStackTopActivityLocked(); mWindowManager.executeAppTransition(); } else if (lockTaskModeState != LOCK_TASK_MODE_NONE) { - mSupervisor.handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, DEFAULT_DISPLAY, - task.getStackId(), true /* forceNonResizable */); + mSupervisor.handleNonResizableTaskIfNeeded(task, WINDOWING_MODE_UNDEFINED, + DEFAULT_DISPLAY, task.getStackId(), true /* forceNonResizable */); } } @@ -450,29 +462,35 @@ public class LockTaskController { } /** - * Called when the list of packages whitelisted for lock task mode is changed. Any currently - * locked tasks that got removed from the whitelist will be finished. + * Update packages that are allowed to be launched in lock task mode. + * @param userId Which user this whitelist is associated with + * @param packages The whitelist of packages allowed in lock task mode + * @see #mLockTaskPackages */ - // TODO: Missing unit tests - void onLockTaskPackagesUpdated() { - boolean didSomething = false; + void updateLockTaskPackages(int userId, String[] packages) { + mLockTaskPackages.put(userId, packages); + + boolean taskChanged = false; for (int taskNdx = mLockTaskModeTasks.size() - 1; taskNdx >= 0; --taskNdx) { final TaskRecord lockedTask = mLockTaskModeTasks.get(taskNdx); - final boolean wasWhitelisted = - (lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE) || - (lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_WHITELISTED); + final boolean wasWhitelisted = lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE + || lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_WHITELISTED; lockedTask.setLockTaskAuth(); - final boolean isWhitelisted = - (lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE) || - (lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_WHITELISTED); - if (wasWhitelisted && !isWhitelisted) { - // Lost whitelisting authorization. End it now. - if (DEBUG_LOCKTASK) Slog.d(TAG_LOCKTASK, "onLockTaskPackagesUpdated: removing " + - lockedTask + " mLockTaskAuth()=" + lockedTask.lockTaskAuthToString()); - removeLockedTask(lockedTask); - lockedTask.performClearTaskLocked(); - didSomething = true; + final boolean isWhitelisted = lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE + || lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_WHITELISTED; + + if (mLockTaskModeState != LOCK_TASK_MODE_LOCKED + || lockedTask.userId != userId + || !wasWhitelisted || isWhitelisted) { + continue; } + + // Terminate locked tasks that have recently lost whitelist authorization. + if (DEBUG_LOCKTASK) Slog.d(TAG_LOCKTASK, "onLockTaskPackagesUpdated: removing " + + lockedTask + " mLockTaskAuth()=" + lockedTask.lockTaskAuthToString()); + removeLockedTask(lockedTask); + lockedTask.performClearTaskLocked(); + taskChanged = true; } for (int displayNdx = mSupervisor.getChildCount() - 1; displayNdx >= 0; --displayNdx) { @@ -482,22 +500,40 @@ public class LockTaskController { stack.onLockTaskPackagesUpdatedLocked(); } } + final ActivityRecord r = mSupervisor.topRunningActivityLocked(); - final TaskRecord task = r != null ? r.getTask() : null; - if (mLockTaskModeTasks.isEmpty() && task != null + final TaskRecord task = (r != null) ? r.getTask() : null; + if (mLockTaskModeTasks.isEmpty() && task!= null && task.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE) { // This task must have just been authorized. if (DEBUG_LOCKTASK) Slog.d(TAG_LOCKTASK, "onLockTaskPackagesUpdated: starting new locktask task=" + task); - setLockTaskMode(task, LOCK_TASK_MODE_LOCKED, "package updated", - false); - didSomething = true; + setLockTaskMode(task, LOCK_TASK_MODE_LOCKED, "package updated", false); + taskChanged = true; } - if (didSomething) { + + if (taskChanged) { mSupervisor.resumeFocusedStackTopActivityLocked(); } } + boolean isPackageWhitelisted(int userId, String pkg) { + if (pkg == null) { + return false; + } + String[] whitelist; + whitelist = mLockTaskPackages.get(userId); + if (whitelist == null) { + return false; + } + for (String whitelistedPkg : whitelist) { + if (pkg.equals(whitelistedPkg)) { + return true; + } + } + return false; + } + /** * @return the topmost locked task */ @@ -554,8 +590,18 @@ public class LockTaskController { } public void dump(PrintWriter pw, String prefix) { - pw.print(prefix); pw.print("mLockTaskModeState=" + lockTaskModeToString()); - pw.println(" mLockTaskModeTasks" + mLockTaskModeTasks); + pw.println(prefix + "LockTaskController"); + prefix = prefix + " "; + pw.println(prefix + "mLockTaskModeState=" + lockTaskModeToString()); + pw.println(prefix + "mLockTaskModeTasks="); + for (int i = 0; i < mLockTaskModeTasks.size(); ++i) { + pw.println(prefix + " #" + i + " " + mLockTaskModeTasks.get(i)); + } + pw.println(prefix + "mLockTaskPackages (userId:packages)="); + for (int i = 0; i < mLockTaskPackages.size(); ++i) { + pw.println(prefix + " u" + mLockTaskPackages.keyAt(i) + + ":" + Arrays.toString(mLockTaskPackages.valueAt(i))); + } } private String lockTaskModeToString() { diff --git a/services/core/java/com/android/server/am/PinnedActivityStack.java b/services/core/java/com/android/server/am/PinnedActivityStack.java index c825b314e69e..a601ee1c0c89 100644 --- a/services/core/java/com/android/server/am/PinnedActivityStack.java +++ b/services/core/java/com/android/server/am/PinnedActivityStack.java @@ -39,9 +39,8 @@ class PinnedActivityStack extends ActivityStack<PinnedStackWindowController> @Override PinnedStackWindowController createStackWindowController(int displayId, boolean onTop, - Rect outBounds, Configuration outOverrideConfig) { - return new PinnedStackWindowController(mStackId, this, displayId, onTop, outBounds, - outOverrideConfig); + Rect outBounds) { + return new PinnedStackWindowController(mStackId, this, displayId, onTop, outBounds); } Rect getDefaultPictureInPictureBounds(float aspectRatio) { @@ -92,15 +91,16 @@ class PinnedActivityStack extends ActivityStack<PinnedStackWindowController> return mWindowContainerController.deferScheduleMultiWindowModeChanged(); } - public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds) { + public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds, + boolean forceUpdate) { // It is guaranteed that the activities requiring the update will be in the pinned stack at // this point (either reparented before the animation into PiP, or before reparenting after // the animation out of PiP) synchronized(this) { ArrayList<TaskRecord> tasks = getAllTasks(); for (int i = 0; i < tasks.size(); i++ ) { - mStackSupervisor.scheduleUpdatePictureInPictureModeIfNeeded(tasks.get(i), - targetStackBounds, true /* immediate */); + mStackSupervisor.updatePictureInPictureMode(tasks.get(i), targetStackBounds, + forceUpdate); } } } diff --git a/services/core/java/com/android/server/am/RecentTasks.java b/services/core/java/com/android/server/am/RecentTasks.java index a6ebac44062e..365c5b1d005c 100644 --- a/services/core/java/com/android/server/am/RecentTasks.java +++ b/services/core/java/com/android/server/am/RecentTasks.java @@ -193,10 +193,6 @@ class RecentTasks extends ArrayList<TaskRecord> { return mTaskPersister.getTaskDescriptionIcon(path); } - Bitmap getImageFromWriteQueue(String path) { - return mTaskPersister.getImageFromWriteQueue(path); - } - void saveImage(Bitmap image, String path) { mTaskPersister.saveImage(image, path); } @@ -651,9 +647,6 @@ class RecentTasks extends ArrayList<TaskRecord> { if (task.userId != tr.userId) { continue; } - if (i > MAX_RECENT_BITMAPS) { - tr.freeLastThumbnail(); - } final Intent trIntent = tr.intent; final boolean sameAffinity = task.affinity != null && task.affinity.equals(tr.affinity); @@ -706,7 +699,6 @@ class RecentTasks extends ArrayList<TaskRecord> { // Either task and tr are the same or, their affinities match or their intents match // and neither of them is a document, or they are documents using the same activity // and their maxRecents has been reached. - tr.disposeThumbnail(); remove(i); if (task != tr) { tr.removedFromRecents(); diff --git a/services/core/java/com/android/server/am/TaskChangeNotificationController.java b/services/core/java/com/android/server/am/TaskChangeNotificationController.java index 82971696d670..6a986bb8a684 100644 --- a/services/core/java/com/android/server/am/TaskChangeNotificationController.java +++ b/services/core/java/com/android/server/am/TaskChangeNotificationController.java @@ -95,7 +95,7 @@ class TaskChangeNotificationController { }; private final TaskStackConsumer mNotifyActivityPinned = (l, m) -> { - l.onActivityPinned((String) m.obj, m.arg1); + l.onActivityPinned((String) m.obj, m.arg1, m.arg2); }; private final TaskStackConsumer mNotifyActivityUnpinned = (l, m) -> { @@ -278,10 +278,10 @@ class TaskChangeNotificationController { } /** Notifies all listeners when an Activity is pinned. */ - void notifyActivityPinned(String packageName, int taskId) { + void notifyActivityPinned(String packageName, int userId, int taskId) { mHandler.removeMessages(NOTIFY_ACTIVITY_PINNED_LISTENERS_MSG); final Message msg = mHandler.obtainMessage(NOTIFY_ACTIVITY_PINNED_LISTENERS_MSG, - taskId, 0, packageName); + userId, taskId, packageName); forAllLocalListeners(mNotifyActivityPinned, msg); msg.sendToTarget(); } diff --git a/services/core/java/com/android/server/am/TaskPersister.java b/services/core/java/com/android/server/am/TaskPersister.java index 74c4826f583b..f6e20cd2e1b4 100644 --- a/services/core/java/com/android/server/am/TaskPersister.java +++ b/services/core/java/com/android/server/am/TaskPersister.java @@ -472,8 +472,7 @@ public class TaskPersister { final int taskId = task.taskId; if (mStackSupervisor.anyTaskForIdLocked(taskId, - MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, - INVALID_STACK_ID) != null) { + MATCH_TASK_IN_STACKS_OR_RECENT_TASKS) != null) { // Should not happen. Slog.wtf(TAG, "Existing task with taskId " + taskId + "found"); } else if (userId != task.userId) { diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index c7e600138e19..fb8b034ab064 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -16,6 +16,73 @@ package com.android.server.am; +import static android.app.ActivityManager.RESIZE_MODE_FORCED; +import static android.app.ActivityManager.RESIZE_MODE_SYSTEM; +import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID; +import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; +import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; +import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID; +import static android.app.ActivityManager.StackId.HOME_STACK_ID; +import static android.app.ActivityManager.StackId.INVALID_STACK_ID; +import static android.app.ActivityManager.StackId.PINNED_STACK_ID; +import static android.app.ActivityManager.StackId.RECENTS_STACK_ID; +import static android.app.ActivityManager.StackId.getWindowingModeForStackId; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT; +import static android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS; +import static android.content.pm.ActivityInfo.FLAG_RELINQUISH_TASK_IDENTITY; +import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS; +import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT; +import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED; +import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER; +import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY; +import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY; +import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION; +import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE; +import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; +import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE_DEPRECATED; +import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; +import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED; +import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; +import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; +import static android.view.Display.DEFAULT_DISPLAY; + +import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE; +import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK; +import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_RECENTS; +import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_TASKS; +import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_ADD_REMOVE; +import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK; +import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_RECENTS; +import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_TASKS; +import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; +import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; +import static com.android.server.am.ActivityRecord.STARTING_WINDOW_SHOWN; +import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING; +import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING_TO_TOP; +import static com.android.server.am.ActivityStackSupervisor.PAUSE_IMMEDIATELY; +import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS; +import static com.android.server.am.proto.TaskRecordProto.ACTIVITIES; +import static com.android.server.am.proto.TaskRecordProto.BOUNDS; +import static com.android.server.am.proto.TaskRecordProto.CONFIGURATION_CONTAINER; +import static com.android.server.am.proto.TaskRecordProto.FULLSCREEN; +import static com.android.server.am.proto.TaskRecordProto.ID; +import static com.android.server.am.proto.TaskRecordProto.LAST_NON_FULLSCREEN_BOUNDS; +import static com.android.server.am.proto.TaskRecordProto.MIN_HEIGHT; +import static com.android.server.am.proto.TaskRecordProto.MIN_WIDTH; +import static com.android.server.am.proto.TaskRecordProto.ORIG_ACTIVITY; +import static com.android.server.am.proto.TaskRecordProto.REAL_ACTIVITY; +import static com.android.server.am.proto.TaskRecordProto.RESIZE_MODE; +import static com.android.server.am.proto.TaskRecordProto.RETURN_TO_TYPE; +import static com.android.server.am.proto.TaskRecordProto.STACK_ID; +import static com.android.server.am.proto.TaskRecordProto.ACTIVITY_TYPE; + +import static java.lang.Integer.MAX_VALUE; + import android.annotation.IntDef; import android.annotation.Nullable; import android.app.Activity; @@ -23,8 +90,6 @@ import android.app.ActivityManager; import android.app.ActivityManager.StackId; import android.app.ActivityManager.TaskDescription; import android.app.ActivityManager.TaskSnapshot; -import android.app.ActivityManager.TaskThumbnail; -import android.app.ActivityManager.TaskThumbnailInfo; import android.app.ActivityOptions; import android.app.AppGlobals; import android.app.IActivityManager; @@ -35,11 +100,8 @@ import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.res.Configuration; -import android.graphics.Bitmap; -import android.graphics.Point; import android.graphics.Rect; import android.os.Debug; -import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.Trace; import android.os.UserHandle; @@ -47,11 +109,11 @@ import android.provider.Settings; import android.service.voice.IVoiceInteractionSession; import android.util.DisplayMetrics; import android.util.Slog; +import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IVoiceInteractor; import com.android.internal.util.XmlUtils; - import com.android.server.wm.AppWindowContainerController; import com.android.server.wm.ConfigurationContainer; import com.android.server.wm.StackWindowController; @@ -63,7 +125,6 @@ import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; -import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.lang.annotation.Retention; @@ -71,58 +132,6 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Objects; -import static android.app.ActivityManager.RESIZE_MODE_FORCED; -import static android.app.ActivityManager.RESIZE_MODE_SYSTEM; -import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID; -import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; -import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; -import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID; -import static android.app.ActivityManager.StackId.HOME_STACK_ID; -import static android.app.ActivityManager.StackId.INVALID_STACK_ID; -import static android.app.ActivityManager.StackId.PINNED_STACK_ID; -import static android.app.ActivityManager.StackId.RECENTS_STACK_ID; -import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT; -import static android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS; -import static android.content.pm.ActivityInfo.FLAG_RELINQUISH_TASK_IDENTITY; -import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS; -import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT; -import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED; -import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER; -import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY; -import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY; -import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION; -import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE; -import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; -import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE_DEPRECATED; -import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; -import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED; -import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; -import static android.provider.Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES; -import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; -import static android.view.Display.DEFAULT_DISPLAY; - -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE; -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK; -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_RECENTS; -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_TASKS; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_ADD_REMOVE; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_RECENTS; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_TASKS; -import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; -import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; -import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.ASSISTANT_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.RECENTS_ACTIVITY_TYPE; -import static com.android.server.am.ActivityRecord.STARTING_WINDOW_SHOWN; -import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING; -import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING_TO_TOP; -import static com.android.server.am.ActivityStackSupervisor.PAUSE_IMMEDIATELY; -import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS; - -import static java.lang.Integer.MAX_VALUE; - class TaskRecord extends ConfigurationContainer implements TaskWindowContainerListener { private static final String TAG = TAG_WITH_CLASS_NAME ? "TaskRecord" : TAG_AM; private static final String TAG_ADD_REMOVE = TAG + POSTFIX_ADD_REMOVE; @@ -145,6 +154,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi private static final String ATTR_USERID = "user_id"; private static final String ATTR_USER_SETUP_COMPLETE = "user_setup_complete"; private static final String ATTR_EFFECTIVE_UID = "effective_uid"; + @Deprecated private static final String ATTR_TASKTYPE = "task_type"; private static final String ATTR_FIRSTACTIVETIME = "first_active_time"; private static final String ATTR_LASTACTIVETIME = "last_active_time"; @@ -258,9 +268,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi /** Current stack. Setter must always be used to update the value. */ private ActivityStack mStack; - /** Takes on same set of values as ActivityRecord.mActivityType */ - int taskType; - /** Takes on same value as first root activity */ boolean isPersistable = false; int maxRecents; @@ -270,10 +277,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi * (positive) or back (negative). Absolute value indicates time. */ long mLastTimeMoved = System.currentTimeMillis(); - /** Indication of what to run next when task exits. Use ActivityRecord types. - * ActivityRecord.APPLICATION_ACTIVITY_TYPE indicates to resume the task below this one in the - * task stack. */ - private int mTaskToReturnTo = APPLICATION_ACTIVITY_TYPE; + /** Indication of what to run next when task exits. */ + // TODO: Shouldn't be needed if we have things in visual order. I.e. we stop using stacks or + // have a stack per standard application type... + /*@WindowConfiguration.ActivityType*/ + private int mTaskToReturnTo = ACTIVITY_TYPE_STANDARD; /** If original intent did not allow relinquishing task identity, save that information */ private boolean mNeverRelinquishIdentity = true; @@ -282,10 +290,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi // do not want to delete the stack when the task goes empty. private boolean mReuseTask = false; - private Bitmap mLastThumbnail; // Last thumbnail captured for this item. - private final File mLastThumbnailFile; // File containing last thumbnail. private final String mFilename; - private TaskThumbnailInfo mLastThumbnailInfo; CharSequence lastDescription; // Last description captured for this item. int mAffiliatedTaskId; // taskId of parent affiliation or self if no parent. @@ -329,13 +334,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi private TaskWindowContainerController mWindowContainerController; TaskRecord(ActivityManagerService service, int _taskId, ActivityInfo info, Intent _intent, - IVoiceInteractionSession _voiceSession, IVoiceInteractor _voiceInteractor, int type) { + IVoiceInteractionSession _voiceSession, IVoiceInteractor _voiceInteractor) { mService = service; mFilename = String.valueOf(_taskId) + TASK_THUMBNAIL_SUFFIX + TaskPersister.IMAGE_EXTENSION; userId = UserHandle.getUserId(info.applicationInfo.uid); - mLastThumbnailFile = new File(TaskPersister.getUserImagesDir(userId), mFilename); - mLastThumbnailInfo = new TaskThumbnailInfo(); taskId = _taskId; mAffiliatedTaskId = _taskId; voiceSession = _voiceSession; @@ -344,7 +347,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi mActivities = new ArrayList<>(); mCallingUid = info.applicationInfo.uid; mCallingPackage = info.packageName; - taskType = type; setIntent(_intent, info); setMinDimensions(info); touchActiveTime(); @@ -352,13 +354,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } TaskRecord(ActivityManagerService service, int _taskId, ActivityInfo info, Intent _intent, - TaskDescription _taskDescription, TaskThumbnailInfo thumbnailInfo) { + TaskDescription _taskDescription) { mService = service; mFilename = String.valueOf(_taskId) + TASK_THUMBNAIL_SUFFIX + TaskPersister.IMAGE_EXTENSION; userId = UserHandle.getUserId(info.applicationInfo.uid); - mLastThumbnailFile = new File(TaskPersister.getUserImagesDir(userId), mFilename); - mLastThumbnailInfo = thumbnailInfo; taskId = _taskId; mAffiliatedTaskId = _taskId; voiceSession = null; @@ -375,8 +375,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi maxRecents = Math.min(Math.max(info.maxRecents, 1), ActivityManager.getMaxAppRecentsLimitStatic()); - taskType = APPLICATION_ACTIVITY_TYPE; - mTaskToReturnTo = HOME_ACTIVITY_TYPE; + mTaskToReturnTo = ACTIVITY_TYPE_HOME; lastTaskDescription = _taskDescription; touchActiveTime(); mService.mTaskChangeNotificationController.notifyTaskCreated(_taskId, realActivity); @@ -385,20 +384,17 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi private TaskRecord(ActivityManagerService service, int _taskId, Intent _intent, Intent _affinityIntent, String _affinity, String _rootAffinity, ComponentName _realActivity, ComponentName _origActivity, boolean _rootWasReset, - boolean _autoRemoveRecents, boolean _askedCompatMode, int _taskType, int _userId, + boolean _autoRemoveRecents, boolean _askedCompatMode, int _userId, int _effectiveUid, String _lastDescription, ArrayList<ActivityRecord> activities, long _firstActiveTime, long _lastActiveTime, long lastTimeMoved, boolean neverRelinquishIdentity, TaskDescription _lastTaskDescription, - TaskThumbnailInfo lastThumbnailInfo, int taskAffiliation, int prevTaskId, - int nextTaskId, int taskAffiliationColor, int callingUid, String callingPackage, - int resizeMode, boolean supportsPictureInPicture, boolean privileged, - boolean _realActivitySuspended, boolean userSetupComplete, int minWidth, - int minHeight) { + int taskAffiliation, int prevTaskId, int nextTaskId, int taskAffiliationColor, + int callingUid, String callingPackage, int resizeMode, boolean supportsPictureInPicture, + boolean privileged, boolean _realActivitySuspended, boolean userSetupComplete, + int minWidth, int minHeight) { mService = service; mFilename = String.valueOf(_taskId) + TASK_THUMBNAIL_SUFFIX + TaskPersister.IMAGE_EXTENSION; - mLastThumbnailFile = new File(TaskPersister.getUserImagesDir(_userId), mFilename); - mLastThumbnailInfo = lastThumbnailInfo; taskId = _taskId; intent = _intent; affinityIntent = _affinityIntent; @@ -413,8 +409,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi isAvailable = true; autoRemoveRecents = _autoRemoveRecents; askedCompatMode = _askedCompatMode; - taskType = _taskType; - mTaskToReturnTo = HOME_ACTIVITY_TYPE; + mTaskToReturnTo = ACTIVITY_TYPE_HOME; userId = _userId; mUserSetupComplete = userSetupComplete; effectiveUid = _effectiveUid; @@ -450,11 +445,10 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } final Rect bounds = updateOverrideConfigurationFromLaunchBounds(); - final Configuration overrideConfig = getOverrideConfiguration(); setWindowContainerController(new TaskWindowContainerController(taskId, this, - getStack().getWindowContainerController(), userId, bounds, overrideConfig, - mResizeMode, mSupportsPictureInPicture, isHomeTask(), onTop, showForAllUsers, - lastTaskDescription)); + getStack().getWindowContainerController(), userId, bounds, + mResizeMode, mSupportsPictureInPicture, onTop, + showForAllUsers, lastTaskDescription)); } /** @@ -529,8 +523,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi updateOverrideConfiguration(bounds); if (getStackId() != FREEFORM_WORKSPACE_STACK_ID) { // re-restore the task so it can have the proper stack association. - mService.mStackSupervisor.restoreRecentTaskLocked(this, - FREEFORM_WORKSPACE_STACK_ID); + mService.mStackSupervisor.restoreRecentTaskLocked(this, null); } return true; } @@ -751,7 +744,8 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } // TODO: Handle incorrect request to move before the actual move, not after. - supervisor.handleNonResizableTaskIfNeeded(this, preferredStackId, DEFAULT_DISPLAY, stackId); + supervisor.handleNonResizableTaskIfNeeded(this, getWindowingModeForStackId(preferredStackId, + supervisor.getStack(DOCKED_STACK_ID) != null), DEFAULT_DISPLAY, stackId); boolean successful = (preferredStackId == stackId); if (successful && stackId == DOCKED_STACK_ID) { @@ -878,8 +872,13 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } mResizeMode = info.resizeMode; mSupportsPictureInPicture = info.supportsPictureInPicture(); - mLockTaskMode = info.lockTaskLaunchMode; mPrivileged = (info.applicationInfo.privateFlags & PRIVATE_FLAG_PRIVILEGED) != 0; + mLockTaskMode = info.lockTaskLaunchMode; + if (!mPrivileged && (mLockTaskMode == LOCK_TASK_LAUNCH_MODE_ALWAYS + || mLockTaskMode == LOCK_TASK_LAUNCH_MODE_NEVER)) { + // Non-priv apps are not allowed to use always or never, fall back to default + mLockTaskMode = LOCK_TASK_LAUNCH_MODE_DEFAULT; + } setLockTaskAuth(); } @@ -907,16 +906,16 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi return this.intent.filterEquals(intent); } - void setTaskToReturnTo(int taskToReturnTo) { - mTaskToReturnTo = (taskToReturnTo == RECENTS_ACTIVITY_TYPE) - ? HOME_ACTIVITY_TYPE : taskToReturnTo; + void setTaskToReturnTo(/*@WindowConfiguration.ActivityType*/ int taskToReturnTo) { + mTaskToReturnTo = taskToReturnTo == ACTIVITY_TYPE_RECENTS + ? ACTIVITY_TYPE_HOME : taskToReturnTo; } void setTaskToReturnTo(ActivityRecord source) { - if (source.isRecentsActivity()) { - setTaskToReturnTo(RECENTS_ACTIVITY_TYPE); - } else if (source.isAssistantActivity()) { - setTaskToReturnTo(ASSISTANT_ACTIVITY_TYPE); + if (source.isActivityTypeRecents()) { + setTaskToReturnTo(ACTIVITY_TYPE_RECENTS); + } else if (source.isActivityTypeAssistant()) { + setTaskToReturnTo(ACTIVITY_TYPE_ASSISTANT); } } @@ -924,6 +923,14 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi return mTaskToReturnTo; } + boolean returnsToHomeTask() { + return mTaskToReturnTo == ACTIVITY_TYPE_HOME; + } + + boolean returnsToStandardTask() { + return mTaskToReturnTo == ACTIVITY_TYPE_STANDARD; + } + void setPrevAffiliate(TaskRecord prevAffiliate) { mPrevAffiliate = prevAffiliate; mPrevAffiliateTaskId = prevAffiliate == null ? INVALID_TASK_ID : prevAffiliate.taskId; @@ -991,7 +998,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } void removedFromRecents() { - disposeThumbnail(); closeRecentsChain(); if (inRecents) { inRecents = false; @@ -1025,107 +1031,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi setNextAffiliate(null); } - /** - * Sets the last thumbnail with the current task bounds and the system orientation. - * @return whether the thumbnail was set - */ - boolean setLastThumbnailLocked(Bitmap thumbnail) { - int taskWidth = 0; - int taskHeight = 0; - if (mBounds != null) { - // Non-fullscreen tasks - taskWidth = mBounds.width(); - taskHeight = mBounds.height(); - } else if (mStack != null) { - // Fullscreen tasks - final Point displaySize = new Point(); - mStack.getDisplaySize(displaySize); - taskWidth = displaySize.x; - taskHeight = displaySize.y; - } else { - Slog.e(TAG, "setLastThumbnailLocked() called on Task without stack"); - } - // We need to provide the current orientation of the display on which this task resides, - // not the orientation of the task. - final int orientation = getStack().getDisplay().getConfiguration().orientation; - return setLastThumbnailLocked(thumbnail, taskWidth, taskHeight, orientation); - } - - /** - * Sets the last thumbnail with the current task bounds. - * @return whether the thumbnail was set - */ - private boolean setLastThumbnailLocked(Bitmap thumbnail, int taskWidth, int taskHeight, - int screenOrientation) { - if (mLastThumbnail != thumbnail) { - mLastThumbnail = thumbnail; - mLastThumbnailInfo.taskWidth = taskWidth; - mLastThumbnailInfo.taskHeight = taskHeight; - mLastThumbnailInfo.screenOrientation = screenOrientation; - if (thumbnail == null) { - if (mLastThumbnailFile != null) { - mLastThumbnailFile.delete(); - } - } else { - mService.mRecentTasks.saveImage(thumbnail, mLastThumbnailFile.getAbsolutePath()); - } - return true; - } - return false; - } - - void getLastThumbnail(TaskThumbnail thumbs) { - thumbs.mainThumbnail = mLastThumbnail; - thumbs.thumbnailInfo = mLastThumbnailInfo; - thumbs.thumbnailFileDescriptor = null; - if (mLastThumbnail == null) { - thumbs.mainThumbnail = mService.mRecentTasks.getImageFromWriteQueue( - mLastThumbnailFile.getAbsolutePath()); - } - // Only load the thumbnail file if we don't have a thumbnail - if (thumbs.mainThumbnail == null && mLastThumbnailFile.exists()) { - try { - thumbs.thumbnailFileDescriptor = ParcelFileDescriptor.open(mLastThumbnailFile, - ParcelFileDescriptor.MODE_READ_ONLY); - } catch (IOException e) { - } - } - } - - /** - * Removes in-memory thumbnail data when the max number of in-memory task thumbnails is reached. - */ - void freeLastThumbnail() { - mLastThumbnail = null; - } - - /** - * Removes all associated thumbnail data when a task is removed or pruned from recents. - */ - void disposeThumbnail() { - mLastThumbnailInfo.reset(); - mLastThumbnail = null; - lastDescription = null; - } - /** Returns the intent for the root activity for this task */ Intent getBaseIntent() { return intent != null ? intent : affinityIntent; } - /** - * @return Whether there are only fullscreen activities in this task. - */ - boolean containsOnlyFullscreenActivities() { - for (int i = 0; i < mActivities.size(); i++) { - final ActivityRecord r = mActivities.get(i); - if (!r.finishing && !r.fullscreen) { - return false; - } - } - return true; - } - /** Returns the first non-finishing activity from the root. */ ActivityRecord getRootActivity() { for (int i = 0; i < mActivities.size(); i++) { @@ -1139,9 +1049,13 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } ActivityRecord getTopActivity() { + return getTopActivity(true /* includeOverlays */); + } + + ActivityRecord getTopActivity(boolean includeOverlays) { for (int i = mActivities.size() - 1; i >= 0; --i) { final ActivityRecord r = mActivities.get(i); - if (r.finishing) { + if (r.finishing || (!includeOverlays && r.mTaskOverlay)) { continue; } return r; @@ -1237,6 +1151,16 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi addActivityAtIndex(mActivities.size(), r); } + @Override + /*@WindowConfiguration.ActivityType*/ + public int getActivityType() { + final int applicationType = super.getActivityType(); + if (applicationType != ACTIVITY_TYPE_UNDEFINED || mActivities.isEmpty()) { + return applicationType; + } + return mActivities.get(0).getActivityType(); + } + /** * Adds an activity {@param r} at the given {@param index}. The activity {@param r} must either * be in the current task or unparented to any task. @@ -1257,7 +1181,14 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } // Only set this based on the first activity if (mActivities.isEmpty()) { - taskType = r.mActivityType; + if (r.getActivityType() == ACTIVITY_TYPE_UNDEFINED) { + // Normally non-standard activity type for the activity record will be set when the + // object is created, however we delay setting the standard application type until + // this point so that the task can set the type for additional activities added in + // the else condition below. + r.setActivityType(ACTIVITY_TYPE_STANDARD); + } + setActivityType(r.getActivityType()); isPersistable = r.isPersistable(); mCallingUid = r.launchedFromUid; mCallingPackage = r.launchedFromPackage; @@ -1266,7 +1197,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi ActivityManager.getMaxAppRecentsLimitStatic()); } else { // Otherwise make all added activities match this one. - r.mActivityType = taskType; + r.setActivityType(getActivityType()); } final int size = mActivities.size(); @@ -1468,19 +1399,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi return null; } - TaskThumbnail getTaskThumbnailLocked() { - if (mStack != null) { - final ActivityRecord resumedActivity = mStack.mResumedActivity; - if (resumedActivity != null && resumedActivity.getTask() == this) { - final Bitmap thumbnail = resumedActivity.screenshotActivityLocked(); - setLastThumbnailLocked(thumbnail); - } - } - final TaskThumbnail taskThumbnail = new TaskThumbnail(); - getLastThumbnail(taskThumbnail); - return taskThumbnail; - } - void removeTaskActivitiesLocked(boolean pauseImmediately) { // Just remove the entire task. performClearTaskAtIndexLocked(0, pauseImmediately); @@ -1498,16 +1416,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } void setLockTaskAuth() { - if (!mPrivileged && - (mLockTaskMode == LOCK_TASK_LAUNCH_MODE_ALWAYS || - mLockTaskMode == LOCK_TASK_LAUNCH_MODE_NEVER)) { - // Non-priv apps are not allowed to use always or never, fall back to default - mLockTaskMode = LOCK_TASK_LAUNCH_MODE_DEFAULT; - } + final String pkg = (realActivity != null) ? realActivity.getPackageName() : null; switch (mLockTaskMode) { case LOCK_TASK_LAUNCH_MODE_DEFAULT: - mLockTaskAuth = isLockTaskWhitelistedLocked() ? - LOCK_TASK_AUTH_WHITELISTED : LOCK_TASK_AUTH_PINNABLE; + mLockTaskAuth = mService.mLockTaskController.isPackageWhitelisted(userId, pkg) + ? LOCK_TASK_AUTH_WHITELISTED : LOCK_TASK_AUTH_PINNABLE; break; case LOCK_TASK_LAUNCH_MODE_NEVER: @@ -1519,53 +1432,20 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi break; case LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED: - mLockTaskAuth = isLockTaskWhitelistedLocked() ? - LOCK_TASK_AUTH_LAUNCHABLE : LOCK_TASK_AUTH_PINNABLE; + mLockTaskAuth = mService.mLockTaskController.isPackageWhitelisted(userId, pkg) + ? LOCK_TASK_AUTH_LAUNCHABLE : LOCK_TASK_AUTH_PINNABLE; break; } if (DEBUG_LOCKTASK) Slog.d(TAG_LOCKTASK, "setLockTaskAuth: task=" + this + " mLockTaskAuth=" + lockTaskAuthToString()); } - private boolean isLockTaskWhitelistedLocked() { - String pkg = (realActivity != null) ? realActivity.getPackageName() : null; - if (pkg == null) { - return false; - } - String[] packages = mService.mLockTaskPackages.get(userId); - if (packages == null) { - return false; - } - for (int i = packages.length - 1; i >= 0; --i) { - if (pkg.equals(packages[i])) { - return true; - } - } - return false; - } - - boolean isHomeTask() { - return taskType == HOME_ACTIVITY_TYPE; - } - - boolean isRecentsTask() { - return taskType == RECENTS_ACTIVITY_TYPE; - } - - boolean isAssistantTask() { - return taskType == ASSISTANT_ACTIVITY_TYPE; - } - - boolean isApplicationTask() { - return taskType == APPLICATION_ACTIVITY_TYPE; - } - boolean isOverHomeStack() { - return mTaskToReturnTo == HOME_ACTIVITY_TYPE; + return mTaskToReturnTo == ACTIVITY_TYPE_HOME; } boolean isOverAssistantStack() { - return mTaskToReturnTo == ASSISTANT_ACTIVITY_TYPE; + return mTaskToReturnTo == ACTIVITY_TYPE_ASSISTANT; } private boolean isResizeable(boolean checkSupportsPip) { @@ -1759,7 +1639,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi out.attribute(null, ATTR_USERID, String.valueOf(userId)); out.attribute(null, ATTR_USER_SETUP_COMPLETE, String.valueOf(mUserSetupComplete)); out.attribute(null, ATTR_EFFECTIVE_UID, String.valueOf(effectiveUid)); - out.attribute(null, ATTR_TASKTYPE, String.valueOf(taskType)); out.attribute(null, ATTR_FIRSTACTIVETIME, String.valueOf(firstActiveTime)); out.attribute(null, ATTR_LASTACTIVETIME, String.valueOf(lastActiveTime)); out.attribute(null, ATTR_LASTTIMEMOVED, String.valueOf(mLastTimeMoved)); @@ -1770,7 +1649,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi if (lastTaskDescription != null) { lastTaskDescription.saveToXml(out); } - mLastThumbnailInfo.saveToXml(out); out.attribute(null, ATTR_TASK_AFFILIATION_COLOR, String.valueOf(mAffiliatedTaskColor)); out.attribute(null, ATTR_TASK_AFFILIATION, String.valueOf(mAffiliatedTaskId)); out.attribute(null, ATTR_PREV_AFFILIATION, String.valueOf(mPrevAffiliateTaskId)); @@ -1830,7 +1708,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi boolean rootHasReset = false; boolean autoRemoveRecents = false; boolean askedCompatMode = false; - int taskType = ActivityRecord.APPLICATION_ACTIVITY_TYPE; + int taskType = 0; int userId = 0; boolean userSetupComplete = true; int effectiveUid = -1; @@ -1842,7 +1720,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi int taskId = INVALID_TASK_ID; final int outerDepth = in.getDepth(); TaskDescription taskDescription = new TaskDescription(); - TaskThumbnailInfo thumbnailInfo = new TaskThumbnailInfo(); int taskAffiliation = INVALID_TASK_ID; int taskAffiliationColor = 0; int prevTaskId = INVALID_TASK_ID; @@ -1899,8 +1776,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi lastTimeOnTop = Long.parseLong(attrValue); } else if (ATTR_NEVERRELINQUISH.equals(attrName)) { neverRelinquishIdentity = Boolean.parseBoolean(attrValue); - } else if (attrName.startsWith(TaskThumbnailInfo.ATTR_TASK_THUMBNAILINFO_PREFIX)) { - thumbnailInfo.restoreFromXml(attrName, attrValue); } else if (attrName.startsWith(TaskDescription.ATTR_TASKDESCRIPTION_PREFIX)) { taskDescription.restoreFromXml(attrName, attrValue); } else if (ATTR_TASK_AFFILIATION.equals(attrName)) { @@ -1988,7 +1863,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi // they are marked as RESIZE_MODE_RESIZEABLE to RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION // since we didn't have that differentiation before version 1 and the system didn't // resize home activities before then. - if (taskType == HOME_ACTIVITY_TYPE && resizeMode == RESIZE_MODE_RESIZEABLE) { + if (taskType == 1 /* old home type */ && resizeMode == RESIZE_MODE_RESIZEABLE) { resizeMode = RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; } } else { @@ -2004,12 +1879,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi final TaskRecord task = new TaskRecord(stackSupervisor.mService, taskId, intent, affinityIntent, affinity, rootAffinity, realActivity, origActivity, rootHasReset, - autoRemoveRecents, askedCompatMode, taskType, userId, effectiveUid, lastDescription, + autoRemoveRecents, askedCompatMode, userId, effectiveUid, lastDescription, activities, firstActiveTime, lastActiveTime, lastTimeOnTop, neverRelinquishIdentity, - taskDescription, thumbnailInfo, taskAffiliation, prevTaskId, nextTaskId, - taskAffiliationColor, callingUid, callingPackage, resizeMode, - supportsPictureInPicture, privileged, realActivitySuspended, userSetupComplete, - minWidth, minHeight); + taskDescription, taskAffiliation, prevTaskId, nextTaskId, taskAffiliationColor, + callingUid, callingPackage, resizeMode, supportsPictureInPicture, privileged, + realActivitySuspended, userSetupComplete, minWidth, minHeight); task.updateOverrideConfiguration(bounds); for (int activityNdx = activities.size() - 1; activityNdx >=0; --activityNdx) { @@ -2221,27 +2095,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi } } - /** - * Returns the correct stack to use based on task type and currently set bounds, - * regardless of the focused stack and current stack association of the task. - * The task will be moved (and stack focus changed) later if necessary. - */ - int getLaunchStackId() { - if (isRecentsTask()) { - return RECENTS_STACK_ID; - } - if (isHomeTask()) { - return HOME_STACK_ID; - } - if (isAssistantTask()) { - return ASSISTANT_STACK_ID; - } - if (mBounds != null) { - return FREEFORM_WORKSPACE_STACK_ID; - } - return FULLSCREEN_WORKSPACE_STACK_ID; - } - /** Returns the bounds that should be used to launch this task. */ private Rect getLaunchBounds() { if (mStack == null) { @@ -2312,12 +2165,12 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi pw.print(prefix); pw.print("realActivity="); pw.println(realActivity.flattenToShortString()); } - if (autoRemoveRecents || isPersistable || taskType != 0 || mTaskToReturnTo != 0 - || numFullscreen != 0) { + if (autoRemoveRecents || isPersistable || !isActivityTypeStandard() + || mTaskToReturnTo != ACTIVITY_TYPE_STANDARD || numFullscreen != 0) { pw.print(prefix); pw.print("autoRemoveRecents="); pw.print(autoRemoveRecents); pw.print(" isPersistable="); pw.print(isPersistable); pw.print(" numFullscreen="); pw.print(numFullscreen); - pw.print(" taskType="); pw.print(taskType); + pw.print(" activityType="); pw.print(getActivityType()); pw.print(" mTaskToReturnTo="); pw.println(mTaskToReturnTo); } if (rootWasReset || mNeverRelinquishIdentity || mReuseTask @@ -2353,8 +2206,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi pw.print(" inRecents="); pw.print(inRecents); pw.print(" isAvailable="); pw.println(isAvailable); } - pw.print(prefix); pw.print("lastThumbnail="); pw.print(mLastThumbnail); - pw.print(" lastThumbnailFile="); pw.println(mLastThumbnailFile); if (lastDescription != null) { pw.print(prefix); pw.print("lastDescription="); pw.println(lastDescription); } @@ -2401,4 +2252,34 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi stringName = sb.toString(); return toString(); } + + public void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + super.writeToProto(proto, CONFIGURATION_CONTAINER); + proto.write(ID, taskId); + for (int i = mActivities.size() - 1; i >= 0; i--) { + ActivityRecord activity = mActivities.get(i); + activity.writeToProto(proto, ACTIVITIES); + } + proto.write(STACK_ID, mStack.mStackId); + if (mLastNonFullscreenBounds != null) { + mLastNonFullscreenBounds.writeToProto(proto, LAST_NON_FULLSCREEN_BOUNDS); + } + if (realActivity != null) { + proto.write(REAL_ACTIVITY, realActivity.flattenToShortString()); + } + if (origActivity != null) { + proto.write(ORIG_ACTIVITY, origActivity.flattenToShortString()); + } + proto.write(ACTIVITY_TYPE, getActivityType()); + proto.write(RETURN_TO_TYPE, mTaskToReturnTo); + proto.write(RESIZE_MODE, mResizeMode); + proto.write(FULLSCREEN, mFullscreen); + if (mBounds != null) { + mBounds.writeToProto(proto, BOUNDS); + } + proto.write(MIN_WIDTH, mMinWidth); + proto.write(MIN_HEIGHT, mMinHeight); + proto.end(token); + } } diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 29445673dfff..f2e294217999 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -22,6 +22,7 @@ import static android.app.ActivityManager.USER_OP_ERROR_IS_SYSTEM; import static android.app.ActivityManager.USER_OP_ERROR_RELATED_USERS_CANNOT_STOP; import static android.app.ActivityManager.USER_OP_IS_CURRENT; import static android.app.ActivityManager.USER_OP_SUCCESS; +import static android.os.Process.SHELL_UID; import static android.os.Process.SYSTEM_UID; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; @@ -30,13 +31,6 @@ import static com.android.server.am.ActivityManagerService.ALLOW_FULL_ONLY; import static com.android.server.am.ActivityManagerService.ALLOW_NON_FULL; import static com.android.server.am.ActivityManagerService.ALLOW_NON_FULL_IN_PROFILE; import static com.android.server.am.ActivityManagerService.MY_PID; -import static com.android.server.am.ActivityManagerService.REPORT_LOCKED_BOOT_COMPLETE_MSG; -import static com.android.server.am.ActivityManagerService.REPORT_USER_SWITCH_COMPLETE_MSG; -import static com.android.server.am.ActivityManagerService.REPORT_USER_SWITCH_MSG; -import static com.android.server.am.ActivityManagerService.SYSTEM_USER_CURRENT_MSG; -import static com.android.server.am.ActivityManagerService.SYSTEM_USER_START_MSG; -import static com.android.server.am.ActivityManagerService.SYSTEM_USER_UNLOCK_MSG; -import static com.android.server.am.ActivityManagerService.USER_SWITCH_TIMEOUT_MSG; import static com.android.server.am.UserState.STATE_BOOTING; import static com.android.server.am.UserState.STATE_RUNNING_LOCKED; import static com.android.server.am.UserState.STATE_RUNNING_UNLOCKED; @@ -67,6 +61,7 @@ import android.os.IBinder; import android.os.IProgressListener; import android.os.IRemoteCallback; import android.os.IUserManager; +import android.os.Message; import android.os.Process; import android.os.RemoteCallbackList; import android.os.RemoteException; @@ -77,6 +72,7 @@ import android.os.UserManager; import android.os.UserManagerInternal; import android.os.storage.IStorageManager; import android.os.storage.StorageManager; +import android.text.format.DateUtils; import android.util.ArraySet; import android.util.IntArray; import android.util.Pair; @@ -92,6 +88,7 @@ import com.android.internal.util.ArrayUtils; import com.android.internal.util.Preconditions; import com.android.internal.widget.LockPatternUtils; import com.android.server.LocalServices; +import com.android.server.SystemServiceManager; import com.android.server.pm.UserManagerService; import com.android.server.wm.WindowManagerService; @@ -107,7 +104,7 @@ import java.util.concurrent.atomic.AtomicInteger; /** * Helper class for {@link ActivityManagerService} responsible for multi-user functionality. */ -class UserController { +class UserController implements Handler.Callback { private static final String TAG = TAG_WITH_CLASS_NAME ? "UserController" : TAG_AM; // Maximum number of users we allow to be running at a time. @@ -115,11 +112,34 @@ class UserController { // Amount of time we wait for observers to handle a user switch before // giving up on them and unfreezing the screen. - static final int USER_SWITCH_TIMEOUT = 3 * 1000; + static final int USER_SWITCH_TIMEOUT_MS = 3 * 1000; + + // ActivityManager thread message constants + static final int REPORT_USER_SWITCH_MSG = 10; + static final int CONTINUE_USER_SWITCH_MSG = 20; + static final int USER_SWITCH_TIMEOUT_MSG = 30; + static final int START_PROFILES_MSG = 40; + static final int SYSTEM_USER_START_MSG = 50; + static final int SYSTEM_USER_CURRENT_MSG = 60; + static final int FOREGROUND_PROFILE_CHANGED_MSG = 70; + static final int REPORT_USER_SWITCH_COMPLETE_MSG = 80; + static final int USER_SWITCH_CALLBACKS_TIMEOUT_MSG = 90; + static final int SYSTEM_USER_UNLOCK_MSG = 100; + static final int REPORT_LOCKED_BOOT_COMPLETE_MSG = 110; + static final int START_USER_SWITCH_FG_MSG = 120; + + // UI thread message constants + static final int START_USER_SWITCH_UI_MSG = 1000; + + // If a callback wasn't called within USER_SWITCH_CALLBACKS_TIMEOUT_MS after + // USER_SWITCH_TIMEOUT_MS, an error is reported. Usually it indicates a problem in the observer + // when it never calls back. + private static final int USER_SWITCH_CALLBACKS_TIMEOUT_MS = 5 * 1000; private final Object mLock; private final Injector mInjector; private final Handler mHandler; + private final Handler mUiHandler; // Holds the current foreground user's id. Use mLock when updating @GuardedBy("mLock") @@ -171,6 +191,12 @@ class UserController { @GuardedBy("mLock") private volatile ArraySet<String> mCurWaitingUserSwitchCallbacks; + /** + * Callbacks that are still active after {@link #USER_SWITCH_TIMEOUT_MS} + */ + @GuardedBy("mLock") + private ArraySet<String> mTimeoutUserSwitchCallbacks; + private final LockPatternUtils mLockPatternUtils; UserController(ActivityManagerService service) { @@ -181,7 +207,8 @@ class UserController { UserController(Injector injector) { mInjector = injector; mLock = injector.getLock(); - mHandler = injector.getHandler(); + mHandler = mInjector.getHandler(this); + mUiHandler = mInjector.getUiHandler(this); // User 0 is the first and only user that runs at boot. final UserState uss = new UserState(UserHandle.SYSTEM); mStartedUsers.put(UserHandle.USER_SYSTEM, uss); @@ -487,7 +514,7 @@ class UserController { if (userId < 0 || userId == UserHandle.USER_SYSTEM) { throw new IllegalArgumentException("Can't stop system user " + userId); } - mInjector.enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, userId); + enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, userId); synchronized (mLock) { return stopUsersLocked(userId, force, callback); } @@ -623,7 +650,7 @@ class UserController { mInjector.batteryStatsServiceNoteEvent( BatteryStats.HistoryItem.EVENT_USER_RUNNING_FINISH, Integer.toString(userId), userId); - mInjector.systemServiceManagerStopUser(userId); + mInjector.getSystemServiceManager().stopUser(userId); synchronized (mLock) { mInjector.broadcastIntentLocked(shutdownIntent, @@ -753,6 +780,13 @@ class UserController { } } + void scheduleStartProfilesLocked() { + if (!mHandler.hasMessages(START_PROFILES_MSG)) { + mHandler.sendMessageDelayed(mHandler.obtainMessage(START_PROFILES_MSG), + DateUtils.SECOND_IN_MILLIS); + } + } + void startProfilesLocked() { if (DEBUG_MU) Slog.i(TAG, "startProfilesLocked"); List<UserInfo> profiles = mInjector.getUserManager().getProfiles( @@ -924,7 +958,7 @@ class UserController { mHandler.sendMessage(mHandler.obtainMessage(REPORT_USER_SWITCH_MSG, oldUserId, userId, uss)); mHandler.sendMessageDelayed(mHandler.obtainMessage(USER_SWITCH_TIMEOUT_MSG, - oldUserId, userId, uss), USER_SWITCH_TIMEOUT); + oldUserId, userId, uss), USER_SWITCH_TIMEOUT_MS); } if (needStart) { @@ -1068,6 +1102,50 @@ class UserController { return true; } + boolean switchUser(final int targetUserId) { + enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, targetUserId); + int currentUserId; + UserInfo targetUserInfo; + synchronized (mLock) { + currentUserId = getCurrentUserIdLocked(); + targetUserInfo = getUserInfo(targetUserId); + if (targetUserId == currentUserId) { + Slog.i(TAG, "user #" + targetUserId + " is already the current user"); + return true; + } + if (targetUserInfo == null) { + Slog.w(TAG, "No user info for user #" + targetUserId); + return false; + } + if (!targetUserInfo.isDemo() && UserManager.isDeviceInDemoMode(mInjector.getContext())) { + Slog.w(TAG, "Cannot switch to non-demo user #" + targetUserId + + " when device is in demo mode"); + return false; + } + if (!targetUserInfo.supportsSwitchTo()) { + Slog.w(TAG, "Cannot switch to User #" + targetUserId + ": not supported"); + return false; + } + if (targetUserInfo.isManagedProfile()) { + Slog.w(TAG, "Cannot switch to User #" + targetUserId + ": not a full user"); + return false; + } + setTargetUserIdLocked(targetUserId); + } + if (mUserSwitchUiEnabled) { + UserInfo currentUserInfo = getUserInfo(currentUserId); + Pair<UserInfo, UserInfo> userNames = new Pair<>(currentUserInfo, targetUserInfo); + mUiHandler.removeMessages(START_USER_SWITCH_UI_MSG); + mUiHandler.sendMessage(mHandler.obtainMessage( + START_USER_SWITCH_UI_MSG, userNames)); + } else { + mHandler.removeMessages(START_USER_SWITCH_FG_MSG); + mHandler.sendMessage(mHandler.obtainMessage( + START_USER_SWITCH_FG_MSG, targetUserId, 0)); + } + return true; + } + void showUserSwitchDialog(Pair<UserInfo, UserInfo> fromToUserPair) { // The dialog will show and then initiate the user switch by calling startUserInForeground mInjector.showUserSwitchingDialog(fromToUserPair.first, fromToUserPair.second); @@ -1130,8 +1208,23 @@ class UserController { void timeoutUserSwitch(UserState uss, int oldUserId, int newUserId) { synchronized (mLock) { - Slog.wtf(TAG, "User switch timeout: from " + oldUserId + " to " + newUserId); + Slog.e(TAG, "User switch timeout: from " + oldUserId + " to " + newUserId); + mTimeoutUserSwitchCallbacks = mCurWaitingUserSwitchCallbacks; + mHandler.removeMessages(USER_SWITCH_CALLBACKS_TIMEOUT_MSG); sendContinueUserSwitchLocked(uss, oldUserId, newUserId); + // Report observers that never called back (USER_SWITCH_CALLBACKS_TIMEOUT) + mHandler.sendMessageDelayed(mHandler.obtainMessage(USER_SWITCH_CALLBACKS_TIMEOUT_MSG, + oldUserId, newUserId), USER_SWITCH_CALLBACKS_TIMEOUT_MS); + } + } + + void timeoutUserSwitchCallbacks(int oldUserId, int newUserId) { + synchronized (mLock) { + if (mTimeoutUserSwitchCallbacks != null && !mTimeoutUserSwitchCallbacks.isEmpty()) { + Slog.wtf(TAG, "User switch timeout: from " + oldUserId + " to " + newUserId + + ". Observers that didn't respond: " + mTimeoutUserSwitchCallbacks); + mTimeoutUserSwitchCallbacks = null; + } } } @@ -1158,18 +1251,16 @@ class UserController { public void sendResult(Bundle data) throws RemoteException { synchronized (mLock) { long delay = SystemClock.elapsedRealtime() - dispatchStartedTime; - if (delay > USER_SWITCH_TIMEOUT) { - Slog.wtf(TAG, "User switch timeout: observer " + name + if (delay > USER_SWITCH_TIMEOUT_MS) { + Slog.e(TAG, "User switch timeout: observer " + name + " sent result after " + delay + " ms"); } - // Early return if this session is no longer valid - if (curWaitingUserSwitchCallbacks - != mCurWaitingUserSwitchCallbacks) { - return; - } curWaitingUserSwitchCallbacks.remove(name); - // Continue switching if all callbacks have been notified - if (waitingCallbacksCount.decrementAndGet() == 0) { + // Continue switching if all callbacks have been notified and + // user switching session is still valid + if (waitingCallbacksCount.decrementAndGet() == 0 + && (curWaitingUserSwitchCallbacks + == mCurWaitingUserSwitchCallbacks)) { sendContinueUserSwitchLocked(uss, oldUserId, newUserId); } } @@ -1190,7 +1281,7 @@ class UserController { void sendContinueUserSwitchLocked(UserState uss, int oldUserId, int newUserId) { mCurWaitingUserSwitchCallbacks = null; mHandler.removeMessages(USER_SWITCH_TIMEOUT_MSG); - mHandler.sendMessage(mHandler.obtainMessage(ActivityManagerService.CONTINUE_USER_SWITCH_MSG, + mHandler.sendMessage(mHandler.obtainMessage(CONTINUE_USER_SWITCH_MSG, oldUserId, newUserId, uss)); } @@ -1370,6 +1461,11 @@ class UserController { mUserSwitchObservers.register(observer, name); } + void sendForegroundProfileChanged(int userId) { + mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG); + mHandler.obtainMessage(FOREGROUND_PROFILE_CHANGED_MSG, userId, 0).sendToTarget(); + } + void unregisterUserSwitchObserver(IUserSwitchObserver observer) { mUserSwitchObservers.unregister(observer); } @@ -1550,6 +1646,15 @@ class UserController { return mInjector.getUserManager().exists(userId); } + void enforceShellRestriction(String restriction, int userHandle) { + if (Binder.getCallingUid() == SHELL_UID) { + if (userHandle < 0 || hasUserRestriction(restriction, userHandle)) { + throw new SecurityException("Shell does not have permission to access user " + + userHandle); + } + } + } + boolean hasUserRestriction(String restriction, int userId) { return mInjector.getUserManager().hasUserRestriction(restriction, userId); } @@ -1642,6 +1747,72 @@ class UserController { } } + public boolean handleMessage(Message msg) { + switch (msg.what) { + case START_USER_SWITCH_FG_MSG: + startUserInForeground(msg.arg1); + break; + case REPORT_USER_SWITCH_MSG: + dispatchUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2); + break; + case CONTINUE_USER_SWITCH_MSG: + continueUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2); + break; + case USER_SWITCH_TIMEOUT_MSG: + timeoutUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2); + break; + case USER_SWITCH_CALLBACKS_TIMEOUT_MSG: + timeoutUserSwitchCallbacks(msg.arg1, msg.arg2); + break; + case START_PROFILES_MSG: + synchronized (mLock) { + startProfilesLocked(); + } + break; + case SYSTEM_USER_START_MSG: + mInjector.batteryStatsServiceNoteEvent( + BatteryStats.HistoryItem.EVENT_USER_RUNNING_START, + Integer.toString(msg.arg1), msg.arg1); + mInjector.getSystemServiceManager().startUser(msg.arg1); + break; + case SYSTEM_USER_UNLOCK_MSG: + final int userId = msg.arg1; + mInjector.getSystemServiceManager().unlockUser(userId); + synchronized (mLock) { + mInjector.loadUserRecentsLocked(userId); + } + if (userId == UserHandle.USER_SYSTEM) { + mInjector.startPersistentApps(PackageManager.MATCH_DIRECT_BOOT_UNAWARE); + } + mInjector.installEncryptionUnawareProviders(userId); + finishUserUnlocked((UserState) msg.obj); + break; + case SYSTEM_USER_CURRENT_MSG: + mInjector.batteryStatsServiceNoteEvent( + BatteryStats.HistoryItem.EVENT_USER_FOREGROUND_FINISH, + Integer.toString(msg.arg2), msg.arg2); + mInjector.batteryStatsServiceNoteEvent( + BatteryStats.HistoryItem.EVENT_USER_FOREGROUND_START, + Integer.toString(msg.arg1), msg.arg1); + + mInjector.getSystemServiceManager().switchUser(msg.arg1); + break; + case FOREGROUND_PROFILE_CHANGED_MSG: + dispatchForegroundProfileChanged(msg.arg1); + break; + case REPORT_USER_SWITCH_COMPLETE_MSG: + dispatchUserSwitchComplete(msg.arg1); + break; + case REPORT_LOCKED_BOOT_COMPLETE_MSG: + dispatchLockedBootComplete(msg.arg1); + break; + case START_USER_SWITCH_UI_MSG: + showUserSwitchDialog((Pair<UserInfo, UserInfo>) msg.obj); + break; + } + return false; + } + @VisibleForTesting static class Injector { private final ActivityManagerService mService; @@ -1656,8 +1827,12 @@ class UserController { return mService; } - protected Handler getHandler() { - return mService.mHandler; + protected Handler getHandler(Handler.Callback callback) { + return new Handler(mService.mHandlerThread.getLooper(), callback); + } + + protected Handler getUiHandler(Handler.Callback callback) { + return new Handler(mService.mUiHandler.getLooper(), callback); } protected Context getContext() { @@ -1715,14 +1890,14 @@ class UserController { mService.mBatteryStatsService.noteEvent(code, name, uid); } - void systemServiceManagerStopUser(int userId) { - mService.mSystemServiceManager.stopUser(userId); - } - boolean isRuntimeRestarted() { return mService.mSystemServiceManager.isRuntimeRestarted(); } + SystemServiceManager getSystemServiceManager() { + return mService.mSystemServiceManager; + } + boolean isFirstBootOrUpgrade() { IPackageManager pm = AppGlobals.getPackageManager(); try { @@ -1763,8 +1938,16 @@ class UserController { mService.clearBroadcastQueueForUserLocked(userId); } - void enforceShellRestriction(String restriction, int userId) { - mService.enforceShellRestriction(restriction, userId); + void loadUserRecentsLocked(int userId) { + mService.mRecentTasks.loadUserRecentsLocked(userId); + } + + void startPersistentApps(int matchFlags) { + mService.startPersistentApps(matchFlags); + } + + void installEncryptionUnawareProviders(int userId) { + mService.installEncryptionUnawareProviders(userId); } void showUserSwitchingDialog(UserInfo fromUser, UserInfo toUser) { diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 503810683fdf..11d0470ee8e5 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -16,6 +16,11 @@ package com.android.server.audio; +import com.android.server.audio.AudioServiceEvents.ForceUseEvent; +import com.android.server.audio.AudioServiceEvents.PhoneStateEvent; +import com.android.server.audio.AudioServiceEvents.VolumeEvent; +import com.android.server.audio.AudioServiceEvents.WiredDevConnectEvent; + import static android.Manifest.permission.REMOTE_AUDIO_PLAYBACK; import static android.media.AudioManager.RINGER_MODE_NORMAL; import static android.media.AudioManager.RINGER_MODE_SILENT; @@ -796,12 +801,23 @@ public class AudioService extends IAudioService.Stub public void systemReady() { sendMsg(mAudioHandler, MSG_SYSTEM_READY, SENDMSG_QUEUE, 0, 0, null, 0); - try { - ActivityManager.getService().registerUidObserver(mUidObserver, - ActivityManager.UID_OBSERVER_CACHED | ActivityManager.UID_OBSERVER_GONE, - ActivityManager.PROCESS_STATE_UNKNOWN, null); - } catch (RemoteException e) { - // ignored; both services live in system_server + if (false) { + // This is turned off for now, because it is racy and thus causes apps to break. + // Currently banning a uid means that if an app tries to start playing an audio + // stream, that will be preventing, and unbanning it will not allow that stream + // to resume. However these changes in uid state are racy with what the app is doing, + // so that after taking a process out of the cached state we can't guarantee that + // we will unban the uid before the app actually tries to start playing audio. + // (To do that, the activity manager would need to wait until it knows for sure + // that the ban has been removed, before telling the app to do whatever it is + // supposed to do that caused it to go out of the cached state.) + try { + ActivityManager.getService().registerUidObserver(mUidObserver, + ActivityManager.UID_OBSERVER_CACHED | ActivityManager.UID_OBSERVER_GONE, + ActivityManager.PROCESS_STATE_UNKNOWN, null); + } catch (RemoteException e) { + // ignored; both services live in system_server + } } } @@ -1310,6 +1326,9 @@ public class AudioService extends IAudioService.Stub + ", flags=" + flags + ", caller=" + caller + ", volControlStream=" + mVolumeControlStream + ", userSelect=" + mUserSelectedVolumeControlStream); + mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_ADJUST_SUGG_VOL, suggestedStreamType, + direction/*val1*/, flags/*val2*/, new StringBuilder(callingPackage) + .append("/").append(caller).append(" uid:").append(uid).toString())); final int streamType; if (mUserSelectedVolumeControlStream) { // implies mVolumeControlStream != -1 streamType = mVolumeControlStream; @@ -1359,6 +1378,8 @@ public class AudioService extends IAudioService.Stub + "CHANGE_ACCESSIBILITY_VOLUME / callingPackage=" + callingPackage); return; } + mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_ADJUST_STREAM_VOL, streamType, + direction/*val1*/, flags/*val2*/, callingPackage)); adjustStreamVolume(streamType, direction, flags, callingPackage, callingPackage, Binder.getCallingUid()); } @@ -1675,6 +1696,8 @@ public class AudioService extends IAudioService.Stub + " CHANGE_ACCESSIBILITY_VOLUME callingPackage=" + callingPackage); return; } + mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_SET_STREAM_VOL, streamType, + index/*val1*/, flags/*val2*/, callingPackage)); setStreamVolume(streamType, index, flags, callingPackage, callingPackage, Binder.getCallingUid()); } @@ -4017,7 +4040,7 @@ public class AudioService extends IAudioService.Stub /* * A class just for packaging up a set of connection parameters. */ - private class WiredDeviceConnectionState { + class WiredDeviceConnectionState { public final int mType; public final int mState; public final String mAddress; @@ -6111,12 +6134,12 @@ public class AudioService extends IAudioService.Stub private int mSafeMediaVolumeIndex; // mSafeUsbMediaVolumeIndex is used for USB Headsets and is the music volume UI index // corresponding to a gain of -30 dBFS in audio flinger mixer. - // We remove -15 dBs from the theoretical -15dB to account for the EQ boost when bands are set - // to max gain. + // We remove -22 dBs from the theoretical -15dB to account for the EQ + bass boost + // amplification when both effects are on with all band gains at maximum. // This level corresponds to a loudness of 85 dB SPL for the warning to be displayed when // the headset is compliant to EN 60950 with a max loudness of 100dB SPL. private int mSafeUsbMediaVolumeIndex; - private static final float SAFE_VOLUME_GAIN_DBFS = -30.0f; + private static final float SAFE_VOLUME_GAIN_DBFS = -37.0f; // mSafeMediaVolumeDevices lists the devices for which safe media volume is enforced, private final int mSafeMediaVolumeDevices = AudioSystem.DEVICE_OUT_WIRED_HEADSET | AudioSystem.DEVICE_OUT_WIRED_HEADPHONE | @@ -6372,63 +6395,7 @@ public class AudioService extends IAudioService.Stub final int LOG_NB_EVENTS_PHONE_STATE = 20; final int LOG_NB_EVENTS_WIRED_DEV_CONNECTION = 30; final int LOG_NB_EVENTS_FORCE_USE = 20; - - final private static class PhoneStateEvent extends AudioEventLogger.Event { - final String mPackage; - final int mPid; - final int mMode; - - PhoneStateEvent(String callingPackage, int pid, int mode) { - mPackage = callingPackage; - mPid = pid; - mMode = mode; - } - - @Override - public String eventToString() { - return new StringBuilder("setMode(").append(AudioSystem.modeToString(mMode)) - .append(") from package=").append(mPackage) - .append(" pid=").append(mPid).toString(); - } - } - - final private static class WiredDevConnectEvent extends AudioEventLogger.Event { - final WiredDeviceConnectionState mState; - - WiredDevConnectEvent(WiredDeviceConnectionState state) { - mState = state; - } - - @Override - public String eventToString() { - return new StringBuilder("setWiredDeviceConnectionState(") - .append(" type:").append(Integer.toHexString(mState.mType)) - .append(" state:").append(AudioSystem.deviceStateToString(mState.mState)) - .append(" addr:").append(mState.mAddress) - .append(" name:").append(mState.mName) - .append(") from ").append(mState.mCaller).toString(); - } - } - - final private static class ForceUseEvent extends AudioEventLogger.Event { - final int mUsage; - final int mConfig; - final String mReason; - - ForceUseEvent(int usage, int config, String reason) { - mUsage = usage; - mConfig = config; - mReason = reason; - } - - @Override - public String eventToString() { - return new StringBuilder("setForceUse(") - .append(AudioSystem.forceUseUsageToString(mUsage)) - .append(", ").append(AudioSystem.forceUseConfigToString(mConfig)) - .append(") due to ").append(mReason).toString(); - } - } + final int LOG_NB_EVENTS_VOLUME = 40; final private AudioEventLogger mModeLogger = new AudioEventLogger(LOG_NB_EVENTS_PHONE_STATE, "phone state (logged after successfull call to AudioSystem.setPhoneState(int))"); @@ -6442,6 +6409,9 @@ public class AudioService extends IAudioService.Stub LOG_NB_EVENTS_FORCE_USE, "force use (logged before setForceUse() is executed)"); + final private AudioEventLogger mVolumeLogger = new AudioEventLogger(LOG_NB_EVENTS_VOLUME, + "volume changes (logged when command received by AudioService)"); + private static final String[] RINGER_MODE_NAMES = new String[] { "SILENT", "VIBRATE", @@ -6513,12 +6483,15 @@ public class AudioService extends IAudioService.Stub mRecordMonitor.dump(pw); + pw.println("\n"); pw.println("\nEvent logs:"); mModeLogger.dump(pw); pw.println("\n"); mWiredDevLogger.dump(pw); pw.println("\n"); mForceUseLogger.dump(pw); + pw.println("\n"); + mVolumeLogger.dump(pw); } private static String safeMediaVolumeStateToString(Integer state) { @@ -7011,6 +6984,10 @@ public class AudioService extends IAudioService.Stub mPlaybackMonitor.playerEvent(piid, event, Binder.getCallingUid()); } + public void playerHasOpPlayAudio(int piid, boolean hasOpPlayAudio) { + mPlaybackMonitor.playerHasOpPlayAudio(piid, hasOpPlayAudio, Binder.getCallingUid()); + } + public void releasePlayer(int piid) { mPlaybackMonitor.releasePlayer(piid, Binder.getCallingUid()); } diff --git a/services/core/java/com/android/server/audio/AudioServiceEvents.java b/services/core/java/com/android/server/audio/AudioServiceEvents.java new file mode 100644 index 000000000000..634c8c27a3cc --- /dev/null +++ b/services/core/java/com/android/server/audio/AudioServiceEvents.java @@ -0,0 +1,131 @@ +/* + * 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.server.audio; + +import android.media.AudioManager; +import android.media.AudioSystem; + +import com.android.server.audio.AudioService.WiredDeviceConnectionState; + + +public class AudioServiceEvents { + + final static class PhoneStateEvent extends AudioEventLogger.Event { + final String mPackage; + final int mPid; + final int mMode; + + PhoneStateEvent(String callingPackage, int pid, int mode) { + mPackage = callingPackage; + mPid = pid; + mMode = mode; + } + + @Override + public String eventToString() { + return new StringBuilder("setMode(").append(AudioSystem.modeToString(mMode)) + .append(") from package=").append(mPackage) + .append(" pid=").append(mPid).toString(); + } + } + + final static class WiredDevConnectEvent extends AudioEventLogger.Event { + final WiredDeviceConnectionState mState; + + WiredDevConnectEvent(WiredDeviceConnectionState state) { + mState = state; + } + + @Override + public String eventToString() { + return new StringBuilder("setWiredDeviceConnectionState(") + .append(" type:").append(Integer.toHexString(mState.mType)) + .append(" state:").append(AudioSystem.deviceStateToString(mState.mState)) + .append(" addr:").append(mState.mAddress) + .append(" name:").append(mState.mName) + .append(") from ").append(mState.mCaller).toString(); + } + } + + final static class ForceUseEvent extends AudioEventLogger.Event { + final int mUsage; + final int mConfig; + final String mReason; + + ForceUseEvent(int usage, int config, String reason) { + mUsage = usage; + mConfig = config; + mReason = reason; + } + + @Override + public String eventToString() { + return new StringBuilder("setForceUse(") + .append(AudioSystem.forceUseUsageToString(mUsage)) + .append(", ").append(AudioSystem.forceUseConfigToString(mConfig)) + .append(") due to ").append(mReason).toString(); + } + } + + final static class VolumeEvent extends AudioEventLogger.Event { + final static int VOL_ADJUST_SUGG_VOL = 0; + final static int VOL_ADJUST_STREAM_VOL = 1; + final static int VOL_SET_STREAM_VOL = 2; + + final int mOp; + final int mStream; + final int mVal1; + final int mVal2; + final String mCaller; + + VolumeEvent(int op, int stream, int val1, int val2, String caller) { + mOp = op; + mStream = stream; + mVal1 = val1; + mVal2 = val2; + mCaller = caller; + } + + @Override + public String eventToString() { + switch (mOp) { + case VOL_ADJUST_SUGG_VOL: + return new StringBuilder("adjustSuggestedStreamVolume(sugg:") + .append(AudioSystem.streamToString(mStream)) + .append(" dir:").append(AudioManager.adjustToString(mVal1)) + .append(" flags:0x").append(Integer.toHexString(mVal2)) + .append(") from ").append(mCaller) + .toString(); + case VOL_ADJUST_STREAM_VOL: + return new StringBuilder("adjustStreamVolume(stream:") + .append(AudioSystem.streamToString(mStream)) + .append(" dir:").append(AudioManager.adjustToString(mVal1)) + .append(" flags:0x").append(Integer.toHexString(mVal2)) + .append(") from ").append(mCaller) + .toString(); + case VOL_SET_STREAM_VOL: + return new StringBuilder("setStreamVolume(stream:") + .append(AudioSystem.streamToString(mStream)) + .append(" index:").append(mVal1) + .append(" flags:0x").append(Integer.toHexString(mVal2)) + .append(") from ").append(mCaller) + .toString(); + default: return new StringBuilder("FIXME invalid op:").append(mOp).toString(); + } + } + } +} diff --git a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java index c075cdceb685..d1a37af5e7a8 100644 --- a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java +++ b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java @@ -171,7 +171,7 @@ public final class PlaybackActivityMonitor } } if (change) { - dispatchPlaybackChange(); + dispatchPlaybackChange(false); } } @@ -210,10 +210,15 @@ public final class PlaybackActivityMonitor } } if (change) { - dispatchPlaybackChange(); + dispatchPlaybackChange(event == AudioPlaybackConfiguration.PLAYER_STATE_RELEASED); } } + public void playerHasOpPlayAudio(int piid, boolean hasOpPlayAudio, int binderUid) { + // no check on UID yet because this is only for logging at the moment + mEventLogger.log(new PlayerOpPlayAudioEvent(piid, hasOpPlayAudio, binderUid)); + } + public void releasePlayer(int piid, int binderUid) { if (DEBUG) { Log.v(TAG, "releasePlayer() for piid=" + piid); } synchronized(mPlayerLock) { @@ -223,6 +228,7 @@ public final class PlaybackActivityMonitor "releasing player piid:" + piid)); mPlayers.remove(new Integer(piid)); mDuckingManager.removeReleased(apc); + apc.handleStateEvent(AudioPlaybackConfiguration.PLAYER_STATE_RELEASED); } } } @@ -238,6 +244,14 @@ public final class PlaybackActivityMonitor pw.println("\nPlaybackActivityMonitor dump time: " + DateFormat.getTimeInstance().format(new Date())); synchronized(mPlayerLock) { + pw.println("\n playback listeners:"); + synchronized(mClients) { + for (PlayMonitorClient pmc : mClients) { + pw.print(" " + (pmc.mIsPrivileged ? "(S)" : "(P)") + + pmc.toString()); + } + } + pw.println("\n"); // all players pw.println("\n players:"); final List<Integer> piidIntList = new ArrayList<Integer>(mPlayers.keySet()); @@ -262,7 +276,7 @@ public final class PlaybackActivityMonitor for (int uid : mBannedUids) { pw.print(" " + uid); } - pw.println(); + pw.println("\n"); // log mEventLogger.dump(pw); } @@ -287,7 +301,11 @@ public final class PlaybackActivityMonitor return true; } - private void dispatchPlaybackChange() { + /** + * Sends new list after update of playback configurations + * @param iplayerReleased indicates if the change was due to a player being released + */ + private void dispatchPlaybackChange(boolean iplayerReleased) { synchronized (mClients) { // typical use case, nobody is listening, don't do any work if (mClients.isEmpty()) { @@ -318,9 +336,12 @@ public final class PlaybackActivityMonitor // do not spam the logs if there are problems communicating with this client if (pmc.mErrorCount < PlayMonitorClient.MAX_ERRORS) { if (pmc.mIsPrivileged) { - pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsSystem); + pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsSystem, + iplayerReleased); } else { - pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsPublic); + // non-system clients don't have the control interface IPlayer, so + // they don't need to flush commands when a player was released + pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsPublic, false); } } } catch (RemoteException e) { @@ -702,8 +723,28 @@ public final class PlaybackActivityMonitor @Override public String eventToString() { - return new String("player piid:" + mPlayerIId + " state:" - + AudioPlaybackConfiguration.toLogFriendlyPlayerState(mState)); + return new StringBuilder("player piid:").append(mPlayerIId).append(" state:") + .append(AudioPlaybackConfiguration.toLogFriendlyPlayerState(mState)).toString(); + } + } + + private final static class PlayerOpPlayAudioEvent extends AudioEventLogger.Event { + // only keeping the player interface ID as it uniquely identifies the player in the event + final int mPlayerIId; + final boolean mHasOp; + final int mUid; + + PlayerOpPlayAudioEvent(int piid, boolean hasOp, int uid) { + mPlayerIId = piid; + mHasOp = hasOp; + mUid = uid; + } + + @Override + public String eventToString() { + return new StringBuilder("player piid:").append(mPlayerIId) + .append(" has OP_PLAY_AUDIO:").append(mHasOp) + .append(" in uid:").append(mUid).toString(); } } diff --git a/services/core/java/com/android/server/broadcastradio/Tuner.java b/services/core/java/com/android/server/broadcastradio/Tuner.java index 06a5af5f482e..e6ae320cf38d 100644 --- a/services/core/java/com/android/server/broadcastradio/Tuner.java +++ b/services/core/java/com/android/server/broadcastradio/Tuner.java @@ -77,6 +77,8 @@ class Tuner extends ITuner.Stub { @NonNull RadioManager.BandConfig config); private native RadioManager.BandConfig nativeGetConfiguration(long nativeContext, int region); + private native void nativeSetMuted(long nativeContext, boolean mute); + private native void nativeStep(long nativeContext, boolean directionDown, boolean skipSubChannel); private native void nativeScan(long nativeContext, boolean directionDown, boolean skipSubChannel); private native void nativeTune(long nativeContext, @NonNull ProgramSelector selector); @@ -148,8 +150,7 @@ class Tuner extends ITuner.Stub { if (mIsMuted == mute) return; mIsMuted = mute; - // TODO(b/62713378): notifify audio policy manager of media activity on radio audio - // device. This task is pulled directly from previous implementation of native service. + nativeSetMuted(mNativeContext, mute); } } diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java index db72c5e4cbab..e6228d46e15c 100644 --- a/services/core/java/com/android/server/clipboard/ClipboardService.java +++ b/services/core/java/com/android/server/clipboard/ClipboardService.java @@ -20,6 +20,7 @@ import android.app.ActivityManager; import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.IActivityManager; +import android.app.KeyguardManager; import android.content.ClipData; import android.content.ClipDescription; import android.content.ContentProvider; @@ -304,7 +305,7 @@ public class ClipboardService extends SystemService { public ClipData getPrimaryClip(String pkg) { synchronized (this) { if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, pkg, - Binder.getCallingUid())) { + Binder.getCallingUid()) || isDeviceLocked()) { return null; } addActiveOwnerLocked(Binder.getCallingUid(), pkg); @@ -316,7 +317,7 @@ public class ClipboardService extends SystemService { public ClipDescription getPrimaryClipDescription(String callingPackage) { synchronized (this) { if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage, - Binder.getCallingUid())) { + Binder.getCallingUid()) || isDeviceLocked()) { return null; } PerUserClipboard clipboard = getClipboard(); @@ -328,7 +329,7 @@ public class ClipboardService extends SystemService { public boolean hasPrimaryClip(String callingPackage) { synchronized (this) { if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage, - Binder.getCallingUid())) { + Binder.getCallingUid()) || isDeviceLocked()) { return false; } return getClipboard().primaryClip != null; @@ -355,7 +356,7 @@ public class ClipboardService extends SystemService { public boolean hasClipboardText(String callingPackage) { synchronized (this) { if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage, - Binder.getCallingUid())) { + Binder.getCallingUid()) || isDeviceLocked()) { return false; } PerUserClipboard clipboard = getClipboard(); @@ -433,6 +434,17 @@ public class ClipboardService extends SystemService { } } + private boolean isDeviceLocked() { + final long token = Binder.clearCallingIdentity(); + try { + final KeyguardManager keyguardManager = getContext().getSystemService( + KeyguardManager.class); + return keyguardManager != null && keyguardManager.isDeviceLocked(); + } finally { + Binder.restoreCallingIdentity(token); + } + } + private final void checkUriOwnerLocked(Uri uri, int uid) { if (!"content".equals(uri.getScheme())) { return; diff --git a/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java b/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java index ee382199438b..67e72167faa7 100644 --- a/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java +++ b/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java @@ -38,6 +38,7 @@ import android.net.metrics.IpReachabilityEvent; import android.net.metrics.NetworkEvent; import android.net.metrics.RaEvent; import android.net.metrics.ValidationProbeEvent; +import android.net.metrics.WakeupStats; import android.os.Parcelable; import android.util.SparseArray; import android.util.SparseIntArray; @@ -115,6 +116,22 @@ final public class IpConnectivityEventBuilder { return out; } + public static IpConnectivityEvent toProto(WakeupStats in) { + IpConnectivityLogClass.WakeupStats wakeupStats = + new IpConnectivityLogClass.WakeupStats(); + in.updateDuration(); + wakeupStats.durationSec = in.durationSec; + wakeupStats.totalWakeups = in.totalWakeups; + wakeupStats.rootWakeups = in.rootWakeups; + wakeupStats.systemWakeups = in.systemWakeups; + wakeupStats.nonApplicationWakeups = in.nonApplicationWakeups; + wakeupStats.applicationWakeups = in.applicationWakeups; + wakeupStats.noUidWakeups = in.noUidWakeups; + final IpConnectivityEvent out = buildEvent(0, 0, in.iface); + out.setWakeupStats(wakeupStats); + return out; + } + private static IpConnectivityEvent buildEvent(int netId, long transports, String ifname) { final IpConnectivityEvent ev = new IpConnectivityEvent(); ev.networkId = netId; diff --git a/services/core/java/com/android/server/connectivity/Nat464Xlat.java b/services/core/java/com/android/server/connectivity/Nat464Xlat.java index b3908847137a..fbbdf0051266 100644 --- a/services/core/java/com/android/server/connectivity/Nat464Xlat.java +++ b/services/core/java/com/android/server/connectivity/Nat464Xlat.java @@ -16,71 +16,68 @@ package com.android.server.connectivity; -import java.net.Inet4Address; - -import android.content.Context; import android.net.InterfaceConfiguration; import android.net.ConnectivityManager; import android.net.LinkAddress; import android.net.LinkProperties; -import android.net.NetworkAgent; +import android.net.NetworkInfo; import android.net.RouteInfo; -import android.os.Handler; -import android.os.Message; import android.os.INetworkManagementService; import android.os.RemoteException; import android.util.Slog; -import com.android.server.net.BaseNetworkObserver; import com.android.internal.util.ArrayUtils; +import com.android.server.net.BaseNetworkObserver; + +import java.net.Inet4Address; +import java.util.Objects; /** - * @hide + * Class to manage a 464xlat CLAT daemon. Nat464Xlat is not thread safe and should be manipulated + * from a consistent and unique thread context. It is the responsibility of ConnectivityService to + * call into this class from its own Handler thread. * - * Class to manage a 464xlat CLAT daemon. + * @hide */ public class Nat464Xlat extends BaseNetworkObserver { - private static final String TAG = "Nat464Xlat"; + private static final String TAG = Nat464Xlat.class.getSimpleName(); // This must match the interface prefix in clatd.c. private static final String CLAT_PREFIX = "v4-"; - // The network types we will start clatd on. + // The network types on which we will start clatd, + // allowing clat only on networks for which we can support IPv6-only. private static final int[] NETWORK_TYPES = { - ConnectivityManager.TYPE_MOBILE, - ConnectivityManager.TYPE_WIFI, - ConnectivityManager.TYPE_ETHERNET, + ConnectivityManager.TYPE_MOBILE, + ConnectivityManager.TYPE_WIFI, + ConnectivityManager.TYPE_ETHERNET, }; - private final INetworkManagementService mNMService; + // The network states in which running clatd is supported. + private static final NetworkInfo.State[] NETWORK_STATES = { + NetworkInfo.State.CONNECTED, + NetworkInfo.State.SUSPENDED, + }; - // ConnectivityService Handler for LinkProperties updates. - private final Handler mHandler; + private final INetworkManagementService mNMService; // The network we're running on, and its type. private final NetworkAgentInfo mNetwork; - // Internal state variables. - // - // The possible states are: - // - Idle: start() not called. Everything is null. - // - Starting: start() called. Interfaces are non-null. isStarted() returns true. - // mIsRunning is false. - // - Running: start() called, and interfaceLinkStateChanged() told us that mIface is up. - // mIsRunning is true. - // - // Once mIface is non-null and isStarted() is true, methods called by ConnectivityService on - // its handler thread must not modify any internal state variables; they are only updated by the - // interface observers, called on the notification threads. + private enum State { + IDLE, // start() not called. Base iface and stacked iface names are null. + STARTING, // start() called. Base iface and stacked iface names are known. + RUNNING, // start() called, and the stacked iface is known to be up. + STOPPING; // stop() called, this Nat464Xlat is still registered as a network observer for + // the stacked interface. + } + private String mBaseIface; private String mIface; - private boolean mIsRunning; + private State mState = State.IDLE; - public Nat464Xlat( - Context context, INetworkManagementService nmService, - Handler handler, NetworkAgentInfo nai) { + public Nat464Xlat(INetworkManagementService nmService, NetworkAgentInfo nai) { mNMService = nmService; - mHandler = handler; mNetwork = nai; } @@ -90,34 +87,109 @@ public class Nat464Xlat extends BaseNetworkObserver { * @return true if the network requires clat, false otherwise. */ public static boolean requiresClat(NetworkAgentInfo nai) { - final int netType = nai.networkInfo.getType(); - final boolean connected = nai.networkInfo.isConnected(); + // TODO: migrate to NetworkCapabilities.TRANSPORT_*. + final boolean supported = ArrayUtils.contains(NETWORK_TYPES, nai.networkInfo.getType()); + final boolean connected = ArrayUtils.contains(NETWORK_STATES, nai.networkInfo.getState()); + // We only run clat on networks that don't have a native IPv4 address. final boolean hasIPv4Address = - (nai.linkProperties != null) ? nai.linkProperties.hasIPv4Address() : false; - // Only support clat on mobile and wifi for now, because these are the only IPv6-only - // networks we can connect to. - return connected && !hasIPv4Address && ArrayUtils.contains(NETWORK_TYPES, netType); + (nai.linkProperties != null) && nai.linkProperties.hasIPv4Address(); + return supported && connected && !hasIPv4Address; } /** - * Determines whether clatd is started. Always true, except a) if start has not yet been called, - * or b) if our interface was removed. + * @return true if clatd has been started and has not yet stopped. + * A true result corresponds to internal states STARTING and RUNNING. */ public boolean isStarted() { - return mIface != null; + return mState != State.IDLE; + } + + /** + * @return true if clatd has been started but the stacked interface is not yet up. + */ + public boolean isStarting() { + return mState == State.STARTING; + } + + /** + * @return true if clatd has been started and the stacked interface is up. + */ + public boolean isRunning() { + return mState == State.RUNNING; + } + + /** + * @return true if clatd has been stopped. + */ + public boolean isStopping() { + return mState == State.STOPPING; + } + + /** + * Start clatd, register this Nat464Xlat as a network observer for the stacked interface, + * and set internal state. + */ + private void enterStartingState(String baseIface) { + try { + mNMService.registerObserver(this); + } catch(RemoteException e) { + Slog.e(TAG, + "startClat: Can't register interface observer for clat on " + mNetwork.name()); + return; + } + try { + mNMService.startClatd(baseIface); + } catch(RemoteException|IllegalStateException e) { + Slog.e(TAG, "Error starting clatd on " + baseIface, e); + } + mIface = CLAT_PREFIX + baseIface; + mBaseIface = baseIface; + mState = State.STARTING; + } + + /** + * Enter running state just after getting confirmation that the stacked interface is up, and + * turn ND offload off if on WiFi. + */ + private void enterRunningState() { + maybeSetIpv6NdOffload(mBaseIface, false); + mState = State.RUNNING; + } + + /** + * Stop clatd, and turn ND offload on if it had been turned off. + */ + private void enterStoppingState() { + if (isRunning()) { + maybeSetIpv6NdOffload(mBaseIface, true); + } + + try { + mNMService.stopClatd(mBaseIface); + } catch(RemoteException|IllegalStateException e) { + Slog.e(TAG, "Error stopping clatd on " + mBaseIface, e); + } + + mState = State.STOPPING; } /** - * Clears internal state. Must not be called by ConnectivityService. + * Unregister as a base observer for the stacked interface, and clear internal state. */ - private void clear() { + private void enterIdleState() { + try { + mNMService.unregisterObserver(this); + } catch(RemoteException|IllegalStateException e) { + Slog.e(TAG, "Error unregistering clatd observer on " + mBaseIface, e); + } + mIface = null; mBaseIface = null; - mIsRunning = false; + mState = State.IDLE; } /** - * Starts the clat daemon. Called by ConnectivityService on the handler thread. + * Starts the clat daemon. */ public void start() { if (isStarted()) { @@ -130,52 +202,30 @@ public class Nat464Xlat extends BaseNetworkObserver { return; } - try { - mNMService.registerObserver(this); - } catch(RemoteException e) { - Slog.e(TAG, "startClat: Can't register interface observer for clat on " + mNetwork); - return; - } - - mBaseIface = mNetwork.linkProperties.getInterfaceName(); - if (mBaseIface == null) { + String baseIface = mNetwork.linkProperties.getInterfaceName(); + if (baseIface == null) { Slog.e(TAG, "startClat: Can't start clat on null interface"); return; } - mIface = CLAT_PREFIX + mBaseIface; - // From now on, isStarted() will return true. - - Slog.i(TAG, "Starting clatd on " + mBaseIface); - try { - mNMService.startClatd(mBaseIface); - } catch(RemoteException|IllegalStateException e) { - Slog.e(TAG, "Error starting clatd: " + e); - } + // TODO: should we only do this if mNMService.startClatd() succeeds? + Slog.i(TAG, "Starting clatd on " + baseIface); + enterStartingState(baseIface); } /** - * Stops the clat daemon. Called by ConnectivityService on the handler thread. + * Stops the clat daemon. */ public void stop() { - if (isStarted()) { - Slog.i(TAG, "Stopping clatd"); - try { - mNMService.stopClatd(mBaseIface); - } catch(RemoteException|IllegalStateException e) { - Slog.e(TAG, "Error stopping clatd: " + e); - } - // When clatd stops and its interface is deleted, interfaceRemoved() will notify - // ConnectivityService and call clear(). - } else { - Slog.e(TAG, "clatd: already stopped"); + if (!isStarted()) { + return; } - } + Slog.i(TAG, "Stopping clatd on " + mBaseIface); - private void updateConnectivityService(LinkProperties lp) { - Message msg = mHandler.obtainMessage(NetworkAgent.EVENT_NETWORK_PROPERTIES_CHANGED, lp); - msg.replyTo = mNetwork.messenger; - Slog.i(TAG, "sending message to ConnectivityService: " + msg); - msg.sendToTarget(); + boolean wasStarting = isStarting(); + enterStoppingState(); + if (wasStarting) { + enterIdleState(); + } } /** @@ -184,16 +234,19 @@ public class Nat464Xlat extends BaseNetworkObserver { * has no idea that 464xlat is running on top of it. */ public void fixupLinkProperties(LinkProperties oldLp) { - if (mNetwork.clatd != null && - mIsRunning && - mNetwork.linkProperties != null && - !mNetwork.linkProperties.getAllInterfaceNames().contains(mIface)) { - Slog.d(TAG, "clatd running, updating NAI for " + mIface); - for (LinkProperties stacked: oldLp.getStackedLinks()) { - if (mIface.equals(stacked.getInterfaceName())) { - mNetwork.linkProperties.addStackedLink(stacked); - break; - } + if (!isRunning()) { + return; + } + LinkProperties lp = mNetwork.linkProperties; + if (lp == null || lp.getAllInterfaceNames().contains(mIface)) { + return; + } + + Slog.d(TAG, "clatd running, updating NAI for " + mIface); + for (LinkProperties stacked: oldLp.getStackedLinks()) { + if (Objects.equals(mIface, stacked.getInterfaceName())) { + lp.addStackedLink(stacked); + return; } } } @@ -227,6 +280,7 @@ public class Nat464Xlat extends BaseNetworkObserver { } private void maybeSetIpv6NdOffload(String iface, boolean on) { + // TODO: migrate to NetworkCapabilities.TRANSPORT_*. if (mNetwork.networkInfo.getType() != ConnectivityManager.TYPE_WIFI) { return; } @@ -238,52 +292,63 @@ public class Nat464Xlat extends BaseNetworkObserver { } } + /** + * Adds stacked link on base link and transitions to RUNNING state. + */ + private void handleInterfaceLinkStateChanged(String iface, boolean up) { + if (!isStarting() || !up || !Objects.equals(mIface, iface)) { + return; + } + + LinkAddress clatAddress = getLinkAddress(iface); + if (clatAddress == null) { + Slog.e(TAG, "clatAddress was null for stacked iface " + iface); + return; + } + + Slog.i(TAG, String.format("interface %s is up, adding stacked link %s on top of %s", + mIface, mIface, mBaseIface)); + enterRunningState(); + LinkProperties lp = new LinkProperties(mNetwork.linkProperties); + lp.addStackedLink(makeLinkProperties(clatAddress)); + mNetwork.connService().handleUpdateLinkProperties(mNetwork, lp); + } + + /** + * Removes stacked link on base link and transitions to IDLE state. + */ + private void handleInterfaceRemoved(String iface) { + if (!Objects.equals(mIface, iface)) { + return; + } + if (!isRunning() && !isStopping()) { + return; + } + + Slog.i(TAG, "interface " + iface + " removed"); + if (!isStopping()) { + // Ensure clatd is stopped if stop() has not been called: this likely means that clatd + // has crashed. + enterStoppingState(); + } + enterIdleState(); + LinkProperties lp = new LinkProperties(mNetwork.linkProperties); + lp.removeStackedLink(iface); + mNetwork.connService().handleUpdateLinkProperties(mNetwork, lp); + } + @Override public void interfaceLinkStateChanged(String iface, boolean up) { - // Called by the InterfaceObserver on its own thread, so can race with stop(). - if (isStarted() && up && mIface.equals(iface)) { - Slog.i(TAG, "interface " + iface + " is up, mIsRunning " + mIsRunning + "->true"); - - if (!mIsRunning) { - LinkAddress clatAddress = getLinkAddress(iface); - if (clatAddress == null) { - return; - } - mIsRunning = true; - maybeSetIpv6NdOffload(mBaseIface, false); - LinkProperties lp = new LinkProperties(mNetwork.linkProperties); - lp.addStackedLink(makeLinkProperties(clatAddress)); - Slog.i(TAG, "Adding stacked link " + mIface + " on top of " + mBaseIface); - updateConnectivityService(lp); - } - } + mNetwork.handler().post(() -> { handleInterfaceLinkStateChanged(iface, up); }); } @Override public void interfaceRemoved(String iface) { - if (isStarted() && mIface.equals(iface)) { - Slog.i(TAG, "interface " + iface + " removed, mIsRunning " + mIsRunning + "->false"); - - if (mIsRunning) { - // The interface going away likely means clatd has crashed. Ask netd to stop it, - // because otherwise when we try to start it again on the same base interface netd - // will complain that it's already started. - // - // Note that this method can be called by the interface observer at the same time - // that ConnectivityService calls stop(). In this case, the second call to - // stopClatd() will just throw IllegalStateException, which we'll ignore. - try { - mNMService.unregisterObserver(this); - mNMService.stopClatd(mBaseIface); - } catch (RemoteException|IllegalStateException e) { - // Well, we tried. - } - maybeSetIpv6NdOffload(mBaseIface, true); - LinkProperties lp = new LinkProperties(mNetwork.linkProperties); - lp.removeStackedLink(mIface); - clear(); - updateConnectivityService(lp); - } - } + mNetwork.handler().post(() -> { handleInterfaceRemoved(iface); }); + } + + @Override + public String toString() { + return "mBaseIface: " + mBaseIface + ", mIface: " + mIface + ", mState: " + mState; } } diff --git a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java index 4094083f138c..25dba3570e20 100644 --- a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java +++ b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java @@ -16,6 +16,8 @@ package com.android.server.connectivity; +import static android.util.TimeUtils.NANOS_PER_MS; + import android.content.Context; import android.net.ConnectivityManager; import android.net.INetdEventCallback; @@ -25,9 +27,12 @@ import android.net.metrics.ConnectStats; import android.net.metrics.DnsEvent; import android.net.metrics.INetdEventListener; import android.net.metrics.IpConnectivityLog; +import android.net.metrics.WakeupEvent; +import android.net.metrics.WakeupStats; import android.os.RemoteException; import android.text.format.DateUtils; import android.util.Log; +import android.util.ArrayMap; import android.util.SparseArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; @@ -59,12 +64,28 @@ public class NetdEventListenerService extends INetdEventListener.Stub { private static final int CONNECT_LATENCY_FILL_RATE = 15 * (int) DateUtils.SECOND_IN_MILLIS; private static final int CONNECT_LATENCY_MAXIMUM_RECORDS = 20000; + @VisibleForTesting + static final int WAKEUP_EVENT_BUFFER_LENGTH = 1024; + // TODO: dedup this String constant with the one used in + // ConnectivityService#wakeupModifyInterface(). + @VisibleForTesting + static final String WAKEUP_EVENT_IFACE_PREFIX = "iface:"; + // Sparse arrays of DNS and connect events, grouped by net id. @GuardedBy("this") private final SparseArray<DnsEvent> mDnsEvents = new SparseArray<>(); @GuardedBy("this") private final SparseArray<ConnectStats> mConnectEvents = new SparseArray<>(); + // Array of aggregated wakeup event stats, grouped by interface name. + @GuardedBy("this") + private final ArrayMap<String, WakeupStats> mWakeupStats = new ArrayMap<>(); + // Ring buffer array for storing packet wake up events sent by Netd. + @GuardedBy("this") + private final WakeupEvent[] mWakeupEvents = new WakeupEvent[WAKEUP_EVENT_BUFFER_LENGTH]; + @GuardedBy("this") + private long mWakeupEventCursor = 0; + private final ConnectivityManager mCm; @GuardedBy("this") @@ -137,11 +158,62 @@ public class NetdEventListenerService extends INetdEventListener.Stub { @Override public synchronized void onWakeupEvent(String prefix, int uid, int gid, long timestampNs) { + maybeVerboseLog("onWakeupEvent(%s, %d, %d, %sns)", prefix, uid, gid, timestampNs); + + // TODO: add ip protocol and port + + String iface = prefix.replaceFirst(WAKEUP_EVENT_IFACE_PREFIX, ""); + final long timestampMs; + if (timestampNs > 0) { + timestampMs = timestampNs / NANOS_PER_MS; + } else { + timestampMs = System.currentTimeMillis(); + } + + addWakeupEvent(iface, timestampMs, uid); + } + + @GuardedBy("this") + private void addWakeupEvent(String iface, long timestampMs, int uid) { + int index = wakeupEventIndex(mWakeupEventCursor); + mWakeupEventCursor++; + WakeupEvent event = new WakeupEvent(); + event.iface = iface; + event.timestampMs = timestampMs; + event.uid = uid; + mWakeupEvents[index] = event; + WakeupStats stats = mWakeupStats.get(iface); + if (stats == null) { + stats = new WakeupStats(iface); + mWakeupStats.put(iface, stats); + } + stats.countEvent(event); + } + + @GuardedBy("this") + private WakeupEvent[] getWakeupEvents() { + int length = (int) Math.min(mWakeupEventCursor, (long) mWakeupEvents.length); + WakeupEvent[] out = new WakeupEvent[length]; + // Reverse iteration from youngest event to oldest event. + long inCursor = mWakeupEventCursor - 1; + int outIdx = out.length - 1; + while (outIdx >= 0) { + out[outIdx--] = mWakeupEvents[wakeupEventIndex(inCursor--)]; + } + return out; + } + + private static int wakeupEventIndex(long cursor) { + return (int) Math.abs(cursor % WAKEUP_EVENT_BUFFER_LENGTH); } public synchronized void flushStatistics(List<IpConnectivityEvent> events) { flushProtos(events, mConnectEvents, IpConnectivityEventBuilder::toProto); flushProtos(events, mDnsEvents, IpConnectivityEventBuilder::toProto); + for (int i = 0; i < mWakeupStats.size(); i++) { + events.add(IpConnectivityEventBuilder.toProto(mWakeupStats.valueAt(i))); + } + mWakeupStats.clear(); } public synchronized void dump(PrintWriter writer) { @@ -153,13 +225,22 @@ public class NetdEventListenerService extends INetdEventListener.Stub { } public synchronized void list(PrintWriter pw) { - listEvents(pw, mConnectEvents, (x) -> x); - listEvents(pw, mDnsEvents, (x) -> x); + listEvents(pw, mConnectEvents, (x) -> x, "\n"); + listEvents(pw, mDnsEvents, (x) -> x, "\n"); + for (int i = 0; i < mWakeupStats.size(); i++) { + pw.println(mWakeupStats.valueAt(i)); + } + for (WakeupEvent wakeup : getWakeupEvents()) { + pw.println(wakeup); + } } public synchronized void listAsProtos(PrintWriter pw) { - listEvents(pw, mConnectEvents, IpConnectivityEventBuilder::toProto); - listEvents(pw, mDnsEvents, IpConnectivityEventBuilder::toProto); + listEvents(pw, mConnectEvents, IpConnectivityEventBuilder::toProto, ""); + listEvents(pw, mDnsEvents, IpConnectivityEventBuilder::toProto, ""); + for (int i = 0; i < mWakeupStats.size(); i++) { + pw.print(IpConnectivityEventBuilder.toProto(mWakeupStats.valueAt(i))); + } } private static <T> void flushProtos(List<IpConnectivityEvent> out, SparseArray<T> in, @@ -170,10 +251,13 @@ public class NetdEventListenerService extends INetdEventListener.Stub { in.clear(); } - public static <T> void listEvents( - PrintWriter pw, SparseArray<T> events, Function<T, Object> mapper) { + private static <T> void listEvents( + PrintWriter pw, SparseArray<T> events, Function<T, Object> mapper, String separator) { + // Proto derived Classes have toString method that adds a \n at the end. + // Let the caller control that by passing in the line separator explicitly. for (int i = 0; i < events.size(); i++) { - pw.println(mapper.apply(events.valueAt(i)).toString()); + pw.print(mapper.apply(events.valueAt(i))); + pw.print(separator); } } diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java index 2a618bcc2eac..a4d7242086bf 100644 --- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java +++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java @@ -27,7 +27,9 @@ import android.net.NetworkMisc; import android.net.NetworkRequest; import android.net.NetworkState; import android.os.Handler; +import android.os.INetworkManagementService; import android.os.Messenger; +import android.os.RemoteException; import android.os.SystemClock; import android.util.Log; import android.util.SparseArray; @@ -268,6 +270,18 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> { networkMisc = misc; } + public ConnectivityService connService() { + return mConnService; + } + + public Handler handler() { + return mHandler; + } + + public Network network() { + return network; + } + // Functions for manipulating the requests satisfied by this network. // // These functions must only called on ConnectivityService's main thread. @@ -551,6 +565,32 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> { for (LingerTimer timer : mLingerTimers) { pw.println(timer); } } + public void updateClat(INetworkManagementService netd) { + if (Nat464Xlat.requiresClat(this)) { + maybeStartClat(netd); + } else { + maybeStopClat(); + } + } + + /** Ensure clat has started for this network. */ + public void maybeStartClat(INetworkManagementService netd) { + if (clatd != null && clatd.isStarted()) { + return; + } + clatd = new Nat464Xlat(netd, this); + clatd.start(); + } + + /** Ensure clat has stopped for this network. */ + public void maybeStopClat() { + if (clatd == null) { + return; + } + clatd.stop(); + clatd = null; + } + public String toString() { return "NetworkAgentInfo{ ni{" + networkInfo + "} " + "network{" + network + "} nethandle{" + network.getNetworkHandle() + "} " + @@ -562,13 +602,13 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> { "acceptUnvalidated{" + networkMisc.acceptUnvalidated + "} " + "everCaptivePortalDetected{" + everCaptivePortalDetected + "} " + "lastCaptivePortalDetected{" + lastCaptivePortalDetected + "} " + + "clat{" + clatd + "} " + "}"; } public String name() { return "NetworkAgentInfo [" + networkInfo.getTypeName() + " (" + - networkInfo.getSubtypeName() + ") - " + - (network == null ? "null" : network.toString()) + "]"; + networkInfo.getSubtypeName() + ") - " + Objects.toString(network) + "]"; } // Enables sorting in descending order of score. diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java index d3a93542c740..8b886d6b3cff 100644 --- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java +++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java @@ -20,7 +20,6 @@ import static android.net.CaptivePortal.APP_RETURN_DISMISSED; import static android.net.CaptivePortal.APP_RETURN_UNWANTED; import static android.net.CaptivePortal.APP_RETURN_WANTED_AS_IS; -import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; @@ -229,6 +228,8 @@ public class NetworkMonitor extends StateMachine { // Delay between reevaluations once a captive portal has been found. private static final int CAPTIVE_PORTAL_REEVALUATE_DELAY_MS = 10*60*1000; + private static final int NUM_VALIDATION_LOG_LINES = 20; + private final Context mContext; private final Handler mConnectivityServiceHandler; private final NetworkAgentInfo mNetworkAgentInfo; @@ -236,9 +237,15 @@ public class NetworkMonitor extends StateMachine { private final int mNetId; private final TelephonyManager mTelephonyManager; private final WifiManager mWifiManager; - private final AlarmManager mAlarmManager; private final NetworkRequest mDefaultRequest; private final IpConnectivityLog mMetricsLog; + private final NetworkMonitorSettings mSettings; + + // Configuration values for captive portal detection probes. + private final String mCaptivePortalUserAgent; + private final URL mCaptivePortalHttpsUrl; + private final URL mCaptivePortalHttpUrl; + private final URL[] mCaptivePortalFallbackUrls; @VisibleForTesting protected boolean mIsCaptivePortalCheckEnabled; @@ -262,40 +269,37 @@ public class NetworkMonitor extends StateMachine { private CustomIntentReceiver mLaunchCaptivePortalAppBroadcastReceiver = null; - private final LocalLog validationLogs = new LocalLog(20); // 20 lines + private final LocalLog validationLogs = new LocalLog(NUM_VALIDATION_LOG_LINES); private final Stopwatch mEvaluationTimer = new Stopwatch(); // This variable is set before transitioning to the mCaptivePortalState. private CaptivePortalProbeResult mLastPortalProbeResult = CaptivePortalProbeResult.FAILED; - // Configuration values for captive portal detection probes. - private final String mCaptivePortalUserAgent; - private final URL mCaptivePortalHttpsUrl; - private final URL mCaptivePortalHttpUrl; - private final URL[] mCaptivePortalFallbackUrls; private int mNextFallbackUrlIndex = 0; public NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo, NetworkRequest defaultRequest) { - this(context, handler, networkAgentInfo, defaultRequest, new IpConnectivityLog()); + this(context, handler, networkAgentInfo, defaultRequest, new IpConnectivityLog(), + NetworkMonitorSettings.DEFAULT); } @VisibleForTesting protected NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo, - NetworkRequest defaultRequest, IpConnectivityLog logger) { + NetworkRequest defaultRequest, IpConnectivityLog logger, + NetworkMonitorSettings settings) { // Add suffix indicating which NetworkMonitor we're talking about. super(TAG + networkAgentInfo.name()); mContext = context; mMetricsLog = logger; mConnectivityServiceHandler = handler; + mSettings = settings; mNetworkAgentInfo = networkAgentInfo; - mNetwork = new OneAddressPerFamilyNetwork(networkAgentInfo.network); + mNetwork = new OneAddressPerFamilyNetwork(networkAgentInfo.network()); mNetId = mNetwork.netId; mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); - mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); mDefaultRequest = defaultRequest; addState(mDefaultState); @@ -305,16 +309,12 @@ public class NetworkMonitor extends StateMachine { addState(mCaptivePortalState, mMaybeNotifyState); setInitialState(mDefaultState); - mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.CAPTIVE_PORTAL_MODE, Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT) - != Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE; - mUseHttps = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1; - - mCaptivePortalUserAgent = getCaptivePortalUserAgent(context); - mCaptivePortalHttpsUrl = makeURL(getCaptivePortalServerHttpsUrl(context)); - mCaptivePortalHttpUrl = makeURL(getCaptivePortalServerHttpUrl(context)); - mCaptivePortalFallbackUrls = makeCaptivePortalFallbackUrls(context); + mIsCaptivePortalCheckEnabled = getIsCaptivePortalCheckEnabled(); + mUseHttps = getUseHttpsValidation(); + mCaptivePortalUserAgent = getCaptivePortalUserAgent(); + mCaptivePortalHttpsUrl = makeURL(getCaptivePortalServerHttpsUrl()); + mCaptivePortalHttpUrl = makeURL(getCaptivePortalServerHttpUrl(settings, context)); + mCaptivePortalFallbackUrls = makeCaptivePortalFallbackUrls(); start(); } @@ -705,19 +705,42 @@ public class NetworkMonitor extends StateMachine { } } - private static String getCaptivePortalServerHttpsUrl(Context context) { - return getSetting(context, Settings.Global.CAPTIVE_PORTAL_HTTPS_URL, DEFAULT_HTTPS_URL); + public boolean getIsCaptivePortalCheckEnabled() { + String symbol = Settings.Global.CAPTIVE_PORTAL_MODE; + int defaultValue = Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT; + int mode = mSettings.getSetting(mContext, symbol, defaultValue); + return mode != Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE; } + public boolean getUseHttpsValidation() { + return mSettings.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1; + } + + public boolean getWifiScansAlwaysAvailableDisabled() { + return mSettings.getSetting(mContext, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 0; + } + + private String getCaptivePortalServerHttpsUrl() { + return mSettings.getSetting(mContext, + Settings.Global.CAPTIVE_PORTAL_HTTPS_URL, DEFAULT_HTTPS_URL); + } + + // Static for direct access by ConnectivityService public static String getCaptivePortalServerHttpUrl(Context context) { - return getSetting(context, Settings.Global.CAPTIVE_PORTAL_HTTP_URL, DEFAULT_HTTP_URL); + return getCaptivePortalServerHttpUrl(NetworkMonitorSettings.DEFAULT, context); + } + + public static String getCaptivePortalServerHttpUrl( + NetworkMonitorSettings settings, Context context) { + return settings.getSetting( + context, Settings.Global.CAPTIVE_PORTAL_HTTP_URL, DEFAULT_HTTP_URL); } - private URL[] makeCaptivePortalFallbackUrls(Context context) { + private URL[] makeCaptivePortalFallbackUrls() { String separator = ","; - String firstUrl = getSetting(context, + String firstUrl = mSettings.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_FALLBACK_URL, DEFAULT_FALLBACK_URL); - String joinedUrls = firstUrl + separator + getSetting(context, + String joinedUrls = firstUrl + separator + mSettings.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS, DEFAULT_OTHER_FALLBACK_URLS); List<URL> urls = new ArrayList<>(); for (String s : joinedUrls.split(separator)) { @@ -733,13 +756,9 @@ public class NetworkMonitor extends StateMachine { return urls.toArray(new URL[urls.size()]); } - private static String getCaptivePortalUserAgent(Context context) { - return getSetting(context, Settings.Global.CAPTIVE_PORTAL_USER_AGENT, DEFAULT_USER_AGENT); - } - - private static String getSetting(Context context, String symbol, String defaultValue) { - final String value = Settings.Global.getString(context.getContentResolver(), symbol); - return value != null ? value : defaultValue; + private String getCaptivePortalUserAgent() { + return mSettings.getSetting(mContext, + Settings.Global.CAPTIVE_PORTAL_USER_AGENT, DEFAULT_USER_AGENT); } private URL nextFallbackUrl() { @@ -1035,12 +1054,13 @@ public class NetworkMonitor extends StateMachine { */ private void sendNetworkConditionsBroadcast(boolean responseReceived, boolean isCaptivePortal, long requestTimestampMs, long responseTimestampMs) { - if (Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 0) { + if (getWifiScansAlwaysAvailableDisabled()) { return; } - if (systemReady == false) return; + if (!systemReady) { + return; + } Intent latencyBroadcast = new Intent(ACTION_NETWORK_CONDITIONS_MEASURED); switch (mNetworkAgentInfo.networkInfo.getType()) { @@ -1144,4 +1164,24 @@ public class NetworkMonitor extends StateMachine { ev.durationMs = durationMs; mMetricsLog.log(mNetId, transports, ev); } + + @VisibleForTesting + public interface NetworkMonitorSettings { + int getSetting(Context context, String symbol, int defaultValue); + String getSetting(Context context, String symbol, String defaultValue); + + static NetworkMonitorSettings DEFAULT = new DefaultNetworkMonitorSettings(); + } + + @VisibleForTesting + public static class DefaultNetworkMonitorSettings implements NetworkMonitorSettings { + public int getSetting(Context context, String symbol, int defaultValue) { + return Settings.Global.getInt(context.getContentResolver(), symbol, defaultValue); + } + + public String getSetting(Context context, String symbol, String defaultValue) { + final String value = Settings.Global.getString(context.getContentResolver(), symbol); + return value != null ? value : defaultValue; + } + } } diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java index 6d5c428e58f8..057704a56c4c 100644 --- a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java +++ b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java @@ -30,6 +30,10 @@ import android.net.LinkAddress; import android.net.LinkProperties; import android.net.NetworkStats; import android.net.RouteInfo; +import android.net.netlink.ConntrackMessage; +import android.net.netlink.NetlinkConstants; +import android.net.netlink.NetlinkSocket; +import android.net.util.IpUtils; import android.net.util.SharedLog; import android.os.Handler; import android.os.Looper; @@ -37,15 +41,18 @@ import android.os.INetworkManagementService; import android.os.RemoteException; import android.os.SystemClock; import android.provider.Settings; +import android.system.ErrnoException; +import android.system.OsConstants; import android.text.TextUtils; -import com.android.server.connectivity.tethering.OffloadHardwareInterface.ForwardedStats; import com.android.internal.util.IndentingPrintWriter; +import com.android.server.connectivity.tethering.OffloadHardwareInterface.ForwardedStats; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -63,6 +70,11 @@ import java.util.concurrent.TimeUnit; */ public class OffloadController { private static final String TAG = OffloadController.class.getSimpleName(); + private static final boolean DBG = false; + private static final String ANYIP = "0.0.0.0"; + private static final ForwardedStats EMPTY_STATS = new ForwardedStats(); + + private static enum UpdateType { IF_NEEDED, FORCE }; private final Handler mHandler; private final OffloadHardwareInterface mHwInterface; @@ -94,6 +106,9 @@ public class OffloadController { // includes upstream interfaces that have a quota set. private HashMap<String, Long> mInterfaceQuotas = new HashMap<>(); + private int mNatUpdateCallbacksReceived; + private int mNatUpdateNetlinkErrors; + public OffloadController(Handler h, OffloadHardwareInterface hwi, ContentResolver contentResolver, INetworkManagementService nms, SharedLog log) { mHandler = h; @@ -113,12 +128,12 @@ public class OffloadController { } } - public void start() { - if (started()) return; + public boolean start() { + if (started()) return true; if (isOffloadDisabled()) { mLog.i("tethering offload disabled"); - return; + return false; } if (!mConfigInitialized) { @@ -126,11 +141,14 @@ public class OffloadController { if (!mConfigInitialized) { mLog.i("tethering offload config not supported"); stop(); - return; + return false; } } mControlInitialized = mHwInterface.initOffloadControl( + // OffloadHardwareInterface guarantees that these callback + // methods are called on the handler passed to it, which is the + // same as mHandler, as coordinated by the setup in Tethering. new OffloadHardwareInterface.ControlCallback() { @Override public void onStarted() { @@ -148,6 +166,14 @@ public class OffloadController { public void onStoppedUnsupported() { if (!started()) return; mLog.log("onStoppedUnsupported"); + // Poll for statistics and trigger a sweep of tethering + // stats by observers. This might not succeed, but it's + // worth trying anyway. We need to do this because from + // this point on we continue with software forwarding, + // and we need to synchronize stats and limits between + // software and hardware forwarding. + updateStatsForAllUpstreams(); + forceTetherStatsPoll(); } @Override @@ -155,11 +181,15 @@ public class OffloadController { if (!started()) return; mLog.log("onSupportAvailable"); - // [1] Poll for statistics and notify NetworkStats - // [2] (Re)Push all state: - // [a] push local prefixes - // [b] push downstreams - // [c] push upstream parameters + // [1] Poll for statistics and trigger a sweep of stats + // by observers. We need to do this to ensure that any + // limits set take into account any software tethering + // traffic that has been happening in the meantime. + updateStatsForAllUpstreams(); + forceTetherStatsPoll(); + // [2] (Re)Push all state. + computeAndPushLocalPrefixes(UpdateType.FORCE); + pushAllDownstreamState(); pushUpstreamParameters(null); } @@ -181,12 +211,7 @@ public class OffloadController { // The stats for the previous upstream were already updated on this thread // just after the upstream was changed, so they are also up-to-date. updateStatsForCurrentUpstream(); - - try { - mNms.tetherLimitReached(mStatsProvider); - } catch (RemoteException e) { - mLog.e("Cannot report data limit reached: " + e); - } + forceTetherStatsPoll(); } @Override @@ -194,15 +219,20 @@ public class OffloadController { String srcAddr, int srcPort, String dstAddr, int dstPort) { if (!started()) return; - mLog.log(String.format("NAT timeout update: %s (%s,%s) -> (%s,%s)", - proto, srcAddr, srcPort, dstAddr, dstPort)); + updateNatTimeout(proto, srcAddr, srcPort, dstAddr, dstPort); } }); - if (!mControlInitialized) { + + final boolean isStarted = started(); + if (!isStarted) { mLog.i("tethering offload control not supported"); stop(); + } else { + mLog.log("tethering offload started"); + mNatUpdateCallbacksReceived = 0; + mNatUpdateNetlinkErrors = 0; } - mLog.log("tethering offload started"); + return isStarted; } public void stop() { @@ -218,6 +248,10 @@ public class OffloadController { if (wasStarted) mLog.log("tethering offload stopped"); } + private boolean started() { + return mConfigInitialized && mControlInitialized; + } + private class OffloadTetheringStatsProvider extends ITetheringStatsProvider.Stub { @Override public NetworkStats getTetherStats(int how) { @@ -288,7 +322,7 @@ public class OffloadController { } private boolean maybeUpdateDataLimit(String iface) { - // setDataLimit may only be called while offload is occuring on this upstream. + // setDataLimit may only be called while offload is occurring on this upstream. if (!started() || !TextUtils.equals(iface, currentUpstreamInterface())) { return true; } @@ -305,27 +339,47 @@ public class OffloadController { maybeUpdateStats(currentUpstreamInterface()); } + private void updateStatsForAllUpstreams() { + // In practice, there should only ever be a single digit number of + // upstream interfaces over the lifetime of an active tethering session. + // Roughly speaking, imagine a very ambitious one or two of each of the + // following interface types: [ "rmnet_data", "wlan", "eth", "rndis" ]. + for (Map.Entry<String, ForwardedStats> kv : mForwardedStats.entrySet()) { + maybeUpdateStats(kv.getKey()); + } + } + + private void forceTetherStatsPoll() { + try { + mNms.tetherLimitReached(mStatsProvider); + } catch (RemoteException e) { + mLog.e("Cannot report data limit reached: " + e); + } + } + public void setUpstreamLinkProperties(LinkProperties lp) { if (!started() || Objects.equals(mUpstreamLinkProperties, lp)) return; - String prevUpstream = (mUpstreamLinkProperties != null) ? - mUpstreamLinkProperties.getInterfaceName() : null; + final String prevUpstream = currentUpstreamInterface(); mUpstreamLinkProperties = (lp != null) ? new LinkProperties(lp) : null; + // Make sure we record this interface in the ForwardedStats map. + final String iface = currentUpstreamInterface(); + if (!TextUtils.isEmpty(iface)) mForwardedStats.putIfAbsent(iface, EMPTY_STATS); // TODO: examine return code and decide what to do if programming // upstream parameters fails (probably just wait for a subsequent // onOffloadEvent() callback to tell us offload is available again and // then reapply all state). - computeAndPushLocalPrefixes(); + computeAndPushLocalPrefixes(UpdateType.IF_NEEDED); pushUpstreamParameters(prevUpstream); } public void setLocalPrefixes(Set<IpPrefix> localPrefixes) { - if (!started()) return; - mExemptPrefixes = localPrefixes; - computeAndPushLocalPrefixes(); + + if (!started()) return; + computeAndPushLocalPrefixes(UpdateType.IF_NEEDED); } public void notifyDownstreamLinkProperties(LinkProperties lp) { @@ -334,27 +388,38 @@ public class OffloadController { if (Objects.equals(oldLp, lp)) return; if (!started()) return; + pushDownstreamState(oldLp, lp); + } - final List<RouteInfo> oldRoutes = (oldLp != null) ? oldLp.getRoutes() : new ArrayList<>(); - final List<RouteInfo> newRoutes = lp.getRoutes(); + private void pushDownstreamState(LinkProperties oldLp, LinkProperties newLp) { + final String ifname = newLp.getInterfaceName(); + final List<RouteInfo> oldRoutes = + (oldLp != null) ? oldLp.getRoutes() : Collections.EMPTY_LIST; + final List<RouteInfo> newRoutes = newLp.getRoutes(); // For each old route, if not in new routes: remove. - for (RouteInfo oldRoute : oldRoutes) { - if (shouldIgnoreDownstreamRoute(oldRoute)) continue; - if (!newRoutes.contains(oldRoute)) { - mHwInterface.removeDownstreamPrefix(ifname, oldRoute.getDestination().toString()); + for (RouteInfo ri : oldRoutes) { + if (shouldIgnoreDownstreamRoute(ri)) continue; + if (!newRoutes.contains(ri)) { + mHwInterface.removeDownstreamPrefix(ifname, ri.getDestination().toString()); } } // For each new route, if not in old routes: add. - for (RouteInfo newRoute : newRoutes) { - if (shouldIgnoreDownstreamRoute(newRoute)) continue; - if (!oldRoutes.contains(newRoute)) { - mHwInterface.addDownstreamPrefix(ifname, newRoute.getDestination().toString()); + for (RouteInfo ri : newRoutes) { + if (shouldIgnoreDownstreamRoute(ri)) continue; + if (!oldRoutes.contains(ri)) { + mHwInterface.addDownstreamPrefix(ifname, ri.getDestination().toString()); } } } + private void pushAllDownstreamState() { + for (LinkProperties lp : mDownstreams.values()) { + pushDownstreamState(null, lp); + } + } + public void removeDownstreamInterface(String ifname) { final LinkProperties lp = mDownstreams.remove(ifname); if (lp == null) return; @@ -373,21 +438,21 @@ public class OffloadController { mContentResolver, TETHER_OFFLOAD_DISABLED, defaultDisposition) != 0); } - private boolean started() { - return mConfigInitialized && mControlInitialized; - } - private boolean pushUpstreamParameters(String prevUpstream) { - if (mUpstreamLinkProperties == null) { + final String iface = currentUpstreamInterface(); + + if (TextUtils.isEmpty(iface)) { + final boolean rval = mHwInterface.setUpstreamParameters("", ANYIP, ANYIP, null); + // Update stats after we've told the hardware to stop forwarding so + // we don't miss packets. maybeUpdateStats(prevUpstream); - return mHwInterface.setUpstreamParameters(null, null, null, null); + return rval; } // A stacked interface cannot be an upstream for hardware offload. // Consequently, we examine only the primary interface name, look at // getAddresses() rather than getAllAddresses(), and check getRoutes() // rather than getAllRoutes(). - final String iface = mUpstreamLinkProperties.getInterfaceName(); final ArrayList<String> v6gateways = new ArrayList<>(); String v4addr = null; String v4gateway = null; @@ -433,10 +498,11 @@ public class OffloadController { return success; } - private boolean computeAndPushLocalPrefixes() { + private boolean computeAndPushLocalPrefixes(UpdateType how) { + final boolean force = (how == UpdateType.FORCE); final Set<String> localPrefixStrs = computeLocalPrefixStrings( mExemptPrefixes, mUpstreamLinkProperties); - if (mLastLocalPrefixStrs.equals(localPrefixStrs)) return true; + if (!force && mLastLocalPrefixStrs.equals(localPrefixStrs)) return true; mLastLocalPrefixStrs = localPrefixStrs; return mHwInterface.setLocalPrefixes(new ArrayList<>(localPrefixStrs)); @@ -483,10 +549,113 @@ public class OffloadController { pw.println("Offload disabled"); return; } - pw.println("Offload HALs " + (started() ? "started" : "not started")); + final boolean isStarted = started(); + pw.println("Offload HALs " + (isStarted ? "started" : "not started")); LinkProperties lp = mUpstreamLinkProperties; String upstream = (lp != null) ? lp.getInterfaceName() : null; pw.println("Current upstream: " + upstream); pw.println("Exempt prefixes: " + mLastLocalPrefixStrs); + pw.println("NAT timeout update callbacks received during the " + + (isStarted ? "current" : "last") + + " offload session: " + + mNatUpdateCallbacksReceived); + pw.println("NAT timeout update netlink errors during the " + + (isStarted ? "current" : "last") + + " offload session: " + + mNatUpdateNetlinkErrors); + } + + private void updateNatTimeout( + int proto, String srcAddr, int srcPort, String dstAddr, int dstPort) { + final String protoName = protoNameFor(proto); + if (protoName == null) { + mLog.e("Unknown NAT update callback protocol: " + proto); + return; + } + + final Inet4Address src = parseIPv4Address(srcAddr); + if (src == null) { + mLog.e("Failed to parse IPv4 address: " + srcAddr); + return; + } + + if (!IpUtils.isValidUdpOrTcpPort(srcPort)) { + mLog.e("Invalid src port: " + srcPort); + return; + } + + final Inet4Address dst = parseIPv4Address(dstAddr); + if (dst == null) { + mLog.e("Failed to parse IPv4 address: " + dstAddr); + return; + } + + if (!IpUtils.isValidUdpOrTcpPort(dstPort)) { + mLog.e("Invalid dst port: " + dstPort); + return; + } + + mNatUpdateCallbacksReceived++; + if (DBG) { + mLog.log(String.format("NAT timeout update: %s (%s, %s) -> (%s, %s)", + protoName, srcAddr, srcPort, dstAddr, dstPort)); + } + + final int timeoutSec = connectionTimeoutUpdateSecondsFor(proto); + final byte[] msg = ConntrackMessage.newIPv4TimeoutUpdateRequest( + proto, src, srcPort, dst, dstPort, timeoutSec); + + try { + NetlinkSocket.sendOneShotKernelMessage(OsConstants.NETLINK_NETFILTER, msg); + } catch (ErrnoException e) { + mNatUpdateNetlinkErrors++; + mLog.e("Error updating NAT conntrack entry: " + e + + ", msg: " + NetlinkConstants.hexify(msg)); + mLog.log("NAT timeout update callbacks received: " + mNatUpdateCallbacksReceived); + mLog.log("NAT timeout update netlink errors: " + mNatUpdateNetlinkErrors); + } + } + + private static Inet4Address parseIPv4Address(String addrString) { + try { + final InetAddress ip = InetAddress.parseNumericAddress(addrString); + // TODO: Consider other sanitization steps here, including perhaps: + // not eql to 0.0.0.0 + // not within 169.254.0.0/16 + // not within ::ffff:0.0.0.0/96 + // not within ::/96 + // et cetera. + if (ip instanceof Inet4Address) { + return (Inet4Address) ip; + } + } catch (IllegalArgumentException iae) {} + return null; + } + + private static String protoNameFor(int proto) { + // OsConstants values are not constant expressions; no switch statement. + if (proto == OsConstants.IPPROTO_UDP) { + return "UDP"; + } else if (proto == OsConstants.IPPROTO_TCP) { + return "TCP"; + } + return null; + } + + private static int connectionTimeoutUpdateSecondsFor(int proto) { + // TODO: Replace this with more thoughtful work, perhaps reading from + // and maybe writing to any required + // + // /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_* + // /proc/sys/net/netfilter/nf_conntrack_udp_timeout{,_stream} + // + // entries. TBD. + if (proto == OsConstants.IPPROTO_TCP) { + // Cf. /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established + return 432000; + } else { + // Cf. /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream + return 180; + } } } diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java index 865a98902d0b..76195c4ac7d4 100644 --- a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java +++ b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java @@ -21,10 +21,12 @@ import static com.android.internal.util.BitUtils.uint16; import android.hardware.tetheroffload.control.V1_0.IOffloadControl; import android.hardware.tetheroffload.control.V1_0.ITetheringOffloadCallback; import android.hardware.tetheroffload.control.V1_0.NatTimeoutUpdate; +import android.hardware.tetheroffload.control.V1_0.NetworkProtocol; import android.hardware.tetheroffload.control.V1_0.OffloadCallbackEvent; import android.os.Handler; import android.os.RemoteException; import android.net.util.SharedLog; +import android.system.OsConstants; import java.util.ArrayList; @@ -107,6 +109,10 @@ public class OffloadHardwareInterface { mLog.e("tethering offload control not supported: " + e); return false; } + if (mOffloadControl == null) { + mLog.e("tethering IOffloadControl.getService() returned null"); + return false; + } } final String logmsg = String.format("initOffloadControl(%s)", @@ -327,13 +333,24 @@ public class OffloadHardwareInterface { public void updateTimeout(NatTimeoutUpdate params) { handler.post(() -> { controlCb.onNatTimeoutUpdate( - params.proto, + networkProtocolToOsConstant(params.proto), params.src.addr, uint16(params.src.port), params.dst.addr, uint16(params.dst.port)); }); } } + private static int networkProtocolToOsConstant(int proto) { + switch (proto) { + case NetworkProtocol.TCP: return OsConstants.IPPROTO_TCP; + case NetworkProtocol.UDP: return OsConstants.IPPROTO_UDP; + default: + // The caller checks this value and will log an error. Just make + // sure it won't collide with valid OsContants.IPPROTO_* values. + return -Math.abs(proto); + } + } + private static class CbResults { boolean success; String errMsg; diff --git a/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java b/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java index 57d2502c6dc7..17adb1a74e30 100644 --- a/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java +++ b/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java @@ -27,6 +27,7 @@ import android.net.LinkAddress; import android.net.LinkProperties; import android.net.NetworkUtils; import android.net.RouteInfo; +import android.net.ip.InterfaceController; import android.net.ip.RouterAdvertisementDaemon; import android.net.ip.RouterAdvertisementDaemon.RaParams; import android.net.util.NetdService; @@ -107,8 +108,10 @@ public class TetherInterfaceStateMachine extends StateMachine { private final SharedLog mLog; private final INetworkManagementService mNMService; + private final INetd mNetd; private final INetworkStatsService mStatsService; private final IControlsTethering mTetherController; + private final InterfaceController mInterfaceCtrl; private final String mIfaceName; private final int mInterfaceType; @@ -136,8 +139,11 @@ public class TetherInterfaceStateMachine extends StateMachine { super(ifaceName, looper); mLog = log.forSubComponent(ifaceName); mNMService = nMService; + // TODO: This should be passed in for testability. + mNetd = NetdService.getInstance(); mStatsService = statsService; mTetherController = tetherController; + mInterfaceCtrl = new InterfaceController(ifaceName, nMService, mNetd, mLog); mIfaceName = ifaceName; mInterfaceType = interfaceType; mLinkProperties = new LinkProperties(); @@ -179,6 +185,7 @@ public class TetherInterfaceStateMachine extends StateMachine { private void stopIPv4() { configureIPv4(false); } + // TODO: Refactor this in terms of calls to InterfaceController. private boolean configureIPv4(boolean enabled) { if (VDBG) Log.d(TAG, "configureIPv4(" + enabled + ")"); @@ -381,8 +388,8 @@ public class TetherInterfaceStateMachine extends StateMachine { private void configureLocalIPv6Dns( HashSet<Inet6Address> deprecatedDnses, HashSet<Inet6Address> newDnses) { - final INetd netd = NetdService.getInstance(); - if (netd == null) { + // TODO: Is this really necessary? Can we not fail earlier if INetd cannot be located? + if (mNetd == null) { if (newDnses != null) newDnses.clear(); mLog.e("No netd service instance available; not setting local IPv6 addresses"); return; @@ -391,11 +398,8 @@ public class TetherInterfaceStateMachine extends StateMachine { // [1] Remove deprecated local DNS IP addresses. if (!deprecatedDnses.isEmpty()) { for (Inet6Address dns : deprecatedDnses) { - final String dnsString = dns.getHostAddress(); - try { - netd.interfaceDelAddress(mIfaceName, dnsString, RFC7421_PREFIX_LENGTH); - } catch (ServiceSpecificException | RemoteException e) { - mLog.e("Failed to remove local dns IP " + dnsString + ": " + e); + if (!mInterfaceCtrl.removeAddress(dns, RFC7421_PREFIX_LENGTH)) { + mLog.e("Failed to remove local dns IP " + dns); } mLinkProperties.removeLinkAddress(new LinkAddress(dns, RFC7421_PREFIX_LENGTH)); @@ -410,11 +414,8 @@ public class TetherInterfaceStateMachine extends StateMachine { } for (Inet6Address dns : addedDnses) { - final String dnsString = dns.getHostAddress(); - try { - netd.interfaceAddAddress(mIfaceName, dnsString, RFC7421_PREFIX_LENGTH); - } catch (ServiceSpecificException | RemoteException e) { - mLog.e("Failed to add local dns IP " + dnsString + ": " + e); + if (!mInterfaceCtrl.addAddress(dns, RFC7421_PREFIX_LENGTH)) { + mLog.e("Failed to add local dns IP " + dns); newDnses.remove(dns); } @@ -423,7 +424,7 @@ public class TetherInterfaceStateMachine extends StateMachine { } try { - netd.tetherApplyDnsInterfaces(); + mNetd.tetherApplyDnsInterfaces(); } catch (ServiceSpecificException | RemoteException e) { mLog.e("Failed to update local DNS caching server"); if (newDnses != null) newDnses.clear(); diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index 51ed6b2c2937..205e8283cc55 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -99,6 +99,7 @@ import com.android.server.backup.AccountSyncSettingsBackupHelper; import com.android.server.content.SyncStorageEngine.AuthorityInfo; import com.android.server.content.SyncStorageEngine.EndPoint; import com.android.server.content.SyncStorageEngine.OnSyncRequestListener; +import com.android.server.job.JobSchedulerInternal.JobStorePersistStats; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -142,6 +143,7 @@ public class SyncManager { private static final boolean DEBUG_ACCOUNT_ACCESS = false; + // Only do the check on a debuggable build. private static final boolean ENABLE_SUSPICIOUS_CHECK = Build.IS_DEBUGGABLE; /** Delay a sync due to local changes this long. In milliseconds */ @@ -403,12 +405,21 @@ public class SyncManager { return (networkInfo != null) && networkInfo.isConnected(); } + private String getJobStats() { + JobSchedulerInternal js = LocalServices.getService(JobSchedulerInternal.class); + return "JobStats: " + + ((js == null) ? "(JobSchedulerInternal==null)" + : js.getPersistStats().toString()); + } + private BroadcastReceiver mShutdownIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.w(TAG, "Writing sync state before shutdown..."); getSyncStorageEngine().writeAllState(); + + mLogger.log(getJobStats()); mLogger.log("Shutting down."); } }; @@ -504,13 +515,11 @@ public class SyncManager { } } } - final int totalJobs = (mJobSchedulerInternal == null) - ? -1 : mJobSchedulerInternal.countJobs(); final String summary = "Loaded persisted syncs: " + numPersistedPeriodicSyncs + " periodic syncs, " + numPersistedOneshotSyncs + " oneshot syncs, " + (pendingJobs.size()) + " total system server jobs, " - + totalJobs + " total jobs."; + + getJobStats(); Slog.i(TAG, summary); mLogger.log(summary); @@ -529,9 +538,11 @@ public class SyncManager { * @return whether the device most likely has some periodic syncs. */ private boolean likelyHasPeriodicSyncs() { - // STOPSHIP Remove the google specific string. try { - return AccountManager.get(mContext).getAccountsByType("com.google").length > 0; + // Each sync adapter has a daily periodic sync by default, but sync adapters can remove + // them by themselves. So here, we use an arbitrary threshold. If there are more than + // this many sync endpoints, surely one of them should have a periodic sync... + return mSyncStorageEngine.getAuthorityCount() >= 6; } catch (Throwable th) { // Just in case. } @@ -720,7 +731,7 @@ public class SyncManager { // the account (they run before) which is the genie is out of the bottle. whiteListExistingSyncAdaptersIfNeeded(); - mLogger.log("Sync manager initialized."); + mLogger.log("Sync manager initialized: " + Build.FINGERPRINT); } public void onStartUser(int userHandle) { @@ -3767,48 +3778,10 @@ public class SyncManager { } if (op.isPeriodic) { mLogger.log("Removing periodic sync ", op, " for ", why); - - if (ENABLE_SUSPICIOUS_CHECK && isSuspiciousPeriodicSyncRemoval(op)) { - wtfWithLog("Suspicious removal of " + op + " for " + why); - } } getJobScheduler().cancel(op.jobId); } - private boolean isSuspiciousPeriodicSyncRemoval(SyncOperation op) { - // STOPSHIP Remove the google specific string. - if (!op.isPeriodic){ - return false; - } - boolean found = false; - for (UserInfo user : UserManager.get(mContext).getUsers(/*excludeDying=*/ true)) { - if (op.target.userId == user.id) { - found = true; - break; - } - } - if (!found) { - return false; // User is being removed, okay. - } - switch (op.target.provider) { - case "gmail-ls": - case "com.android.contacts.metadata": - break; - default: - return false; - } - final Account account = op.target.account; - final Account[] accounts = AccountManager.get(mContext) - .getAccountsByTypeAsUser(account.type, UserHandle.of(op.target.userId)); - for (Account a : accounts) { - if (a.equals(account)) { - return true; // Account still exists. Suspicious! - } - } - // Account no longer exists. Makes sense... - return false; - } - private void wtfWithLog(String message) { Slog.wtf(TAG, message); mLogger.log("WTF: ", message); diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java index 7b277c06328e..3591871f5386 100644 --- a/services/core/java/com/android/server/content/SyncStorageEngine.java +++ b/services/core/java/com/android/server/content/SyncStorageEngine.java @@ -911,6 +911,12 @@ public class SyncStorageEngine extends Handler { } } + public int getAuthorityCount() { + synchronized (mAuthorities) { + return mAuthorities.size(); + } + } + public AuthorityInfo getAuthority(int authorityId) { synchronized (mAuthorities) { return mAuthorities.get(authorityId); diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 8269042da24a..d0a1d9e63141 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -31,6 +31,8 @@ import android.Manifest; import android.annotation.NonNull; import android.content.Context; import android.content.pm.PackageManager; +import android.content.res.Resources; +import android.graphics.Point; import android.hardware.SensorManager; import android.hardware.display.DisplayManagerGlobal; import android.hardware.display.DisplayManagerInternal; @@ -211,6 +213,12 @@ public final class DisplayManagerService extends SystemService { // The virtual display adapter, or null if not registered. private VirtualDisplayAdapter mVirtualDisplayAdapter; + // The stable device screen height and width. These are not tied to a specific display, even + // the default display, because they need to be stable over the course of the device's entire + // life, even if the default display changes (e.g. a new monitor is plugged into a PC-like + // device). + private Point mStableDisplaySize = new Point(); + // Viewports of the default display and the display that should receive touch // input from an external source. Used by the input system. private final DisplayViewport mDefaultViewport = new DisplayViewport(); @@ -284,7 +292,10 @@ public final class DisplayManagerService extends SystemService { // adapter is up so that we have it's configuration. We could load it lazily, but since // we're going to have to read it in eventually we may as well do it here rather than after // we've waited for the display to register itself with us. - mPersistentDataStore.loadIfNeeded(); + synchronized(mSyncRoot) { + mPersistentDataStore.loadIfNeeded(); + loadStableDisplayValuesLocked(); + } mHandler.sendEmptyMessage(MSG_REGISTER_DEFAULT_DISPLAY_ADAPTERS); publishBinderService(Context.DISPLAY_SERVICE, new BinderService(), @@ -346,6 +357,34 @@ public final class DisplayManagerService extends SystemService { return mHandler; } + private void loadStableDisplayValuesLocked() { + final Point size = mPersistentDataStore.getStableDisplaySize(); + if (size.x > 0 && size.y > 0) { + // Just set these values directly so we don't write the display persistent data again + // unnecessarily + mStableDisplaySize.set(size.x, size.y); + } else { + final Resources res = mContext.getResources(); + final int width = res.getInteger( + com.android.internal.R.integer.config_stableDeviceDisplayWidth); + final int height = res.getInteger( + com.android.internal.R.integer.config_stableDeviceDisplayHeight); + if (width > 0 && height > 0) { + setStableDisplaySizeLocked(width, height); + } + } + } + + private Point getStableDisplaySizeInternal() { + Point r = new Point(); + synchronized (mSyncRoot) { + if (mStableDisplaySize.x > 0 && mStableDisplaySize.y > 0) { + r.set(mStableDisplaySize.x, mStableDisplaySize.y); + } + } + return r; + } + private void registerDisplayTransactionListenerInternal( DisplayTransactionListener listener) { // List is self-synchronized copy-on-write. @@ -770,18 +809,6 @@ public final class DisplayManagerService extends SystemService { if (work != null) { work.run(); } - if (display != null && display.getPrimaryDisplayDeviceLocked() == device) { - int colorMode = mPersistentDataStore.getColorMode(device); - if (colorMode == Display.COLOR_MODE_INVALID) { - if ((device.getDisplayDeviceInfoLocked().flags - & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0) { - colorMode = mDefaultDisplayDefaultColorMode; - } else { - colorMode = Display.COLOR_MODE_DEFAULT; - } - } - display.setRequestedColorModeLocked(colorMode); - } scheduleTraversalLocked(false); } @@ -886,6 +913,11 @@ public final class DisplayManagerService extends SystemService { return null; } + configureColorModeLocked(display, device); + if (isDefault) { + recordStableDisplayStatsIfNeededLocked(display); + } + mLogicalDisplays.put(displayId, display); // Wake up waitForDefaultDisplay. @@ -907,6 +939,40 @@ public final class DisplayManagerService extends SystemService { return displayId; } + private void configureColorModeLocked(LogicalDisplay display, DisplayDevice device) { + if (display.getPrimaryDisplayDeviceLocked() == device) { + int colorMode = mPersistentDataStore.getColorMode(device); + if (colorMode == Display.COLOR_MODE_INVALID) { + if ((device.getDisplayDeviceInfoLocked().flags + & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0) { + colorMode = mDefaultDisplayDefaultColorMode; + } else { + colorMode = Display.COLOR_MODE_DEFAULT; + } + } + display.setRequestedColorModeLocked(colorMode); + } + } + + // If we've never recorded stable device stats for this device before and they aren't + // explicitly configured, go ahead and record the stable device stats now based on the status + // of the default display at first boot. + private void recordStableDisplayStatsIfNeededLocked(LogicalDisplay d) { + if (mStableDisplaySize.x <= 0 && mStableDisplaySize.y <= 0) { + DisplayInfo info = d.getDisplayInfoLocked(); + setStableDisplaySizeLocked(info.getNaturalWidth(), info.getNaturalHeight()); + } + } + + private void setStableDisplaySizeLocked(int width, int height) { + mStableDisplaySize = new Point(width, height); + try { + mPersistentDataStore.setStableDisplaySize(mStableDisplaySize); + } finally { + mPersistentDataStore.saveIfNeeded(); + } + } + // Updates all existing logical displays given the current set of display devices. // Removes invalid logical displays. // Sends notifications if needed. @@ -1166,6 +1232,8 @@ public final class DisplayManagerService extends SystemService { pw.println(" mDefaultDisplayDefaultColorMode=" + mDefaultDisplayDefaultColorMode); pw.println(" mSingleDisplayDemoMode=" + mSingleDisplayDemoMode); pw.println(" mWifiDisplayScanRequestCount=" + mWifiDisplayScanRequestCount); + pw.println(" mStableDisplaySize=" + mStableDisplaySize); + IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); ipw.increaseIndent(); @@ -1378,6 +1446,19 @@ public final class DisplayManagerService extends SystemService { } } + /** + * Returns the stable device display size, in pixels. + */ + @Override // Binder call + public Point getStableDisplaySize() { + final long token = Binder.clearCallingIdentity(); + try { + return getStableDisplaySizeInternal(); + } finally { + Binder.restoreCallingIdentity(token); + } + } + @Override // Binder call public void registerCallback(IDisplayManagerCallback callback) { if (callback == null) { diff --git a/services/core/java/com/android/server/display/NightDisplayService.java b/services/core/java/com/android/server/display/NightDisplayService.java index b3cf57b3564a..9cf136720881 100644 --- a/services/core/java/com/android/server/display/NightDisplayService.java +++ b/services/core/java/com/android/server/display/NightDisplayService.java @@ -48,8 +48,10 @@ import com.android.server.twilight.TwilightListener; import com.android.server.twilight.TwilightManager; import com.android.server.twilight.TwilightState; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.Calendar; import java.util.TimeZone; import static com.android.server.display.DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY; @@ -110,23 +112,7 @@ public final class NightDisplayService extends SystemService private float[] mMatrixNight = new float[16]; - /** - * These coefficients were generated by an LLS quadratic regression fitted to the - * overdetermined system based on experimental readings (and subsequent conversion from xy - * chromaticity coordinates to gamma-corrected RGB values): { (temperature, R, G, B) } -> - * { (7304, 1.0, 1.0, 1.0), (4082, 1.0, 0.857, 0.719), (2850, 1.0, .754, .516), - * (2596, 1.0, 0.722, 0.454) }. The 3x3 matrix is formatted like so: - * <table> - * <tr><td>R: a coefficient</td><td>G: a coefficient</td><td>B: a coefficient</td></tr> - * <tr><td>R: b coefficient</td><td>G: b coefficient</td><td>B: b coefficient</td></tr> - * <tr><td>R: y-intercept</td><td>G: y-intercept</td><td>B: y-intercept</td></tr> - * </table> - */ - private static final float[] mColorTempCoefficients = new float[] { - 0.0f, -0.00000000962353339f, -0.0000000189359041f, - 0.0f, 0.000153045476f, 0.000302412211f, - 1.0f, 0.390782778f, -0.198650895f - }; + private final float[] mColorTempCoefficients = new float[9]; private int mCurrentUser = UserHandle.USER_NULL; private ContentObserver mUserSetupObserver; @@ -140,6 +126,12 @@ public final class NightDisplayService extends SystemService public NightDisplayService(Context context) { super(context); mHandler = new Handler(Looper.getMainLooper()); + + final String[] coefficients = context.getResources().getStringArray( + com.android.internal.R.array.config_nightDisplayColorTemperatureCoefficients); + for (int i = 0; i < 9 && i < coefficients.length; i++) { + mColorTempCoefficients[i] = Float.parseFloat(coefficients[i]); + } } @Override @@ -316,7 +308,7 @@ public final class NightDisplayService extends SystemService } @Override - public void onCustomStartTimeChanged(NightDisplayController.LocalTime startTime) { + public void onCustomStartTimeChanged(LocalTime startTime) { Slog.d(TAG, "onCustomStartTimeChanged: startTime=" + startTime); if (mAutoMode != null) { @@ -325,7 +317,7 @@ public final class NightDisplayService extends SystemService } @Override - public void onCustomEndTimeChanged(NightDisplayController.LocalTime endTime) { + public void onCustomEndTimeChanged(LocalTime endTime) { Slog.d(TAG, "onCustomEndTimeChanged: endTime=" + endTime); if (mAutoMode != null) { @@ -414,16 +406,46 @@ public final class NightDisplayService extends SystemService final float squareTemperature = colorTemperature * colorTemperature; final float red = squareTemperature * mColorTempCoefficients[0] - + colorTemperature * mColorTempCoefficients[3] + mColorTempCoefficients[6]; - final float green = squareTemperature * mColorTempCoefficients[1] - + colorTemperature * mColorTempCoefficients[4] + mColorTempCoefficients[7]; - final float blue = squareTemperature * mColorTempCoefficients[2] - + colorTemperature * mColorTempCoefficients[5] + mColorTempCoefficients[8]; + + colorTemperature * mColorTempCoefficients[1] + mColorTempCoefficients[2]; + final float green = squareTemperature * mColorTempCoefficients[3] + + colorTemperature * mColorTempCoefficients[4] + mColorTempCoefficients[5]; + final float blue = squareTemperature * mColorTempCoefficients[6] + + colorTemperature * mColorTempCoefficients[7] + mColorTempCoefficients[8]; outTemp[0] = red; outTemp[5] = green; outTemp[10] = blue; } + /** + * Returns the first date time corresponding to the local time that occurs before the + * provided date time. + * + * @param compareTime the LocalDateTime to compare against + * @return the prior LocalDateTime corresponding to this local time + */ + public static LocalDateTime getDateTimeBefore(LocalTime localTime, LocalDateTime compareTime) { + final LocalDateTime ldt = LocalDateTime.of(compareTime.getYear(), compareTime.getMonth(), + compareTime.getDayOfMonth(), localTime.getHour(), localTime.getMinute()); + + // Check if the local time has passed, if so return the same time yesterday. + return ldt.isAfter(compareTime) ? ldt.minusDays(1) : ldt; + } + + /** + * Returns the first date time corresponding to this local time that occurs after the + * provided date time. + * + * @param compareTime the LocalDateTime to compare against + * @return the next LocalDateTime corresponding to this local time + */ + public static LocalDateTime getDateTimeAfter(LocalTime localTime, LocalDateTime compareTime) { + final LocalDateTime ldt = LocalDateTime.of(compareTime.getYear(), compareTime.getMonth(), + compareTime.getDayOfMonth(), localTime.getHour(), localTime.getMinute()); + + // Check if the local time has passed, if so return the same time tomorrow. + return ldt.isBefore(compareTime) ? ldt.plusDays(1) : ldt; + } + private abstract class AutoMode implements NightDisplayController.Callback { public abstract void onStart(); @@ -435,10 +457,10 @@ public final class NightDisplayService extends SystemService private final AlarmManager mAlarmManager; private final BroadcastReceiver mTimeChangedReceiver; - private NightDisplayController.LocalTime mStartTime; - private NightDisplayController.LocalTime mEndTime; + private LocalTime mStartTime; + private LocalTime mEndTime; - private Calendar mLastActivatedTime; + private LocalDateTime mLastActivatedTime; CustomAutoMode() { mAlarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); @@ -451,31 +473,15 @@ public final class NightDisplayService extends SystemService } private void updateActivated() { - final Calendar now = Calendar.getInstance(); - final Calendar startTime = mStartTime.getDateTimeBefore(now); - final Calendar endTime = mEndTime.getDateTimeAfter(startTime); + final LocalDateTime now = LocalDateTime.now(); + final LocalDateTime start = getDateTimeBefore(mStartTime, now); + final LocalDateTime end = getDateTimeAfter(mEndTime, start); + boolean activate = now.isBefore(end); - boolean activate = now.before(endTime); if (mLastActivatedTime != null) { - // Convert mLastActivatedTime to the current timezone if needed. - final TimeZone currentTimeZone = now.getTimeZone(); - if (!currentTimeZone.equals(mLastActivatedTime.getTimeZone())) { - final int year = mLastActivatedTime.get(Calendar.YEAR); - final int dayOfYear = mLastActivatedTime.get(Calendar.DAY_OF_YEAR); - final int hourOfDay = mLastActivatedTime.get(Calendar.HOUR_OF_DAY); - final int minute = mLastActivatedTime.get(Calendar.MINUTE); - - mLastActivatedTime.setTimeZone(currentTimeZone); - mLastActivatedTime.set(Calendar.YEAR, year); - mLastActivatedTime.set(Calendar.DAY_OF_YEAR, dayOfYear); - mLastActivatedTime.set(Calendar.HOUR_OF_DAY, hourOfDay); - mLastActivatedTime.set(Calendar.MINUTE, minute); - } - // Maintain the existing activated state if within the current period. - if (mLastActivatedTime.before(now) - && mLastActivatedTime.after(startTime) - && (mLastActivatedTime.after(endTime) || now.before(endTime))) { + if (mLastActivatedTime.isBefore(now) && mLastActivatedTime.isAfter(start) + && (mLastActivatedTime.isAfter(end) || now.isBefore(end))) { activate = mController.isActivated(); } } @@ -483,14 +489,16 @@ public final class NightDisplayService extends SystemService if (mIsActivated == null || mIsActivated != activate) { mController.setActivated(activate); } + updateNextAlarm(mIsActivated, now); } - private void updateNextAlarm(@Nullable Boolean activated, @NonNull Calendar now) { + private void updateNextAlarm(@Nullable Boolean activated, @NonNull LocalDateTime now) { if (activated != null) { - final Calendar next = activated ? mEndTime.getDateTimeAfter(now) - : mStartTime.getDateTimeAfter(now); - mAlarmManager.setExact(AlarmManager.RTC, next.getTimeInMillis(), TAG, this, null); + final LocalDateTime next = activated ? getDateTimeAfter(mEndTime, now) + : getDateTimeAfter(mStartTime, now); + final long millis = next.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + mAlarmManager.setExact(AlarmManager.RTC, millis, TAG, this, null); } } @@ -520,18 +528,18 @@ public final class NightDisplayService extends SystemService @Override public void onActivated(boolean activated) { mLastActivatedTime = mController.getLastActivatedTime(); - updateNextAlarm(activated, Calendar.getInstance()); + updateNextAlarm(activated, LocalDateTime.now()); } @Override - public void onCustomStartTimeChanged(NightDisplayController.LocalTime startTime) { + public void onCustomStartTimeChanged(LocalTime startTime) { mStartTime = startTime; mLastActivatedTime = null; updateActivated(); } @Override - public void onCustomEndTimeChanged(NightDisplayController.LocalTime endTime) { + public void onCustomEndTimeChanged(LocalTime endTime) { mEndTime = endTime; mLastActivatedTime = null; updateActivated(); @@ -560,15 +568,14 @@ public final class NightDisplayService extends SystemService } boolean activate = state.isNight(); - final Calendar lastActivatedTime = mController.getLastActivatedTime(); + final LocalDateTime lastActivatedTime = mController.getLastActivatedTime(); if (lastActivatedTime != null) { - final Calendar now = Calendar.getInstance(); - final Calendar sunrise = state.sunrise(); - final Calendar sunset = state.sunset(); - + final LocalDateTime now = LocalDateTime.now(); + final LocalDateTime sunrise = state.sunrise(); + final LocalDateTime sunset = state.sunset(); // Maintain the existing activated state if within the current period. - if (lastActivatedTime.before(now) - && (lastActivatedTime.after(sunrise) ^ lastActivatedTime.after(sunset))) { + if (lastActivatedTime.isBefore(now) && (lastActivatedTime.isBefore(sunrise) + ^ lastActivatedTime.isBefore(sunset))) { activate = mController.isActivated(); } } diff --git a/services/core/java/com/android/server/display/PersistentDataStore.java b/services/core/java/com/android/server/display/PersistentDataStore.java index 47701b99860a..34c8e22a9f1e 100644 --- a/services/core/java/com/android/server/display/PersistentDataStore.java +++ b/services/core/java/com/android/server/display/PersistentDataStore.java @@ -23,6 +23,7 @@ import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; +import android.graphics.Point; import android.hardware.display.WifiDisplay; import android.util.AtomicFile; import android.util.Slog; @@ -60,6 +61,10 @@ import libcore.util.Objects; * <color-mode>0</color-mode> * </display> * </display-states> + * <stable-device-values> + * <stable-display-height>1920<stable-display-height> + * <stable-display-width>1080<stable-display-width> + * </stable-device-values> * </display-manager-state> * </code> * @@ -75,6 +80,9 @@ final class PersistentDataStore { private final HashMap<String, DisplayState> mDisplayStates = new HashMap<String, DisplayState>(); + // Display values which should be stable across the device's lifetime. + private final StableDeviceValues mStableDeviceValues = new StableDeviceValues(); + // The atomic file used to safely read or write the file. private final AtomicFile mAtomicFile; @@ -162,6 +170,7 @@ final class PersistentDataStore { } public boolean forgetWifiDisplay(String deviceAddress) { + loadIfNeeded(); int index = findRememberedWifiDisplay(deviceAddress); if (index >= 0) { mRememberedWifiDisplays.remove(index); @@ -204,6 +213,18 @@ final class PersistentDataStore { return false; } + public Point getStableDisplaySize() { + loadIfNeeded(); + return mStableDeviceValues.getDisplaySize(); + } + + public void setStableDisplaySize(Point size) { + loadIfNeeded(); + if (mStableDeviceValues.setDisplaySize(size)) { + setDirty(); + } + } + private DisplayState getDisplayState(String uniqueId, boolean createIfAbsent) { loadIfNeeded(); DisplayState state = mDisplayStates.get(uniqueId); @@ -290,6 +311,9 @@ final class PersistentDataStore { if (parser.getName().equals("display-states")) { loadDisplaysFromXml(parser); } + if (parser.getName().equals("stable-device-values")) { + mStableDeviceValues.loadFromXml(parser); + } } } @@ -363,6 +387,9 @@ final class PersistentDataStore { serializer.endTag(null, "display"); } serializer.endTag(null, "display-states"); + serializer.startTag(null, "stable-device-values"); + mStableDeviceValues.saveToXml(serializer); + serializer.endTag(null, "stable-device-values"); serializer.endTag(null, "display-manager-state"); serializer.endDocument(); } @@ -382,6 +409,8 @@ final class PersistentDataStore { pw.println(" " + i++ + ": " + entry.getKey()); entry.getValue().dump(pw, " "); } + pw.println(" StableDeviceValues:"); + mStableDeviceValues.dump(pw, " "); } private static final class DisplayState { @@ -417,8 +446,66 @@ final class PersistentDataStore { serializer.endTag(null, "color-mode"); } - private void dump(final PrintWriter pw, final String prefix) { + public void dump(final PrintWriter pw, final String prefix) { pw.println(prefix + "ColorMode=" + mColorMode); } } + + private static final class StableDeviceValues { + private int mWidth; + private int mHeight; + + private Point getDisplaySize() { + return new Point(mWidth, mHeight); + } + + public boolean setDisplaySize(Point r) { + if (mWidth != r.x || mHeight != r.y) { + mWidth = r.x; + mHeight = r.y; + return true; + } + return false; + } + + public void loadFromXml(XmlPullParser parser) throws IOException, XmlPullParserException { + final int outerDepth = parser.getDepth(); + while (XmlUtils.nextElementWithin(parser, outerDepth)) { + switch (parser.getName()) { + case "stable-display-width": + mWidth = loadIntValue(parser); + break; + case "stable-display-height": + mHeight = loadIntValue(parser); + break; + } + } + } + + private static int loadIntValue(XmlPullParser parser) + throws IOException, XmlPullParserException { + try { + String value = parser.nextText(); + return Integer.parseInt(value); + } catch (NumberFormatException nfe) { + return 0; + } + } + + public void saveToXml(XmlSerializer serializer) throws IOException { + if (mWidth > 0 && mHeight > 0) { + serializer.startTag(null, "stable-display-width"); + serializer.text(Integer.toString(mWidth)); + serializer.endTag(null, "stable-display-width"); + serializer.startTag(null, "stable-display-height"); + serializer.text(Integer.toString(mHeight)); + serializer.endTag(null, "stable-display-height"); + } + } + + public void dump(final PrintWriter pw, final String prefix) { + pw.println(prefix + "StableDisplayWidth=" + mWidth); + pw.println(prefix + "StableDisplayHeight=" + mHeight); + } + } } diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java index b1c165ef048d..0e1252eea88e 100644 --- a/services/core/java/com/android/server/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java @@ -1338,6 +1338,8 @@ public class FingerprintService extends SystemService implements IHwBinder.Death set.put("rejectCrypto", (cryptoStats != null) ? cryptoStats.reject : 0); set.put("acquireCrypto", (cryptoStats != null) ? cryptoStats.acquire : 0); set.put("lockoutCrypto", (cryptoStats != null) ? cryptoStats.lockout : 0); + set.put("permanentLockoutCrypto", + (cryptoStats != null) ? cryptoStats.permanentLockout : 0); sets.put(set); } @@ -1367,7 +1369,7 @@ public class FingerprintService extends SystemService implements IHwBinder.Death proto.write(FingerprintActionStatsProto.REJECT, normal.reject); proto.write(FingerprintActionStatsProto.ACQUIRE, normal.acquire); proto.write(FingerprintActionStatsProto.LOCKOUT, normal.lockout); - proto.write(FingerprintActionStatsProto.LOCKOUT_PERMANENT, normal.lockout); + proto.write(FingerprintActionStatsProto.LOCKOUT_PERMANENT, normal.permanentLockout); proto.end(countsToken); } @@ -1380,7 +1382,7 @@ public class FingerprintService extends SystemService implements IHwBinder.Death proto.write(FingerprintActionStatsProto.REJECT, crypto.reject); proto.write(FingerprintActionStatsProto.ACQUIRE, crypto.acquire); proto.write(FingerprintActionStatsProto.LOCKOUT, crypto.lockout); - proto.write(FingerprintActionStatsProto.LOCKOUT_PERMANENT, crypto.lockout); + proto.write(FingerprintActionStatsProto.LOCKOUT_PERMANENT, crypto.permanentLockout); proto.end(countsToken); } diff --git a/services/core/java/com/android/server/job/JobSchedulerInternal.java b/services/core/java/com/android/server/job/JobSchedulerInternal.java index d52b3b760c11..095526dc52fc 100644 --- a/services/core/java/com/android/server/job/JobSchedulerInternal.java +++ b/services/core/java/com/android/server/job/JobSchedulerInternal.java @@ -38,8 +38,44 @@ public interface JobSchedulerInternal { void removeBackingUpUid(int uid); void clearAllBackingUpUids(); + JobStorePersistStats getPersistStats(); + /** - * @return the total number of jobs across all UIDs. + * Stats about the first load after boot and the most recent save. + * STOPSHIP Remove it and the relevant code once b/64536115 is fixed. */ - int countJobs(); + public class JobStorePersistStats { + public int countAllJobsLoaded = -1; + public int countSystemServerJobsLoaded = -1; + public int countSystemSyncManagerJobsLoaded = -1; + + public int countAllJobsSaved = -1; + public int countSystemServerJobsSaved = -1; + public int countSystemSyncManagerJobsSaved = -1; + + public JobStorePersistStats() { + } + + public JobStorePersistStats(JobStorePersistStats source) { + countAllJobsLoaded = source.countAllJobsLoaded; + countSystemServerJobsLoaded = source.countSystemServerJobsLoaded; + countSystemSyncManagerJobsLoaded = source.countSystemSyncManagerJobsLoaded; + + countAllJobsSaved = source.countAllJobsSaved; + countSystemServerJobsSaved = source.countSystemServerJobsSaved; + countSystemSyncManagerJobsSaved = source.countSystemSyncManagerJobsSaved; + } + + @Override + public String toString() { + return "FirstLoad: " + + countAllJobsLoaded + "/" + + countSystemServerJobsLoaded + "/" + + countSystemSyncManagerJobsLoaded + + " LastSave: " + + countAllJobsSaved + "/" + + countSystemServerJobsSaved + "/" + + countSystemSyncManagerJobsSaved; + } + } } diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index 260f05f809cf..ac8079417426 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -228,7 +228,6 @@ public final class JobSchedulerService extends com.android.server.SystemService private static final String KEY_MAX_WORK_RESCHEDULE_COUNT = "max_work_reschedule_count"; private static final String KEY_MIN_LINEAR_BACKOFF_TIME = "min_linear_backoff_time"; private static final String KEY_MIN_EXP_BACKOFF_TIME = "min_exp_backoff_time"; - private static final String KEY_BG_JOBS_RESTRICTED = "bg_jobs_restricted"; private static final int DEFAULT_MIN_IDLE_COUNT = 1; private static final int DEFAULT_MIN_CHARGING_COUNT = 1; @@ -244,7 +243,6 @@ public final class JobSchedulerService extends com.android.server.SystemService private static final int DEFAULT_BG_MODERATE_JOB_COUNT = 4; private static final int DEFAULT_BG_LOW_JOB_COUNT = 1; private static final int DEFAULT_BG_CRITICAL_JOB_COUNT = 1; - private static final boolean DEFAULT_BG_JOBS_RESTRICTED = false; private static final int DEFAULT_MAX_STANDARD_RESCHEDULE_COUNT = Integer.MAX_VALUE; private static final int DEFAULT_MAX_WORK_RESCHEDULE_COUNT = Integer.MAX_VALUE; private static final long DEFAULT_MIN_LINEAR_BACKOFF_TIME = JobInfo.MIN_BACKOFF_MILLIS; @@ -338,11 +336,6 @@ public final class JobSchedulerService extends com.android.server.SystemService */ long MIN_EXP_BACKOFF_TIME = DEFAULT_MIN_EXP_BACKOFF_TIME; - /** - * Runtime switch for throttling background jobs - */ - boolean BACKGROUND_JOBS_RESTRICTED = DEFAULT_BG_JOBS_RESTRICTED; - private ContentResolver mResolver; private final KeyValueListParser mParser = new KeyValueListParser(','); @@ -421,12 +414,6 @@ public final class JobSchedulerService extends com.android.server.SystemService DEFAULT_MIN_LINEAR_BACKOFF_TIME); MIN_EXP_BACKOFF_TIME = mParser.getLong(KEY_MIN_EXP_BACKOFF_TIME, DEFAULT_MIN_EXP_BACKOFF_TIME); - final boolean bgJobsRestricted = mParser.getBoolean(KEY_BG_JOBS_RESTRICTED, - DEFAULT_BG_JOBS_RESTRICTED); - if (bgJobsRestricted != BACKGROUND_JOBS_RESTRICTED) { - mBackgroundJobsController.enableRestrictionsLocked( - BACKGROUND_JOBS_RESTRICTED = bgJobsRestricted); - } } } @@ -486,9 +473,6 @@ public final class JobSchedulerService extends com.android.server.SystemService pw.print(" "); pw.print(KEY_MIN_EXP_BACKOFF_TIME); pw.print("="); pw.print(MIN_EXP_BACKOFF_TIME); pw.println(); - - pw.print(" "); pw.print(KEY_BG_JOBS_RESTRICTED); pw.print("="); - pw.print(BACKGROUND_JOBS_RESTRICTED); pw.println(); } } @@ -520,11 +504,12 @@ public final class JobSchedulerService extends com.android.server.SystemService if (DEBUG) { Slog.d(TAG, "Receieved: " + action); } + final String pkgName = getPackageName(intent); + final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1); + if (Intent.ACTION_PACKAGE_CHANGED.equals(action)) { // Purge the app's jobs if the whole package was just disabled. When this is // the case the component name will be a bare package name. - final String pkgName = getPackageName(intent); - final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1); if (pkgName != null && pkgUid != -1) { final String[] changedComponents = intent.getStringArrayExtra( Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST); @@ -544,7 +529,8 @@ public final class JobSchedulerService extends com.android.server.SystemService Slog.d(TAG, "Removing jobs for package " + pkgName + " in user " + userId); } - cancelJobsForUid(pkgUid, "app package state changed"); + cancelJobsForPackageAndUid(pkgName, pkgUid, + "app disabled"); } } catch (RemoteException|IllegalArgumentException e) { /* @@ -573,7 +559,7 @@ public final class JobSchedulerService extends com.android.server.SystemService if (DEBUG) { Slog.d(TAG, "Removing jobs for uid: " + uidRemoved); } - cancelJobsForUid(uidRemoved, "app uninstalled"); + cancelJobsForPackageAndUid(pkgName, uidRemoved, "app uninstalled"); } } else if (Intent.ACTION_USER_REMOVED.equals(action)) { final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0); @@ -584,8 +570,6 @@ public final class JobSchedulerService extends com.android.server.SystemService } else if (Intent.ACTION_QUERY_PACKAGE_RESTART.equals(action)) { // Has this package scheduled any jobs, such that we will take action // if it were to be force-stopped? - final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1); - final String pkgName = intent.getData().getSchemeSpecificPart(); if (pkgUid != -1) { List<JobStatus> jobsForUid; synchronized (mLock) { @@ -604,13 +588,11 @@ public final class JobSchedulerService extends com.android.server.SystemService } } else if (Intent.ACTION_PACKAGE_RESTARTED.equals(action)) { // possible force-stop - final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1); - final String pkgName = intent.getData().getSchemeSpecificPart(); if (pkgUid != -1) { if (DEBUG) { Slog.d(TAG, "Removing jobs for pkg " + pkgName + " at uid " + pkgUid); } - cancelJobsForPackageAndUid(pkgName, pkgUid); + cancelJobsForPackageAndUid(pkgName, pkgUid, "app force stopped"); } } } @@ -790,13 +772,17 @@ public final class JobSchedulerService extends com.android.server.SystemService } } - void cancelJobsForPackageAndUid(String pkgName, int uid) { + void cancelJobsForPackageAndUid(String pkgName, int uid, String reason) { + if ("android".equals(pkgName)) { + Slog.wtfStack(TAG, "Can't cancel all jobs for system package"); + return; + } synchronized (mLock) { final List<JobStatus> jobsForUid = mJobs.getJobsByUid(uid); for (int i = jobsForUid.size() - 1; i >= 0; i--) { final JobStatus job = jobsForUid.get(i); if (job.getSourcePackageName().equals(pkgName)) { - cancelJobImplLocked(job, null, "app force stopped"); + cancelJobImplLocked(job, null, reason); } } } @@ -810,6 +796,10 @@ public final class JobSchedulerService extends com.android.server.SystemService * */ public void cancelJobsForUid(int uid, String reason) { + if (uid == Process.SYSTEM_UID) { + Slog.wtfStack(TAG, "Can't cancel all jobs for system uid"); + return; + } synchronized (mLock) { final List<JobStatus> jobsForUid = mJobs.getJobsByUid(uid); for (int i=0; i<jobsForUid.size(); i++) { @@ -1867,9 +1857,9 @@ public final class JobSchedulerService extends com.android.server.SystemService } @Override - public int countJobs() { + public JobStorePersistStats getPersistStats() { synchronized (mLock) { - return mJobs.size(); + return new JobStorePersistStats(mJobs.getPersistStats()); } } } @@ -2052,13 +2042,6 @@ public final class JobSchedulerService extends com.android.server.SystemService @Override public void cancelAll() throws RemoteException { final int uid = Binder.getCallingUid(); - switch (uid) { - case Process.SYSTEM_UID: - // This really shouldn't happen. - Slog.wtf(TAG, "JobScheduler.cancelAll() called for uid=" + uid); - return; - } - long ident = Binder.clearCallingIdentity(); try { JobSchedulerService.this.cancelJobsForUid(uid, "cancelAll() called by app"); @@ -2500,6 +2483,9 @@ public final class JobSchedulerService extends com.android.server.SystemService pw.print("mReportedActive="); pw.println(mReportedActive); pw.print("mMaxActiveJobs="); pw.println(mMaxActiveJobs); } + pw.println(); + pw.print("PersistStats: "); + pw.println(mJobs.getPersistStats()); } pw.println(); } diff --git a/services/core/java/com/android/server/job/JobServiceContext.java b/services/core/java/com/android/server/job/JobServiceContext.java index 031bdd0ee39c..d3fd3a992a31 100644 --- a/services/core/java/com/android/server/job/JobServiceContext.java +++ b/services/core/java/com/android/server/job/JobServiceContext.java @@ -261,6 +261,13 @@ public final class JobServiceContext implements ServiceConnection { return mRunningJob; } + /** + * Used only for debugging. Will return <code>"<null>"</code> if there is no job running. + */ + private String getRunningJobNameLocked() { + return mRunningJob != null ? mRunningJob.toShortString() : "<null>"; + } + /** Called externally when a job that was scheduled for execution should be cancelled. */ void cancelExecutingJobLocked(int reason, String debugReason) { doCancelLocked(reason, debugReason); @@ -522,7 +529,7 @@ public final class JobServiceContext implements ServiceConnection { /** Start the job on the service. */ private void handleServiceBoundLocked() { if (DEBUG) { - Slog.d(TAG, "handleServiceBound for " + mRunningJob.toShortString()); + Slog.d(TAG, "handleServiceBound for " + getRunningJobNameLocked()); } if (mVerb != VERB_BINDING) { Slog.e(TAG, "Sending onStartJob for a job that isn't pending. " @@ -639,36 +646,34 @@ public final class JobServiceContext implements ServiceConnection { private void handleOpTimeoutLocked() { switch (mVerb) { case VERB_BINDING: - Slog.w(TAG, "Time-out while trying to bind " + mRunningJob.toShortString() + - ", dropping."); + Slog.w(TAG, "Time-out while trying to bind " + getRunningJobNameLocked() + + ", dropping."); closeAndCleanupJobLocked(false /* needsReschedule */, "timed out while binding"); break; case VERB_STARTING: // Client unresponsive - wedged or failed to respond in time. We don't really // know what happened so let's log it and notify the JobScheduler // FINISHED/NO-RETRY. - Slog.w(TAG, "No response from client for onStartJob " + - mRunningJob != null ? mRunningJob.toShortString() : "<null>"); + Slog.w(TAG, "No response from client for onStartJob " + + getRunningJobNameLocked()); closeAndCleanupJobLocked(false /* needsReschedule */, "timed out while starting"); break; case VERB_STOPPING: // At least we got somewhere, so fail but ask the JobScheduler to reschedule. - Slog.w(TAG, "No response from client for onStopJob " + - mRunningJob != null ? mRunningJob.toShortString() : "<null>"); + Slog.w(TAG, "No response from client for onStopJob " + + getRunningJobNameLocked()); closeAndCleanupJobLocked(true /* needsReschedule */, "timed out while stopping"); break; case VERB_EXECUTING: // Not an error - client ran out of time. Slog.i(TAG, "Client timed out while executing (no jobFinished received), " + - "sending onStop: " + - mRunningJob != null ? mRunningJob.toShortString() : "<null>"); + "sending onStop: " + getRunningJobNameLocked()); mParams.setStopReason(JobParameters.REASON_TIMEOUT); sendStopMessageLocked("timeout while executing"); break; default: - Slog.e(TAG, "Handling timeout for an invalid job state: " + - mRunningJob != null ? mRunningJob.toShortString() : "<null>" - + ", dropping."); + Slog.e(TAG, "Handling timeout for an invalid job state: " + + getRunningJobNameLocked() + ", dropping."); closeAndCleanupJobLocked(false /* needsReschedule */, "invalid timeout"); } } diff --git a/services/core/java/com/android/server/job/JobStore.java b/services/core/java/com/android/server/job/JobStore.java index 5317616ad13a..aa9f77c839e5 100644 --- a/services/core/java/com/android/server/job/JobStore.java +++ b/services/core/java/com/android/server/job/JobStore.java @@ -24,6 +24,7 @@ import android.content.Context; import android.os.Environment; import android.os.Handler; import android.os.PersistableBundle; +import android.os.Process; import android.os.SystemClock; import android.os.UserHandle; import android.text.format.DateUtils; @@ -38,6 +39,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FastXmlSerializer; import com.android.server.IoThread; +import com.android.server.job.JobSchedulerInternal.JobStorePersistStats; import com.android.server.job.controllers.JobStatus; import java.io.ByteArrayOutputStream; @@ -89,6 +91,8 @@ public final class JobStore { private final Handler mIoHandler = IoThread.getHandler(); private static JobStore sSingleton; + private JobStorePersistStats mPersistInfo = new JobStorePersistStats(); + /** Used by the {@link JobSchedulerService} to instantiate the JobStore. */ static JobStore initAndGet(JobSchedulerService jobManagerService) { synchronized (sSingletonLock) { @@ -199,6 +203,10 @@ public final class JobStore { return mJobSet.size(); } + public JobStorePersistStats getPersistStats() { + return mPersistInfo; + } + public int countJobsForUid(int uid) { return mJobSet.countJobsForUid(uid); } @@ -336,6 +344,9 @@ public final class JobStore { } private void writeJobsMapImpl(List<JobStatus> jobList) { + int numJobs = 0; + int numSystemJobs = 0; + int numSyncJobs = 0; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); XmlSerializer out = new FastXmlSerializer(); @@ -356,6 +367,14 @@ public final class JobStore { writeExecutionCriteriaToXml(out, jobStatus); writeBundleToXml(jobStatus.getJob().getExtras(), out); out.endTag(null, "job"); + + numJobs++; + if (jobStatus.getUid() == Process.SYSTEM_UID) { + numSystemJobs++; + if (isSyncJob(jobStatus)) { + numSyncJobs++; + } + } } out.endTag(null, "job-info"); out.endDocument(); @@ -373,6 +392,10 @@ public final class JobStore { if (DEBUG) { Slog.d(TAG, "Error persisting bundle.", e); } + } finally { + mPersistInfo.countAllJobsSaved = numJobs; + mPersistInfo.countSystemServerJobsSaved = numSystemJobs; + mPersistInfo.countSystemSyncManagerJobsSaved = numSyncJobs; } } @@ -525,6 +548,11 @@ public final class JobStore { return Pair.create(earliest, latest); } + private static boolean isSyncJob(JobStatus status) { + return com.android.server.content.SyncJobService.class.getName() + .equals(status.getServiceComponent().getClassName()); + } + /** * Runnable that reads list of persisted job from xml. This is run once at start up, so doesn't * need to go through {@link JobStore#add(com.android.server.job.controllers.JobStatus)}. @@ -545,6 +573,8 @@ public final class JobStore { @Override public void run() { int numJobs = 0; + int numSystemJobs = 0; + int numSyncJobs = 0; try { List<JobStatus> jobs; FileInputStream fis = mJobsFile.openRead(); @@ -558,7 +588,14 @@ public final class JobStore { js.prepareLocked(am); js.enqueueTime = now; this.jobSet.add(js); + numJobs++; + if (js.getUid() == Process.SYSTEM_UID) { + numSystemJobs++; + if (isSyncJob(js)) { + numSyncJobs++; + } + } } } } @@ -569,6 +606,12 @@ public final class JobStore { } } catch (XmlPullParserException | IOException e) { Slog.wtf(TAG, "Error jobstore xml.", e); + } finally { + if (mPersistInfo.countAllJobsLoaded < 0) { // Only set them once. + mPersistInfo.countAllJobsLoaded = numJobs; + mPersistInfo.countSystemServerJobsLoaded = numSystemJobs; + mPersistInfo.countSystemSyncManagerJobsLoaded = numSyncJobs; + } } Slog.i(TAG, "Read " + numJobs + " jobs"); } diff --git a/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java b/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java index ec50d6dba841..0539c022809c 100644 --- a/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java +++ b/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java @@ -48,14 +48,12 @@ public final class BackgroundJobsController extends StateController { private static final Object sCreationLock = new Object(); private static volatile BackgroundJobsController sController; - /* Runtime switch to keep feature under wraps */ - private boolean mEnableSwitch; private final JobSchedulerService mJobSchedulerService; private final IAppOpsService mAppOpsService; private final IDeviceIdleController mDeviceIdleController; private final SparseBooleanArray mForegroundUids; - private int[] mPowerWhitelistedAppIds; + private int[] mPowerWhitelistedUserAppIds; private int[] mTempWhitelistedAppIds; /** * Only tracks jobs for which source package app op RUN_ANY_IN_BACKGROUND is not ALLOWED. @@ -81,7 +79,8 @@ public final class BackgroundJobsController extends StateController { try { switch (intent.getAction()) { case PowerManager.ACTION_POWER_SAVE_WHITELIST_CHANGED: - mPowerWhitelistedAppIds = mDeviceIdleController.getAppIdWhitelist(); + mPowerWhitelistedUserAppIds = + mDeviceIdleController.getAppIdUserWhitelist(); break; case PowerManager.ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED: mTempWhitelistedAppIds = mDeviceIdleController.getAppIdTempWhitelist(); @@ -110,7 +109,7 @@ public final class BackgroundJobsController extends StateController { try { mAppOpsService.startWatchingMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, null, new AppOpsWatcher()); - mPowerWhitelistedAppIds = mDeviceIdleController.getAppIdWhitelist(); + mPowerWhitelistedUserAppIds = mDeviceIdleController.getAppIdUserWhitelist(); mTempWhitelistedAppIds = mDeviceIdleController.getAppIdTempWhitelist(); } catch (RemoteException rexc) { // Shouldn't happen as they are in the same process. @@ -121,8 +120,6 @@ public final class BackgroundJobsController extends StateController { powerWhitelistFilter.addAction(PowerManager.ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED); context.registerReceiverAsUser(mDozeWhitelistReceiver, UserHandle.ALL, powerWhitelistFilter, null, null); - - mEnableSwitch = false; } @Override @@ -170,7 +167,6 @@ public final class BackgroundJobsController extends StateController { @Override public void dumpControllerStateLocked(final PrintWriter pw, final int filterUid) { - pw.println("Background restrictions: global switch = " + mEnableSwitch); pw.print("Foreground uids: ["); for (int i = 0; i < mForegroundUids.size(); i++) { if (mForegroundUids.valueAt(i)) pw.print(mForegroundUids.keyAt(i) + " "); @@ -206,14 +202,6 @@ public final class BackgroundJobsController extends StateController { }); } - public void enableRestrictionsLocked(boolean enable) { - mEnableSwitch = enable; - Slog.d(LOG_TAG, "Background jobs restrictions switch changed to " + mEnableSwitch); - if (checkAllTrackedJobsLocked()) { - mStateChangedListener.onControllerStateChanged(); - } - } - void startTrackingJobLocked(JobStatus jobStatus) { final int uid = jobStatus.getSourceUid(); ArraySet<JobStatus> jobsForUid = mTrackedJobs.get(uid); @@ -255,11 +243,11 @@ public final class BackgroundJobsController extends StateController { boolean isWhitelistedLocked(int uid) { return ArrayUtils.contains(mTempWhitelistedAppIds, UserHandle.getAppId(uid)) - || ArrayUtils.contains(mPowerWhitelistedAppIds, UserHandle.getAppId(uid)); + || ArrayUtils.contains(mPowerWhitelistedUserAppIds, UserHandle.getAppId(uid)); } boolean canRunJobLocked(int uid) { - return !mEnableSwitch || mForegroundUids.get(uid) || isWhitelistedLocked(uid); + return mForegroundUids.get(uid) || isWhitelistedLocked(uid); } private final class AppOpsWatcher extends IAppOpsCallback.Stub { diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index f549a86583c0..0aa6a90e3efb 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -539,7 +539,10 @@ public class GnssLocationProvider implements LocationProviderInterface { synchronized (mLock) { if (configManager != null) { PersistableBundle b = configManager.getConfig(); - isKeepLppProfile = b.getBoolean(CarrierConfigManager.KEY_PERSIST_LPP_MODE_BOOL); + if (b != null) { + isKeepLppProfile = + b.getBoolean(CarrierConfigManager.KEY_PERSIST_LPP_MODE_BOOL); + } } if (isKeepLppProfile) { // load current properties for the carrier diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 5927b2f050fc..14d9afb14cf9 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -74,6 +74,7 @@ import android.security.KeyStore; import android.security.keystore.AndroidKeyStoreProvider; import android.security.keystore.KeyProperties; import android.security.keystore.KeyProtection; +import android.security.keystore.UserNotAuthenticatedException; import android.service.gatekeeper.GateKeeperResponse; import android.service.gatekeeper.IGateKeeperService; import android.text.TextUtils; @@ -153,7 +154,8 @@ public class LockSettingsService extends ILockSettings.Stub { private final Injector mInjector; private final Context mContext; - private final Handler mHandler; + @VisibleForTesting + protected final Handler mHandler; @VisibleForTesting protected final LockSettingsStorage mStorage; private final LockSettingsStrongAuth mStrongAuth; @@ -503,12 +505,34 @@ public class LockSettingsService extends ILockSettings.Stub { maybeShowEncryptionNotificationForUser(userId); } + /** + * Check if profile got unlocked but the keystore is still locked. This happens on full disk + * encryption devices since the profile may not yet be running when we consider unlocking it + * during the normal flow. In this case unlock the keystore for the profile. + */ + private void ensureProfileKeystoreUnlocked(int userId) { + final KeyStore ks = KeyStore.getInstance(); + if (ks.state(userId) == KeyStore.State.LOCKED + && tiedManagedProfileReadyToUnlock(mUserManager.getUserInfo(userId))) { + Slog.i(TAG, "Managed profile got unlocked, will unlock its keystore"); + try { + // If boot took too long and the password in vold got expired, parent keystore will + // be still locked, we ignore this case since the user will be prompted to unlock + // the device after boot. + unlockChildProfile(userId, true /* ignoreUserNotAuthenticated */); + } catch (RemoteException e) { + Slog.e(TAG, "Failed to unlock child profile"); + } + } + } + public void onUnlockUser(final int userId) { // Perform tasks which require locks in LSS on a handler, as we are callbacks from // ActivityManager.unlockUser() mHandler.post(new Runnable() { @Override public void run() { + ensureProfileKeystoreUnlocked(userId); // Hide notification first, as tie managed profile lock takes time hideEncryptionNotification(new UserHandle(userId)); @@ -1027,7 +1051,8 @@ public class LockSettingsService extends ILockSettings.Stub { return new String(decryptionResult, StandardCharsets.UTF_8); } - private void unlockChildProfile(int profileHandle) throws RemoteException { + private void unlockChildProfile(int profileHandle, boolean ignoreUserNotAuthenticated) + throws RemoteException { try { doVerifyCredential(getDecryptedPasswordForTiedProfile(profileHandle), LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, @@ -1038,6 +1063,8 @@ public class LockSettingsService extends ILockSettings.Stub { | BadPaddingException | CertificateException | IOException e) { if (e instanceof FileNotFoundException) { Slog.i(TAG, "Child profile key not found"); + } else if (ignoreUserNotAuthenticated && e instanceof UserNotAuthenticatedException) { + Slog.i(TAG, "Parent keystore seems locked, ignoring"); } else { Slog.e(TAG, "Failed to decrypt child profile key", e); } @@ -1081,11 +1108,8 @@ public class LockSettingsService extends ILockSettings.Stub { final List<UserInfo> profiles = mUserManager.getProfiles(userId); for (UserInfo pi : profiles) { // Unlock managed profile with unified lock - if (pi.isManagedProfile() - && !mLockPatternUtils.isSeparateProfileChallengeEnabled(pi.id) - && mStorage.hasChildProfileLock(pi.id) - && mUserManager.isUserRunning(pi.id)) { - unlockChildProfile(pi.id); + if (tiedManagedProfileReadyToUnlock(pi)) { + unlockChildProfile(pi.id, false /* ignoreUserNotAuthenticated */); } } } @@ -1094,6 +1118,13 @@ public class LockSettingsService extends ILockSettings.Stub { } } + private boolean tiedManagedProfileReadyToUnlock(UserInfo userInfo) { + return userInfo.isManagedProfile() + && !mLockPatternUtils.isSeparateProfileChallengeEnabled(userInfo.id) + && mStorage.hasChildProfileLock(userInfo.id) + && mUserManager.isUserRunning(userInfo.id); + } + private Map<Integer, String> getDecryptedPasswordsForAllTiedProfiles(int userId) { if (mUserManager.getUserInfo(userId).isManagedProfile()) { return null; @@ -1111,12 +1142,13 @@ public class LockSettingsService extends ILockSettings.Stub { continue; } try { - result.put(userId, getDecryptedPasswordForTiedProfile(userId)); + result.put(managedUserId, getDecryptedPasswordForTiedProfile(managedUserId)); } catch (KeyStoreException | UnrecoverableKeyException | NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException | CertificateException | IOException e) { - // ignore + Slog.e(TAG, "getDecryptedPasswordsForAllTiedProfiles failed for user " + + managedUserId, e); } } return result; @@ -1706,6 +1738,10 @@ public class LockSettingsService extends ILockSettings.Stub { return response; } + /** + * Call this method to notify DPMS regarding the latest password metric. This should be called + * when the user is authenticating or when a new password is being set. + */ private void notifyActivePasswordMetricsAvailable(String password, @UserIdInt int userId) { final PasswordMetrics metrics; if (password == null) { @@ -2167,6 +2203,8 @@ public class LockSettingsService extends ILockSettings.Stub { } setLong(SYNTHETIC_PASSWORD_HANDLE_KEY, newHandle, userId); synchronizeUnifiedWorkChallengeForProfiles(userId, profilePasswords); + + notifyActivePasswordMetricsAvailable(credential, userId); return newHandle; } @@ -2216,13 +2254,13 @@ public class LockSettingsService extends ILockSettings.Stub { userId); synchronizeUnifiedWorkChallengeForProfiles(userId, null); mSpManager.destroyPasswordBasedSyntheticPassword(handle, userId); + + notifyActivePasswordMetricsAvailable(credential, userId); } else /* response == null || responseCode == VerifyCredentialResponse.RESPONSE_RETRY */ { Slog.w(TAG, "spBasedSetLockCredentialInternalLocked: " + (response != null ? "rate limit exceeded" : "failed")); return; } - notifyActivePasswordMetricsAvailable(credential, userId); - } @Override @@ -2328,6 +2366,17 @@ public class LockSettingsService extends ILockSettings.Stub { Slog.w(TAG, "Invalid escrow token supplied"); return false; } + if (result.gkResponse.getResponseCode() != VerifyCredentialResponse.RESPONSE_OK) { + // Most likely, an untrusted credential reset happened in the past which + // changed the synthetic password + Slog.e(TAG, "Obsolete token: synthetic password derived but it fails GK " + + "verification."); + return false; + } + // Update PASSWORD_TYPE_KEY since it's needed by notifyActivePasswordMetricsAvailable() + // called by setLockCredentialWithAuthTokenLocked(). + // TODO: refactor usage of PASSWORD_TYPE_KEY b/65239740 + setLong(LockPatternUtils.PASSWORD_TYPE_KEY, requestedQuality, userId); long oldHandle = getSyntheticPasswordHandleLocked(userId); setLockCredentialWithAuthTokenLocked(credential, type, result.authToken, requestedQuality, userId); diff --git a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java index b4c10ec27a65..70d607227e23 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java @@ -713,12 +713,15 @@ class LockSettingsStorage { private static final String DATABASE_NAME = "locksettings.db"; private static final int DATABASE_VERSION = 2; + private static final int IDLE_CONNECTION_TIMEOUT_MS = 30000; private Callback mCallback; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); setWriteAheadLoggingEnabled(true); + // Memory optimization - close idle connections after 30s of inactivity + setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS); } public void setCallback(Callback callback) { diff --git a/services/core/java/com/android/server/media/AudioPlaybackMonitor.java b/services/core/java/com/android/server/media/AudioPlaybackMonitor.java index f6f767653c83..791ee821b357 100644 --- a/services/core/java/com/android/server/media/AudioPlaybackMonitor.java +++ b/services/core/java/com/android/server/media/AudioPlaybackMonitor.java @@ -100,7 +100,11 @@ class AudioPlaybackMonitor extends IPlaybackConfigDispatcher.Stub { * @param configs List of the current audio playback configuration */ @Override - public void dispatchPlaybackConfigChange(List<AudioPlaybackConfiguration> configs) { + public void dispatchPlaybackConfigChange(List<AudioPlaybackConfiguration> configs, + boolean flush) { + if (flush) { + Binder.flushPendingCommands(); + } final long token = Binder.clearCallingIdentity(); try { List<Integer> newActiveAudioPlaybackClientUids = new ArrayList<>(); diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java index 922df1e3dba8..3795b7f3091c 100644 --- a/services/core/java/com/android/server/media/MediaRouterService.java +++ b/services/core/java/com/android/server/media/MediaRouterService.java @@ -18,9 +18,7 @@ package com.android.server.media; import com.android.internal.util.DumpUtils; import com.android.server.Watchdog; -import com.android.server.media.AudioPlaybackMonitor.OnAudioPlayerActiveStateChangedListener; -import android.Manifest; import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.Context; @@ -96,9 +94,10 @@ public final class MediaRouterService extends IMediaRouterService.Stub private final ArrayMap<IBinder, ClientRecord> mAllClientRecords = new ArrayMap<IBinder, ClientRecord>(); private int mCurrentUserId = -1; - private boolean mHasBluetoothRoute = false; + private boolean mGlobalBluetoothA2dpOn = false; private final IAudioService mAudioService; private final AudioPlaybackMonitor mAudioPlaybackMonitor; + private final AudioRoutesInfo mCurAudioRoutesInfo = new AudioRoutesInfo(); public MediaRouterService(Context context) { mContext = context; @@ -137,13 +136,39 @@ public final class MediaRouterService extends IMediaRouterService.Stub audioRoutes = mAudioService.startWatchingRoutes(new IAudioRoutesObserver.Stub() { @Override public void dispatchAudioRoutesChanged(final AudioRoutesInfo newRoutes) { - mHasBluetoothRoute = newRoutes.bluetoothName != null; + synchronized (mLock) { + if (newRoutes.mainType != mCurAudioRoutesInfo.mainType) { + if ((newRoutes.mainType & (AudioRoutesInfo.MAIN_HEADSET + | AudioRoutesInfo.MAIN_HEADPHONES + | AudioRoutesInfo.MAIN_USB)) == 0) { + // headset was plugged out. + mGlobalBluetoothA2dpOn = newRoutes.bluetoothName != null; + } else { + // headset was plugged in. + mGlobalBluetoothA2dpOn = false; + } + mCurAudioRoutesInfo.mainType = newRoutes.mainType; + } + if (!TextUtils.equals( + newRoutes.bluetoothName, mCurAudioRoutesInfo.bluetoothName)) { + if (newRoutes.bluetoothName == null) { + // BT was disconnected. + mGlobalBluetoothA2dpOn = false; + } else { + // BT was connected or changed. + mGlobalBluetoothA2dpOn = true; + } + mCurAudioRoutesInfo.bluetoothName = newRoutes.bluetoothName; + } + } } }); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in the audio service."); } - mHasBluetoothRoute = (audioRoutes != null && audioRoutes.bluetoothName != null); + synchronized (mLock) { + mGlobalBluetoothA2dpOn = (audioRoutes != null && audioRoutes.bluetoothName != null); + } } public void systemRunning() { @@ -246,6 +271,14 @@ public final class MediaRouterService extends IMediaRouterService.Stub // Binder call @Override + public boolean isGlobalBluetoothA2doOn() { + synchronized (mLock) { + return mGlobalBluetoothA2dpOn; + } + } + + // Binder call + @Override public void setDiscoveryRequest(IMediaRouterClient client, int routeTypes, boolean activeScan) { if (client == null) { @@ -346,7 +379,12 @@ public final class MediaRouterService extends IMediaRouterService.Stub void restoreBluetoothA2dp() { try { - mAudioService.setBluetoothA2dpOn(mHasBluetoothRoute); + boolean a2dpOn = false; + synchronized (mLock) { + a2dpOn = mGlobalBluetoothA2dpOn; + } + Slog.v(TAG, "restoreBluetoothA2dp( " + a2dpOn + ")"); + mAudioService.setBluetoothA2dpOn(a2dpOn); } catch (RemoteException e) { Slog.w(TAG, "RemoteException while calling setBluetoothA2dpOn."); } @@ -354,12 +392,14 @@ public final class MediaRouterService extends IMediaRouterService.Stub void restoreRoute(int uid) { ClientRecord clientRecord = null; - UserRecord userRecord = mUserRecords.get(UserHandle.getUserId(uid)); - if (userRecord != null && userRecord.mClientRecords != null) { - for (ClientRecord cr : userRecord.mClientRecords) { - if (validatePackageName(uid, cr.mPackageName)) { - clientRecord = cr; - break; + synchronized (mLock) { + UserRecord userRecord = mUserRecords.get(UserHandle.getUserId(uid)); + if (userRecord != null && userRecord.mClientRecords != null) { + for (ClientRecord cr : userRecord.mClientRecords) { + if (validatePackageName(uid, cr.mPackageName)) { + clientRecord = cr; + break; + } } } } diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index 89e10503fcf3..0b11479a162a 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -462,18 +462,25 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { mHandler.post(new Runnable() { @Override public void run() { - if (useSuggested) { - if (AudioSystem.isStreamActive(stream, 0)) { - mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, direction, - flags, packageName, uid); + try { + if (useSuggested) { + if (AudioSystem.isStreamActive(stream, 0)) { + mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, + direction, flags, packageName, uid); + } else { + mAudioManagerInternal.adjustSuggestedStreamVolumeForUid( + AudioManager.USE_DEFAULT_STREAM_TYPE, direction, + flags | previousFlagPlaySound, packageName, uid); + } } else { - mAudioManagerInternal.adjustSuggestedStreamVolumeForUid( - AudioManager.USE_DEFAULT_STREAM_TYPE, direction, - flags | previousFlagPlaySound, packageName, uid); + mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags, + packageName, uid); } - } else { - mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags, - packageName, uid); + } catch (IllegalArgumentException e) { + Log.e(TAG, "Cannot adjust volume: direction=" + direction + ", stream=" + + stream + ", flags=" + flags + ", packageName=" + packageName + + ", uid=" + uid + ", useSuggested=" + useSuggested + + ", previousFlagPlaySound=" + previousFlagPlaySound, e); } } }); diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index b77ed913cd12..b9a2d184aade 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -1363,6 +1363,10 @@ public class MediaSessionService extends SystemService implements Monitor { flags, packageName, TAG); } catch (RemoteException e) { Log.e(TAG, "Error adjusting default volume.", e); + } catch (IllegalArgumentException e) { + Log.e(TAG, "Cannot adjust volume: direction=" + direction + + ", suggestedStream=" + suggestedStream + ", flags=" + flags, + e); } } }); diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index 93458c8daf9c..90dab2c38725 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -33,6 +33,7 @@ import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLE import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED; import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED; import static android.net.ConnectivityManager.TYPE_MOBILE; +import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED; import static android.net.NetworkPolicy.LIMIT_DISABLED; import static android.net.NetworkPolicy.SNOOZE_NEVER; import static android.net.NetworkPolicy.WARNING_DISABLED; @@ -112,16 +113,20 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.UserInfo; import android.content.res.Resources; import android.net.ConnectivityManager; +import android.net.ConnectivityManager.NetworkCallback; import android.net.IConnectivityManager; import android.net.INetworkManagementEventObserver; import android.net.INetworkPolicyListener; import android.net.INetworkPolicyManager; import android.net.INetworkStatsService; import android.net.LinkProperties; +import android.net.Network; +import android.net.NetworkCapabilities; import android.net.NetworkIdentity; import android.net.NetworkPolicy; import android.net.NetworkPolicyManager; import android.net.NetworkQuotaInfo; +import android.net.NetworkRequest; import android.net.NetworkState; import android.net.NetworkTemplate; import android.net.TrafficStats; @@ -191,8 +196,6 @@ import com.android.server.power.BatterySaverPolicy.ServiceType; import libcore.io.IoUtils; -import com.google.android.collect.Lists; - import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; @@ -372,13 +375,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private final boolean mSuppressDefaultPolicy; /** Defined network policies. */ + @GuardedBy("mNetworkPoliciesSecondLock") final ArrayMap<NetworkTemplate, NetworkPolicy> mNetworkPolicy = new ArrayMap<>(); - /** Currently active network rules for ifaces. */ - final ArrayMap<NetworkPolicy, String[]> mNetworkRules = new ArrayMap<>(); /** Map from subId to subscription plans. */ + @GuardedBy("mNetworkPoliciesSecondLock") final SparseArray<SubscriptionPlan[]> mSubscriptionPlans = new SparseArray<>(); /** Map from subId to package name that owns subscription plans. */ + @GuardedBy("mNetworkPoliciesSecondLock") final SparseArray<String> mSubscriptionPlansOwner = new SparseArray<>(); /** Defined UID policies. */ @@ -446,6 +450,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { @GuardedBy("mUidRulesFirstLock") final SparseIntArray mUidState = new SparseIntArray(); + /** Map from network ID to last observed meteredness state */ + @GuardedBy("mNetworkPoliciesSecondLock") + private final SparseBooleanArray mNetworkMetered = new SparseBooleanArray(); + private final RemoteCallbackList<INetworkPolicyListener> mListeners = new RemoteCallbackList<>(); @@ -748,6 +756,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { ACTION_CARRIER_CONFIG_CHANGED); mContext.registerReceiver(mCarrierConfigReceiver, carrierConfigFilter, null, mHandler); + // listen for meteredness changes + mContext.getSystemService(ConnectivityManager.class).registerNetworkCallback( + new NetworkRequest.Builder().build(), mNetworkCallback); + mUsageStats.addAppIdleStateChangeListener(new AppIdleStateChangeListener()); // tell systemReady() that the service has been initialized initCompleteSignal.countDown(); @@ -927,7 +939,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { /** * Receiver that watches for {@link WifiConfiguration} to be loaded so that - * we can perform upgrade logic. + * we can perform upgrade logic. After initial upgrade logic, it updates + * {@link #mMeteredIfaces} based on configuration changes. */ final private BroadcastReceiver mWifiReceiver = new BroadcastReceiver() { @Override @@ -942,6 +955,25 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } }; + private final NetworkCallback mNetworkCallback = new NetworkCallback() { + @Override + public void onCapabilitiesChanged(Network network, + NetworkCapabilities networkCapabilities) { + if (network == null || networkCapabilities == null) return; + + synchronized (mNetworkPoliciesSecondLock) { + final boolean oldMetered = mNetworkMetered.get(network.netId, false); + final boolean newMetered = !networkCapabilities + .hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); + + if ((oldMetered != newMetered) || mNetworkMetered.indexOfKey(network.netId) < 0) { + mNetworkMetered.put(network.netId, newMetered); + updateNetworkRulesNL(); + } + } + } + }; + /** * Observer that watches for {@link INetworkManagementService} alerts. */ @@ -1445,6 +1477,22 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } /** + * Collect all ifaces from a {@link NetworkState} into the given set. + */ + private static void collectIfaces(ArraySet<String> ifaces, NetworkState state) { + final String baseIface = state.linkProperties.getInterfaceName(); + if (baseIface != null) { + ifaces.add(baseIface); + } + for (LinkProperties stackedLink : state.linkProperties.getStackedLinks()) { + final String stackedIface = stackedLink.getInterfaceName(); + if (stackedIface != null) { + ifaces.add(stackedIface); + } + } + } + + /** * Examine all connected {@link NetworkState}, looking for * {@link NetworkPolicy} that need to be enforced. When matches found, set * remaining quota based on usage cycle and historical stats. @@ -1462,60 +1510,33 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // First, generate identities of all connected networks so we can // quickly compare them against all defined policies below. - final ArrayList<Pair<String, NetworkIdentity>> connIdents = new ArrayList<>(states.length); - final ArraySet<String> connIfaces = new ArraySet<String>(states.length); + final ArrayMap<NetworkState, NetworkIdentity> identified = new ArrayMap<>(); for (NetworkState state : states) { if (state.networkInfo != null && state.networkInfo.isConnected()) { final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state); - - final String baseIface = state.linkProperties.getInterfaceName(); - if (baseIface != null) { - connIdents.add(Pair.create(baseIface, ident)); - } - - // Stacked interfaces are considered to have same identity as - // their parent network. - final List<LinkProperties> stackedLinks = state.linkProperties.getStackedLinks(); - for (LinkProperties stackedLink : stackedLinks) { - final String stackedIface = stackedLink.getInterfaceName(); - if (stackedIface != null) { - connIdents.add(Pair.create(stackedIface, ident)); - } - } + identified.put(state, ident); } } - // Apply policies against all connected interfaces found above - mNetworkRules.clear(); - final ArrayList<String> ifaceList = Lists.newArrayList(); + final ArraySet<String> newMeteredIfaces = new ArraySet<>(); + long lowestRule = Long.MAX_VALUE; + + // For every well-defined policy, compute remaining data based on + // current cycle and historical stats, and push to kernel. + final ArraySet<String> matchingIfaces = new ArraySet<>(); for (int i = mNetworkPolicy.size() - 1; i >= 0; i--) { - final NetworkPolicy policy = mNetworkPolicy.valueAt(i); + final NetworkPolicy policy = mNetworkPolicy.valueAt(i); - ifaceList.clear(); - for (int j = connIdents.size() - 1; j >= 0; j--) { - final Pair<String, NetworkIdentity> ident = connIdents.get(j); - if (policy.template.matches(ident.second)) { - ifaceList.add(ident.first); + // Collect all ifaces that match this policy + matchingIfaces.clear(); + for (int j = identified.size() - 1; j >= 0; j--) { + if (policy.template.matches(identified.valueAt(j))) { + collectIfaces(matchingIfaces, identified.keyAt(j)); } } - if (ifaceList.size() > 0) { - final String[] ifaces = ifaceList.toArray(new String[ifaceList.size()]); - mNetworkRules.put(policy, ifaces); - } - } - - long lowestRule = Long.MAX_VALUE; - final ArraySet<String> newMeteredIfaces = new ArraySet<String>(states.length); - - // apply each policy that we found ifaces for; compute remaining data - // based on current cycle and historical stats, and push to kernel. - for (int i = mNetworkRules.size()-1; i >= 0; i--) { - final NetworkPolicy policy = mNetworkRules.keyAt(i); - final String[] ifaces = mNetworkRules.valueAt(i); - if (LOGD) { - Slog.d(TAG, "applying policy " + policy + " to ifaces " + Arrays.toString(ifaces)); + Slog.d(TAG, "Applying " + policy + " to ifaces " + matchingIfaces); } final boolean hasWarning = policy.warningBytes != LIMIT_DISABLED; @@ -1545,16 +1566,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { quotaBytes = Long.MAX_VALUE; } - if (ifaces.length > 1) { + if (matchingIfaces.size() > 1) { // TODO: switch to shared quota once NMS supports Slog.w(TAG, "shared quota unsupported; generating rule for each iface"); } - for (String iface : ifaces) { - // long quotaBytes split up into two ints to fit in message - mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, - (int) (quotaBytes >> 32), (int) (quotaBytes & 0xFFFFFFFF), iface) - .sendToTarget(); + for (int j = matchingIfaces.size() - 1; j >= 0; j--) { + final String iface = matchingIfaces.valueAt(j); + setInterfaceQuotaAsync(iface, quotaBytes); newMeteredIfaces.add(iface); } } @@ -1568,29 +1587,36 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } - for (int i = connIfaces.size()-1; i >= 0; i--) { - String iface = connIfaces.valueAt(i); - // long quotaBytes split up into two ints to fit in message - mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, - (int) (Long.MAX_VALUE >> 32), (int) (Long.MAX_VALUE & 0xFFFFFFFF), iface) - .sendToTarget(); - newMeteredIfaces.add(iface); + // One final pass to catch any metered ifaces that don't have explicitly + // defined policies; typically Wi-Fi networks. + for (NetworkState state : states) { + if (state.networkInfo != null && state.networkInfo.isConnected() + && !state.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) { + matchingIfaces.clear(); + collectIfaces(matchingIfaces, state); + for (int j = matchingIfaces.size() - 1; j >= 0; j--) { + final String iface = matchingIfaces.valueAt(j); + if (!newMeteredIfaces.contains(iface)) { + setInterfaceQuotaAsync(iface, Long.MAX_VALUE); + newMeteredIfaces.add(iface); + } + } + } } - mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget(); - - // remove quota on any trailing interfaces + // Remove quota from any interfaces that are no longer metered. for (int i = mMeteredIfaces.size() - 1; i >= 0; i--) { final String iface = mMeteredIfaces.valueAt(i); if (!newMeteredIfaces.contains(iface)) { - mHandler.obtainMessage(MSG_REMOVE_INTERFACE_QUOTA, iface) - .sendToTarget(); + removeInterfaceQuotaAsync(iface); } } mMeteredIfaces = newMeteredIfaces; final String[] meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]); mHandler.obtainMessage(MSG_METERED_IFACES_CHANGED, meteredIfaces).sendToTarget(); + + mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget(); } /** @@ -2730,20 +2756,18 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { return plans.toArray(new SubscriptionPlan[plans.size()]); } - synchronized (mUidRulesFirstLock) { - synchronized (mNetworkPoliciesSecondLock) { - // Only give out plan details to the package that defined them, - // so that we don't risk leaking plans between apps. We always - // let in core system components (like the Settings app). - final String ownerPackage = mSubscriptionPlansOwner.get(subId); - if (Objects.equals(ownerPackage, callingPackage) - || (UserHandle.getCallingAppId() == android.os.Process.SYSTEM_UID)) { - return mSubscriptionPlans.get(subId); - } else { - Log.w(TAG, "Not returning plans because caller " + callingPackage - + " doesn't match owner " + ownerPackage); - return null; - } + synchronized (mNetworkPoliciesSecondLock) { + // Only give out plan details to the package that defined them, + // so that we don't risk leaking plans between apps. We always + // let in core system components (like the Settings app). + final String ownerPackage = mSubscriptionPlansOwner.get(subId); + if (Objects.equals(ownerPackage, callingPackage) + || (UserHandle.getCallingAppId() == android.os.Process.SYSTEM_UID)) { + return mSubscriptionPlans.get(subId); + } else { + Log.w(TAG, "Not returning plans because caller " + callingPackage + + " doesn't match owner " + ownerPackage); + return null; } } } @@ -3973,6 +3997,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } + private void setInterfaceQuotaAsync(String iface, long quotaBytes) { + // long quotaBytes split up into two ints to fit in message + mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, (int) (quotaBytes >> 32), + (int) (quotaBytes & 0xFFFFFFFF), iface).sendToTarget(); + } + private void setInterfaceQuota(String iface, long quotaBytes) { try { mNetworkManager.setInterfaceQuota(iface, quotaBytes); @@ -3983,6 +4013,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } + private void removeInterfaceQuotaAsync(String iface) { + mHandler.obtainMessage(MSG_REMOVE_INTERFACE_QUOTA, iface).sendToTarget(); + } + private void removeInterfaceQuota(String iface) { try { mNetworkManager.removeInterfaceQuota(iface); diff --git a/services/core/java/com/android/server/net/NetworkStatsCollection.java b/services/core/java/com/android/server/net/NetworkStatsCollection.java index 03543007c80e..4ceb592af055 100644 --- a/services/core/java/com/android/server/net/NetworkStatsCollection.java +++ b/services/core/java/com/android/server/net/NetworkStatsCollection.java @@ -28,6 +28,8 @@ import static android.net.NetworkStats.UID_ALL; import static android.net.TrafficStats.UID_REMOVED; import static android.text.format.DateUtils.WEEK_IN_MILLIS; +import static com.android.server.net.NetworkStatsService.TAG; + import android.net.NetworkIdentity; import android.net.NetworkStats; import android.net.NetworkStatsHistory; @@ -37,20 +39,24 @@ import android.os.Binder; import android.service.NetworkStatsCollectionKeyProto; import android.service.NetworkStatsCollectionProto; import android.service.NetworkStatsCollectionStatsProto; +import android.telephony.SubscriptionPlan; import android.util.ArrayMap; import android.util.AtomicFile; import android.util.IntArray; +import android.util.Pair; +import android.util.Slog; import android.util.proto.ProtoOutputStream; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FileRotator; import com.android.internal.util.IndentingPrintWriter; +import libcore.io.IoUtils; + import com.google.android.collect.Lists; import com.google.android.collect.Maps; -import libcore.io.IoUtils; - import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -60,9 +66,11 @@ import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.ProtocolException; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.Iterator; import java.util.Objects; /** @@ -140,6 +148,63 @@ public class NetworkStatsCollection implements FileRotator.Reader { return mStartMillis == Long.MAX_VALUE && mEndMillis == Long.MIN_VALUE; } + @VisibleForTesting + public long roundUp(long time) { + if (time == Long.MIN_VALUE || time == Long.MAX_VALUE + || time == SubscriptionPlan.TIME_UNKNOWN) { + return time; + } else { + final long mod = time % mBucketDuration; + if (mod > 0) { + time -= mod; + time += mBucketDuration; + } + return time; + } + } + + @VisibleForTesting + public long roundDown(long time) { + if (time == Long.MIN_VALUE || time == Long.MAX_VALUE + || time == SubscriptionPlan.TIME_UNKNOWN) { + return time; + } else { + final long mod = time % mBucketDuration; + if (mod > 0) { + time -= mod; + } + return time; + } + } + + /** + * Safely multiple a value by a rational. + * <p> + * Internally it uses integer-based math whenever possible, but switches + * over to double-based math if values would overflow. + */ + @VisibleForTesting + public static long multiplySafe(long value, long num, long den) { + long x = value; + long y = num; + + // Logic shamelessly borrowed from Math.multiplyExact() + long r = x * y; + long ax = Math.abs(x); + long ay = Math.abs(y); + if (((ax | ay) >>> 31 != 0)) { + // Some bits greater than 2^31 that might cause overflow + // Check the result using the divide operator + // and check for the special case of Long.MIN_VALUE * -1 + if (((y != 0) && (r / y != x)) || + (x == Long.MIN_VALUE && y == -1)) { + // Use double math to avoid overflowing + return (long) (((double) num / den) * value); + } + } + return r / den; + } + public int[] getRelevantUids(@NetworkStatsAccess.Level int accessLevel) { return getRelevantUids(accessLevel, Binder.getCallingUid()); } @@ -165,60 +230,110 @@ public class NetworkStatsCollection implements FileRotator.Reader { * Combine all {@link NetworkStatsHistory} in this collection which match * the requested parameters. */ - public NetworkStatsHistory getHistory( - NetworkTemplate template, int uid, int set, int tag, int fields, - @NetworkStatsAccess.Level int accessLevel) { - return getHistory(template, uid, set, tag, fields, Long.MIN_VALUE, Long.MAX_VALUE, - accessLevel); - } - - /** - * Combine all {@link NetworkStatsHistory} in this collection which match - * the requested parameters. - */ - public NetworkStatsHistory getHistory( - NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end, - @NetworkStatsAccess.Level int accessLevel) { - return getHistory(template, uid, set, tag, fields, start, end, accessLevel, - Binder.getCallingUid()); - } - - /** - * Combine all {@link NetworkStatsHistory} in this collection which match - * the requested parameters. - */ - public NetworkStatsHistory getHistory( - NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end, + public NetworkStatsHistory getHistory(NetworkTemplate template, SubscriptionPlan augmentPlan, + int uid, int set, int tag, int fields, long start, long end, @NetworkStatsAccess.Level int accessLevel, int callerUid) { if (!NetworkStatsAccess.isAccessibleToUser(uid, callerUid, accessLevel)) { throw new SecurityException("Network stats history of uid " + uid + " is forbidden for caller " + callerUid); } + final int bucketEstimate = (int) ((end - start) / mBucketDuration); final NetworkStatsHistory combined = new NetworkStatsHistory( - mBucketDuration, start == end ? 1 : estimateBuckets(), fields); + mBucketDuration, bucketEstimate, fields); // shortcut when we know stats will be empty if (start == end) return combined; + // Figure out the window of time that we should be augmenting (if any) + long augmentStart = SubscriptionPlan.TIME_UNKNOWN; + long augmentEnd = (augmentPlan != null) ? augmentPlan.getDataUsageTime() + : SubscriptionPlan.TIME_UNKNOWN; + // And if augmenting, we might need to collect more data to adjust with + long collectStart = start; + long collectEnd = end; + + if (augmentEnd != SubscriptionPlan.TIME_UNKNOWN) { + final Iterator<Pair<ZonedDateTime, ZonedDateTime>> it = augmentPlan.cycleIterator(); + while (it.hasNext()) { + final Pair<ZonedDateTime, ZonedDateTime> cycle = it.next(); + final long cycleStart = cycle.first.toInstant().toEpochMilli(); + final long cycleEnd = cycle.second.toInstant().toEpochMilli(); + if (cycleStart <= augmentEnd && augmentEnd < cycleEnd) { + augmentStart = cycleStart; + collectStart = Long.min(collectStart, augmentStart); + collectEnd = Long.max(collectEnd, augmentEnd); + break; + } + } + } + + if (augmentStart != SubscriptionPlan.TIME_UNKNOWN) { + // Shrink augmentation window so we don't risk undercounting. + augmentStart = roundUp(augmentStart); + augmentEnd = roundDown(augmentEnd); + // Grow collection window so we get all the stats needed. + collectStart = roundDown(collectStart); + collectEnd = roundUp(collectEnd); + } + for (int i = 0; i < mStats.size(); i++) { final Key key = mStats.keyAt(i); if (key.uid == uid && NetworkStats.setMatches(set, key.set) && key.tag == tag && templateMatches(template, key.ident)) { final NetworkStatsHistory value = mStats.valueAt(i); - combined.recordHistory(value, start, end); + combined.recordHistory(value, collectStart, collectEnd); } } - return combined; - } - /** - * Summarize all {@link NetworkStatsHistory} in this collection which match - * the requested parameters. - */ - public NetworkStats getSummary(NetworkTemplate template, long start, long end, - @NetworkStatsAccess.Level int accessLevel) { - return getSummary(template, start, end, accessLevel, Binder.getCallingUid()); + if (augmentStart != SubscriptionPlan.TIME_UNKNOWN) { + final NetworkStatsHistory.Entry entry = combined.getValues( + augmentStart, augmentEnd, null); + + // If we don't have any recorded data for this time period, give + // ourselves something to scale with. + if (entry.rxBytes == 0 || entry.txBytes == 0) { + combined.recordData(augmentStart, augmentEnd, + new NetworkStats.Entry(1, 0, 1, 0, 0)); + combined.getValues(augmentStart, augmentEnd, entry); + } + + final long rawBytes = entry.rxBytes + entry.txBytes; + final long rawRxBytes = entry.rxBytes; + final long rawTxBytes = entry.txBytes; + final long targetBytes = augmentPlan.getDataUsageBytes(); + final long targetRxBytes = multiplySafe(targetBytes, rawRxBytes, rawBytes); + final long targetTxBytes = multiplySafe(targetBytes, rawTxBytes, rawBytes); + + // Scale all matching buckets to reach anchor target + final long beforeTotal = combined.getTotalBytes(); + for (int i = 0; i < combined.size(); i++) { + combined.getValues(i, entry); + if (entry.bucketStart >= augmentStart + && entry.bucketStart + entry.bucketDuration <= augmentEnd) { + entry.rxBytes = multiplySafe(targetRxBytes, entry.rxBytes, rawRxBytes); + entry.txBytes = multiplySafe(targetTxBytes, entry.txBytes, rawTxBytes); + // We purposefully clear out packet counters to indicate + // that this data has been augmented. + entry.rxPackets = 0; + entry.txPackets = 0; + combined.setValues(i, entry); + } + } + + final long deltaTotal = combined.getTotalBytes() - beforeTotal; + if (deltaTotal != 0) { + Slog.d(TAG, "Augmented network usage by " + deltaTotal + " bytes"); + } + + // Finally we can slice data as originally requested + final NetworkStatsHistory sliced = new NetworkStatsHistory( + mBucketDuration, bucketEstimate, fields); + sliced.recordHistory(combined, start, end); + return sliced; + } else { + return combined; + } } /** @@ -230,6 +345,7 @@ public class NetworkStatsCollection implements FileRotator.Reader { final long now = System.currentTimeMillis(); final NetworkStats stats = new NetworkStats(end - start, 24); + // shortcut when we know stats will be empty if (start == end) return stats; diff --git a/services/core/java/com/android/server/net/NetworkStatsObservers.java b/services/core/java/com/android/server/net/NetworkStatsObservers.java index a256cbcf9030..741c2062bd57 100644 --- a/services/core/java/com/android/server/net/NetworkStatsObservers.java +++ b/services/core/java/com/android/server/net/NetworkStatsObservers.java @@ -17,28 +17,26 @@ package com.android.server.net; import static android.net.TrafficStats.MB_IN_BYTES; + import static com.android.internal.util.Preconditions.checkArgument; import android.app.usage.NetworkStatsManager; import android.net.DataUsageRequest; import android.net.NetworkStats; -import android.net.NetworkStats.NonMonotonicObserver; import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; -import android.os.Binder; import android.os.Bundle; -import android.os.Looper; -import android.os.Message; -import android.os.Messenger; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; +import android.os.Looper; +import android.os.Message; +import android.os.Messenger; import android.os.Process; import android.os.RemoteException; import android.util.ArrayMap; -import android.util.IntArray; -import android.util.SparseArray; import android.util.Slog; +import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.net.VpnInfo; @@ -410,7 +408,7 @@ class NetworkStatsObservers { */ private long getTotalBytesForNetworkUid(NetworkTemplate template, int uid) { try { - NetworkStatsHistory history = mCollection.getHistory(template, uid, + NetworkStatsHistory history = mCollection.getHistory(template, null, uid, NetworkStats.SET_ALL, NetworkStats.TAG_NONE, NetworkStatsHistory.FIELD_ALL, Long.MIN_VALUE /* start */, Long.MAX_VALUE /* end */, diff --git a/services/core/java/com/android/server/net/NetworkStatsRecorder.java b/services/core/java/com/android/server/net/NetworkStatsRecorder.java index 80309e19eb42..4bee55ef8b22 100644 --- a/services/core/java/com/android/server/net/NetworkStatsRecorder.java +++ b/services/core/java/com/android/server/net/NetworkStatsRecorder.java @@ -20,6 +20,7 @@ import static android.net.NetworkStats.TAG_NONE; import static android.net.TrafficStats.KB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; import static android.text.format.DateUtils.YEAR_IN_MILLIS; + import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.Nullable; @@ -28,6 +29,7 @@ import android.net.NetworkStats.NonMonotonicObserver; import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; import android.net.TrafficStats; +import android.os.Binder; import android.os.DropBoxManager; import android.service.NetworkStatsRecorderProto; import android.util.Log; @@ -38,6 +40,9 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.net.VpnInfo; import com.android.internal.util.FileRotator; import com.android.internal.util.IndentingPrintWriter; + +import libcore.io.IoUtils; + import com.google.android.collect.Sets; import java.io.ByteArrayOutputStream; @@ -52,8 +57,6 @@ import java.util.Arrays; import java.util.HashSet; import java.util.Map; -import libcore.io.IoUtils; - /** * Logic to record deltas between periodic {@link NetworkStats} snapshots into * {@link NetworkStatsHistory} that belong to {@link NetworkStatsCollection}. @@ -150,7 +153,7 @@ public class NetworkStatsRecorder { public NetworkStats.Entry getTotalSinceBootLocked(NetworkTemplate template) { return mSinceBoot.getSummary(template, Long.MIN_VALUE, Long.MAX_VALUE, - NetworkStatsAccess.Level.DEVICE).getTotal(null); + NetworkStatsAccess.Level.DEVICE, Binder.getCallingUid()).getTotal(null); } public NetworkStatsCollection getSinceBoot() { diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index b14aa13bfb28..3af5265e6fa9 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -26,6 +26,8 @@ import static android.content.Intent.EXTRA_UID; import static android.net.ConnectivityManager.ACTION_TETHER_STATE_CHANGED; import static android.net.ConnectivityManager.isNetworkTypeMobile; import static android.net.NetworkStats.IFACE_ALL; +import static android.net.NetworkStats.METERED_ALL; +import static android.net.NetworkStats.ROAMING_ALL; import static android.net.NetworkStats.SET_ALL; import static android.net.NetworkStats.SET_DEFAULT; import static android.net.NetworkStats.SET_FOREGROUND; @@ -33,10 +35,12 @@ import static android.net.NetworkStats.STATS_PER_IFACE; import static android.net.NetworkStats.STATS_PER_UID; import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; +import static android.net.NetworkStatsHistory.FIELD_ALL; import static android.net.NetworkTemplate.buildTemplateMobileWildcard; import static android.net.NetworkTemplate.buildTemplateWifiWildcard; import static android.net.TrafficStats.KB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; +import static android.provider.Settings.Global.NETSTATS_AUGMENT_ENABLED; import static android.provider.Settings.Global.NETSTATS_DEV_BUCKET_DURATION; import static android.provider.Settings.Global.NETSTATS_DEV_DELETE_AGE; import static android.provider.Settings.Global.NETSTATS_DEV_PERSIST_BYTES; @@ -65,6 +69,7 @@ import static com.android.server.NetworkManagementSocketTagger.setKernelCounterS import android.app.AlarmManager; import android.app.PendingIntent; +import android.app.usage.NetworkStatsManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; @@ -104,6 +109,8 @@ import android.provider.Settings; import android.provider.Settings.Global; import android.service.NetworkInterfaceProto; import android.service.NetworkStatsServiceDumpProto; +import android.telephony.SubscriptionManager; +import android.telephony.SubscriptionPlan; import android.telephony.TelephonyManager; import android.text.format.DateUtils; import android.util.ArrayMap; @@ -117,6 +124,7 @@ import android.util.SparseIntArray; import android.util.TrustedTime; import android.util.proto.ProtoOutputStream; +import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.net.VpnInfo; import com.android.internal.util.ArrayUtils; @@ -139,8 +147,8 @@ import java.util.List; * other system services. */ public class NetworkStatsService extends INetworkStatsService.Stub { - private static final String TAG = "NetworkStats"; - private static final boolean LOGV = false; + static final String TAG = "NetworkStats"; + static final boolean LOGV = false; private static final int MSG_PERFORM_POLL = 1; private static final int MSG_UPDATE_IFACES = 2; @@ -194,6 +202,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { public long getPollInterval(); public long getTimeCacheMaxAge(); public boolean getSampleEnabled(); + public boolean getAugmentEnabled(); public static class Config { public final long bucketDuration; @@ -233,12 +242,17 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private final DropBoxNonMonotonicObserver mNonMonotonicObserver = new DropBoxNonMonotonicObserver(); + @GuardedBy("mStatsLock") private NetworkStatsRecorder mDevRecorder; + @GuardedBy("mStatsLock") private NetworkStatsRecorder mXtRecorder; + @GuardedBy("mStatsLock") private NetworkStatsRecorder mUidRecorder; + @GuardedBy("mStatsLock") private NetworkStatsRecorder mUidTagRecorder; /** Cached {@link #mXtRecorder} stats. */ + @GuardedBy("mStatsLock") private NetworkStatsCollection mXtStatsCached; /** Current counter sets for each UID. */ @@ -320,15 +334,15 @@ public class NetworkStatsService extends INetworkStatsService.Stub { return; } - // create data recorders along with historical rotators - mDevRecorder = buildRecorder(PREFIX_DEV, mSettings.getDevConfig(), false); - mXtRecorder = buildRecorder(PREFIX_XT, mSettings.getXtConfig(), false); - mUidRecorder = buildRecorder(PREFIX_UID, mSettings.getUidConfig(), false); - mUidTagRecorder = buildRecorder(PREFIX_UID_TAG, mSettings.getUidTagConfig(), true); + synchronized (mStatsLock) { + // create data recorders along with historical rotators + mDevRecorder = buildRecorder(PREFIX_DEV, mSettings.getDevConfig(), false); + mXtRecorder = buildRecorder(PREFIX_XT, mSettings.getXtConfig(), false); + mUidRecorder = buildRecorder(PREFIX_UID, mSettings.getUidConfig(), false); + mUidTagRecorder = buildRecorder(PREFIX_UID_TAG, mSettings.getUidTagConfig(), true); - updatePersistThresholds(); + updatePersistThresholdsLocked(); - synchronized (mStatsLock) { // upgrade any legacy stats, migrating them to rotated files maybeUpgradeLegacyStatsLocked(); @@ -466,18 +480,20 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public INetworkStatsSession openSession() { - return createSession(null, /* poll on create */ false); + // NOTE: if callers want to get non-augmented data, they should go + // through the public API + return openSessionInternal(NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN, null); } @Override - public INetworkStatsSession openSessionForUsageStats(final String callingPackage) { - return createSession(callingPackage, /* poll on create */ true); + public INetworkStatsSession openSessionForUsageStats(int flags, String callingPackage) { + return openSessionInternal(flags, callingPackage); } - private INetworkStatsSession createSession(final String callingPackage, boolean pollOnCreate) { + private INetworkStatsSession openSessionInternal(final int flags, final String callingPackage) { assertBandwidthControlEnabled(); - if (pollOnCreate) { + if ((flags & NetworkStatsManager.FLAG_POLL_ON_OPEN) != 0) { final long ident = Binder.clearCallingIdentity(); try { performPoll(FLAG_PERSIST_ALL); @@ -490,9 +506,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // for its lifetime; when caller closes only weak references remain. return new INetworkStatsSession.Stub() { + private final int mCallingUid = Binder.getCallingUid(); + private final String mCallingPackage = callingPackage; + private final @NetworkStatsAccess.Level int mAccessLevel = checkAccessLevel( + callingPackage); + private NetworkStatsCollection mUidComplete; private NetworkStatsCollection mUidTagComplete; - private String mCallingPackage = callingPackage; private NetworkStatsCollection getUidComplete() { synchronized (mStatsLock) { @@ -514,55 +534,38 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public int[] getRelevantUids() { - return getUidComplete().getRelevantUids(checkAccessLevel(mCallingPackage)); + return getUidComplete().getRelevantUids(mAccessLevel); } @Override - public NetworkStats getDeviceSummaryForNetwork(NetworkTemplate template, long start, - long end) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); - if (accessLevel < NetworkStatsAccess.Level.DEVICESUMMARY) { - throw new SecurityException("Calling package " + mCallingPackage - + " cannot access device summary network stats"); - } - NetworkStats result = new NetworkStats(end - start, 1); - final long ident = Binder.clearCallingIdentity(); - try { - // Using access level higher than the one we checked for above. - // Reason is that we are combining usage data in a way that is not PII - // anymore. - result.combineAllValues( - internalGetSummaryForNetwork(template, start, end, - NetworkStatsAccess.Level.DEVICE)); - } finally { - Binder.restoreCallingIdentity(ident); - } - return result; + public NetworkStats getDeviceSummaryForNetwork( + NetworkTemplate template, long start, long end) { + return internalGetSummaryForNetwork(template, flags, start, end, mAccessLevel, + mCallingUid); } @Override public NetworkStats getSummaryForNetwork( NetworkTemplate template, long start, long end) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); - return internalGetSummaryForNetwork(template, start, end, accessLevel); + return internalGetSummaryForNetwork(template, flags, start, end, mAccessLevel, + mCallingUid); } @Override public NetworkStatsHistory getHistoryForNetwork(NetworkTemplate template, int fields) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); - return internalGetHistoryForNetwork(template, fields, accessLevel); + return internalGetHistoryForNetwork(template, flags, fields, mAccessLevel, + mCallingUid); } @Override public NetworkStats getSummaryForAllUid( NetworkTemplate template, long start, long end, boolean includeTags) { try { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); - final NetworkStats stats = - getUidComplete().getSummary(template, start, end, accessLevel); + final NetworkStats stats = getUidComplete() + .getSummary(template, start, end, mAccessLevel, mCallingUid); if (includeTags) { final NetworkStats tagStats = getUidTagComplete() - .getSummary(template, start, end, accessLevel); + .getSummary(template, start, end, mAccessLevel, mCallingUid); stats.combineAllValues(tagStats); } return stats; @@ -576,13 +579,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public NetworkStatsHistory getHistoryForUid( NetworkTemplate template, int uid, int set, int tag, int fields) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); + // NOTE: We don't augment UID-level statistics if (tag == TAG_NONE) { - return getUidComplete().getHistory(template, uid, set, tag, fields, - accessLevel); + return getUidComplete().getHistory(template, null, uid, set, tag, fields, + Long.MIN_VALUE, Long.MAX_VALUE, mAccessLevel, mCallingUid); } else { - return getUidTagComplete().getHistory(template, uid, set, tag, fields, - accessLevel); + return getUidTagComplete().getHistory(template, null, uid, set, tag, fields, + Long.MIN_VALUE, Long.MAX_VALUE, mAccessLevel, mCallingUid); } } @@ -590,13 +593,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { public NetworkStatsHistory getHistoryIntervalForUid( NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); + // NOTE: We don't augment UID-level statistics if (tag == TAG_NONE) { - return getUidComplete().getHistory(template, uid, set, tag, fields, start, end, - accessLevel); + return getUidComplete().getHistory(template, null, uid, set, tag, fields, + start, end, mAccessLevel, mCallingUid); } else if (uid == Binder.getCallingUid()) { - return getUidTagComplete().getHistory(template, uid, set, tag, fields, - start, end, accessLevel); + return getUidTagComplete().getHistory(template, null, uid, set, tag, fields, + start, end, mAccessLevel, mCallingUid); } else { throw new SecurityException("Calling package " + mCallingPackage + " cannot access tag information from a different uid"); @@ -617,36 +620,87 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } /** + * Find the most relevant {@link SubscriptionPlan} for the given + * {@link NetworkTemplate} and flags. This is typically used to augment + * local measurement results to match a known anchor from the carrier. + */ + private SubscriptionPlan resolveSubscriptionPlan(NetworkTemplate template, int flags) { + SubscriptionPlan plan = null; + if ((flags & NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN) != 0 + && (template.getMatchRule() == NetworkTemplate.MATCH_MOBILE_ALL) + && mSettings.getAugmentEnabled()) { + Slog.d(TAG, "Resolving plan for " + template); + final long token = Binder.clearCallingIdentity(); + try { + final SubscriptionManager sm = mContext.getSystemService(SubscriptionManager.class); + final TelephonyManager tm = mContext.getSystemService(TelephonyManager.class); + for (int subId : sm.getActiveSubscriptionIdList()) { + if (template.matchesSubscriberId(tm.getSubscriberId(subId))) { + Slog.d(TAG, "Found active matching subId " + subId); + final List<SubscriptionPlan> plans = sm.getSubscriptionPlans(subId); + if (!plans.isEmpty()) { + plan = plans.get(0); + } + } + } + } finally { + Binder.restoreCallingIdentity(token); + } + Slog.d(TAG, "Resolved to plan " + plan); + } + return plan; + } + + /** * Return network summary, splicing between DEV and XT stats when * appropriate. */ - private NetworkStats internalGetSummaryForNetwork( - NetworkTemplate template, long start, long end, - @NetworkStatsAccess.Level int accessLevel) { + private NetworkStats internalGetSummaryForNetwork(NetworkTemplate template, int flags, + long start, long end, @NetworkStatsAccess.Level int accessLevel, int callingUid) { // We've been using pure XT stats long enough that we no longer need to // splice DEV and XT together. - return mXtStatsCached.getSummary(template, start, end, accessLevel); + final NetworkStatsHistory history = internalGetHistoryForNetwork(template, flags, FIELD_ALL, + accessLevel, callingUid); + + final long now = System.currentTimeMillis(); + final NetworkStatsHistory.Entry entry = history.getValues(start, end, now, null); + + final NetworkStats stats = new NetworkStats(end - start, 1); + stats.addValues(new NetworkStats.Entry(IFACE_ALL, UID_ALL, SET_ALL, TAG_NONE, METERED_ALL, + ROAMING_ALL, entry.rxBytes, entry.rxPackets, entry.txBytes, entry.txPackets, + entry.operations)); + return stats; } /** * Return network history, splicing between DEV and XT stats when * appropriate. */ - private NetworkStatsHistory internalGetHistoryForNetwork(NetworkTemplate template, int fields, - @NetworkStatsAccess.Level int accessLevel) { + private NetworkStatsHistory internalGetHistoryForNetwork(NetworkTemplate template, + int flags, int fields, @NetworkStatsAccess.Level int accessLevel, int callingUid) { // We've been using pure XT stats long enough that we no longer need to // splice DEV and XT together. - return mXtStatsCached.getHistory(template, UID_ALL, SET_ALL, TAG_NONE, fields, accessLevel); + final SubscriptionPlan augmentPlan = resolveSubscriptionPlan(template, flags); + synchronized (mStatsLock) { + return mXtStatsCached.getHistory(template, augmentPlan, + UID_ALL, SET_ALL, TAG_NONE, fields, Long.MIN_VALUE, Long.MAX_VALUE, + accessLevel, callingUid); + } } @Override public long getNetworkTotalBytes(NetworkTemplate template, long start, long end) { - // Special case - since this is for internal use only, don't worry about a full access level - // check and just require the signature/privileged permission. + // Special case - since this is for internal use only, don't worry about + // a full access level check and just require the signature/privileged + // permission. mContext.enforceCallingOrSelfPermission(READ_NETWORK_USAGE_HISTORY, TAG); assertBandwidthControlEnabled(); - return internalGetSummaryForNetwork(template, start, end, NetworkStatsAccess.Level.DEVICE) - .getTotalBytes(); + + // NOTE: if callers want to get non-augmented data, they should go + // through the public API + return internalGetSummaryForNetwork(template, + NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN, start, end, + NetworkStatsAccess.Level.DEVICE, Binder.getCallingUid()).getTotalBytes(); } @Override @@ -768,7 +822,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { synchronized (mStatsLock) { if (!mSystemReady) return; - updatePersistThresholds(); + updatePersistThresholdsLocked(); mDevRecorder.maybePersistLocked(currentTime); mXtRecorder.maybePersistLocked(currentTime); @@ -824,7 +878,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { * reflect current {@link #mPersistThreshold} value. Always defers to * {@link Global} values when defined. */ - private void updatePersistThresholds() { + private void updatePersistThresholdsLocked() { mDevRecorder.setPersistThreshold(mSettings.getDevPersistBytes(mPersistThreshold)); mXtRecorder.setPersistThreshold(mSettings.getXtPersistBytes(mPersistThreshold)); mUidRecorder.setPersistThreshold(mSettings.getUidPersistBytes(mPersistThreshold)); @@ -1266,7 +1320,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { synchronized (mStatsLock) { if (args.length > 0 && "--proto".equals(args[0])) { // In this case ignore all other arguments. - dumpProto(fd); + dumpProtoLocked(fd); return; } @@ -1342,7 +1396,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } } - private void dumpProto(FileDescriptor fd) { + private void dumpProtoLocked(FileDescriptor fd) { final ProtoOutputStream proto = new ProtoOutputStream(fd); // TODO Right now it writes all history. Should it limit to the "since-boot" log? @@ -1530,6 +1584,10 @@ public class NetworkStatsService extends INetworkStatsService.Stub { return getGlobalBoolean(NETSTATS_SAMPLE_ENABLED, true); } @Override + public boolean getAugmentEnabled() { + return getGlobalBoolean(NETSTATS_AUGMENT_ENABLED, true); + } + @Override public Config getDevConfig() { return new Config(getGlobalLong(NETSTATS_DEV_BUCKET_DURATION, HOUR_IN_MILLIS), getGlobalLong(NETSTATS_DEV_ROTATE_AGE, 15 * DAY_IN_MILLIS), diff --git a/services/core/java/com/android/server/notification/ConditionProviders.java b/services/core/java/com/android/server/notification/ConditionProviders.java index 3444ef3ec2fa..c0fbfbb20b95 100644 --- a/services/core/java/com/android/server/notification/ConditionProviders.java +++ b/services/core/java/com/android/server/notification/ConditionProviders.java @@ -186,6 +186,11 @@ public class ConditionProviders extends ManagedServices { super.onPackagesChanged(removingPackage, pkgList, uid); } + @Override + protected boolean isValidEntry(String packageOrComponent, int userId) { + return true; + } + public ManagedServiceInfo checkServiceToken(IConditionProvider provider) { synchronized(mMutex) { return checkServiceTokenLocked(provider); diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index d5d0250f82af..c1d7059d0e3d 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -45,12 +45,16 @@ import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; +import android.service.notification.ManagedServiceInfoProto; +import android.service.notification.ManagedServicesProto; +import android.service.notification.ManagedServicesProto.ServiceProto; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.util.Slog; import android.util.SparseArray; +import android.util.proto.ProtoOutputStream; import com.android.internal.util.XmlUtils; import com.android.server.notification.NotificationManagerService.DumpFilter; @@ -99,6 +103,7 @@ abstract public class ManagedServices { protected final Object mMutex; private final UserProfiles mUserProfiles; private final IPackageManager mPm; + private final UserManager mUm; private final Config mConfig; // contains connections to all connected services, including app services @@ -138,6 +143,7 @@ abstract public class ManagedServices { mPm = pm; mConfig = getConfig(); mApprovalLevel = APPROVAL_BY_COMPONENT; + mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE); } abstract protected Config getConfig(); @@ -212,6 +218,53 @@ abstract public class ManagedServices { } } + public void dump(ProtoOutputStream proto, DumpFilter filter) { + proto.write(ManagedServicesProto.CAPTION, getCaption()); + final int N = mApproved.size(); + for (int i = 0 ; i < N; i++) { + final int userId = mApproved.keyAt(i); + final ArrayMap<Boolean, ArraySet<String>> approvedByType = mApproved.valueAt(i); + if (approvedByType != null) { + final int M = approvedByType.size(); + for (int j = 0; j < M; j++) { + final boolean isPrimary = approvedByType.keyAt(j); + final ArraySet<String> approved = approvedByType.valueAt(j); + if (approvedByType != null && approvedByType.size() > 0) { + final long sToken = proto.start(ManagedServicesProto.APPROVED); + for (String s : approved) { + proto.write(ServiceProto.NAME, s); + } + proto.write(ServiceProto.USER_ID, userId); + proto.write(ServiceProto.IS_PRIMARY, isPrimary); + proto.end(sToken); + } + } + } + } + + for (ComponentName cmpt : mEnabledServicesForCurrentProfiles) { + if (filter != null && !filter.matches(cmpt)) continue; + + final long cToken = proto.start(ManagedServicesProto.ENABLED); + cmpt.toProto(proto); + proto.end(cToken); + } + + for (ManagedServiceInfo info : mServices) { + if (filter != null && !filter.matches(info.component)) continue; + + final long lToken = proto.start(ManagedServicesProto.LIVE_SERVICES); + info.toProto(proto, this); + proto.end(lToken); + } + + for (ComponentName name : mSnoozingForCurrentProfiles) { + final long cToken = proto.start(ManagedServicesProto.SNOOZED); + name.toProto(proto); + proto.end(cToken); + } + } + protected void onSettingRestored(String element, String value, int backupSdkInt, int userId) { if (!mUseXml) { Slog.d(TAG, "Restored managed service setting: " + element); @@ -292,11 +345,14 @@ abstract public class ManagedServices { } if (type == XmlPullParser.START_TAG) { if (TAG_MANAGED_SERVICES.equals(tag)) { + Slog.i(TAG, "Read " + mConfig.caption + " permissions from xml"); final String approved = XmlUtils.readStringAttribute(parser, ATT_APPROVED_LIST); final int userId = XmlUtils.readIntAttribute(parser, ATT_USER_ID, 0); final boolean isPrimary = XmlUtils.readBooleanAttribute(parser, ATT_IS_PRIMARY, true); - addApprovedList(approved, userId, isPrimary); + if (mUm.getUserInfo(userId) != null) { + addApprovedList(approved, userId, isPrimary); + } mUseXml = true; } } @@ -349,6 +405,8 @@ abstract public class ManagedServices { protected void setPackageOrComponentEnabled(String pkgOrComponent, int userId, boolean isPrimary, boolean enabled) { + Slog.i(TAG, + (enabled ? " Allowing " : "Disallowing ") + mConfig.caption + " " + pkgOrComponent); ArrayMap<Boolean, ArraySet<String>> allowedByType = mApproved.get(userId); if (allowedByType == null) { allowedByType = new ArrayMap<>(); @@ -455,6 +513,12 @@ abstract public class ManagedServices { } } + public void onUserRemoved(int user) { + Slog.i(TAG, "Removing approved services for removed user " + user); + mApproved.remove(user); + rebindServices(true); + } + public void onUserSwitched(int user) { if (DEBUG) Slog.d(TAG, "onUserSwitched u=" + user); if (Arrays.equals(mLastSeenProfileIds, mUserProfiles.getCurrentProfileIds())) { @@ -489,7 +553,7 @@ abstract public class ManagedServices { return info; } throw new SecurityException("Disallowed call from unknown " + getCaption() + ": " - + service); + + service + " " + service.getClass()); } public void unregisterService(IInterface service, int userid) { @@ -534,10 +598,8 @@ abstract public class ManagedServices { } // State changed - if (DEBUG) { - Slog.d(TAG, ((enabled) ? "Enabling " : "Disabling ") + "component " + - component.flattenToShortString()); - } + Slog.d(TAG, ((enabled) ? "Enabling " : "Disabling ") + "component " + + component.flattenToShortString()); synchronized (mMutex) { final int[] userIds = mUserProfiles.getCurrentProfileIds(); @@ -619,12 +681,10 @@ abstract public class ManagedServices { int P = approved.size(); for (int k = P - 1; k >= 0; k--) { final String approvedPackageOrComponent = approved.valueAt(k); - if (!hasMatchingServices(approvedPackageOrComponent, userId)){ + if (!isValidEntry(approvedPackageOrComponent, userId)){ approved.removeAt(k); - if (DEBUG) { - Slog.v(TAG, "Removing " + approvedPackageOrComponent - + " from approved list; no matching services found"); - } + Slog.v(TAG, "Removing " + approvedPackageOrComponent + + " from approved list; no matching services found"); } else { if (DEBUG) { Slog.v(TAG, "Keeping " + approvedPackageOrComponent @@ -669,6 +729,10 @@ abstract public class ManagedServices { } } + protected boolean isValidEntry(String packageOrComponent, int userId) { + return hasMatchingServices(packageOrComponent, userId); + } + private boolean hasMatchingServices(String packageOrComponent, int userId) { if (!TextUtils.isEmpty(packageOrComponent)) { final String packageName = getPackageName(packageOrComponent); @@ -821,8 +885,7 @@ abstract public class ManagedServices { if (name.equals(info.component) && info.userid == userid) { // cut old connections - if (DEBUG) Slog.v(TAG, " disconnecting old " + getCaption() + ": " - + info.service); + Slog.v(TAG, " disconnecting old " + getCaption() + ": " + info.service); removeServiceLocked(i); if (info.connection != null) { mContext.unbindService(info.connection); @@ -850,7 +913,7 @@ abstract public class ManagedServices { appInfo != null ? appInfo.targetSdkVersion : Build.VERSION_CODES.BASE; try { - if (DEBUG) Slog.v(TAG, "binding: " + intent); + Slog.v(TAG, "binding: " + intent); ServiceConnection serviceConnection = new ServiceConnection() { IInterface mService; @@ -908,8 +971,7 @@ abstract public class ManagedServices { final int N = mServices.size(); for (int i = N - 1; i >= 0; i--) { final ManagedServiceInfo info = mServices.get(i); - if (name.equals(info.component) - && info.userid == userid) { + if (name.equals(info.component) && info.userid == userid) { removeServiceLocked(i); if (info.connection != null) { try { @@ -936,9 +998,8 @@ abstract public class ManagedServices { final int N = mServices.size(); for (int i = N - 1; i >= 0; i--) { final ManagedServiceInfo info = mServices.get(i); - if (info.service.asBinder() == service.asBinder() - && info.userid == userid) { - if (DEBUG) Slog.d(TAG, "Removing active service " + info.component); + if (info.service.asBinder() == service.asBinder() && info.userid == userid) { + Slog.d(TAG, "Removing active service " + info.component); serviceInfo = removeServiceLocked(i); } } @@ -1026,6 +1087,16 @@ abstract public class ManagedServices { .append(']').toString(); } + public void toProto(ProtoOutputStream proto, ManagedServices host) { + final long cToken = proto.start(ManagedServiceInfoProto.COMPONENT); + component.toProto(proto); + proto.end(cToken); + proto.write(ManagedServiceInfoProto.USER_ID, userid); + proto.write(ManagedServiceInfoProto.SERVICE, service.getClass().getName()); + proto.write(ManagedServiceInfoProto.IS_SYSTEM, isSystem); + proto.write(ManagedServiceInfoProto.IS_GUEST, isGuest(host)); + } + public boolean enabledAndUserMatches(int nid) { if (!isEnabledForCurrentProfiles()) { return false; diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index a693e9747db2..aa6b3a3ac22c 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -16,8 +16,10 @@ package com.android.server.notification; +import static android.app.NotificationManager.IMPORTANCE_LOW; import static android.app.NotificationManager.IMPORTANCE_MIN; import static android.app.NotificationManager.IMPORTANCE_NONE; +import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; import static android.content.pm.PackageManager.FEATURE_LEANBACK; import static android.content.pm.PackageManager.FEATURE_TELEVISION; import static android.content.pm.PackageManager.PERMISSION_GRANTED; @@ -125,6 +127,7 @@ import android.service.notification.Condition; import android.service.notification.IConditionProvider; import android.service.notification.INotificationListener; import android.service.notification.IStatusBarNotificationHolder; +import android.service.notification.ListenersDisablingEffectsProto; import android.service.notification.NotificationAssistantService; import android.service.notification.NotificationListenerService; import android.service.notification.NotificationRankingUpdate; @@ -157,6 +160,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.internal.os.BackgroundThread; import com.android.internal.statusbar.NotificationVisibility; import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; @@ -754,9 +758,12 @@ public class NotificationManagerService extends SystemService { if (r != null) { r.stats.onExpansionChanged(userAction, expanded); final long now = System.currentTimeMillis(); - MetricsLogger.action(r.getLogMaker(now) - .setCategory(MetricsEvent.NOTIFICATION_ITEM) - .setType(MetricsEvent.TYPE_DETAIL)); + if (userAction) { + MetricsLogger.action(r.getLogMaker(now) + .setCategory(MetricsEvent.NOTIFICATION_ITEM) + .setType(expanded ? MetricsEvent.TYPE_DETAIL + : MetricsEvent.TYPE_COLLAPSE)); + } EventLogTags.writeNotificationExpansion(key, userAction ? 1 : 0, expanded ? 1 : 0, r.getLifespanMs(now), r.getFreshnessMs(now), r.getExposureMs(now)); @@ -984,12 +991,17 @@ public class NotificationManagerService extends SystemService { final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); if (userId != USER_NULL) { mUserProfiles.updateCache(context); - readDefaultApprovedServices(userId); + if (!mUserProfiles.isManagedProfile(userId)) { + readDefaultApprovedServices(userId); + } } } else if (action.equals(Intent.ACTION_USER_REMOVED)) { final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); mZenModeHelper.onUserRemoved(user); mRankingHelper.onUserRemoved(user); + mListeners.onUserRemoved(user); + mConditionProviders.onUserRemoved(user); + mAssistants.onUserRemoved(user); savePolicyFile(); } else if (action.equals(Intent.ACTION_USER_UNLOCKED)) { final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); @@ -1133,6 +1145,12 @@ public class NotificationManagerService extends SystemService { } @VisibleForTesting + NotificationRecord getNotificationRecord(String key) { + return mNotificationsByKey.get(key); + } + + + @VisibleForTesting void setSystemReady(boolean systemReady) { mSystemReady = systemReady; } @@ -1207,7 +1225,7 @@ public class NotificationManagerService extends SystemService { mUsageStats = usageStats; mRankingHandler = new RankingHandlerWorker(mRankingThread.getLooper()); mRankingHelper = new RankingHelper(getContext(), - getContext().getPackageManager(), + mPackageManagerClient, mRankingHandler, mUsageStats, extractorNames); @@ -1454,10 +1472,20 @@ public class NotificationManagerService extends SystemService { if (channel.getImportance() == NotificationManager.IMPORTANCE_NONE) { // cancel cancelAllNotificationsInt(MY_UID, MY_PID, pkg, channel.getId(), 0, 0, true, - UserHandle.getUserId(Binder.getCallingUid()), REASON_CHANNEL_BANNED, + UserHandle.getUserId(uid), REASON_CHANNEL_BANNED, null); + if (isUidSystemOrPhone(uid)) { + int[] profileIds = mUserProfiles.getCurrentProfileIds(); + int N = profileIds.length; + for (int i = 0; i < N; i++) { + int profileId = profileIds[i]; + cancelAllNotificationsInt(MY_UID, MY_PID, pkg, channel.getId(), 0, 0, true, + profileId, REASON_CHANNEL_BANNED, + null); + } + } } - mRankingHelper.updateNotificationChannel(pkg, uid, channel); + mRankingHelper.updateNotificationChannel(pkg, uid, channel, true); if (!fromListener) { final NotificationChannel modifiedChannel = @@ -1470,6 +1498,19 @@ public class NotificationManagerService extends SystemService { savePolicyFile(); } + private void createNotificationChannelGroup(String pkg, int uid, NotificationChannelGroup group, + boolean fromApp, boolean fromListener) { + Preconditions.checkNotNull(group); + Preconditions.checkNotNull(pkg); + mRankingHelper.createNotificationChannelGroup(pkg, uid, group, + fromApp); + if (!fromListener) { + mListeners.notifyNotificationChannelGroupChanged(pkg, + UserHandle.of(UserHandle.getCallingUserId()), group, + NOTIFICATION_CHANNEL_OR_GROUP_ADDED); + } + } + private ArrayList<ComponentName> getSuppressors() { ArrayList<ComponentName> names = new ArrayList<ComponentName>(); for (int i = mListenersDisablingEffects.size() - 1; i >= 0; --i) { @@ -1757,6 +1798,14 @@ public class NotificationManagerService extends SystemService { } @Override + public void updateNotificationChannelGroupForPackage(String pkg, int uid, + NotificationChannelGroup group) throws RemoteException { + enforceSystemOrSystemUI("Caller not system or systemui"); + createNotificationChannelGroup(pkg, uid, group, false, false); + savePolicyFile(); + } + + @Override public void createNotificationChannelGroups(String pkg, ParceledListSlice channelGroupList) throws RemoteException { checkCallerIsSystemOrSameApp(pkg); @@ -1764,12 +1813,7 @@ public class NotificationManagerService extends SystemService { final int groupSize = groups.size(); for (int i = 0; i < groupSize; i++) { final NotificationChannelGroup group = groups.get(i); - Preconditions.checkNotNull(group, "group in list is null"); - mRankingHelper.createNotificationChannelGroup(pkg, Binder.getCallingUid(), group, - true /* fromTargetApp */); - mListeners.notifyNotificationChannelGroupChanged(pkg, - UserHandle.of(UserHandle.getCallingUserId()), group, - NOTIFICATION_CHANNEL_OR_GROUP_ADDED); + createNotificationChannelGroup(pkg, Binder.getCallingUid(), group, true, false); } savePolicyFile(); } @@ -1915,6 +1959,14 @@ public class NotificationManagerService extends SystemService { } @Override + public NotificationChannelGroup getPopulatedNotificationChannelGroupForPackage( + String pkg, int uid, String groupId, boolean includeDeleted) { + enforceSystemOrSystemUI("getPopulatedNotificationChannelGroupForPackage"); + return mRankingHelper.getNotificationChannelGroupWithChannels( + pkg, uid, groupId, includeDeleted); + } + + @Override public NotificationChannelGroup getNotificationChannelGroupForPackage( String groupId, String pkg, int uid) { enforceSystemOrSystemUI("getNotificationChannelGroupForPackage"); @@ -2730,17 +2782,22 @@ public class NotificationManagerService extends SystemService { public void setNotificationPolicyAccessGranted(String pkg, boolean granted) throws RemoteException { checkCallerIsSystemOrShell(); - if (!mActivityManager.isLowRamDevice()) { - mConditionProviders.setPackageOrComponentEnabled( - pkg, getCallingUserHandle().getIdentifier(), true, granted); + final long identity = Binder.clearCallingIdentity(); + try { + if (!mActivityManager.isLowRamDevice()) { + mConditionProviders.setPackageOrComponentEnabled( + pkg, getCallingUserHandle().getIdentifier(), true, granted); - getContext().sendBroadcastAsUser(new Intent( - NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) - .setPackage(pkg) - .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), - getCallingUserHandle(), null); + getContext().sendBroadcastAsUser(new Intent( + NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) + .setPackage(pkg) + .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), + getCallingUserHandle(), null); - savePolicyFile(); + savePolicyFile(); + } + } finally { + Binder.restoreCallingIdentity(identity); } } @@ -2822,19 +2879,25 @@ public class NotificationManagerService extends SystemService { boolean granted) throws RemoteException { Preconditions.checkNotNull(listener); checkCallerIsSystemOrShell(); - if (!mActivityManager.isLowRamDevice()) { - mConditionProviders.setPackageOrComponentEnabled(listener.flattenToString(), - userId, false, granted); - mListeners.setPackageOrComponentEnabled(listener.flattenToString(), - userId, true, granted); - - getContext().sendBroadcastAsUser(new Intent( - NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) - .setPackage(listener.getPackageName()) - .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), - getCallingUserHandle(), null); + final long identity = Binder.clearCallingIdentity(); + try { + if (!mActivityManager.isLowRamDevice()) { + mConditionProviders.setPackageOrComponentEnabled(listener.flattenToString(), + userId, false, granted); + mListeners.setPackageOrComponentEnabled(listener.flattenToString(), + userId, true, granted); - savePolicyFile(); + getContext().sendBroadcastAsUser(new Intent( + NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) + + .setPackage(listener.getPackageName()) + .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), + getCallingUserHandle(), null); + + savePolicyFile(); + } + } finally { + Binder.restoreCallingIdentity(identity); } } @@ -2843,19 +2906,24 @@ public class NotificationManagerService extends SystemService { int userId, boolean granted) throws RemoteException { Preconditions.checkNotNull(assistant); checkCallerIsSystemOrShell(); - if (!mActivityManager.isLowRamDevice()) { - mConditionProviders.setPackageOrComponentEnabled(assistant.flattenToString(), - userId, false, granted); - mAssistants.setPackageOrComponentEnabled(assistant.flattenToString(), - userId, true, granted); - - getContext().sendBroadcastAsUser(new Intent( - NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) - .setPackage(assistant.getPackageName()) - .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), - getCallingUserHandle(), null); + final long identity = Binder.clearCallingIdentity(); + try { + if (!mActivityManager.isLowRamDevice()) { + mConditionProviders.setPackageOrComponentEnabled(assistant.flattenToString(), + userId, false, granted); + mAssistants.setPackageOrComponentEnabled(assistant.flattenToString(), + userId, true, granted); + + getContext().sendBroadcastAsUser(new Intent( + NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) + .setPackage(assistant.getPackageName()) + .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), + getCallingUserHandle(), null); - savePolicyFile(); + savePolicyFile(); + } + } finally { + Binder.restoreCallingIdentity(identity); } } @@ -2917,6 +2985,17 @@ public class NotificationManagerService extends SystemService { } @Override + public void updateNotificationChannelGroupFromPrivilegedListener( + INotificationListener token, String pkg, UserHandle user, + NotificationChannelGroup group) throws RemoteException { + Preconditions.checkNotNull(user); + verifyPrivilegedListener(token, user); + createNotificationChannelGroup( + pkg, getUidForPackageAndUser(pkg, user), group, false, true); + savePolicyFile(); + } + + @Override public void updateNotificationChannelFromPrivilegedListener(INotificationListener token, String pkg, UserHandle user, NotificationChannel channel) throws RemoteException { Preconditions.checkNotNull(channel); @@ -3169,14 +3248,47 @@ public class NotificationManagerService extends SystemService { } } proto.end(records); - } - long zenLog = proto.start(NotificationServiceDumpProto.ZEN); - mZenModeHelper.dump(proto); - for (ComponentName suppressor : mEffectsSuppressors) { - proto.write(ZenModeProto.SUPPRESSORS, suppressor.toString()); + long zenLog = proto.start(NotificationServiceDumpProto.ZEN); + mZenModeHelper.dump(proto); + for (ComponentName suppressor : mEffectsSuppressors) { + proto.write(ZenModeProto.SUPPRESSORS, suppressor.toString()); + } + proto.end(zenLog); + + long listenersToken = proto.start(NotificationServiceDumpProto.NOTIFICATION_LISTENERS); + mListeners.dump(proto, filter); + proto.end(listenersToken); + + proto.write(NotificationServiceDumpProto.LISTENER_HINTS, mListenerHints); + + for (int i = 0; i < mListenersDisablingEffects.size(); ++i) { + long effectsToken = proto.start( + NotificationServiceDumpProto.LISTENERS_DISABLING_EFFECTS); + + proto.write( + ListenersDisablingEffectsProto.HINT, mListenersDisablingEffects.keyAt(i)); + final ArraySet<ManagedServiceInfo> listeners = + mListenersDisablingEffects.valueAt(i); + for (int j = 0; j < listeners.size(); j++) { + final ManagedServiceInfo listener = listeners.valueAt(i); + listenersToken = proto.start(ListenersDisablingEffectsProto.LISTENERS); + listener.toProto(proto, null); + proto.end(listenersToken); + } + + proto.end(effectsToken); + } + + long assistantsToken = proto.start( + NotificationServiceDumpProto.NOTIFICATION_ASSISTANTS); + mAssistants.dump(proto, filter); + proto.end(assistantsToken); + + long conditionsToken = proto.start(NotificationServiceDumpProto.CONDITION_PROVIDERS); + mConditionProviders.dump(proto, filter); + proto.end(conditionsToken); } - proto.end(zenLog); proto.flush(); } @@ -3449,6 +3561,21 @@ public class NotificationManagerService extends SystemService { user, null, System.currentTimeMillis()); final NotificationRecord r = new NotificationRecord(getContext(), n, channel); + if ((notification.flags & Notification.FLAG_FOREGROUND_SERVICE) != 0 + && (channel.getUserLockedFields() & NotificationChannel.USER_LOCKED_IMPORTANCE) == 0 + && (r.getImportance() == IMPORTANCE_MIN || r.getImportance() == IMPORTANCE_NONE)) { + // Increase the importance of foreground service notifications unless the user had an + // opinion otherwise + if (TextUtils.isEmpty(channelId) + || NotificationChannel.DEFAULT_CHANNEL_ID.equals(channelId)) { + r.setImportance(IMPORTANCE_LOW, "Bumped for foreground service"); + } else { + channel.setImportance(IMPORTANCE_LOW); + mRankingHelper.updateNotificationChannel(pkg, notificationUid, channel, false); + r.updateNotificationChannel(channel); + } + } + if (!checkDisqualifyingFeatures(userId, notificationUid, id, tag, r, r.sbn.getOverrideGroupKey() != null)) { return; @@ -3612,9 +3739,10 @@ public class NotificationManagerService extends SystemService { usageStats.registerSuspendedByAdmin(r); return isPackageSuspended; } - final boolean isBlocked = - mRankingHelper.getImportance(pkg, callingUid) == NotificationManager.IMPORTANCE_NONE + mRankingHelper.isGroupBlocked(pkg, callingUid, r.getChannel().getGroup()) + || mRankingHelper.getImportance(pkg, callingUid) + == NotificationManager.IMPORTANCE_NONE || r.getChannel().getImportance() == NotificationManager.IMPORTANCE_NONE; if (isBlocked) { Slog.e(TAG, "Suppressing notification from package by user request."); @@ -5567,13 +5695,10 @@ public class NotificationManagerService extends SystemService { continue; } - mHandler.post(new Runnable() { - @Override - public void run() { - if (hasCompanionDevice(serviceInfo)) { - notifyNotificationChannelChanged( - serviceInfo, pkg, user, channel, modificationType); - } + BackgroundThread.getHandler().post(() -> { + if (hasCompanionDevice(serviceInfo)) { + notifyNotificationChannelChanged( + serviceInfo, pkg, user, channel, modificationType); } }); } @@ -5590,13 +5715,10 @@ public class NotificationManagerService extends SystemService { continue; } - mHandler.post(new Runnable() { - @Override - public void run() { - if (hasCompanionDevice(serviceInfo)) { - notifyNotificationChannelGroupChanged( - serviceInfo, pkg, user, group, modificationType); - } + BackgroundThread.getHandler().post(() -> { + if (hasCompanionDevice(serviceInfo)) { + notifyNotificationChannelGroupChanged( + serviceInfo, pkg, user, group, modificationType); } }); } diff --git a/services/core/java/com/android/server/notification/NotificationUsageStats.java b/services/core/java/com/android/server/notification/NotificationUsageStats.java index c8f4d31c3726..e40dad6e83f1 100644 --- a/services/core/java/com/android/server/notification/NotificationUsageStats.java +++ b/services/core/java/com/android/server/notification/NotificationUsageStats.java @@ -1059,6 +1059,9 @@ public class NotificationUsageStats { private static final int EVENT_TYPE_CLICK = 2; private static final int EVENT_TYPE_REMOVE = 3; private static final int EVENT_TYPE_DISMISS = 4; + + private static final int IDLE_CONNECTION_TIMEOUT_MS = 30000; + private static long sLastPruneMs; private static long sNumWrites; @@ -1141,6 +1144,12 @@ public class NotificationUsageStats { } @Override + public void onConfigure(SQLiteDatabase db) { + // Memory optimization - close idle connections after 30s of inactivity + setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS); + } + + @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion != newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TAB_LOG); diff --git a/services/core/java/com/android/server/notification/RankingConfig.java b/services/core/java/com/android/server/notification/RankingConfig.java index 36da04dfc3c6..b9c0d90741f3 100644 --- a/services/core/java/com/android/server/notification/RankingConfig.java +++ b/services/core/java/com/android/server/notification/RankingConfig.java @@ -29,6 +29,7 @@ public interface RankingConfig { void setShowBadge(String packageName, int uid, boolean showBadge); boolean canShowBadge(String packageName, int uid); boolean badgingEnabled(UserHandle userHandle); + boolean isGroupBlocked(String packageName, int uid, String groupId); Collection<NotificationChannelGroup> getNotificationChannelGroups(String pkg, int uid); @@ -38,7 +39,7 @@ public interface RankingConfig { int uid, boolean includeDeleted); void createNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromTargetApp); - void updateNotificationChannel(String pkg, int uid, NotificationChannel channel); + void updateNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromUser); NotificationChannel getNotificationChannel(String pkg, int uid, String channelId, boolean includeDeleted); void deleteNotificationChannel(String pkg, int uid, String channelId); void permanentlyDeleteNotificationChannel(String pkg, int uid, String channelId); diff --git a/services/core/java/com/android/server/notification/RankingHelper.java b/services/core/java/com/android/server/notification/RankingHelper.java index 3386fe832e0f..fea2464ba5b8 100644 --- a/services/core/java/com/android/server/notification/RankingHelper.java +++ b/services/core/java/com/android/server/notification/RankingHelper.java @@ -215,6 +215,7 @@ public class RankingHelper implements RankingConfig { if (!TextUtils.isEmpty(id)) { NotificationChannelGroup group = new NotificationChannelGroup(id, groupName); + group.populateFromXml(parser); r.groups.put(id, group); } } @@ -493,6 +494,19 @@ public class RankingHelper implements RankingConfig { updateConfig(); } + @Override + public boolean isGroupBlocked(String packageName, int uid, String groupId) { + if (groupId == null) { + return false; + } + Record r = getOrCreateRecord(packageName, uid); + NotificationChannelGroup group = r.groups.get(groupId); + if (group == null) { + return false; + } + return group.isBlocked(); + } + int getPackagePriority(String pkg, int uid) { return getOrCreateRecord(pkg, uid).priority; } @@ -514,9 +528,16 @@ public class RankingHelper implements RankingConfig { } final NotificationChannelGroup oldGroup = r.groups.get(group.getId()); if (!group.equals(oldGroup)) { - // will log for new entries as well as name changes + // will log for new entries as well as name/description changes MetricsLogger.action(getChannelGroupLog(group.getId(), pkg)); } + if (oldGroup != null) { + group.setChannels(oldGroup.getChannels()); + + if (fromTargetApp) { + group.setBlocked(oldGroup.isBlocked()); + } + } r.groups.put(group.getId(), group); } @@ -552,6 +573,9 @@ public class RankingHelper implements RankingConfig { existing.setName(channel.getName().toString()); existing.setDescription(channel.getDescription()); existing.setBlockableSystem(channel.isBlockableSystem()); + if (existing.getGroup() == null) { + existing.setGroup(channel.getGroup()); + } // Apps are allowed to downgrade channel importance if the user has not changed any // fields on this channel yet. @@ -589,7 +613,8 @@ public class RankingHelper implements RankingConfig { } @Override - public void updateNotificationChannel(String pkg, int uid, NotificationChannel updatedChannel) { + public void updateNotificationChannel(String pkg, int uid, NotificationChannel updatedChannel, + boolean fromUser) { Preconditions.checkNotNull(updatedChannel); Preconditions.checkNotNull(updatedChannel.getId()); Record r = getOrCreateRecord(pkg, uid); @@ -603,7 +628,11 @@ public class RankingHelper implements RankingConfig { if (updatedChannel.getLockscreenVisibility() == Notification.VISIBILITY_PUBLIC) { updatedChannel.setLockscreenVisibility(Ranking.VISIBILITY_NO_OVERRIDE); } - lockFieldsForUpdate(channel, updatedChannel); + updatedChannel.unlockFields(updatedChannel.getUserLockedFields()); + updatedChannel.lockFields(channel.getUserLockedFields()); + if (fromUser) { + lockFieldsForUpdate(channel, updatedChannel); + } r.channels.put(updatedChannel.getId(), updatedChannel); if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(updatedChannel.getId())) { @@ -684,6 +713,27 @@ public class RankingHelper implements RankingConfig { } } + public NotificationChannelGroup getNotificationChannelGroupWithChannels(String pkg, + int uid, String groupId, boolean includeDeleted) { + Preconditions.checkNotNull(pkg); + Record r = getRecord(pkg, uid); + if (r == null || groupId == null || !r.groups.containsKey(groupId)) { + return null; + } + NotificationChannelGroup group = r.groups.get(groupId).clone(); + group.setChannels(new ArrayList<>()); + int N = r.channels.size(); + for (int i = 0; i < N; i++) { + final NotificationChannel nc = r.channels.valueAt(i); + if (includeDeleted || !nc.isDeleted()) { + if (groupId.equals(nc.getGroup())) { + group.addChannel(nc); + } + } + } + return group; + } + public NotificationChannelGroup getNotificationChannelGroup(String groupId, String pkg, int uid) { Preconditions.checkNotNull(pkg); @@ -710,6 +760,7 @@ public class RankingHelper implements RankingConfig { NotificationChannelGroup ncg = groups.get(nc.getGroup()); if (ncg == null) { ncg = r.groups.get(nc.getGroup()).clone(); + ncg.setChannels(new ArrayList<>()); groups.put(nc.getGroup(), ncg); } @@ -828,8 +879,6 @@ public class RankingHelper implements RankingConfig { @VisibleForTesting void lockFieldsForUpdate(NotificationChannel original, NotificationChannel update) { - update.unlockFields(update.getUserLockedFields()); - update.lockFields(original.getUserLockedFields()); if (original.canBypassDnd() != update.canBypassDnd()) { update.lockFields(NotificationChannel.USER_LOCKED_PRIORITY); } @@ -1174,7 +1223,7 @@ public class RankingHelper implements RankingConfig { changed |= oldValue != newValue; } if (changed) { - mRankingHandler.requestSort(); + updateConfig(); } } diff --git a/services/core/java/com/android/server/notification/ScheduleCalendar.java b/services/core/java/com/android/server/notification/ScheduleCalendar.java index 9e8b2e34520b..40230bd2ba82 100644 --- a/services/core/java/com/android/server/notification/ScheduleCalendar.java +++ b/services/core/java/com/android/server/notification/ScheduleCalendar.java @@ -42,7 +42,8 @@ public class ScheduleCalendar { public void maybeSetNextAlarm(long now, long nextAlarm) { if (mSchedule != null) { - if (mSchedule.exitAtAlarm && now > mSchedule.nextAlarm) { + if (mSchedule.exitAtAlarm + && (now > mSchedule.nextAlarm || nextAlarm < mSchedule.nextAlarm)) { mSchedule.nextAlarm = nextAlarm; } } diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 1a0b878613f4..ffdafc562673 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -465,6 +465,8 @@ public class ZenModeHelper { + "from " + currRule.getName() + " to " + defaultRule.name); // update default rule (if locale changed, name of rule will change) AutomaticZenRule defaultAutoRule = createAutomaticZenRule(defaultRule); + // ensure enabled state is carried over from current rule + defaultAutoRule.setEnabled(currRule.isEnabled()); updateAutomaticZenRule(ruleId, defaultAutoRule, "locale changed"); } @@ -735,6 +737,9 @@ public class ZenModeHelper { mConfig = config; mHandler.postApplyConfig(config, reason, setRingerMode); return true; + } catch (SecurityException e) { + Log.wtf(TAG, "Invalid rule in config", e); + return false; } finally { Binder.restoreCallingIdentity(identity); } diff --git a/services/core/java/com/android/server/oemlock/OemLockService.java b/services/core/java/com/android/server/oemlock/OemLockService.java index 5e19b134c4aa..40c663942e1d 100644 --- a/services/core/java/com/android/server/oemlock/OemLockService.java +++ b/services/core/java/com/android/server/oemlock/OemLockService.java @@ -149,8 +149,12 @@ public class OemLockService extends SystemService { final long token = Binder.clearCallingIdentity(); try { - if (!canUserAllowOemUnlock()) { - throw new SecurityException("User cannot allow OEM unlock"); + if (!isOemUnlockAllowedByAdmin()) { + throw new SecurityException("Admin does not allow OEM unlock"); + } + + if (!mOemLock.isOemUnlockAllowedByCarrier()) { + throw new SecurityException("Carrier does not allow OEM unlock"); } mOemLock.setOemUnlockAllowedByDevice(allowedByUser); @@ -172,18 +176,6 @@ public class OemLockService extends SystemService { } @Override - public boolean canUserAllowOemUnlock() { - enforceOemUnlockReadPermission(); - - final long token = Binder.clearCallingIdentity(); - try { - return isOemUnlockAllowedByAdmin() && mOemLock.isOemUnlockAllowedByCarrier(); - } finally { - Binder.restoreCallingIdentity(token); - } - } - - @Override public boolean isOemUnlockAllowed() { enforceOemUnlockReadPermission(); diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java index 04d91f882d04..807c343d0d10 100644 --- a/services/core/java/com/android/server/om/IdmapManager.java +++ b/services/core/java/com/android/server/om/IdmapManager.java @@ -92,26 +92,10 @@ class IdmapManager { return new File(getIdmapPath(overlayPackage.applicationInfo.getBaseCodePath())).isFile(); } - boolean isDangerous(@NonNull final PackageInfo overlayPackage, final int userId) { - // unused userId: see comment in OverlayManagerServiceImpl.removeIdmapIfPossible - return isDangerous(getIdmapPath(overlayPackage.applicationInfo.getBaseCodePath())); - } - private String getIdmapPath(@NonNull final String baseCodePath) { final StringBuilder sb = new StringBuilder("/data/resource-cache/"); sb.append(baseCodePath.substring(1).replace('/', '@')); sb.append("@idmap"); return sb.toString(); } - - private boolean isDangerous(@NonNull final String idmapPath) { - try (DataInputStream dis = new DataInputStream(new FileInputStream(idmapPath))) { - final int magic = dis.readInt(); - final int version = dis.readInt(); - final int dangerous = dis.readInt(); - return dangerous != 0; - } catch (IOException e) { - return true; - } - } } diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java index 415c9a9cba10..6d8cac0c661b 100644 --- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java +++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java @@ -342,8 +342,7 @@ public class BackgroundDexOptService extends JobService { DexoptOptions.DEXOPT_BOOT_COMPLETE | (downgrade ? DexoptOptions.DEXOPT_DOWNGRADE : 0); if (is_for_primary_dex) { - int result = pm.performDexOptWithStatus(new DexoptOptions(pkg, - PackageManagerService.REASON_BACKGROUND_DEXOPT, + int result = pm.performDexOptWithStatus(new DexoptOptions(pkg, reason, dexoptFlags)); success = result != PackageDexOptimizer.DEX_OPT_FAILED; if (result == PackageDexOptimizer.DEX_OPT_PERFORMED) { @@ -351,8 +350,7 @@ public class BackgroundDexOptService extends JobService { } } else { success = pm.performDexOpt(new DexoptOptions(pkg, - PackageManagerService.REASON_BACKGROUND_DEXOPT, - dexoptFlags | DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX)); + reason, dexoptFlags | DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX)); } if (success) { // Dexopt succeeded, remove package from the list of failing ones. diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java index b217677479cd..a3811baf2657 100644 --- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java @@ -18,6 +18,7 @@ package com.android.server.pm; import android.Manifest; import android.annotation.NonNull; +import android.app.ActivityManager; import android.app.DownloadManager; import android.app.admin.DevicePolicyManager; import android.companion.CompanionDeviceManager; @@ -582,6 +583,21 @@ final class DefaultPermissionGrantPolicy { } } + if (ActivityManager.isLowRamDeviceStatic()) { + // Allow voice search on low-ram devices + Intent globalSearchIntent = new Intent("android.search.action.GLOBAL_SEARCH"); + PackageParser.Package globalSearchPickerPackage = + getDefaultSystemHandlerActivityPackageLPr(globalSearchIntent, userId); + + if (globalSearchPickerPackage != null + && doesPackageSupportRuntimePermissions(globalSearchPickerPackage)) { + grantRuntimePermissionsLPw(globalSearchPickerPackage, + MICROPHONE_PERMISSIONS, true, userId); + grantRuntimePermissionsLPw(globalSearchPickerPackage, + LOCATION_PERMISSIONS, true, userId); + } + } + // Voice recognition Intent voiceRecoIntent = new Intent("android.speech.RecognitionService"); voiceRecoIntent.addCategory(Intent.CATEGORY_DEFAULT); @@ -624,14 +640,25 @@ final class DefaultPermissionGrantPolicy { grantRuntimePermissionsLPw(musicPackage, STORAGE_PERMISSIONS, userId); } + // Home + Intent homeIntent = new Intent(Intent.ACTION_MAIN); + homeIntent.addCategory(Intent.CATEGORY_HOME); + homeIntent.addCategory(Intent.CATEGORY_LAUNCHER_APP); + PackageParser.Package homePackage = getDefaultSystemHandlerActivityPackageLPr( + homeIntent, userId); + if (homePackage != null + && doesPackageSupportRuntimePermissions(homePackage)) { + grantRuntimePermissionsLPw(homePackage, LOCATION_PERMISSIONS, false, userId); + } + // Watches if (mService.hasSystemFeature(PackageManager.FEATURE_WATCH, 0)) { // Home application on watches - Intent homeIntent = new Intent(Intent.ACTION_MAIN); - homeIntent.addCategory(Intent.CATEGORY_HOME_MAIN); + Intent wearHomeIntent = new Intent(Intent.ACTION_MAIN); + wearHomeIntent.addCategory(Intent.CATEGORY_HOME_MAIN); PackageParser.Package wearHomePackage = getDefaultSystemHandlerActivityPackageLPr( - homeIntent, userId); + wearHomeIntent, userId); if (wearHomePackage != null && doesPackageSupportRuntimePermissions(wearHomePackage)) { diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java index da6e26e17122..6253857d1aa4 100644 --- a/services/core/java/com/android/server/pm/OtaDexoptService.java +++ b/services/core/java/com/android/server/pm/OtaDexoptService.java @@ -53,7 +53,8 @@ public class OtaDexoptService extends IOtaDexopt.Stub { private final static boolean DEBUG_DEXOPT = true; // The synthetic library dependencies denoting "no checks." - private final static String[] NO_LIBRARIES = new String[] { "&" }; + private final static String[] NO_LIBRARIES = + new String[] { PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK }; // The amount of "available" (free - low threshold) space necessary at the start of an OTA to // not bulk-delete unused apps' odex files. @@ -322,11 +323,6 @@ public class OtaDexoptService extends IOtaDexopt.Stub { new DexoptOptions(pkg.packageName, compilationReason, DexoptOptions.DEXOPT_BOOT_COMPLETE)); - mPackageManagerService.getDexManager().dexoptSecondaryDex( - new DexoptOptions(pkg.packageName, compilationReason, - DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX | - DexoptOptions.DEXOPT_BOOT_COMPLETE)); - return commands; } diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index 698d3871e3c5..4fafe34b3063 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -147,8 +147,13 @@ public class PackageDexOptimizer { // Get the class loader context dependencies. // For each code path in the package, this array contains the class loader context that // needs to be passed to dexopt in order to ensure correct optimizations. + boolean[] pathsWithCode = new boolean[paths.size()]; + pathsWithCode[0] = (pkg.applicationInfo.flags & ApplicationInfo.FLAG_HAS_CODE) != 0; + for (int i = 1; i < paths.size(); i++) { + pathsWithCode[i] = (pkg.splitFlags[i - 1] & ApplicationInfo.FLAG_HAS_CODE) != 0; + } String[] classLoaderContexts = DexoptUtils.getClassLoaderContexts( - pkg.applicationInfo, sharedLibraries); + pkg.applicationInfo, sharedLibraries, pathsWithCode); // Sanity check that we do not call dexopt with inconsistent data. if (paths.size() != classLoaderContexts.length) { @@ -164,10 +169,15 @@ public class PackageDexOptimizer { int result = DEX_OPT_SKIPPED; for (int i = 0; i < paths.size(); i++) { // Skip paths that have no code. - if ((i == 0 && (pkg.applicationInfo.flags & ApplicationInfo.FLAG_HAS_CODE) == 0) || - (i != 0 && (pkg.splitFlags[i - 1] & ApplicationInfo.FLAG_HAS_CODE) == 0)) { + if (!pathsWithCode[i]) { continue; } + if (classLoaderContexts[i] == null) { + throw new IllegalStateException("Inconsistent information in the " + + "package structure. A split is marked to contain code " + + "but has no dependency listed. Index=" + i + " path=" + paths.get(i)); + } + // Append shared libraries with split dependencies for this split. String path = paths.get(i); if (options.getSplitName() != null) { @@ -428,16 +438,7 @@ public class PackageDexOptimizer { PackageDexUsage.DexUseInfo dexUseInfo = e.getValue(); pw.println(dex); pw.increaseIndent(); - for (String isa : dexUseInfo.getLoaderIsas()) { - String status = null; - try { - status = DexFile.getDexFileStatus(path, isa); - } catch (IOException ioe) { - status = "[Exception]: " + ioe.getMessage(); - } - pw.println(isa + ": " + status); - } - + // TODO(calin): get the status of the oat file (needs installd call) pw.println("class loader context: " + dexUseInfo.getClassLoaderContext()); if (dexUseInfo.isUsedByOtherApps()) { pw.println("used be other apps: " + dexUseInfo.getLoadingPackages()); @@ -464,8 +465,9 @@ public class PackageDexOptimizer { } if (isProfileGuidedCompilerFilter(targetCompilerFilter) && isUsedByOtherApps) { - // If the dex files is used by other apps, we cannot use profile-guided compilation. - return getNonProfileGuidedCompilerFilter(targetCompilerFilter); + // If the dex files is used by other apps, apply the shared filter. + return PackageManagerServiceCompilerMapping.getCompilerFilterForReason( + PackageManagerService.REASON_SHARED); } return targetCompilerFilter; diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index c3b93b428cb5..1fa37b91b8e8 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -319,9 +319,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub { if (type == START_TAG) { final String tag = in.getName(); if (PackageInstallerSession.TAG_SESSION.equals(tag)) { - final PackageInstallerSession session = PackageInstallerSession. - readFromXml(in, mInternalCallback, mContext, mPm, - mInstallThread.getLooper(), mSessionsDir); + final PackageInstallerSession session; + try { + session = PackageInstallerSession.readFromXml(in, mInternalCallback, + mContext, mPm, mInstallThread.getLooper(), mSessionsDir); + } catch (Exception e) { + Slog.e(TAG, "Could not read session", e); + continue; + } + final long age = System.currentTimeMillis() - session.createdMillis; final boolean valid; diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 69db49b57bc6..ff6e5b3bab0c 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -88,6 +88,7 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.content.NativeLibraryHelper; import com.android.internal.content.PackageHelper; +import com.android.internal.os.SomeArgs; import com.android.internal.util.ArrayUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; @@ -118,6 +119,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private static final String REMOVE_SPLIT_MARKER_EXTENSION = ".removed"; private static final int MSG_COMMIT = 0; + private static final int MSG_ON_PACKAGE_INSTALLED = 1; /** XML constants used for persisting a session */ static final String TAG_SESSION = "session"; @@ -274,15 +276,36 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private final Handler.Callback mHandlerCallback = new Handler.Callback() { @Override public boolean handleMessage(Message msg) { - synchronized (mLock) { - try { - commitLocked(); - } catch (PackageManagerException e) { - final String completeMsg = ExceptionUtils.getCompleteMessage(e); - Slog.e(TAG, "Commit of session " + sessionId + " failed: " + completeMsg); - destroyInternal(); - dispatchSessionFinished(e.error, completeMsg, null); - } + switch (msg.what) { + case MSG_COMMIT: + synchronized (mLock) { + try { + commitLocked(); + } catch (PackageManagerException e) { + final String completeMsg = ExceptionUtils.getCompleteMessage(e); + Slog.e(TAG, + "Commit of session " + sessionId + " failed: " + completeMsg); + destroyInternal(); + dispatchSessionFinished(e.error, completeMsg, null); + } + } + + break; + case MSG_ON_PACKAGE_INSTALLED: + final SomeArgs args = (SomeArgs) msg.obj; + final String packageName = (String) args.arg1; + final String message = (String) args.arg2; + final Bundle extras = (Bundle) args.arg3; + final IPackageInstallObserver2 observer = (IPackageInstallObserver2) args.arg4; + final int returnCode = args.argi1; + args.recycle(); + + try { + observer.onPackageInstalled(packageName, returnCode, message, extras); + } catch (RemoteException ignored) { + } + + break; } return true; @@ -357,7 +380,17 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } mPrepared = prepared; - mSealed = sealed; + + if (sealed) { + synchronized (mLock) { + try { + sealAndValidateLocked(); + } catch (PackageManagerException | IOException e) { + destroyInternal(); + throw new IllegalArgumentException(e); + } + } + } final long identity = Binder.clearCallingIdentity(); try { @@ -673,11 +706,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { public void commit(@NonNull IntentSender statusReceiver, boolean forTransfer) { Preconditions.checkNotNull(statusReceiver); - // Cache package manager data without the lock held - final PackageInfo installedPkgInfo = mPm.getPackageInfo( - params.appPackageName, PackageManager.GET_SIGNATURES - | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId); - final boolean wasSealed; synchronized (mLock) { assertCallerIsOwnerOrRootLocked(); @@ -702,7 +730,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { wasSealed = mSealed; if (!mSealed) { try { - sealAndValidateLocked(installedPkgInfo); + sealAndValidateLocked(); + } catch (IOException e) { + throw new IllegalArgumentException(e); } catch (PackageManagerException e) { // Do now throw an exception here to stay compatible with O and older destroyInternal(); @@ -736,18 +766,33 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { * * <p>The session will be sealed after calling this method even if it failed. * - * @param pkgInfo The package info for {@link #params}.packagename + * @throws PackageManagerException if the session was sealed but something went wrong. If the + * session was sealed this is the only possible exception. */ - private void sealAndValidateLocked(@Nullable PackageInfo pkgInfo) - throws PackageManagerException { + private void sealAndValidateLocked() throws PackageManagerException, IOException { assertNoWriteFileTransfersOpenLocked(); + assertPreparedAndNotDestroyedLocked("sealing of session"); + + final PackageInfo pkgInfo = mPm.getPackageInfo( + params.appPackageName, PackageManager.GET_SIGNATURES + | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId); + + resolveStageDirLocked(); mSealed = true; // Verify that stage looks sane with respect to existing application. // This currently only ensures packageName, versionCode, and certificate // consistency. - validateInstallLocked(pkgInfo); + try { + validateInstallLocked(pkgInfo); + } catch (PackageManagerException e) { + throw e; + } catch (Throwable e) { + // Convert all exceptions into package manager exceptions as only those are handled + // in the code above + throw new PackageManagerException(e); + } // Read transfers from the original owner stay open, but as the session's data // cannot be modified anymore, there is no leak of information. @@ -768,11 +813,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { + "the " + Manifest.permission.INSTALL_PACKAGES + " permission"); } - // Cache package manager data without the lock held - final PackageInfo installedPkgInfo = mPm.getPackageInfo( - params.appPackageName, PackageManager.GET_SIGNATURES - | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId); - // Only install flags that can be verified by the app the session is transferred to are // allowed. The parameters can be read via PackageInstaller.SessionInfo. if (!params.areHiddenOptionsSet()) { @@ -784,8 +824,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { assertPreparedAndNotSealedLocked("transfer"); try { - sealAndValidateLocked(installedPkgInfo); + sealAndValidateLocked(); + } catch (IOException e) { + throw new IllegalStateException(e); } catch (PackageManagerException e) { + // Session is sealed but could not be verified, we need to destroy it + destroyInternal(); + dispatchSessionFinished(e.error, ExceptionUtils.getCompleteMessage(e), null); + throw new IllegalArgumentException("Package is not valid", e); } @@ -813,13 +859,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR, "Session not sealed"); } - try { - resolveStageDirLocked(); - } catch (IOException e) { - throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR, - "Failed to resolve stage location", e); - } - Preconditions.checkNotNull(mPackageName); Preconditions.checkNotNull(mSignatures); Preconditions.checkNotNull(mResolvedBaseFile); @@ -940,6 +979,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { mResolvedStagedFiles.clear(); mResolvedInheritedFiles.clear(); + try { + resolveStageDirLocked(); + } catch (IOException e) { + throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR, + "Failed to resolve stage location", e); + } + final File[] removedFiles = mResolvedStageDir.listFiles(sRemovedFilter); final List<String> removeSplitList = new ArrayList<>(); if (!ArrayUtils.isEmpty(removedFiles)) { @@ -1445,10 +1491,17 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } if (observer != null) { - try { - observer.onPackageInstalled(packageName, returnCode, msg, extras); - } catch (RemoteException ignored) { - } + // Execute observer.onPackageInstalled on different tread as we don't want callers + // inside the system server have to worry about catching the callbacks while they are + // calling into the session + final SomeArgs args = SomeArgs.obtain(); + args.arg1 = packageName; + args.arg2 = msg; + args.arg3 = extras; + args.arg4 = observer; + args.argi1 = returnCode; + + mHandler.obtainMessage(MSG_ON_PACKAGE_INSTALLED, args).sendToTarget(); } final boolean success = (returnCode == PackageManager.INSTALL_SUCCEEDED); @@ -1545,6 +1598,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { */ void write(@NonNull XmlSerializer out, @NonNull File sessionsDir) throws IOException { synchronized (mLock) { + if (mDestroyed) { + return; + } + out.startTag(null, TAG_SESSION); writeIntAttribute(out, ATTR_SESSION_ID, sessionId); diff --git a/services/core/java/com/android/server/pm/PackageManagerException.java b/services/core/java/com/android/server/pm/PackageManagerException.java index 0e3f17360e7b..0793b091265e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerException.java +++ b/services/core/java/com/android/server/pm/PackageManagerException.java @@ -40,6 +40,11 @@ public class PackageManagerException extends Exception { this.error = error; } + public PackageManagerException(Throwable e) { + super(e); + this.error = PackageManager.INSTALL_FAILED_INTERNAL_ERROR; + } + public static PackageManagerException from(PackageParserException e) throws PackageManagerException { throw new PackageManagerException(e.error, e.getMessage(), e.getCause()); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 87c0c02fa9c5..050d9f00071a 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -82,6 +82,7 @@ import static android.content.pm.PackageManager.MOVE_FAILED_OPERATION_PENDING; import static android.content.pm.PackageManager.MOVE_FAILED_SYSTEM_PACKAGE; import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.content.pm.PackageParser.PARSE_IS_OEM; import static android.content.pm.PackageParser.PARSE_IS_PRIVILEGED; import static android.content.pm.PackageParser.isApkFile; import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; @@ -577,8 +578,9 @@ public class PackageManagerService extends IPackageManager.Stub public static final int REASON_BACKGROUND_DEXOPT = 3; public static final int REASON_AB_OTA = 4; public static final int REASON_INACTIVE_PACKAGE_DOWNGRADE = 5; + public static final int REASON_SHARED = 6; - public static final int REASON_LAST = REASON_INACTIVE_PACKAGE_DOWNGRADE; + public static final int REASON_LAST = REASON_SHARED; /** All dangerous permission names in the same order as the events in MetricsEvent */ private static final List<String> ALL_DANGEROUS_PERMISSIONS = Arrays.asList( @@ -2650,7 +2652,8 @@ public class PackageManagerService extends IPackageManager.Stub final File oemAppDir = new File(Environment.getOemDirectory(), "app"); scanDirTracedLI(oemAppDir, mDefParseFlags | PackageParser.PARSE_IS_SYSTEM - | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags, 0); + | PackageParser.PARSE_IS_SYSTEM_DIR + | PackageParser.PARSE_IS_OEM, scanFlags, 0); // Prune any system packages that no longer exist. final List<String> possiblyDeletedUpdatedSystemApps = new ArrayList<>(); @@ -2711,8 +2714,14 @@ public class PackageManagerService extends IPackageManager.Stub // Actual deletion of code and data will be handled by later // reconciliation step } else { - final PackageSetting disabledPs = mSettings.getDisabledSystemPkgLPr(ps.name); - if (disabledPs.codePath == null || !disabledPs.codePath.exists()) { + // we still have a disabled system package, but, it still might have + // been removed. check the code path still exists and check there's + // still a package. the latter can happen if an OTA keeps the same + // code path, but, changes the package name. + final PackageSetting disabledPs = + mSettings.getDisabledSystemPkgLPr(ps.name); + if (disabledPs.codePath == null || !disabledPs.codePath.exists() + || disabledPs.pkg == null) { possiblyDeletedUpdatedSystemApps.add(ps.name); } } @@ -2814,7 +2823,8 @@ public class PackageManagerService extends IPackageManager.Stub | PackageParser.PARSE_IS_SYSTEM_DIR; } else if (FileUtils.contains(oemAppDir, scanFile)) { reparseFlags = PackageParser.PARSE_IS_SYSTEM - | PackageParser.PARSE_IS_SYSTEM_DIR; + | PackageParser.PARSE_IS_SYSTEM_DIR + | PackageParser.PARSE_IS_OEM; } else { Slog.e(TAG, "Ignoring unexpected fallback path " + scanFile); continue; @@ -8512,7 +8522,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } if (filterAppAccessLPr(ps, callingUid, userId)) { - return null; + continue; } final PackageInfo pi = generatePackageInfo(ps, flags, userId); if (pi != null) { @@ -8527,7 +8537,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } if (filterAppAccessLPr(ps, callingUid, userId)) { - return null; + continue; } final PackageInfo pi = generatePackageInfo((PackageSetting) p.mExtras, flags, userId); @@ -8639,7 +8649,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } if (filterAppAccessLPr(ps, callingUid, userId)) { - return null; + continue; } ai = PackageParser.generateApplicationInfo(ps.pkg, effectiveFlags, ps.readUserState(userId), userId); @@ -8665,7 +8675,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } if (filterAppAccessLPr(ps, callingUid, userId)) { - return null; + continue; } ApplicationInfo ai = PackageParser.generateApplicationInfo(p, flags, ps.readUserState(userId), userId); @@ -9339,6 +9349,13 @@ public class PackageManagerService extends IPackageManager.Stub } else { updatedPkg.pkgPrivateFlags &= ~ApplicationInfo.PRIVATE_FLAG_PRIVILEGED; } + // If new package is not located in "/oem" (e.g. due to an OTA), + // it needs to drop FLAG_OEM. + if (locationIsOem(scanFile)) { + updatedPkg.pkgPrivateFlags |= ApplicationInfo.PRIVATE_FLAG_OEM; + } else { + updatedPkg.pkgPrivateFlags &= ~ApplicationInfo.PRIVATE_FLAG_OEM; + } if (ps != null && !ps.codePath.equals(scanFile)) { // The path has changed from what was last scanned... check the @@ -9433,6 +9450,15 @@ public class PackageManagerService extends IPackageManager.Stub // throw an exception if we have an update to a system application, but, it's not more // recent than the package we've already scanned if (isUpdatedSystemPkg && !isUpdatedPkgBetter) { + // Set CPU Abis to application info. + if ((scanFlags & SCAN_FIRST_BOOT_OR_UPGRADE) != 0) { + final String cpuAbiOverride = deriveAbiOverride(pkg.cpuAbiOverride, updatedPkg); + derivePackageAbi(pkg, scanFile, cpuAbiOverride, false, mAppLib32InstallDir); + } else { + pkg.applicationInfo.primaryCpuAbi = updatedPkg.primaryCpuAbiString; + pkg.applicationInfo.secondaryCpuAbi = updatedPkg.secondaryCpuAbiString; + } + throw new PackageManagerException(Log.WARN, "Package " + ps.name + " at " + scanFile + " ignored: updated version " + ps.versionCode + " better than this " + pkg.mVersionCode); @@ -9448,6 +9474,12 @@ public class PackageManagerService extends IPackageManager.Stub if ((updatedPkg.pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0) { policyFlags |= PackageParser.PARSE_IS_PRIVILEGED; } + + // An updated OEM app will not have the PARSE_IS_OEM + // flag set initially + if ((updatedPkg.pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0) { + policyFlags |= PackageParser.PARSE_IS_OEM; + } } // Verify certificates against what was last scanned @@ -9788,19 +9820,6 @@ public class PackageManagerService extends IPackageManager.Stub compilerFilter, dexoptFlags)); - if (pkg.isSystemApp()) { - // Only dexopt shared secondary dex files belonging to system apps to not slow down - // too much boot after an OTA. - int secondaryDexoptFlags = dexoptFlags | - DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX | - DexoptOptions.DEXOPT_ONLY_SHARED_DEX; - mDexManager.dexoptSecondaryDex(new DexoptOptions( - pkg.packageName, - compilerFilter, - secondaryDexoptFlags)); - } - - // TODO(shubhamajmera): Record secondary dexopt stats. switch (primaryDexOptStaus) { case PackageDexOptimizer.DEX_OPT_PERFORMED: numberOfPackagesOptimized++; @@ -9835,14 +9854,18 @@ public class PackageManagerService extends IPackageManager.Stub return; } } - final PackageParser.Package p = mPackages.get(packageName); - if (p == null) { - return; - } - p.mLastPackageUsageTimeInMills[reason] = System.currentTimeMillis(); + notifyPackageUseLocked(packageName, reason); } } + private void notifyPackageUseLocked(String packageName, int reason) { + final PackageParser.Package p = mPackages.get(packageName); + if (p == null) { + return; + } + p.mLastPackageUsageTimeInMills[reason] = System.currentTimeMillis(); + } + @Override public void notifyDexLoad(String loadingPackageName, List<String> classLoaderNames, List<String> classPaths, String loaderIsa) { @@ -11164,6 +11187,10 @@ public class PackageManagerService extends IPackageManager.Stub pkg.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_PRIVILEGED; } + if ((policyFlags&PackageParser.PARSE_IS_OEM) != 0) { + pkg.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_OEM; + } + if (!isSystemApp(pkg)) { // Only system apps can use these features. pkg.mOriginalPackages = null; @@ -11385,6 +11412,10 @@ public class PackageManagerService extends IPackageManager.Stub + " but expected at " + known.codePathString + "; ignoring."); } + } else { + throw new PackageManagerException(INSTALL_FAILED_INVALID_INSTALL_LOCATION, + "Application package " + pkg.packageName + + " not found; ignoring."); } } } @@ -13231,6 +13262,8 @@ public class PackageManagerService extends IPackageManager.Stub private boolean grantSignaturePermission(String perm, PackageParser.Package pkg, BasePermission bp, PermissionsState origPermissions) { + boolean oemPermission = (bp.protectionLevel + & PermissionInfo.PROTECTION_FLAG_OEM) != 0; boolean privilegedPermission = (bp.protectionLevel & PermissionInfo.PROTECTION_FLAG_PRIVILEGED) != 0; boolean privappPermissionsDisable = @@ -13268,9 +13301,9 @@ public class PackageManagerService extends IPackageManager.Stub == PackageManager.SIGNATURE_MATCH) || (compareSignatures(mPlatformPackage.mSignatures, pkg.mSignatures) == PackageManager.SIGNATURE_MATCH); - if (!allowed && privilegedPermission) { + if (!allowed && (privilegedPermission || oemPermission)) { if (isSystemApp(pkg)) { - // For updated system applications, a system permission + // For updated system applications, a privileged/oem permission // is granted only if it had been defined by the original application. if (pkg.isUpdatedSystemApp()) { final PackageSetting sysPs = mSettings @@ -13279,7 +13312,9 @@ public class PackageManagerService extends IPackageManager.Stub // If the original was granted this permission, we take // that grant decision as read and propagate it to the // update. - if (sysPs.isPrivileged()) { + if ((privilegedPermission && sysPs.isPrivileged()) + || (oemPermission && sysPs.isOem() + && canGrantOemPermission(sysPs, perm))) { allowed = true; } } else { @@ -13289,32 +13324,39 @@ public class PackageManagerService extends IPackageManager.Stub // before. In this case we do want to allow the app to // now get the new permission if the ancestral apk is // privileged to get it. - if (sysPs != null && sysPs.pkg != null && sysPs.isPrivileged()) { - // TODO(gboyer): This is the same as isPackageRequestingPermission(). - for (int j = 0; j < sysPs.pkg.requestedPermissions.size(); j++) { - if (perm.equals(sysPs.pkg.requestedPermissions.get(j))) { - allowed = true; - break; - } - } + if (sysPs != null && sysPs.pkg != null + && isPackageRequestingPermission(sysPs.pkg, perm) + && ((privilegedPermission && sysPs.isPrivileged()) + || (oemPermission && sysPs.isOem() + && canGrantOemPermission(sysPs, perm)))) { + allowed = true; } // Also if a privileged parent package on the system image or any of - // its children requested a privileged permission, the updated child + // its children requested a privileged/oem permission, the updated child // packages can also get the permission. if (pkg.parentPackage != null) { final PackageSetting disabledSysParentPs = mSettings .getDisabledSystemPkgLPr(pkg.parentPackage.packageName); - if (disabledSysParentPs != null && disabledSysParentPs.pkg != null - && disabledSysParentPs.isPrivileged()) { - if (isPackageRequestingPermission(disabledSysParentPs.pkg, perm)) { + final PackageParser.Package disabledSysParentPkg = + (disabledSysParentPs == null || disabledSysParentPs.pkg == null) + ? null : disabledSysParentPs.pkg; + if (disabledSysParentPkg != null + && ((privilegedPermission && disabledSysParentPs.isPrivileged()) + || (oemPermission && disabledSysParentPs.isOem()))) { + if (isPackageRequestingPermission(disabledSysParentPkg, perm) + && canGrantOemPermission(disabledSysParentPs, perm)) { allowed = true; - } else if (disabledSysParentPs.pkg.childPackages != null) { - final int count = disabledSysParentPs.pkg.childPackages.size(); + } else if (disabledSysParentPkg.childPackages != null) { + final int count = disabledSysParentPkg.childPackages.size(); for (int i = 0; i < count; i++) { - PackageParser.Package disabledSysChildPkg = - disabledSysParentPs.pkg.childPackages.get(i); - if (isPackageRequestingPermission(disabledSysChildPkg, - perm)) { + final PackageParser.Package disabledSysChildPkg = + disabledSysParentPkg.childPackages.get(i); + final PackageSetting disabledSysChildPs = + mSettings.getDisabledSystemPkgLPr( + disabledSysChildPkg.packageName); + if (isPackageRequestingPermission(disabledSysChildPkg, perm) + && canGrantOemPermission( + disabledSysChildPs, perm)) { allowed = true; break; } @@ -13324,7 +13366,10 @@ public class PackageManagerService extends IPackageManager.Stub } } } else { - allowed = isPrivilegedApp(pkg); + allowed = (privilegedPermission && isPrivilegedApp(pkg)) + || (oemPermission && isOemApp(pkg) + && canGrantOemPermission( + mSettings.getPackageLPr(pkg.packageName), perm)); } } } @@ -13371,6 +13416,20 @@ public class PackageManagerService extends IPackageManager.Stub return allowed; } + private static boolean canGrantOemPermission(PackageSetting ps, String permission) { + if (!ps.isOem()) { + return false; + } + // all oem permissions must explicitly be granted or denied + final Boolean granted = + SystemConfig.getInstance().getOemPermissions(ps.name).get(permission); + if (granted == null) { + throw new IllegalStateException("OEM permission" + permission + " requested by package " + + ps.name + " must be explicitly declared granted or not"); + } + return Boolean.TRUE == granted; + } + private boolean isPackageRequestingPermission(PackageParser.Package pkg, String permission) { final int permCount = pkg.requestedPermissions.size(); for (int j = 0; j < permCount; j++) { @@ -17764,13 +17823,17 @@ public class PackageManagerService extends IPackageManager.Stub boolean sysPkg = (isSystemApp(oldPackage)); if (sysPkg) { - // Set the system/privileged flags as needed + // Set the system/privileged/oem flags as needed final boolean privileged = (oldPackage.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0; + final boolean oem = + (oldPackage.applicationInfo.privateFlags + & ApplicationInfo.PRIVATE_FLAG_OEM) != 0; final int systemPolicyFlags = policyFlags | PackageParser.PARSE_IS_SYSTEM - | (privileged ? PackageParser.PARSE_IS_PRIVILEGED : 0); + | (privileged ? PARSE_IS_PRIVILEGED : 0) + | (oem ? PARSE_IS_OEM : 0); replaceSystemPackageLIF(oldPackage, pkg, systemPolicyFlags, scanFlags, user, allUsers, installerPackageName, res, installReason); @@ -18621,6 +18684,7 @@ public class PackageManagerService extends IPackageManager.Stub + perm.info.name + "; Removing ephemeral."); perm.info.protectionLevel &= ~PermissionInfo.PROTECTION_FLAG_INSTANT; } + // Check whether the newly-scanned package wants to define an already-defined perm if (bp != null) { // If the defining package is signed with our cert, it's okay. This @@ -18976,6 +19040,10 @@ public class PackageManagerService extends IPackageManager.Stub return (pkg.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0; } + private static boolean isOemApp(PackageParser.Package pkg) { + return (pkg.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0; + } + private static boolean hasDomainURLs(PackageParser.Package pkg) { return (pkg.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS) != 0; } @@ -19729,6 +19797,16 @@ public class PackageManagerService extends IPackageManager.Stub return false; } + static boolean locationIsOem(File path) { + try { + return path.getCanonicalPath().startsWith( + Environment.getOemDirectory().getCanonicalPath()); + } catch (IOException e) { + Slog.e(TAG, "Unable to access code path " + path); + } + return false; + } + /* * Tries to delete system package. */ @@ -19846,6 +19924,9 @@ public class PackageManagerService extends IPackageManager.Stub if (isPrivileged || locationIsPrivileged(codePath)) { parseFlags |= PackageParser.PARSE_IS_PRIVILEGED; } + if (locationIsOem(codePath)) { + parseFlags |= PackageParser.PARSE_IS_OEM; + } final PackageParser.Package newPkg = scanPackageTracedLI(codePath, parseFlags, 0 /*scanFlags*/, 0 /*currentTime*/, null); @@ -21836,32 +21917,36 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } } - if (callingUid == Process.SHELL_UID - && (pkgSetting.pkgFlags & ApplicationInfo.FLAG_TEST_ONLY) == 0) { - // Shell can only change whole packages between ENABLED and DISABLED_USER states - // unless it is a test package. - int oldState = pkgSetting.getEnabled(userId); - if (className == null - && - (oldState == COMPONENT_ENABLED_STATE_DISABLED_USER - || oldState == COMPONENT_ENABLED_STATE_DEFAULT - || oldState == COMPONENT_ENABLED_STATE_ENABLED) - && - (newState == COMPONENT_ENABLED_STATE_DISABLED_USER - || newState == COMPONENT_ENABLED_STATE_DEFAULT - || newState == COMPONENT_ENABLED_STATE_ENABLED)) { - // ok - } else { - throw new SecurityException( - "Shell cannot change component state for " + packageName + "/" - + className + " to " + newState); + synchronized (mPackages) { + if (callingUid == Process.SHELL_UID + && (pkgSetting.pkgFlags & ApplicationInfo.FLAG_TEST_ONLY) == 0) { + // Shell can only change whole packages between ENABLED and DISABLED_USER states + // unless it is a test package. + int oldState = pkgSetting.getEnabled(userId); + if (className == null + && + (oldState == COMPONENT_ENABLED_STATE_DISABLED_USER + || oldState == COMPONENT_ENABLED_STATE_DEFAULT + || oldState == COMPONENT_ENABLED_STATE_ENABLED) + && + (newState == COMPONENT_ENABLED_STATE_DISABLED_USER + || newState == COMPONENT_ENABLED_STATE_DEFAULT + || newState == COMPONENT_ENABLED_STATE_ENABLED)) { + // ok + } else { + throw new SecurityException( + "Shell cannot change component state for " + packageName + "/" + + className + " to " + newState); + } } } if (className == null) { // We're dealing with an application/package level state change - if (pkgSetting.getEnabled(userId) == newState) { - // Nothing to do - return; + synchronized (mPackages) { + if (pkgSetting.getEnabled(userId) == newState) { + // Nothing to do + return; + } } // If we're enabling a system stub, there's a little more work to do. // Prior to enabling the package, we need to decompress the APK(s) to the @@ -21975,41 +22060,45 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); // Don't care about who enables an app. callingPackage = null; } - pkgSetting.setEnabled(newState, userId, callingPackage); - } else { - // We're dealing with a component level state change - // First, verify that this is a valid class name. - PackageParser.Package pkg = pkgSetting.pkg; - if (pkg == null || !pkg.hasComponentClassName(className)) { - if (pkg != null && - pkg.applicationInfo.targetSdkVersion >= - Build.VERSION_CODES.JELLY_BEAN) { - throw new IllegalArgumentException("Component class " + className - + " does not exist in " + packageName); - } else { - Slog.w(TAG, "Failed setComponentEnabledSetting: component class " - + className + " does not exist in " + packageName); - } + synchronized (mPackages) { + pkgSetting.setEnabled(newState, userId, callingPackage); } - switch (newState) { - case COMPONENT_ENABLED_STATE_ENABLED: - if (!pkgSetting.enableComponentLPw(className, userId)) { - return; - } - break; - case COMPONENT_ENABLED_STATE_DISABLED: - if (!pkgSetting.disableComponentLPw(className, userId)) { - return; + } else { + synchronized (mPackages) { + // We're dealing with a component level state change + // First, verify that this is a valid class name. + PackageParser.Package pkg = pkgSetting.pkg; + if (pkg == null || !pkg.hasComponentClassName(className)) { + if (pkg != null && + pkg.applicationInfo.targetSdkVersion >= + Build.VERSION_CODES.JELLY_BEAN) { + throw new IllegalArgumentException("Component class " + className + + " does not exist in " + packageName); + } else { + Slog.w(TAG, "Failed setComponentEnabledSetting: component class " + + className + " does not exist in " + packageName); + } } - break; - case COMPONENT_ENABLED_STATE_DEFAULT: - if (!pkgSetting.restoreComponentLPw(className, userId)) { - return; + switch (newState) { + case COMPONENT_ENABLED_STATE_ENABLED: + if (!pkgSetting.enableComponentLPw(className, userId)) { + return; + } + break; + case COMPONENT_ENABLED_STATE_DISABLED: + if (!pkgSetting.disableComponentLPw(className, userId)) { + return; + } + break; + case COMPONENT_ENABLED_STATE_DEFAULT: + if (!pkgSetting.restoreComponentLPw(className, userId)) { + return; + } + break; + default: + Slog.e(TAG, "Invalid new component state: " + newState); + return; } - break; - default: - Slog.e(TAG, "Invalid new component state: " + newState); - return; } } synchronized (mPackages) { @@ -22263,13 +22352,21 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); mDefaultPermissionPolicy.grantDefaultPermissions(userId); } - // If we did not grant default permissions, we preload from this the - // default permission exceptions lazily to ensure we don't hit the - // disk on a new user creation. if (grantPermissionsUserIds == EMPTY_INT_ARRAY) { + // If we did not grant default permissions, we preload from this the + // default permission exceptions lazily to ensure we don't hit the + // disk on a new user creation. mDefaultPermissionPolicy.scheduleReadDefaultPermissionExceptions(); } + // Now that we've scanned all packages, and granted any default + // permissions, ensure permissions are updated. Beware of dragons if you + // try optimizing this. + synchronized (mPackages) { + updatePermissionsLPw(null, null, StorageManager.UUID_PRIVATE_INTERNAL, + UPDATE_PERMISSIONS_ALL); + } + // Kick off any messages waiting for system ready if (mPostSystemReadyMessages != null) { for (Message msg : mPostSystemReadyMessages) { @@ -25136,6 +25233,37 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } return results; } + + // NB: this differentiates between preloads and sideloads + @Override + public String getInstallerForPackage(String packageName) throws RemoteException { + final String installerName = getInstallerPackageName(packageName); + if (!TextUtils.isEmpty(installerName)) { + return installerName; + } + // differentiate between preload and sideload + int callingUser = UserHandle.getUserId(Binder.getCallingUid()); + ApplicationInfo appInfo = getApplicationInfo(packageName, + /*flags*/ 0, + /*userId*/ callingUser); + if (appInfo != null && (appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { + return "preload"; + } + return ""; + } + + @Override + public int getVersionCodeForPackage(String packageName) throws RemoteException { + try { + int callingUser = UserHandle.getUserId(Binder.getCallingUid()); + PackageInfo pInfo = getPackageInfo(packageName, 0, callingUser); + if (pInfo != null) { + return pInfo.versionCode; + } + } catch (Exception e) { + } + return 0; + } } private class PackageManagerInternalImpl extends PackageManagerInternal { @@ -25499,6 +25627,13 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); return mInstantAppRegistry.hasInstantApplicationMetadataLPr(packageName, userId); } } + + @Override + public void notifyPackageUse(String packageName, int reason) { + synchronized (mPackages) { + PackageManagerService.this.notifyPackageUseLocked(packageName, reason); + } + } } @Override diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java b/services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java index 1a97a72cf2b3..19b0d9bc4b90 100644 --- a/services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java +++ b/services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java @@ -26,14 +26,19 @@ import dalvik.system.DexFile; public class PackageManagerServiceCompilerMapping { // Names for compilation reasons. static final String REASON_STRINGS[] = { - "first-boot", "boot", "install", "bg-dexopt", "ab-ota", "inactive" + "first-boot", "boot", "install", "bg-dexopt", "ab-ota", "inactive", "shared" }; + static final int REASON_SHARED_INDEX = 6; + // Static block to ensure the strings array is of the right length. static { if (PackageManagerService.REASON_LAST + 1 != REASON_STRINGS.length) { throw new IllegalStateException("REASON_STRINGS not correct"); } + if (!"shared".equals(REASON_STRINGS[REASON_SHARED_INDEX])) { + throw new IllegalStateException("REASON_STRINGS not correct because of shared index"); + } } private static String getSystemPropertyName(int reason) { @@ -52,11 +57,18 @@ public class PackageManagerServiceCompilerMapping { !DexFile.isValidCompilerFilter(sysPropValue)) { throw new IllegalStateException("Value \"" + sysPropValue +"\" not valid " + "(reason " + REASON_STRINGS[reason] + ")"); + } else if (!isFilterAllowedForReason(reason, sysPropValue)) { + throw new IllegalStateException("Value \"" + sysPropValue +"\" not allowed " + + "(reason " + REASON_STRINGS[reason] + ")"); } return sysPropValue; } + private static boolean isFilterAllowedForReason(int reason, String filter) { + return reason != REASON_SHARED_INDEX || !DexFile.isProfileGuidedCompilerFilter(filter); + } + // Check that the properties are set and valid. // Note: this is done in a separate method so this class can be statically initialized. static void checkProperties() { diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 909ffabfd2db..1f03e666d072 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -54,6 +54,7 @@ import android.os.ShellCommand; import android.os.SystemProperties; import android.os.UserHandle; import android.text.TextUtils; +import android.util.ArrayMap; import android.util.ArraySet; import android.util.PrintWriterPrinter; import com.android.internal.content.PackageHelper; @@ -75,6 +76,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Map; import java.util.WeakHashMap; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.TimeUnit; @@ -150,6 +152,8 @@ class PackageManagerShellCommand extends ShellCommand { return runGetPrivappPermissions(); case "get-privapp-deny-permissions": return runGetPrivappDenyPermissions(); + case "get-oem-permissions": + return runGetOemPermissions(); case "get-instantapp-resolver": return runGetInstantAppResolver(); case "has-feature": @@ -1308,6 +1312,24 @@ class PackageManagerShellCommand extends ShellCommand { return 0; } + private int runGetOemPermissions() { + final String pkg = getNextArg(); + if (pkg == null) { + System.err.println("Error: no package specified."); + return 1; + } + final Map<String, Boolean> oemPermissions = SystemConfig.getInstance() + .getOemPermissions(pkg); + if (oemPermissions == null || oemPermissions.isEmpty()) { + getOutPrintWriter().println("{}"); + } else { + oemPermissions.forEach((permission, granted) -> + getOutPrintWriter().println(permission + " granted:" + granted) + ); + } + return 0; + } + private int runGetInstantAppResolver() { final PrintWriter pw = getOutPrintWriter(); try { @@ -1419,7 +1441,7 @@ class PackageManagerShellCommand extends ShellCommand { out = session.openWrite(splitName, 0, sizeBytes); int total = 0; - byte[] buffer = new byte[65536]; + byte[] buffer = new byte[1024 * 1024]; int c; while ((c = in.read(buffer)) != -1) { total += c; @@ -1730,6 +1752,10 @@ class PackageManagerShellCommand extends ShellCommand { pw.println(" has-feature FEATURE_NAME [version]"); pw.println(" prints true and returns exit status 0 when system has a FEATURE_NAME,"); pw.println(" otherwise prints false and returns exit status 1"); + pw.println(" get-privileged-permissions TARGET-PACKAGE"); + pw.println(" prints all privileged permissions for a package."); + pw.println(" get-oem-permissions TARGET-PACKAGE"); + pw.println(" prints all OEM permissions for a package."); pw.println(); Intent.printIntentArgsHelp(pw , ""); } diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java index b4bba88eaf84..52bf6410825f 100644 --- a/services/core/java/com/android/server/pm/PackageSetting.java +++ b/services/core/java/com/android/server/pm/PackageSetting.java @@ -113,6 +113,10 @@ final class PackageSetting extends PackageSettingBase { return (pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0; } + public boolean isOem() { + return (pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0; + } + public boolean isForwardLocked() { return (pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0; } diff --git a/services/core/java/com/android/server/pm/SettingBase.java b/services/core/java/com/android/server/pm/SettingBase.java index 71e8d515444b..e17cec024df9 100644 --- a/services/core/java/com/android/server/pm/SettingBase.java +++ b/services/core/java/com/android/server/pm/SettingBase.java @@ -58,6 +58,7 @@ abstract class SettingBase { void setPrivateFlags(int pkgPrivateFlags) { this.pkgPrivateFlags = pkgPrivateFlags & (ApplicationInfo.PRIVATE_FLAG_PRIVILEGED + | ApplicationInfo.PRIVATE_FLAG_OEM | ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK | ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER); } diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 56835f69a3c7..51d3e1029d70 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -869,6 +869,8 @@ final class Settings { pkgSetting.pkgFlags |= pkgFlags & ApplicationInfo.FLAG_SYSTEM; pkgSetting.pkgPrivateFlags |= pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED; + pkgSetting.pkgPrivateFlags |= + pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_OEM; pkgSetting.primaryCpuAbiString = primaryCpuAbi; pkgSetting.secondaryCpuAbiString = secondaryCpuAbi; if (childPkgNames != null) { @@ -4529,21 +4531,24 @@ final class Settings { }; private static final Object[] PRIVATE_FLAG_DUMP_SPEC = new Object[] { - ApplicationInfo.PRIVATE_FLAG_HIDDEN, "HIDDEN", - ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE, "CANT_SAVE_STATE", - ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK, "FORWARD_LOCK", - ApplicationInfo.PRIVATE_FLAG_PRIVILEGED, "PRIVILEGED", - ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS, "HAS_DOMAIN_URLS", - ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE, "DEFAULT_TO_DEVICE_PROTECTED_STORAGE", - ApplicationInfo.PRIVATE_FLAG_DIRECT_BOOT_AWARE, "DIRECT_BOOT_AWARE", - ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE, "PARTIALLY_DIRECT_BOOT_AWARE", - ApplicationInfo.PRIVATE_FLAG_INSTANT, "EPHEMERAL", - ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER, "REQUIRED_FOR_SYSTEM_USER", - ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE", - ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE", - ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION", - ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND, "BACKUP_IN_FOREGROUND", - ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY, "STATIC_SHARED_LIBRARY", + ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE", + ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION", + ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE", + ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND, "BACKUP_IN_FOREGROUND", + ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE, "CANT_SAVE_STATE", + ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE, "DEFAULT_TO_DEVICE_PROTECTED_STORAGE", + ApplicationInfo.PRIVATE_FLAG_DIRECT_BOOT_AWARE, "DIRECT_BOOT_AWARE", + ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK, "FORWARD_LOCK", + ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS, "HAS_DOMAIN_URLS", + ApplicationInfo.PRIVATE_FLAG_HIDDEN, "HIDDEN", + ApplicationInfo.PRIVATE_FLAG_INSTANT, "EPHEMERAL", + ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING, "ISOLATED_SPLIT_LOADING", + ApplicationInfo.PRIVATE_FLAG_OEM, "OEM", + ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE, "PARTIALLY_DIRECT_BOOT_AWARE", + ApplicationInfo.PRIVATE_FLAG_PRIVILEGED, "PRIVILEGED", + ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER, "REQUIRED_FOR_SYSTEM_USER", + ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY, "STATIC_SHARED_LIBRARY", + ApplicationInfo.PRIVATE_FLAG_VIRTUAL_PRELOAD, "VIRTUAL_PRELOAD", }; void dumpVersionLPr(IndentingPrintWriter pw) { diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index afa7a24ec4a8..f2d527b29c89 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -128,6 +128,7 @@ import java.util.List; * * Method naming convention: * <ul> + * <li> Methods suffixed with "LAr" should be called within the {@link #mAppRestrictionsLock} lock. * <li> Methods suffixed with "LP" should be called within the {@link #mPackagesLock} lock. * <li> Methods suffixed with "LR" should be called within the {@link #mRestrictionsLock} lock. * <li> Methods suffixed with "LU" should be called within the {@link #mUsersLock} lock. @@ -232,6 +233,8 @@ public class UserManagerService extends IUserManager.Stub { // Short-term lock for internal state, when interaction/sync with PM is not required private final Object mUsersLock = LockGuard.installNewLock(LockGuard.INDEX_USER); private final Object mRestrictionsLock = new Object(); + // Used for serializing access to app restriction files + private final Object mAppRestrictionsLock = new Object(); private final Handler mHandler; @@ -2328,13 +2331,11 @@ public class UserManagerService extends IUserManager.Stub { /** * Removes the app restrictions file for a specific package and user id, if it exists. */ - private void cleanAppRestrictionsForPackage(String pkg, int userId) { - synchronized (mPackagesLock) { - File dir = Environment.getUserSystemDirectory(userId); - File resFile = new File(dir, packageToRestrictionsFileName(pkg)); - if (resFile.exists()) { - resFile.delete(); - } + private static void cleanAppRestrictionsForPackageLAr(String pkg, int userId) { + File dir = Environment.getUserSystemDirectory(userId); + File resFile = new File(dir, packageToRestrictionsFileName(pkg)); + if (resFile.exists()) { + resFile.delete(); } } @@ -2847,9 +2848,9 @@ public class UserManagerService extends IUserManager.Stub { || !UserHandle.isSameApp(Binder.getCallingUid(), getUidForPackage(packageName))) { checkSystemOrRoot("get application restrictions for other user/app " + packageName); } - synchronized (mPackagesLock) { + synchronized (mAppRestrictionsLock) { // Read the restrictions from XML - return readApplicationRestrictionsLP(packageName, userId); + return readApplicationRestrictionsLAr(packageName, userId); } } @@ -2860,12 +2861,12 @@ public class UserManagerService extends IUserManager.Stub { if (restrictions != null) { restrictions.setDefusable(true); } - synchronized (mPackagesLock) { + synchronized (mAppRestrictionsLock) { if (restrictions == null || restrictions.isEmpty()) { - cleanAppRestrictionsForPackage(packageName, userId); + cleanAppRestrictionsForPackageLAr(packageName, userId); } else { // Write the restrictions to XML - writeApplicationRestrictionsLP(packageName, restrictions, userId); + writeApplicationRestrictionsLAr(packageName, restrictions, userId); } } @@ -2888,15 +2889,17 @@ public class UserManagerService extends IUserManager.Stub { } } - private Bundle readApplicationRestrictionsLP(String packageName, int userId) { + @GuardedBy("mAppRestrictionsLock") + private static Bundle readApplicationRestrictionsLAr(String packageName, int userId) { AtomicFile restrictionsFile = new AtomicFile(new File(Environment.getUserSystemDirectory(userId), packageToRestrictionsFileName(packageName))); - return readApplicationRestrictionsLP(restrictionsFile); + return readApplicationRestrictionsLAr(restrictionsFile); } @VisibleForTesting - static Bundle readApplicationRestrictionsLP(AtomicFile restrictionsFile) { + @GuardedBy("mAppRestrictionsLock") + static Bundle readApplicationRestrictionsLAr(AtomicFile restrictionsFile) { final Bundle restrictions = new Bundle(); final ArrayList<String> values = new ArrayList<>(); if (!restrictionsFile.getBaseFile().exists()) { @@ -2979,16 +2982,18 @@ public class UserManagerService extends IUserManager.Stub { return childBundle; } - private void writeApplicationRestrictionsLP(String packageName, + @GuardedBy("mAppRestrictionsLock") + private static void writeApplicationRestrictionsLAr(String packageName, Bundle restrictions, int userId) { AtomicFile restrictionsFile = new AtomicFile( new File(Environment.getUserSystemDirectory(userId), packageToRestrictionsFileName(packageName))); - writeApplicationRestrictionsLP(restrictions, restrictionsFile); + writeApplicationRestrictionsLAr(restrictions, restrictionsFile); } @VisibleForTesting - static void writeApplicationRestrictionsLP(Bundle restrictions, AtomicFile restrictionsFile) { + @GuardedBy("mAppRestrictionsLock") + static void writeApplicationRestrictionsLAr(Bundle restrictions, AtomicFile restrictionsFile) { FileOutputStream fos = null; try { fos = restrictionsFile.startWrite(); @@ -3232,7 +3237,7 @@ public class UserManagerService extends IUserManager.Stub { return -1; } - private String packageToRestrictionsFileName(String packageName) { + private static String packageToRestrictionsFileName(String packageName) { return RESTRICTIONS_FILE_PREFIX + packageName + XML_SUFFIX; } diff --git a/services/core/java/com/android/server/pm/dex/DexoptUtils.java b/services/core/java/com/android/server/pm/dex/DexoptUtils.java index 0196212d6bc2..e1310a2f1ab3 100644 --- a/services/core/java/com/android/server/pm/dex/DexoptUtils.java +++ b/services/core/java/com/android/server/pm/dex/DexoptUtils.java @@ -21,6 +21,7 @@ import android.util.Slog; import android.util.SparseArray; import com.android.internal.os.ClassLoaderFactory; +import com.android.server.pm.PackageDexOptimizer; import java.io.File; import java.util.ArrayList; @@ -35,7 +36,9 @@ public final class DexoptUtils { /** * Creates the class loader context dependencies for each of the application code paths. * The returned array contains the class loader contexts that needs to be passed to dexopt in - * order to ensure correct optimizations. + * order to ensure correct optimizations. "Code" paths with no actual code, as specified by + * {@param pathsWithCode}, are ignored and will have null as their context in the returned array + * (configuration splits are an example of paths without code). * * A class loader context describes how the class loader chain should be built by dex2oat * in order to ensure that classes are resolved during compilation as they would be resolved @@ -60,7 +63,8 @@ public final class DexoptUtils { * {@link android.app.LoadedApk#makePaths( * android.app.ActivityThread, boolean, ApplicationInfo, List, List)}. */ - public static String[] getClassLoaderContexts(ApplicationInfo info, String[] sharedLibraries) { + public static String[] getClassLoaderContexts(ApplicationInfo info, + String[] sharedLibraries, boolean[] pathsWithCode) { // The base class loader context contains only the shared library. String sharedLibrariesClassPath = encodeClasspath(sharedLibraries); String baseApkContextClassLoader = encodeClassLoader( @@ -86,7 +90,7 @@ public final class DexoptUtils { // Index 0 is the class loaded context for the base apk. // Index `i` is the class loader context encoding for split `i`. String[] classLoaderContexts = new String[/*base apk*/ 1 + splitRelativeCodePaths.length]; - classLoaderContexts[0] = baseApkContextClassLoader; + classLoaderContexts[0] = pathsWithCode[0] ? baseApkContextClassLoader : null; if (!info.requestsIsolatedSplitLoading() || info.splitDependencies == null) { // If the app didn't request for the splits to be loaded in isolation or if it does not @@ -94,7 +98,15 @@ public final class DexoptUtils { // apk class loader (in the order of their definition). String classpath = sharedLibrariesAndBaseClassPath; for (int i = 1; i < classLoaderContexts.length; i++) { - classLoaderContexts[i] = encodeClassLoader(classpath, info.classLoaderName); + classLoaderContexts[i] = pathsWithCode[i] + ? encodeClassLoader(classpath, info.classLoaderName) : null; + // Note that the splits with no code are not removed from the classpath computation. + // i.e. split_n might get the split_n-1 in its classpath dependency even + // if split_n-1 has no code. + // The splits with no code do not matter for the runtime which ignores + // apks without code when doing the classpath checks. As such we could actually + // filter them but we don't do it in order to keep consistency with how the apps + // are loaded. classpath = encodeClasspath(classpath, splitRelativeCodePaths[i - 1]); } } else { @@ -116,9 +128,17 @@ public final class DexoptUtils { String splitDependencyOnBase = encodeClassLoader( sharedLibrariesAndBaseClassPath, info.classLoaderName); SparseArray<int[]> splitDependencies = info.splitDependencies; + + // Note that not all splits have dependencies (e.g. configuration splits) + // The splits without dependencies will have classLoaderContexts[config_split_index] + // set to null after this step. for (int i = 1; i < splitDependencies.size(); i++) { - getParentDependencies(splitDependencies.keyAt(i), splitClassLoaderEncodingCache, - splitDependencies, classLoaderContexts, splitDependencyOnBase); + int splitIndex = splitDependencies.keyAt(i); + if (pathsWithCode[splitIndex]) { + // Compute the class loader context only for the splits with code. + getParentDependencies(splitIndex, splitClassLoaderEncodingCache, + splitDependencies, classLoaderContexts, splitDependencyOnBase); + } } // At this point classLoaderContexts contains only the parent dependencies. @@ -126,8 +146,17 @@ public final class DexoptUtils { // come first in the context. for (int i = 1; i < classLoaderContexts.length; i++) { String splitClassLoader = encodeClassLoader("", info.splitClassLoaderNames[i - 1]); - classLoaderContexts[i] = encodeClassLoaderChain( - splitClassLoader, classLoaderContexts[i]); + if (pathsWithCode[i]) { + // If classLoaderContexts[i] is null it means that the split does not have + // any dependency. In this case its context equals its declared class loader. + classLoaderContexts[i] = classLoaderContexts[i] == null + ? splitClassLoader + : encodeClassLoaderChain(splitClassLoader, classLoaderContexts[i]); + } else { + // This is a split without code, it has no dependency and it is not compiled. + // Its context will be null. + classLoaderContexts[i] = null; + } } } @@ -210,10 +239,15 @@ public final class DexoptUtils { /** * Encodes a single class loader dependency starting from {@param path} and * {@param classLoaderName}. + * When classpath is {@link PackageDexOptimizer#SKIP_SHARED_LIBRARY_CHECK}, the method returns + * the same. This special property is used only during OTA. * NOTE: Keep this in sync with the dexopt expectations! Right now that is either "PCL[path]" * for a PathClassLoader or "DLC[path]" for a DelegateLastClassLoader. */ - private static String encodeClassLoader(String classpath, String classLoaderName) { + /*package*/ static String encodeClassLoader(String classpath, String classLoaderName) { + if (classpath.equals(PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK)) { + return classpath; + } String classLoaderDexoptEncoding = classLoaderName; if (ClassLoaderFactory.isPathClassLoaderName(classLoaderName)) { classLoaderDexoptEncoding = "PCL"; @@ -227,10 +261,17 @@ public final class DexoptUtils { /** * Links to dependencies together in a format accepted by dexopt. + * For the special case when either of cl1 or cl2 equals + * {@link PackageDexOptimizer#SKIP_SHARED_LIBRARY_CHECK}, the method returns the same. This + * property is used only during OTA. * NOTE: Keep this in sync with the dexopt expectations! Right now that is a list of split * dependencies {@see encodeClassLoader} separated by ';'. */ - private static String encodeClassLoaderChain(String cl1, String cl2) { + /*package*/ static String encodeClassLoaderChain(String cl1, String cl2) { + if (cl1.equals(PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK) || + cl2.equals(PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK)) { + return PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK; + } if (cl1.isEmpty()) return cl2; if (cl2.isEmpty()) return cl1; return cl1 + ";" + cl2; diff --git a/services/core/java/com/android/server/policy/AccessibilityShortcutController.java b/services/core/java/com/android/server/policy/AccessibilityShortcutController.java index 0a8635d7210f..55c582ed47b4 100644 --- a/services/core/java/com/android/server/policy/AccessibilityShortcutController.java +++ b/services/core/java/com/android/server/policy/AccessibilityShortcutController.java @@ -24,6 +24,7 @@ import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; +import android.content.pm.PackageManager; import android.database.ContentObserver; import android.media.AudioAttributes; import android.media.Ringtone; @@ -138,13 +139,18 @@ public class AccessibilityShortcutController { final int userId = ActivityManager.getCurrentUser(); final int dialogAlreadyShown = Settings.Secure.getIntForUser( cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 0, userId); + // Use USAGE_ASSISTANCE_ACCESSIBILITY for TVs to ensure that TVs play the ringtone as they + // have less ways of providing feedback like vibration. + final int audioAttributesUsage = hasFeatureLeanback() + ? AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY + : AudioAttributes.USAGE_NOTIFICATION_EVENT; // Play a notification tone final Ringtone tone = RingtoneManager.getRingtone(mContext, Settings.System.DEFAULT_NOTIFICATION_URI); if (tone != null) { tone.setAudioAttributes(new AudioAttributes.Builder() - .setUsage(AudioAttributes.USAGE_NOTIFICATION_EVENT) + .setUsage(audioAttributesUsage) .build()); tone.play(); } @@ -254,6 +260,10 @@ public class AccessibilityShortcutController { AccessibilityServiceInfo.FEEDBACK_ALL_MASK).contains(serviceInfo); } + private boolean hasFeatureLeanback() { + return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK); + } + // Class to allow mocking of static framework calls public static class FrameworkObjectProvider { public AccessibilityManager getAccessibilityManagerInstance(Context context) { diff --git a/services/core/java/com/android/server/policy/LegacyGlobalActions.java b/services/core/java/com/android/server/policy/LegacyGlobalActions.java index 14fabc593991..8eb6d065bf25 100644 --- a/services/core/java/com/android/server/policy/LegacyGlobalActions.java +++ b/services/core/java/com/android/server/policy/LegacyGlobalActions.java @@ -202,11 +202,14 @@ class LegacyGlobalActions implements DialogInterface.OnDismissListener, DialogIn && !(mAdapter.getItem(0) instanceof LongPressAction)) { ((SinglePressAction) mAdapter.getItem(0)).onPress(); } else { - WindowManager.LayoutParams attrs = mDialog.getWindow().getAttributes(); - attrs.setTitle("LegacyGlobalActions"); - mDialog.getWindow().setAttributes(attrs); - mDialog.show(); - mDialog.getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_DISABLE_EXPAND); + if (mDialog != null) { + WindowManager.LayoutParams attrs = mDialog.getWindow().getAttributes(); + attrs.setTitle("LegacyGlobalActions"); + mDialog.getWindow().setAttributes(attrs); + mDialog.show(); + mDialog.getWindow().getDecorView().setSystemUiVisibility( + View.STATUS_BAR_DISABLE_EXPAND); + } } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index fcfe1d699285..d19bf445ef04 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -198,6 +198,7 @@ import android.util.EventLog; import android.util.Log; import android.util.LongSparseArray; import android.util.MutableBoolean; +import android.util.PrintWriterPrinter; import android.util.Slog; import android.util.SparseArray; import android.util.proto.ProtoOutputStream; @@ -296,13 +297,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { static final int LONG_PRESS_POWER_SHUT_OFF = 2; static final int LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM = 3; - static final int LONG_PRESS_BACK_NOTHING = 0; - static final int LONG_PRESS_BACK_GO_TO_VOICE_ASSIST = 1; - static final int MULTI_PRESS_POWER_NOTHING = 0; static final int MULTI_PRESS_POWER_THEATER_MODE = 1; static final int MULTI_PRESS_POWER_BRIGHTNESS_BOOST = 2; + static final int LONG_PRESS_BACK_NOTHING = 0; + static final int LONG_PRESS_BACK_GO_TO_VOICE_ASSIST = 1; + // Number of presses needed before we induce panic press behavior on the back button static final int PANIC_PRESS_BACK_COUNT = 4; static final int PANIC_PRESS_BACK_NOTHING = 0; @@ -338,6 +339,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { static public final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps"; static public final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; static public final String SYSTEM_DIALOG_REASON_ASSIST = "assist"; + static public final String SYSTEM_DIALOG_REASON_SCREENSHOT = "screenshot"; /** * These are the system UI flags that, when changing, can cause the layout @@ -564,7 +566,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mLongPressOnBackBehavior; int mPanicPressOnBackBehavior; int mShortPressOnSleepBehavior; - int mShortPressWindowBehavior; + int mShortPressOnWindowBehavior; volatile boolean mAwake; boolean mScreenOnEarly; boolean mScreenOnFully; @@ -832,6 +834,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private static final int MSG_ACCESSIBILITY_TV = 23; private static final int MSG_DISPATCH_BACK_KEY_TO_AUTOFILL = 24; private static final int MSG_SYSTEM_KEY_PRESS = 25; + private static final int MSG_HANDLE_ALL_APPS = 26; private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS = 0; private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION = 1; @@ -924,6 +927,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { case MSG_SYSTEM_KEY_PRESS: sendSystemKeyToStatusBar(msg.arg1); break; + case MSG_HANDLE_ALL_APPS: + launchAllAppsAction(); + break; } } } @@ -1804,6 +1810,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { private void launchAllAppsAction() { Intent intent = new Intent(Intent.ACTION_ALL_APPS); + if (mHasFeatureLeanback) { + final PackageManager pm = mContext.getPackageManager(); + Intent intentLauncher = new Intent(Intent.ACTION_MAIN); + intentLauncher.addCategory(Intent.CATEGORY_HOME); + ResolveInfo resolveInfo = pm.resolveActivityAsUser(intentLauncher, + PackageManager.MATCH_SYSTEM_ONLY, + mCurrentUserId); + if (resolveInfo != null) { + intent.setPackage(resolveInfo.activityInfo.packageName); + } + } startActivityAsUser(intent, UserHandle.CURRENT); } @@ -2164,9 +2181,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { mDoubleTapOnHomeBehavior = LONG_PRESS_HOME_NOTHING; } - mShortPressWindowBehavior = SHORT_PRESS_WINDOW_NOTHING; + mShortPressOnWindowBehavior = SHORT_PRESS_WINDOW_NOTHING; if (mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE)) { - mShortPressWindowBehavior = SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE; + mShortPressOnWindowBehavior = SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE; } mNavBarOpacityMode = res.getInteger( @@ -3401,11 +3418,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (!down) { cancelPreloadRecentApps(); - if (mHasFeatureLeanback) { - // Clear flags - mAccessibilityTvKey2Pressed = down; - } - mHomePressed = false; if (mHomeConsumed) { mHomeConsumed = false; @@ -3460,13 +3472,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { preloadRecentApps(); } } else if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) { - if (mHasFeatureLeanback) { - mAccessibilityTvKey2Pressed = down; - if (interceptAccessibilityGestureTv()) { - return -1; - } - } - if (!keyguardOn) { handleLongPressOnHome(event.getDeviceId()); } @@ -3623,21 +3628,30 @@ public class PhoneWindowManager implements WindowManagerPolicy { return -1; } - // If the device is in Vr mode, drop the volume keys and don't - // forward it to the application/dispatch the audio event. + // If the device is in VR mode and keys are "internal" (e.g. on the side of the + // device), then drop the volume keys and don't forward it to the application/dispatch + // the audio event. if (mPersistentVrModeEnabled) { - return -1; + final InputDevice d = event.getDevice(); + if (d != null && !d.isExternal()) { + return -1; + } } } else if (keyCode == KeyEvent.KEYCODE_TAB && event.isMetaPressed()) { // Pass through keyboard navigation keys. return 0; } else if (mHasFeatureLeanback && interceptBugreportGestureTv(keyCode, down)) { return -1; - } else if (mHasFeatureLeanback && keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { - mAccessibilityTvKey1Pressed = down; - if (interceptAccessibilityGestureTv()) { - return -1; + } else if (mHasFeatureLeanback && interceptAccessibilityGestureTv(keyCode, down)) { + return -1; + } else if (keyCode == KeyEvent.KEYCODE_ALL_APPS) { + if (!down) { + mHandler.removeMessages(MSG_HANDLE_ALL_APPS); + Message msg = mHandler.obtainMessage(MSG_HANDLE_ALL_APPS); + msg.setAsynchronous(true); + msg.sendToTarget(); } + return -1; } // Toggle Caps Lock on META-ALT. @@ -3858,20 +3872,28 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** * TV only: recognizes a remote control gesture as Accessibility shortcut. - * Shortcut: Long press (HOME + DPAD_CENTER) + * Shortcut: Long press (BACK + DPAD_DOWN) */ - private boolean interceptAccessibilityGestureTv() { + private boolean interceptAccessibilityGestureTv(int keyCode, boolean down) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + mAccessibilityTvKey1Pressed = down; + } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { + mAccessibilityTvKey2Pressed = down; + } + if (mAccessibilityTvKey1Pressed && mAccessibilityTvKey2Pressed) { if (!mAccessibilityTvScheduled) { mAccessibilityTvScheduled = true; Message msg = Message.obtain(mHandler, MSG_ACCESSIBILITY_TV); msg.setAsynchronous(true); - mHandler.sendMessage(msg); + mHandler.sendMessageDelayed(msg, + ViewConfiguration.get(mContext).getAccessibilityShortcutKeyTimeout()); } } else if (mAccessibilityTvScheduled) { mHandler.removeMessages(MSG_ACCESSIBILITY_TV); mAccessibilityTvScheduled = false; } + return mAccessibilityTvScheduled; } @@ -5555,6 +5577,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { WindowManager.LayoutParams statusBarAttrs = mStatusBar.getAttrs(); boolean statusBarExpanded = statusBarAttrs.height == MATCH_PARENT && statusBarAttrs.width == MATCH_PARENT; + boolean topAppHidesStatusBar = topAppHidesStatusBar(); if (mForceStatusBar || mForceStatusBarFromKeyguard || mForceStatusBarTransparent || statusBarExpanded) { if (DEBUG_LAYOUT) Slog.v(TAG, "Showing status bar: forced"); @@ -5575,16 +5598,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } } else if (mTopFullscreenOpaqueWindowState != null) { - final int fl = PolicyControl.getWindowFlags(null, lp); - if (localLOGV) { - Slog.d(TAG, "frame: " + mTopFullscreenOpaqueWindowState.getFrameLw() - + " shown position: " - + mTopFullscreenOpaqueWindowState.getShownPositionLw()); - Slog.d(TAG, "attr: " + mTopFullscreenOpaqueWindowState.getAttrs() - + " lp.flags=0x" + Integer.toHexString(fl)); - } - topIsFullscreen = (fl & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0 - || (mLastSystemUiFlags & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0; + topIsFullscreen = topAppHidesStatusBar; // The subtle difference between the window for mTopFullscreenOpaqueWindowState // and mTopIsFullscreen is that mTopIsFullscreen is set only if the window // has the FLAG_FULLSCREEN set. Not sure if there is another way that to be the @@ -5607,8 +5621,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mStatusBarController.setBarShowingLw(true)) { changes |= FINISH_LAYOUT_REDO_LAYOUT; } + topAppHidesStatusBar = false; } } + mStatusBarController.setTopAppHidesStatusBar(topAppHidesStatusBar); } if (mTopIsFullscreen != topIsFullscreen) { @@ -5649,6 +5665,27 @@ public class PhoneWindowManager implements WindowManagerPolicy { } /** + * @return Whether the top app should hide the statusbar based on the top fullscreen opaque + * window. + */ + private boolean topAppHidesStatusBar() { + if (mTopFullscreenOpaqueWindowState == null) { + return false; + } + final int fl = PolicyControl.getWindowFlags(null, + mTopFullscreenOpaqueWindowState.getAttrs()); + if (localLOGV) { + Slog.d(TAG, "frame: " + mTopFullscreenOpaqueWindowState.getFrameLw() + + " shown position: " + + mTopFullscreenOpaqueWindowState.getShownPositionLw()); + Slog.d(TAG, "attr: " + mTopFullscreenOpaqueWindowState.getAttrs() + + " lp.flags=0x" + Integer.toHexString(fl)); + } + return (fl & LayoutParams.FLAG_FULLSCREEN) != 0 + || (mLastSystemUiFlags & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0; + } + + /** * Updates the occluded state of the Keyguard. * * @return Whether the flags have changed and we have to redo the layout. @@ -6240,7 +6277,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { break; } case KeyEvent.KEYCODE_WINDOW: { - if (mShortPressWindowBehavior == SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE) { + if (mShortPressOnWindowBehavior == SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE) { if (mPictureInPictureVisible) { // Consumes the key only if picture-in-picture is visible to show // picture-in-picture control menu. This gives a chance to the foreground @@ -7812,13 +7849,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { case HapticFeedbackConstants.VIRTUAL_KEY: return VibrationEffect.get(VibrationEffect.EFFECT_CLICK); case HapticFeedbackConstants.VIRTUAL_KEY_RELEASE: - return VibrationEffect.get(VibrationEffect.EFFECT_TICK); + return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false); case HapticFeedbackConstants.KEYBOARD_PRESS: // == HapticFeedbackConstants.KEYBOARD_TAP return VibrationEffect.get(VibrationEffect.EFFECT_CLICK); case HapticFeedbackConstants.KEYBOARD_RELEASE: - return VibrationEffect.get(VibrationEffect.EFFECT_TICK); + return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false); case HapticFeedbackConstants.TEXT_HANDLE_MOVE: - return VibrationEffect.get(VibrationEffect.EFFECT_TICK); + return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false); default: return null; } @@ -8287,9 +8324,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mSafeMode="); pw.print(mSafeMode); pw.print(" mSystemReady="); pw.print(mSystemReady); pw.print(" mSystemBooted="); pw.println(mSystemBooted); - pw.print(prefix); pw.print("mLidState="); pw.print(mLidState); - pw.print(" mLidOpenRotation="); pw.print(mLidOpenRotation); - pw.print(" mCameraLensCoverState="); pw.print(mCameraLensCoverState); + pw.print(prefix); pw.print("mLidState="); + pw.print(WindowManagerFuncs.lidStateToString(mLidState)); + pw.print(" mLidOpenRotation="); + pw.println(Surface.rotationToString(mLidOpenRotation)); + pw.print(prefix); pw.print("mCameraLensCoverState="); + pw.print(WindowManagerFuncs.cameraLensStateToString(mCameraLensCoverState)); pw.print(" mHdmiPlugged="); pw.println(mHdmiPlugged); if (mLastSystemUiFlags != 0 || mResettingSystemUiFlags != 0 || mForceClearedSystemUiFlags != 0) { @@ -8307,16 +8347,24 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mWakeGestureEnabledSetting="); pw.println(mWakeGestureEnabledSetting); - pw.print(prefix); pw.print("mSupportAutoRotation="); pw.println(mSupportAutoRotation); - pw.print(prefix); pw.print("mUiMode="); pw.print(mUiMode); - pw.print(" mDockMode="); pw.print(mDockMode); - pw.print(" mEnableCarDockHomeCapture="); pw.print(mEnableCarDockHomeCapture); - pw.print(" mCarDockRotation="); pw.print(mCarDockRotation); - pw.print(" mDeskDockRotation="); pw.println(mDeskDockRotation); - pw.print(prefix); pw.print("mUserRotationMode="); pw.print(mUserRotationMode); - pw.print(" mUserRotation="); pw.print(mUserRotation); - pw.print(" mAllowAllRotations="); pw.println(mAllowAllRotations); - pw.print(prefix); pw.print("mCurrentAppOrientation="); pw.println(mCurrentAppOrientation); + pw.print(prefix); + pw.print("mSupportAutoRotation="); pw.print(mSupportAutoRotation); + pw.print(" mOrientationSensorEnabled="); pw.println(mOrientationSensorEnabled); + pw.print(prefix); pw.print("mUiMode="); pw.print(Configuration.uiModeToString(mUiMode)); + pw.print(" mDockMode="); pw.println(Intent.dockStateToString(mDockMode)); + pw.print(prefix); pw.print("mEnableCarDockHomeCapture="); + pw.print(mEnableCarDockHomeCapture); + pw.print(" mCarDockRotation="); + pw.print(Surface.rotationToString(mCarDockRotation)); + pw.print(" mDeskDockRotation="); + pw.println(Surface.rotationToString(mDeskDockRotation)); + pw.print(prefix); pw.print("mUserRotationMode="); + pw.print(WindowManagerPolicy.userRotationModeToString(mUserRotationMode)); + pw.print(" mUserRotation="); pw.print(Surface.rotationToString(mUserRotation)); + pw.print(" mAllowAllRotations="); + pw.println(allowAllRotationsToString(mAllowAllRotations)); + pw.print(prefix); pw.print("mCurrentAppOrientation="); + pw.println(ActivityInfo.screenOrientationToString(mCurrentAppOrientation)); pw.print(prefix); pw.print("mCarDockEnablesAccelerometer="); pw.print(mCarDockEnablesAccelerometer); pw.print(" mDeskDockEnablesAccelerometer="); @@ -8325,23 +8373,54 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(mLidKeyboardAccessibility); pw.print(" mLidNavigationAccessibility="); pw.print(mLidNavigationAccessibility); pw.print(" mLidControlsScreenLock="); pw.println(mLidControlsScreenLock); - pw.print(" mLidControlsSleep="); pw.println(mLidControlsSleep); + pw.print(prefix); pw.print("mLidControlsSleep="); pw.println(mLidControlsSleep); + pw.print(prefix); + pw.print("mLongPressOnBackBehavior="); + pw.println(longPressOnBackBehaviorToString(mLongPressOnBackBehavior)); + pw.print(prefix); + pw.print("mPanicPressOnBackBehavior="); + pw.println(panicPressOnBackBehaviorToString(mPanicPressOnBackBehavior)); + pw.print(prefix); + pw.print("mLongPressOnHomeBehavior="); + pw.println(longPressOnHomeBehaviorToString(mLongPressOnHomeBehavior)); + pw.print(prefix); + pw.print("mDoubleTapOnHomeBehavior="); + pw.println(doubleTapOnHomeBehaviorToString(mDoubleTapOnHomeBehavior)); + pw.print(prefix); + pw.print("mShortPressOnPowerBehavior="); + pw.println(shortPressOnPowerBehaviorToString(mShortPressOnPowerBehavior)); + pw.print(prefix); + pw.print("mLongPressOnPowerBehavior="); + pw.println(longPressOnPowerBehaviorToString(mLongPressOnPowerBehavior)); + pw.print(prefix); + pw.print("mDoublePressOnPowerBehavior="); + pw.println(multiPressOnPowerBehaviorToString(mDoublePressOnPowerBehavior)); pw.print(prefix); - pw.print(" mLongPressOnBackBehavior="); pw.println(mLongPressOnBackBehavior); + pw.print("mTriplePressOnPowerBehavior="); + pw.println(multiPressOnPowerBehaviorToString(mTriplePressOnPowerBehavior)); pw.print(prefix); - pw.print("mShortPressOnPowerBehavior="); pw.print(mShortPressOnPowerBehavior); - pw.print(" mLongPressOnPowerBehavior="); pw.println(mLongPressOnPowerBehavior); + pw.print("mShortPressOnSleepBehavior="); + pw.println(shortPressOnSleepBehaviorToString(mShortPressOnSleepBehavior)); pw.print(prefix); - pw.print("mDoublePressOnPowerBehavior="); pw.print(mDoublePressOnPowerBehavior); - pw.print(" mTriplePressOnPowerBehavior="); pw.println(mTriplePressOnPowerBehavior); - pw.print(prefix); pw.print("mHasSoftInput="); pw.println(mHasSoftInput); - pw.print(prefix); pw.print("mAwake="); pw.println(mAwake); - pw.print(prefix); pw.print("mScreenOnEarly="); pw.print(mScreenOnEarly); + pw.print("mShortPressOnWindowBehavior="); + pw.println(shortPressOnWindowBehaviorToString(mShortPressOnWindowBehavior)); + pw.print(prefix); + pw.print("mHasSoftInput="); pw.print(mHasSoftInput); + pw.print(" mDismissImeOnBackKeyPressed="); pw.println(mDismissImeOnBackKeyPressed); + pw.print(prefix); + pw.print("mIncallPowerBehavior="); + pw.print(incallPowerBehaviorToString(mIncallPowerBehavior)); + pw.print(" mIncallBackBehavior="); + pw.print(incallBackBehaviorToString(mIncallBackBehavior)); + pw.print(" mEndcallBehavior="); + pw.println(endcallBehaviorToString(mEndcallBehavior)); + pw.print(prefix); pw.print("mHomePressed="); pw.println(mHomePressed); + pw.print(prefix); + pw.print("mAwake="); pw.print(mAwake); + pw.print("mScreenOnEarly="); pw.print(mScreenOnEarly); pw.print(" mScreenOnFully="); pw.println(mScreenOnFully); pw.print(prefix); pw.print("mKeyguardDrawComplete="); pw.print(mKeyguardDrawComplete); pw.print(" mWindowManagerDrawComplete="); pw.println(mWindowManagerDrawComplete); - pw.print(prefix); pw.print("mOrientationSensorEnabled="); - pw.println(mOrientationSensorEnabled); pw.print(prefix); pw.print("mOverscanScreen=("); pw.print(mOverscanScreenLeft); pw.print(","); pw.print(mOverscanScreenTop); pw.print(") "); pw.print(mOverscanScreenWidth); @@ -8407,8 +8486,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mLastInputMethodTargetWindow="); pw.println(mLastInputMethodTargetWindow); } - pw.print(prefix); pw.print("mDismissImeOnBackKeyPressed="); - pw.println(mDismissImeOnBackKeyPressed); if (mStatusBar != null) { pw.print(prefix); pw.print("mStatusBar="); pw.print(mStatusBar); pw.print(" isStatusBarKeyguard="); @@ -8441,26 +8518,28 @@ public class PhoneWindowManager implements WindowManagerPolicy { } pw.print(prefix); pw.print("mTopIsFullscreen="); pw.print(mTopIsFullscreen); pw.print(" mKeyguardOccluded="); pw.println(mKeyguardOccluded); - pw.print(" mKeyguardOccludedChanged="); pw.println(mKeyguardOccludedChanged); + pw.print(prefix); + pw.print("mKeyguardOccludedChanged="); pw.print(mKeyguardOccludedChanged); pw.print(" mPendingKeyguardOccluded="); pw.println(mPendingKeyguardOccluded); pw.print(prefix); pw.print("mForceStatusBar="); pw.print(mForceStatusBar); pw.print(" mForceStatusBarFromKeyguard="); pw.println(mForceStatusBarFromKeyguard); - pw.print(prefix); pw.print("mHomePressed="); pw.println(mHomePressed); pw.print(prefix); pw.print("mAllowLockscreenWhenOn="); pw.print(mAllowLockscreenWhenOn); pw.print(" mLockScreenTimeout="); pw.print(mLockScreenTimeout); pw.print(" mLockScreenTimerActive="); pw.println(mLockScreenTimerActive); - pw.print(prefix); pw.print("mEndcallBehavior="); pw.print(mEndcallBehavior); - pw.print(" mIncallPowerBehavior="); pw.print(mIncallPowerBehavior); - pw.print(" mIncallBackBehavior="); pw.print(mIncallBackBehavior); - pw.print(" mLongPressOnHomeBehavior="); pw.println(mLongPressOnHomeBehavior); - pw.print(prefix); pw.print("mLandscapeRotation="); pw.print(mLandscapeRotation); - pw.print(" mSeascapeRotation="); pw.println(mSeascapeRotation); - pw.print(prefix); pw.print("mPortraitRotation="); pw.print(mPortraitRotation); - pw.print(" mUpsideDownRotation="); pw.println(mUpsideDownRotation); - pw.print(prefix); pw.print("mDemoHdmiRotation="); pw.print(mDemoHdmiRotation); + pw.print(prefix); pw.print("mLandscapeRotation="); + pw.print(Surface.rotationToString(mLandscapeRotation)); + pw.print(" mSeascapeRotation="); + pw.println(Surface.rotationToString(mSeascapeRotation)); + pw.print(prefix); pw.print("mPortraitRotation="); + pw.print(Surface.rotationToString(mPortraitRotation)); + pw.print(" mUpsideDownRotation="); + pw.println(Surface.rotationToString(mUpsideDownRotation)); + pw.print(prefix); pw.print("mDemoHdmiRotation="); + pw.print(Surface.rotationToString(mDemoHdmiRotation)); pw.print(" mDemoHdmiRotationLock="); pw.println(mDemoHdmiRotationLock); - pw.print(prefix); pw.print("mUndockedHdmiRotation="); pw.println(mUndockedHdmiRotation); + pw.print(prefix); pw.print("mUndockedHdmiRotation="); + pw.println(Surface.rotationToString(mUndockedHdmiRotation)); if (mHasFeatureLeanback) { pw.print(prefix); pw.print("mAccessibilityTvKey1Pressed="); pw.println(mAccessibilityTvKey1Pressed); @@ -8487,5 +8566,169 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mKeyguardDelegate != null) { mKeyguardDelegate.dump(prefix, pw); } + + pw.print(prefix); pw.println("Looper state:"); + mHandler.getLooper().dump(new PrintWriterPrinter(pw), prefix + " "); + } + + private static String allowAllRotationsToString(int allowAll) { + switch (allowAll) { + case -1: + return "unknown"; + case 0: + return "false"; + case 1: + return "true"; + default: + return Integer.toString(allowAll); + } + } + + private static String endcallBehaviorToString(int behavior) { + StringBuilder sb = new StringBuilder(); + if ((behavior & Settings.System.END_BUTTON_BEHAVIOR_HOME) != 0 ) { + sb.append("home|"); + } + if ((behavior & Settings.System.END_BUTTON_BEHAVIOR_SLEEP) != 0) { + sb.append("sleep|"); + } + + final int N = sb.length(); + if (N == 0) { + return "<nothing>"; + } else { + // Chop off the trailing '|' + return sb.substring(0, N - 1); + } + } + + private static String incallPowerBehaviorToString(int behavior) { + if ((behavior & Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP) != 0) { + return "hangup"; + } else { + return "sleep"; + } + } + + private static String incallBackBehaviorToString(int behavior) { + if ((behavior & Settings.Secure.INCALL_BACK_BUTTON_BEHAVIOR_HANGUP) != 0) { + return "hangup"; + } else { + return "<nothing>"; + } + } + + private static String longPressOnBackBehaviorToString(int behavior) { + switch (behavior) { + case LONG_PRESS_BACK_NOTHING: + return "LONG_PRESS_BACK_NOTHING"; + case LONG_PRESS_BACK_GO_TO_VOICE_ASSIST: + return "LONG_PRESS_BACK_GO_TO_VOICE_ASSIST"; + default: + return Integer.toString(behavior); + } + } + + private static String panicPressOnBackBehaviorToString(int behavior) { + switch (behavior) { + case PANIC_PRESS_BACK_NOTHING: + return "PANIC_PRESS_BACK_NOTHING"; + case PANIC_PRESS_BACK_HOME: + return "PANIC_PRESS_BACK_HOME"; + default: + return Integer.toString(behavior); + } + } + + private static String longPressOnHomeBehaviorToString(int behavior) { + switch (behavior) { + case LONG_PRESS_HOME_NOTHING: + return "LONG_PRESS_HOME_NOTHING"; + case LONG_PRESS_HOME_ALL_APPS: + return "LONG_PRESS_HOME_ALL_APPS"; + case LONG_PRESS_HOME_ASSIST: + return "LONG_PRESS_HOME_ASSIST"; + default: + return Integer.toString(behavior); + } + } + + private static String doubleTapOnHomeBehaviorToString(int behavior) { + switch (behavior) { + case DOUBLE_TAP_HOME_NOTHING: + return "DOUBLE_TAP_HOME_NOTHING"; + case DOUBLE_TAP_HOME_RECENT_SYSTEM_UI: + return "DOUBLE_TAP_HOME_RECENT_SYSTEM_UI"; + default: + return Integer.toString(behavior); + } + } + + private static String shortPressOnPowerBehaviorToString(int behavior) { + switch (behavior) { + case SHORT_PRESS_POWER_NOTHING: + return "SHORT_PRESS_POWER_NOTHING"; + case SHORT_PRESS_POWER_GO_TO_SLEEP: + return "SHORT_PRESS_POWER_GO_TO_SLEEP"; + case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP: + return "SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP"; + case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME: + return "SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME"; + case SHORT_PRESS_POWER_GO_HOME: + return "SHORT_PRESS_POWER_GO_HOME"; + case SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME: + return "SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME"; + default: + return Integer.toString(behavior); + } + } + + private static String longPressOnPowerBehaviorToString(int behavior) { + switch (behavior) { + case LONG_PRESS_POWER_NOTHING: + return "LONG_PRESS_POWER_NOTHING"; + case LONG_PRESS_POWER_GLOBAL_ACTIONS: + return "LONG_PRESS_POWER_GLOBAL_ACTIONS"; + case LONG_PRESS_POWER_SHUT_OFF: + return "LONG_PRESS_POWER_SHUT_OFF"; + case LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM: + return "LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM"; + default: + return Integer.toString(behavior); + } + } + private static String multiPressOnPowerBehaviorToString(int behavior) { + switch (behavior) { + case MULTI_PRESS_POWER_NOTHING: + return "MULTI_PRESS_POWER_NOTHING"; + case MULTI_PRESS_POWER_THEATER_MODE: + return "MULTI_PRESS_POWER_THEATER_MODE"; + case MULTI_PRESS_POWER_BRIGHTNESS_BOOST: + return "MULTI_PRESS_POWER_BRIGHTNESS_BOOST"; + default: + return Integer.toString(behavior); + } + } + + private static String shortPressOnSleepBehaviorToString(int behavior) { + switch (behavior) { + case SHORT_PRESS_SLEEP_GO_TO_SLEEP: + return "SHORT_PRESS_SLEEP_GO_TO_SLEEP"; + case SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME: + return "SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME"; + default: + return Integer.toString(behavior); + } + } + + private static String shortPressOnWindowBehaviorToString(int behavior) { + switch (behavior) { + case SHORT_PRESS_WINDOW_NOTHING: + return "SHORT_PRESS_WINDOW_NOTHING"; + case SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE: + return "SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE"; + default: + return Integer.toString(behavior); + } } } diff --git a/services/core/java/com/android/server/policy/StatusBarController.java b/services/core/java/com/android/server/policy/StatusBarController.java index 7d67b60a9e9f..ecc88b50a37c 100644 --- a/services/core/java/com/android/server/policy/StatusBarController.java +++ b/services/core/java/com/android/server/policy/StatusBarController.java @@ -112,6 +112,14 @@ public class StatusBarController extends BarController { View.STATUS_BAR_TRANSPARENT); } + + public void setTopAppHidesStatusBar(boolean hidesStatusBar) { + StatusBarManagerInternal statusbar = getStatusBarInternal(); + if (statusbar != null) { + statusbar.setTopAppHidesStatusBar(hidesStatusBar); + } + } + @Override protected boolean skipAnimation() { return mWin.getAttrs().height == MATCH_PARENT; diff --git a/services/core/java/com/android/server/policy/WindowOrientationListener.java b/services/core/java/com/android/server/policy/WindowOrientationListener.java index 64f64c0d45d6..169fd278f665 100644 --- a/services/core/java/com/android/server/policy/WindowOrientationListener.java +++ b/services/core/java/com/android/server/policy/WindowOrientationListener.java @@ -26,6 +26,7 @@ import android.os.SystemClock; import android.os.SystemProperties; import android.text.TextUtils; import android.util.Slog; +import android.view.Surface; import java.io.PrintWriter; import java.util.Arrays; @@ -236,7 +237,7 @@ public abstract class WindowOrientationListener { pw.println(prefix + TAG); prefix += " "; pw.println(prefix + "mEnabled=" + mEnabled); - pw.println(prefix + "mCurrentRotation=" + mCurrentRotation); + pw.println(prefix + "mCurrentRotation=" + Surface.rotationToString(mCurrentRotation)); pw.println(prefix + "mSensorType=" + mSensorType); pw.println(prefix + "mSensor=" + mSensor); pw.println(prefix + "mRate=" + mRate); @@ -1026,8 +1027,9 @@ public abstract class WindowOrientationListener { public void dumpLocked(PrintWriter pw, String prefix) { pw.println(prefix + "OrientationSensorJudge"); prefix += " "; - pw.println(prefix + "mDesiredRotation=" + mDesiredRotation); - pw.println(prefix + "mProposedRotation=" + mProposedRotation); + pw.println(prefix + "mDesiredRotation=" + Surface.rotationToString(mDesiredRotation)); + pw.println(prefix + "mProposedRotation=" + + Surface.rotationToString(mProposedRotation)); pw.println(prefix + "mTouching=" + mTouching); pw.println(prefix + "mTouchEndedTimestampNanos=" + mTouchEndedTimestampNanos); } diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java index 50e5e7bd2312..70cd54ffd09d 100644 --- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java +++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java @@ -1,5 +1,7 @@ package com.android.server.policy.keyguard; +import static android.view.Display.INVALID_DISPLAY; + import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; @@ -13,6 +15,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.util.Log; import android.util.Slog; +import android.view.WindowManagerPolicy; import android.view.WindowManagerPolicy.OnKeyguardExitResult; import com.android.internal.policy.IKeyguardDismissCallback; @@ -201,7 +204,10 @@ public class KeyguardServiceDelegate { mKeyguardState.reset(); mHandler.post(() -> { try { - ActivityManager.getService().setLockScreenShown(true); + // There are no longer any keyguard windows on secondary displays, so pass + // INVALID_DISPLAY. All that means is that showWhenLocked activities on + // secondary displays now get to show. + ActivityManager.getService().setLockScreenShown(true, INVALID_DISPLAY); } catch (RemoteException e) { // Local call. } @@ -412,13 +418,45 @@ public class KeyguardServiceDelegate { pw.println(prefix + "systemIsReady=" + mKeyguardState.systemIsReady); pw.println(prefix + "deviceHasKeyguard=" + mKeyguardState.deviceHasKeyguard); pw.println(prefix + "enabled=" + mKeyguardState.enabled); - pw.println(prefix + "offReason=" + mKeyguardState.offReason); + pw.println(prefix + "offReason=" + + WindowManagerPolicy.offReasonToString(mKeyguardState.offReason)); pw.println(prefix + "currentUser=" + mKeyguardState.currentUser); pw.println(prefix + "bootCompleted=" + mKeyguardState.bootCompleted); - pw.println(prefix + "screenState=" + mKeyguardState.screenState); - pw.println(prefix + "interactiveState=" + mKeyguardState.interactiveState); + pw.println(prefix + "screenState=" + screenStateToString(mKeyguardState.screenState)); + pw.println(prefix + "interactiveState=" + + interactiveStateToString(mKeyguardState.interactiveState)); if (mKeyguardService != null) { mKeyguardService.dump(prefix, pw); } } + + private static String screenStateToString(int screen) { + switch (screen) { + case SCREEN_STATE_OFF: + return "SCREEN_STATE_OFF"; + case SCREEN_STATE_TURNING_ON: + return "SCREEN_STATE_TURNING_ON"; + case SCREEN_STATE_ON: + return "SCREEN_STATE_ON"; + case SCREEN_STATE_TURNING_OFF: + return "SCREEN_STATE_TURNING_OFF"; + default: + return Integer.toString(screen); + } + } + + private static String interactiveStateToString(int interactive) { + switch (interactive) { + case INTERACTIVE_STATE_SLEEP: + return "INTERACTIVE_STATE_SLEEP"; + case INTERACTIVE_STATE_WAKING: + return "INTERACTIVE_STATE_WAKING"; + case INTERACTIVE_STATE_AWAKE: + return "INTERACTIVE_STATE_AWAKE"; + case INTERACTIVE_STATE_GOING_TO_SLEEP: + return "INTERACTIVE_STATE_GOING_TO_SLEEP"; + default: + return Integer.toString(interactive); + } + } } diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 3b701302aae1..338ad2a951c9 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -1569,12 +1569,15 @@ public final class PowerManagerService extends SystemService return true; } - private void setWakefulnessLocked(int wakefulness, int reason) { + @VisibleForTesting + void setWakefulnessLocked(int wakefulness, int reason) { if (mWakefulness != wakefulness) { mWakefulness = wakefulness; mWakefulnessChanging = true; mDirty |= DIRTY_WAKEFULNESS; - mNotifier.onWakefulnessChangeStarted(wakefulness, reason); + if (mNotifier != null) { + mNotifier.onWakefulnessChangeStarted(wakefulness, reason); + } } } @@ -2432,11 +2435,8 @@ public final class PowerManagerService extends SystemService return value >= -1.0f && value <= 1.0f; } - private int getDesiredScreenPolicyLocked() { - if (mIsVrModeEnabled) { - return DisplayPowerRequest.POLICY_VR; - } - + @VisibleForTesting + int getDesiredScreenPolicyLocked() { if (mWakefulness == WAKEFULNESS_ASLEEP || sQuiescent) { return DisplayPowerRequest.POLICY_OFF; } @@ -2452,6 +2452,13 @@ public final class PowerManagerService extends SystemService // doze after screen off. This causes the screen off transition to be skipped. } + // It is important that POLICY_VR check happens after the wakefulness checks above so + // that VR-mode does not prevent displays from transitioning to the correct state when + // dozing or sleeping. + if (mIsVrModeEnabled) { + return DisplayPowerRequest.POLICY_VR; + } + if ((mWakeLockSummary & WAKE_LOCK_SCREEN_BRIGHT) != 0 || (mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0 || !mBootCompleted @@ -3113,6 +3120,11 @@ public final class PowerManagerService extends SystemService } } + @VisibleForTesting + void setVrModeEnabled(boolean enabled) { + mIsVrModeEnabled = enabled; + } + private void powerHintInternal(int hintId, int data) { nativeSendPowerHint(hintId, data); } @@ -3810,7 +3822,7 @@ public final class PowerManagerService extends SystemService synchronized (mLock) { if (mIsVrModeEnabled != enabled) { - mIsVrModeEnabled = enabled; + setVrModeEnabled(enabled); mDirty |= DIRTY_VR_MODE_CHANGED; updatePowerStateLocked(); } diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java index 63900e0eb067..853e1b269c92 100644 --- a/services/core/java/com/android/server/power/ShutdownThread.java +++ b/services/core/java/com/android/server/power/ShutdownThread.java @@ -51,6 +51,7 @@ import android.os.UserManager; import android.os.Vibrator; import android.os.storage.IStorageManager; import android.os.storage.IStorageShutdownObserver; +import android.util.ArrayMap; import android.util.Log; import android.util.TimingsTraceLog; import android.view.WindowManager; @@ -62,7 +63,9 @@ import com.android.server.pm.PackageManagerService; import com.android.server.statusbar.StatusBarManagerInternal; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; public final class ShutdownThread extends Thread { // constants @@ -107,8 +110,22 @@ public final class ShutdownThread extends Thread { .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) .build(); - private static final TimingsTraceLog SHUTDOWN_TIMINGS_LOG = new TimingsTraceLog( - "ShutdownTiming", Trace.TRACE_TAG_SYSTEM_SERVER); + // Metrics that will be reported to tron after reboot + private static final ArrayMap<String, Long> TRON_METRICS = new ArrayMap<>(); + + // File to use for save metrics + private static final String METRICS_FILE_BASENAME = "/data/system/shutdown-metrics"; + + // Metrics names to be persisted in shutdown-metrics file + private static String METRIC_SYSTEM_SERVER = "shutdown_system_server"; + private static String METRIC_SEND_BROADCAST = "shutdown_send_shutdown_broadcast"; + private static String METRIC_AM = "shutdown_activity_manager"; + private static String METRIC_PM = "shutdown_package_manager"; + private static String METRIC_RADIOS = "shutdown_radios"; + private static String METRIC_BT = "shutdown_bt"; + private static String METRIC_RADIO = "shutdown_radio"; + private static String METRIC_NFC = "shutdown_nfc"; + private static String METRIC_SM = "shutdown_storage_manager"; private final Object mActionDoneSync = new Object(); private boolean mActionDone; @@ -348,7 +365,6 @@ public final class ShutdownThread extends Thread { } private static void beginShutdownSequence(Context context) { - SHUTDOWN_TIMINGS_LOG.traceBegin("SystemServerShutdown"); synchronized (sIsStartedGuard) { if (sIsStarted) { Log.d(TAG, "Shutdown sequence already running, returning."); @@ -405,6 +421,10 @@ public final class ShutdownThread extends Thread { * Shuts off power regardless of radio and bluetooth state if the alloted time has passed. */ public void run() { + TimingsTraceLog shutdownTimingLog = newTimingsLog(); + shutdownTimingLog.traceBegin("SystemServerShutdown"); + metricStarted(METRIC_SYSTEM_SERVER); + BroadcastReceiver br = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // We don't allow apps to cancel this, so ignore the result. @@ -430,7 +450,8 @@ public final class ShutdownThread extends Thread { SystemProperties.set(REBOOT_SAFEMODE_PROPERTY, "1"); } - SHUTDOWN_TIMINGS_LOG.traceBegin("SendShutdownBroadcast"); + metricStarted(METRIC_SEND_BROADCAST); + shutdownTimingLog.traceBegin("SendShutdownBroadcast"); Log.i(TAG, "Sending shutdown broadcast..."); // First send the high-level shut down broadcast. @@ -462,10 +483,12 @@ public final class ShutdownThread extends Thread { if (mRebootHasProgressBar) { sInstance.setRebootProgress(BROADCAST_STOP_PERCENT, null); } - SHUTDOWN_TIMINGS_LOG.traceEnd(); // SendShutdownBroadcast + shutdownTimingLog.traceEnd(); // SendShutdownBroadcast + metricEnded(METRIC_SEND_BROADCAST); Log.i(TAG, "Shutting down activity manager..."); - SHUTDOWN_TIMINGS_LOG.traceBegin("ShutdownActivityManager"); + shutdownTimingLog.traceBegin("ShutdownActivityManager"); + metricStarted(METRIC_AM); final IActivityManager am = IActivityManager.Stub.asInterface(ServiceManager.checkService("activity")); @@ -478,10 +501,12 @@ public final class ShutdownThread extends Thread { if (mRebootHasProgressBar) { sInstance.setRebootProgress(ACTIVITY_MANAGER_STOP_PERCENT, null); } - SHUTDOWN_TIMINGS_LOG.traceEnd(); // ShutdownActivityManager + shutdownTimingLog.traceEnd();// ShutdownActivityManager + metricEnded(METRIC_AM); Log.i(TAG, "Shutting down package manager..."); - SHUTDOWN_TIMINGS_LOG.traceBegin("ShutdownPackageManager"); + shutdownTimingLog.traceBegin("ShutdownPackageManager"); + metricStarted(METRIC_PM); final PackageManagerService pm = (PackageManagerService) ServiceManager.getService("package"); @@ -491,15 +516,18 @@ public final class ShutdownThread extends Thread { if (mRebootHasProgressBar) { sInstance.setRebootProgress(PACKAGE_MANAGER_STOP_PERCENT, null); } - SHUTDOWN_TIMINGS_LOG.traceEnd(); // ShutdownPackageManager + shutdownTimingLog.traceEnd(); // ShutdownPackageManager + metricEnded(METRIC_PM); // Shutdown radios. - SHUTDOWN_TIMINGS_LOG.traceBegin("ShutdownRadios"); + shutdownTimingLog.traceBegin("ShutdownRadios"); + metricStarted(METRIC_RADIOS); shutdownRadios(MAX_RADIO_WAIT_TIME); if (mRebootHasProgressBar) { sInstance.setRebootProgress(RADIO_STOP_PERCENT, null); } - SHUTDOWN_TIMINGS_LOG.traceEnd(); // ShutdownRadios + shutdownTimingLog.traceEnd(); // ShutdownRadios + metricEnded(METRIC_RADIOS); // Shutdown StorageManagerService to ensure media is in a safe state IStorageShutdownObserver observer = new IStorageShutdownObserver.Stub() { @@ -510,7 +538,8 @@ public final class ShutdownThread extends Thread { }; Log.i(TAG, "Shutting down StorageManagerService"); - SHUTDOWN_TIMINGS_LOG.traceBegin("ShutdownStorageManager"); + shutdownTimingLog.traceBegin("ShutdownStorageManager"); + metricStarted(METRIC_SM); // Set initial variables and time out time. mActionDone = false; @@ -545,7 +574,8 @@ public final class ShutdownThread extends Thread { } } } - SHUTDOWN_TIMINGS_LOG.traceEnd(); // ShutdownStorageManager + shutdownTimingLog.traceEnd(); // ShutdownStorageManager + metricEnded(METRIC_SM); if (mRebootHasProgressBar) { sInstance.setRebootProgress(MOUNT_SERVICE_STOP_PERCENT, null); @@ -555,9 +585,29 @@ public final class ShutdownThread extends Thread { uncrypt(); } + shutdownTimingLog.traceEnd(); // SystemServerShutdown + metricEnded(METRIC_SYSTEM_SERVER); + saveMetrics(mReboot); rebootOrShutdown(mContext, mReboot, mReason); } + private static TimingsTraceLog newTimingsLog() { + return new TimingsTraceLog("ShutdownTiming", Trace.TRACE_TAG_SYSTEM_SERVER); + } + + private static void metricStarted(String metricKey) { + synchronized (TRON_METRICS) { + TRON_METRICS.put(metricKey, -1 * SystemClock.elapsedRealtime()); + } + } + + private static void metricEnded(String metricKey) { + synchronized (TRON_METRICS) { + TRON_METRICS + .put(metricKey, SystemClock.elapsedRealtime() + TRON_METRICS.get(metricKey)); + } + } + private void setRebootProgress(final int progress, final CharSequence message) { mHandler.post(new Runnable() { @Override @@ -579,6 +629,7 @@ public final class ShutdownThread extends Thread { final boolean[] done = new boolean[1]; Thread t = new Thread() { public void run() { + TimingsTraceLog shutdownTimingsTraceLog = newTimingsLog(); boolean nfcOff; boolean bluetoothReadyForShutdown; boolean radioOff; @@ -590,12 +641,12 @@ public final class ShutdownThread extends Thread { final IBluetoothManager bluetooth = IBluetoothManager.Stub.asInterface(ServiceManager.checkService( BluetoothAdapter.BLUETOOTH_MANAGER_SERVICE)); - final long nfcShutdownStarted = SystemClock.elapsedRealtime(); try { nfcOff = nfc == null || nfc.getState() == NfcAdapter.STATE_OFF; if (!nfcOff) { Log.w(TAG, "Turning off NFC..."); + metricStarted(METRIC_NFC); nfc.disable(false); // Don't persist new state } } catch (RemoteException ex) { @@ -603,12 +654,12 @@ public final class ShutdownThread extends Thread { nfcOff = true; } - final long btShutdownStarted = SystemClock.elapsedRealtime(); try { bluetoothReadyForShutdown = bluetooth == null || bluetooth.getState() == BluetoothAdapter.STATE_OFF; if (!bluetoothReadyForShutdown) { Log.w(TAG, "Disabling Bluetooth..."); + metricStarted(METRIC_BT); bluetooth.disable(mContext.getPackageName(), false); // disable but don't persist new state } } catch (RemoteException ex) { @@ -616,11 +667,11 @@ public final class ShutdownThread extends Thread { bluetoothReadyForShutdown = true; } - final long radioShutdownStarted = SystemClock.elapsedRealtime(); try { radioOff = phone == null || !phone.needMobileRadioShutdown(); if (!radioOff) { Log.w(TAG, "Turning off cellular radios..."); + metricStarted(METRIC_RADIO); phone.shutdownMobileRadios(); } } catch (RemoteException ex) { @@ -653,8 +704,9 @@ public final class ShutdownThread extends Thread { } if (bluetoothReadyForShutdown) { Log.i(TAG, "Bluetooth turned off."); - SHUTDOWN_TIMINGS_LOG.logDuration("ShutdownBt", - SystemClock.elapsedRealtime() - btShutdownStarted); + metricEnded(METRIC_BT); + shutdownTimingsTraceLog + .logDuration("ShutdownBt", TRON_METRICS.get(METRIC_BT)); } } if (!radioOff) { @@ -666,8 +718,9 @@ public final class ShutdownThread extends Thread { } if (radioOff) { Log.i(TAG, "Radio turned off."); - SHUTDOWN_TIMINGS_LOG.logDuration("ShutdownRadio", - SystemClock.elapsedRealtime() - radioShutdownStarted); + metricEnded(METRIC_RADIO); + shutdownTimingsTraceLog + .logDuration("ShutdownRadio", TRON_METRICS.get(METRIC_RADIO)); } } if (!nfcOff) { @@ -679,8 +732,9 @@ public final class ShutdownThread extends Thread { } if (nfcOff) { Log.i(TAG, "NFC turned off."); - SHUTDOWN_TIMINGS_LOG.logDuration("ShutdownNfc", - SystemClock.elapsedRealtime() - nfcShutdownStarted); + metricEnded(METRIC_NFC); + shutdownTimingsTraceLog + .logDuration("ShutdownNfc", TRON_METRICS.get(METRIC_NFC)); } } @@ -708,14 +762,13 @@ public final class ShutdownThread extends Thread { /** * Do not call this directly. Use {@link #reboot(Context, String, boolean)} - * or {@link #shutdown(Context, boolean)} instead. + * or {@link #shutdown(Context, String, boolean)} instead. * * @param context Context used to vibrate or null without vibration * @param reboot true to reboot or false to shutdown * @param reason reason for reboot/shutdown */ public static void rebootOrShutdown(final Context context, boolean reboot, String reason) { - SHUTDOWN_TIMINGS_LOG.traceEnd(); // SystemServerShutdown if (reboot) { Log.i(TAG, "Rebooting, reason: " + reason); PowerManagerService.lowLevelReboot(reason); @@ -742,6 +795,33 @@ public final class ShutdownThread extends Thread { PowerManagerService.lowLevelShutdown(reason); } + private static void saveMetrics(boolean reboot) { + StringBuilder metricValue = new StringBuilder(); + metricValue.append("reboot:"); + metricValue.append(reboot ? "y" : "n"); + final int metricsSize = TRON_METRICS.size(); + for (int i = 0; i < metricsSize; i++) { + final String name = TRON_METRICS.keyAt(i); + final long value = TRON_METRICS.valueAt(i); + if (value < 0) { + Log.e(TAG, "metricEnded wasn't called for " + name); + continue; + } + metricValue.append(',').append(name).append(':').append(value); + } + File tmp = new File(METRICS_FILE_BASENAME + ".tmp"); + boolean saved = false; + try (FileOutputStream fos = new FileOutputStream(tmp)) { + fos.write(metricValue.toString().getBytes(StandardCharsets.UTF_8)); + saved = true; + } catch (IOException e) { + Log.e(TAG,"Cannot save shutdown metrics", e); + } + if (saved) { + tmp.renameTo(new File(METRICS_FILE_BASENAME + ".txt")); + } + } + private void uncrypt() { Log.i(TAG, "Calling uncrypt and monitoring the progress..."); diff --git a/services/core/java/com/android/server/search/SearchManagerService.java b/services/core/java/com/android/server/search/SearchManagerService.java index 896977141702..c3fa82344941 100644 --- a/services/core/java/com/android/server/search/SearchManagerService.java +++ b/services/core/java/com/android/server/search/SearchManagerService.java @@ -17,7 +17,6 @@ package com.android.server.search; import android.app.ActivityManager; -import android.app.AppGlobals; import android.app.IActivityManager; import android.app.ISearchManager; import android.app.SearchManager; @@ -26,7 +25,6 @@ import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.ContentObserver; @@ -37,6 +35,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; +import android.service.voice.VoiceInteractionService; import android.util.Log; import android.util.SparseArray; @@ -272,24 +271,25 @@ public class SearchManagerService extends ISearchManager.Stub { } } + // Check and return VIS component private ComponentName getLegacyAssistComponent(int userHandle) { try { userHandle = ActivityManager.handleIncomingUser(Binder.getCallingPid(), - Binder.getCallingUid(), userHandle, true, false, "getLegacyAssistComponent", null); - IPackageManager pm = AppGlobals.getPackageManager(); - Intent assistIntent = new Intent(Intent.ACTION_ASSIST); - ResolveInfo info = - pm.resolveIntent(assistIntent, - assistIntent.resolveTypeIfNeeded(mContext.getContentResolver()), - PackageManager.MATCH_DEFAULT_ONLY, userHandle); - if (info != null) { + Binder.getCallingUid(), userHandle, true, false, "getLegacyAssistComponent", + null); + PackageManager pm = mContext.getPackageManager(); + Intent intentAssistProbe = new Intent(VoiceInteractionService.SERVICE_INTERFACE); + List<ResolveInfo> infoListVis = pm.queryIntentServicesAsUser(intentAssistProbe, + PackageManager.MATCH_SYSTEM_ONLY, userHandle); + if (infoListVis == null || infoListVis.isEmpty()) { + return null; + } else { + ResolveInfo rInfo = infoListVis.get(0); return new ComponentName( - info.activityInfo.applicationInfo.packageName, - info.activityInfo.name); + rInfo.serviceInfo.applicationInfo.packageName, + rInfo.serviceInfo.name); + } - } catch (RemoteException re) { - // Local call - Log.e(TAG, "RemoteException in getLegacyAssistComponent: " + re); } catch (Exception e) { Log.e(TAG, "Exception in getLegacyAssistComponent: " + e); } @@ -304,9 +304,15 @@ public class SearchManagerService extends ISearchManager.Stub { } long ident = Binder.clearCallingIdentity(); try { - Intent intent = new Intent(Intent.ACTION_ASSIST); + Intent intent = new Intent(VoiceInteractionService.SERVICE_INTERFACE); intent.setComponent(comp); + IActivityManager am = ActivityManager.getService(); + if (args != null) { + args.putInt(Intent.EXTRA_KEY_EVENT, android.view.KeyEvent.KEYCODE_ASSIST); + } + intent.putExtras(args); + return am.launchAssistIntent(intent, ActivityManager.ASSIST_CONTEXT_BASIC, hint, userHandle, args); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java new file mode 100644 index 000000000000..11ae2129c339 --- /dev/null +++ b/services/core/java/com/android/server/stats/StatsCompanionService.java @@ -0,0 +1,259 @@ +/* + * 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.server.stats; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Binder; +import android.os.IBinder; +import android.os.IStatsCompanionService; +import android.os.IStatsManager; +import android.os.Process; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.util.Slog; + +import com.android.internal.annotations.GuardedBy; +import com.android.server.SystemService; + +/** + * Helper service for statsd (the native stats management service in cmds/statsd/). + * Used for registering and receiving alarms on behalf of statsd. + */ +public class StatsCompanionService extends IStatsCompanionService.Stub { + static final String TAG = "StatsCompanionService"; + static final boolean DEBUG = true; + + private final Context mContext; + private final AlarmManager mAlarmManager; + @GuardedBy("sStatsdLock") + private static IStatsManager sStatsd; + private static final Object sStatsdLock = new Object(); + + private final PendingIntent mAnomalyAlarmIntent; + private final PendingIntent mPollingAlarmIntent; + + public StatsCompanionService(Context context) { + super(); + mContext = context; + mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); + + mAnomalyAlarmIntent = PendingIntent.getBroadcast(mContext, 0, + new Intent(mContext, AnomalyAlarmReceiver.class), 0); + mPollingAlarmIntent = PendingIntent.getBroadcast(mContext, 0, + new Intent(mContext, PollingAlarmReceiver.class), 0); + } + + public final static class AnomalyAlarmReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + Slog.i(TAG, "StatsCompanionService believes an anomaly has occurred."); + synchronized (sStatsdLock) { + if (sStatsd == null) { + Slog.w(TAG, "Could not access statsd to inform it of anomaly alarm firing"); + return; + } + try { + // Two-way call to statsd to retain AlarmManager wakelock + sStatsd.informAnomalyAlarmFired(); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to inform statsd of anomaly alarm firing", e); + } + } + // AlarmManager releases its own wakelock here. + } + }; + + public final static class PollingAlarmReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + if (DEBUG) Slog.d(TAG, "Time to poll something."); + synchronized (sStatsdLock) { + if (sStatsd == null) { + Slog.w(TAG, "Could not access statsd to inform it of polling alarm firing"); + return; + } + try { + // Two-way call to statsd to retain AlarmManager wakelock + sStatsd.informPollAlarmFired(); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to inform statsd of polling alarm firing", e); + } + } + // AlarmManager releases its own wakelock here. + } + }; + + @Override // Binder call + public void setAnomalyAlarm(long timestampMs) { + enforceCallingPermission(); + if (DEBUG) Slog.d(TAG, "Setting anomaly alarm for " + timestampMs); + final long callingToken = Binder.clearCallingIdentity(); + try { + // using RTC, not RTC_WAKEUP, so if device is asleep, will only fire when it awakens. + // This alarm is inexact, leaving its exactness completely up to the OS optimizations. + // AlarmManager will automatically cancel any previous mAnomalyAlarmIntent alarm. + mAlarmManager.set(AlarmManager.RTC, timestampMs, mAnomalyAlarmIntent); + } finally { + Binder.restoreCallingIdentity(callingToken); + } + } + + @Override // Binder call + public void cancelAnomalyAlarm() { + enforceCallingPermission(); + if (DEBUG) Slog.d(TAG, "Cancelling anomaly alarm"); + final long callingToken = Binder.clearCallingIdentity(); + try { + mAlarmManager.cancel(mAnomalyAlarmIntent); + } finally { + Binder.restoreCallingIdentity(callingToken); + } + } + + @Override // Binder call + public void setPollingAlarms(long timestampMs, long intervalMs) { + enforceCallingPermission(); + if (DEBUG) Slog.d(TAG, "Setting polling alarm for " + timestampMs + + " every " + intervalMs + "ms"); + final long callingToken = Binder.clearCallingIdentity(); + try { + // using RTC, not RTC_WAKEUP, so if device is asleep, will only fire when it awakens. + // This alarm is inexact, leaving its exactness completely up to the OS optimizations. + // TODO: totally inexact means that stats per bucket could be quite off. Is this okay? + mAlarmManager.setRepeating(AlarmManager.RTC, timestampMs, intervalMs, + mPollingAlarmIntent); + } finally { + Binder.restoreCallingIdentity(callingToken); + } + } + + @Override // Binder call + public void cancelPollingAlarms() { + enforceCallingPermission(); + if (DEBUG) Slog.d(TAG, "Cancelling polling alarm"); + final long callingToken = Binder.clearCallingIdentity(); + try { + mAlarmManager.cancel(mPollingAlarmIntent); + } finally { + Binder.restoreCallingIdentity(callingToken); + } + } + + @Override + public void statsdReady() { + enforceCallingPermission(); + if (DEBUG) Slog.d(TAG, "learned that statsdReady"); + sayHiToStatsd(); // tell statsd that we're ready too and link to it + } + + private void enforceCallingPermission() { + if (Binder.getCallingPid() == Process.myPid()) { + return; + } + mContext.enforceCallingPermission(android.Manifest.permission.STATSCOMPANION, null); + } + + // Lifecycle and related code + + /** Fetches the statsd IBinder service */ + private static IStatsManager fetchStatsdService() { + return IStatsManager.Stub.asInterface(ServiceManager.getService("stats")); + } + + public static final class Lifecycle extends SystemService { + private StatsCompanionService mStatsCompanionService; + + public Lifecycle(Context context) { + super(context); + } + + @Override + public void onStart() { + mStatsCompanionService = new StatsCompanionService(getContext()); + try { + publishBinderService(Context.STATS_COMPANION_SERVICE, mStatsCompanionService); + if (DEBUG) Slog.d(TAG, "Published " + Context.STATS_COMPANION_SERVICE); + } catch (Exception e) { + Slog.e(TAG, "Failed to publishBinderService", e); + } + } + + @Override + public void onBootPhase(int phase) { + super.onBootPhase(phase); + if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) { + mStatsCompanionService.systemReady(); + } + } + } + + /** Now that the android system is ready, StatsCompanion is ready too, so inform statsd. */ + private void systemReady() { + if (DEBUG) Slog.d(TAG, "Learned that systemReady"); + sayHiToStatsd(); + } + + /** Tells statsd that statscompanion is ready. If the binder call returns, link to statsd. */ + private void sayHiToStatsd() { + synchronized (sStatsdLock) { + if (sStatsd != null) { + Slog.e(TAG, "Trying to fetch statsd, but it was already fetched", + new IllegalStateException("sStatsd is not null when being fetched")); + return; + } + sStatsd = fetchStatsdService(); + if (sStatsd == null) { + Slog.w(TAG, "Could not access statsd"); + return; + } + if (DEBUG) Slog.d(TAG, "Saying hi to statsd"); + try { + sStatsd.statsCompanionReady(); + // If the statsCompanionReady two-way binder call returns, link to statsd. + try { + sStatsd.asBinder().linkToDeath(new StatsdDeathRecipient(), 0); + } catch (RemoteException e) { + Slog.e(TAG, "linkToDeath(StatsdDeathRecipient) failed", e); + forgetEverything(); + } + } catch (RemoteException e) { + Slog.e(TAG, "Failed to inform statsd that statscompanion is ready", e); + forgetEverything(); + } + } + } + + private class StatsdDeathRecipient implements IBinder.DeathRecipient { + @Override + public void binderDied() { + Slog.i(TAG, "Statsd is dead - erase all my knowledge."); + forgetEverything(); + } + } + + private void forgetEverything() { + synchronized (sStatsdLock) { + sStatsd = null; + cancelAnomalyAlarm(); + cancelPollingAlarms(); + } + } + +} diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java index 866fdadc54d7..0884678478f6 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java @@ -80,6 +80,13 @@ public interface StatusBarManagerInternal { void setGlobalActionsListener(GlobalActionsListener listener); void showGlobalActions(); + /** + * Set whether the top app currently hides the statusbar. + * + * @param hidesStatusBar whether it is being hidden + */ + void setTopAppHidesStatusBar(boolean hidesStatusBar); + boolean showShutdownUi(boolean isReboot, String requestString); public interface GlobalActionsListener { diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index d31c2304f460..f10bf1a3ffb5 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -20,7 +20,6 @@ import android.app.ActivityThread; import android.app.StatusBarManager; import android.content.ComponentName; import android.content.Context; -import android.content.pm.PackageManager; import android.graphics.Rect; import android.os.Binder; import android.os.Bundle; @@ -98,12 +97,58 @@ public class StatusBarManagerService extends IStatusBarService.Stub { int what2; IBinder token; + public DisableRecord(int userId, IBinder token) { + this.userId = userId; + this.token = token; + try { + token.linkToDeath(this, 0); + } catch (RemoteException re) { + // Give up + } + } + + @Override public void binderDied() { Slog.i(TAG, "binder died for pkg=" + pkg); disableForUser(0, token, pkg, userId); disable2ForUser(0, token, pkg, userId); token.unlinkToDeath(this, 0); } + + public void setFlags(int what, int which, String pkg) { + switch (which) { + case 1: + what1 = what; + return; + case 2: + what2 = what; + return; + default: + Slog.w(TAG, "Can't set unsupported disable flag " + which + + ": 0x" + Integer.toHexString(what)); + } + this.pkg = pkg; + } + + public int getFlags(int which) { + switch (which) { + case 1: return what1; + case 2: return what2; + default: + Slog.w(TAG, "Can't get unsupported disable flag " + which); + return 0; + } + } + + public boolean isEmpty() { + return what1 == 0 && what2 == 0; + } + + @Override + public String toString() { + return String.format("userId=%d what1=0x%08X what2=0x%08X pkg=%s token=%s", + userId, what1, what2, pkg, token); + } } /** @@ -332,6 +377,15 @@ public class StatusBarManagerService extends IStatusBarService.Stub { } @Override + public void setTopAppHidesStatusBar(boolean hidesStatusBar) { + if (mBar != null) { + try { + mBar.setTopAppHidesStatusBar(hidesStatusBar); + } catch (RemoteException ex) {} + } + } + + @Override public boolean showShutdownUi(boolean isReboot, String reason) { if (!mContext.getResources().getBoolean(R.bool.config_showSysuiShutdown)) { return false; @@ -948,6 +1002,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub { this, in, out, err, args, callback, resultReceiver); } + public String[] getStatusBarIcons() { + return mContext.getResources().getStringArray(R.array.config_statusBarIcons); + } + // ================================================================================ // Can be called from any thread // ================================================================================ @@ -958,42 +1016,42 @@ public class StatusBarManagerService extends IStatusBarService.Stub { Slog.d(TAG, "manageDisableList userId=" + userId + " what=0x" + Integer.toHexString(what) + " pkg=" + pkg); } - // update the list + + // Find matching record, if any final int N = mDisableRecords.size(); - DisableRecord tok = null; + DisableRecord record = null; int i; - for (i=0; i<N; i++) { - DisableRecord t = mDisableRecords.get(i); - if (t.token == token && t.userId == userId) { - tok = t; + for (i = 0; i < N; i++) { + DisableRecord r = mDisableRecords.get(i); + if (r.token == token && r.userId == userId) { + record = r; break; } } - if (what == 0 || !token.isBinderAlive()) { - if (tok != null) { + + // Remove record if binder is already dead + if (!token.isBinderAlive()) { + if (record != null) { mDisableRecords.remove(i); - tok.token.unlinkToDeath(tok, 0); - } - } else { - if (tok == null) { - tok = new DisableRecord(); - tok.userId = userId; - try { - token.linkToDeath(tok, 0); - } - catch (RemoteException ex) { - return; // give up - } - mDisableRecords.add(tok); + record.token.unlinkToDeath(record, 0); } - if (which == 1) { - tok.what1 = what; - } else { - tok.what2 = what; + return; + } + + // Update existing record + if (record != null) { + record.setFlags(what, which, pkg); + if (record.isEmpty()) { + mDisableRecords.remove(i); + record.token.unlinkToDeath(record, 0); } - tok.token = token; - tok.pkg = pkg; + return; } + + // Record doesn't exist, so we create a new one + record = new DisableRecord(userId, token); + record.setFlags(what, which, pkg); + mDisableRecords.add(record); } // lock on mDisableRecords @@ -1004,7 +1062,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub { for (int i=0; i<N; i++) { final DisableRecord rec = mDisableRecords.get(i); if (rec.userId == userId) { - net |= (which == 1) ? rec.what1 : rec.what2; + net |= rec.getFlags(which); } } return net; @@ -1024,11 +1082,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub { pw.println(" mDisableRecords.size=" + N); for (int i=0; i<N; i++) { DisableRecord tok = mDisableRecords.get(i); - pw.println(" [" + i + "] userId=" + tok.userId - + " what1=0x" + Integer.toHexString(tok.what1) - + " what2=0x" + Integer.toHexString(tok.what2) - + " pkg=" + tok.pkg - + " token=" + tok.token); + pw.println(" [" + i + "] " + tok); } pw.println(" mCurrentUserId=" + mCurrentUserId); pw.println(" mIcons="); diff --git a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java index 40bb4961a2bf..4e20f0177b35 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java +++ b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java @@ -25,7 +25,7 @@ import java.io.PrintWriter; public class StatusBarShellCommand extends ShellCommand { - private final IStatusBarService mInterface; + private final StatusBarManagerService mInterface; public StatusBarShellCommand(StatusBarManagerService service) { mInterface = service; @@ -54,6 +54,8 @@ public class StatusBarShellCommand extends ShellCommand { final PrintWriter pw = getOutPrintWriter(); pw.println(String.valueOf(TileService.isQuickSettingsSupported())); return 0; + case "get-status-icons": + return runGetStatusIcons(); default: return handleDefaultCommands(cmd); } @@ -94,6 +96,14 @@ public class StatusBarShellCommand extends ShellCommand { return 0; } + private int runGetStatusIcons() { + final PrintWriter pw = getOutPrintWriter(); + for (String icon : mInterface.getStatusBarIcons()) { + pw.println(icon); + } + return 0; + } + @Override public void onHelp() { final PrintWriter pw = getOutPrintWriter(); @@ -122,5 +132,8 @@ public class StatusBarShellCommand extends ShellCommand { pw.println(" check-support"); pw.println(" Check if this device supports QS + APIs"); pw.println(""); + pw.println(" get-status-icons"); + pw.println(" Print the list of status bar icons and the order they appear in"); + pw.println(""); } } diff --git a/services/core/java/com/android/server/timezone/IntentHelper.java b/services/core/java/com/android/server/timezone/IntentHelper.java index 0cb90657480e..5de543213009 100644 --- a/services/core/java/com/android/server/timezone/IntentHelper.java +++ b/services/core/java/com/android/server/timezone/IntentHelper.java @@ -23,15 +23,22 @@ package com.android.server.timezone; */ interface IntentHelper { - void initialize(String updateAppPackageName, String dataAppPackageName, Listener listener); + void initialize(String updateAppPackageName, String dataAppPackageName, + PackageTracker packageTracker); void sendTriggerUpdateCheck(CheckToken checkToken); - void enableReliabilityTriggering(); + /** + * Schedule a "reliability trigger" after at least minimumDelayMillis, replacing any existing + * scheduled one. A reliability trigger ensures that the {@link PackageTracker} can pick up + * reliably if a previous update check did not complete for some reason. It can happen when + * the device is idle. The trigger is expected to call + * {@link PackageTracker#triggerUpdateIfNeeded(boolean)} with a {@code false} value. + */ + void scheduleReliabilityTrigger(long minimumDelayMillis); - void disableReliabilityTriggering(); - - interface Listener { - void triggerUpdateIfNeeded(boolean packageUpdated); - } + /** + * Make sure there is no reliability trigger scheduled. No-op if there wasn't one. + */ + void unscheduleReliabilityTrigger(); } diff --git a/services/core/java/com/android/server/timezone/IntentHelperImpl.java b/services/core/java/com/android/server/timezone/IntentHelperImpl.java index 11928b964ec5..bc0f6e4b283b 100644 --- a/services/core/java/com/android/server/timezone/IntentHelperImpl.java +++ b/services/core/java/com/android/server/timezone/IntentHelperImpl.java @@ -36,16 +36,13 @@ final class IntentHelperImpl implements IntentHelper { private final Context mContext; private String mUpdaterAppPackageName; - private boolean mReliabilityReceiverEnabled; - private Receiver mReliabilityReceiver; - IntentHelperImpl(Context context) { mContext = context; } @Override - public void initialize( - String updaterAppPackageName, String dataAppPackageName, Listener listener) { + public void initialize(String updaterAppPackageName, String dataAppPackageName, + PackageTracker packageTracker) { mUpdaterAppPackageName = updaterAppPackageName; // Register for events of interest. @@ -53,21 +50,33 @@ final class IntentHelperImpl implements IntentHelper { // The intent filter that triggers when package update events happen that indicate there may // be work to do. IntentFilter packageIntentFilter = new IntentFilter(); - // Either of these mean a downgrade? - packageIntentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED); - packageIntentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED); + packageIntentFilter.addDataScheme("package"); packageIntentFilter.addDataSchemeSpecificPart( updaterAppPackageName, PatternMatcher.PATTERN_LITERAL); packageIntentFilter.addDataSchemeSpecificPart( dataAppPackageName, PatternMatcher.PATTERN_LITERAL); - Receiver packageUpdateReceiver = new Receiver(listener, true /* packageUpdated */); - mContext.registerReceiver(packageUpdateReceiver, packageIntentFilter); - // TODO(nfuller): Add more exotic intents as needed. e.g. - // packageIntentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); - // Also, disabled...? - mReliabilityReceiver = new Receiver(listener, false /* packageUpdated */); + // ACTION_PACKAGE_ADDED is fired when a package is upgraded or downgraded (in addition to + // ACTION_PACKAGE_REMOVED and ACTION_PACKAGE_REPLACED). A system/priv-app can never be + // removed entirely so we do not need to trigger on ACTION_PACKAGE_REMOVED or + // ACTION_PACKAGE_FULLY_REMOVED. + packageIntentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); + + // ACTION_PACKAGE_CHANGED is used when a package is disabled / re-enabled. It is not + // strictly necessary to trigger on this but it won't hurt anything and may catch some cases + // where a package has changed while disabled. + // Note: ACTION_PACKAGE_CHANGED is not fired when updating a suspended app, but + // ACTION_PACKAGE_ADDED, ACTION_PACKAGE_REMOVED and ACTION_PACKAGE_REPLACED are (and the app + // is left in an unsuspended state after this). + packageIntentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED); + + // We do not register for ACTION_PACKAGE_RESTARTED because it doesn't imply an update. + // We do not register for ACTION_PACKAGE_DATA_CLEARED because the updater / data apps are + // not expected to need local data. + + Receiver packageUpdateReceiver = new Receiver(packageTracker); + mContext.registerReceiver(packageUpdateReceiver, packageIntentFilter); } /** Sends an intent to trigger an update check. */ @@ -79,39 +88,26 @@ final class IntentHelperImpl implements IntentHelper { } @Override - public synchronized void enableReliabilityTriggering() { - if (!mReliabilityReceiverEnabled) { - // The intent filter that exists to make updates reliable in the event of failures / - // reboots. - IntentFilter reliabilityIntentFilter = new IntentFilter(); - reliabilityIntentFilter.addAction(Intent.ACTION_IDLE_MAINTENANCE_START); - mContext.registerReceiver(mReliabilityReceiver, reliabilityIntentFilter); - mReliabilityReceiverEnabled = true; - } + public synchronized void scheduleReliabilityTrigger(long minimumDelayMillis) { + TimeZoneUpdateIdler.schedule(mContext, minimumDelayMillis); } @Override - public synchronized void disableReliabilityTriggering() { - if (mReliabilityReceiverEnabled) { - mContext.unregisterReceiver(mReliabilityReceiver); - mReliabilityReceiverEnabled = false; - } + public synchronized void unscheduleReliabilityTrigger() { + TimeZoneUpdateIdler.unschedule(mContext); } private static class Receiver extends BroadcastReceiver { - private final Listener mListener; - private final boolean mPackageUpdated; + private final PackageTracker mPackageTracker; - private Receiver(Listener listener, boolean packageUpdated) { - mListener = listener; - mPackageUpdated = packageUpdated; + private Receiver(PackageTracker packageTracker) { + mPackageTracker = packageTracker; } @Override public void onReceive(Context context, Intent intent) { Slog.d(TAG, "Received intent: " + intent.toString()); - mListener.triggerUpdateIfNeeded(mPackageUpdated); + mPackageTracker.triggerUpdateIfNeeded(true /* packageChanged */); } } - } diff --git a/services/core/java/com/android/server/timezone/PackageTracker.java b/services/core/java/com/android/server/timezone/PackageTracker.java index 24e0fe4841bc..f0306b9b0c38 100644 --- a/services/core/java/com/android/server/timezone/PackageTracker.java +++ b/services/core/java/com/android/server/timezone/PackageTracker.java @@ -51,7 +51,7 @@ import java.io.PrintWriter; */ // Also made non-final so it can be mocked. @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) -public class PackageTracker implements IntentHelper.Listener { +public class PackageTracker { private static final String TAG = "timezone.PackageTracker"; private final PackageManagerHelper mPackageManagerHelper; @@ -72,6 +72,13 @@ public class PackageTracker implements IntentHelper.Listener { // The number of failed checks in a row before reliability checks should stop happening. private long mFailedCheckRetryCount; + /* + * The minimum delay between a successive reliability triggers / other operations. Should to be + * larger than mCheckTimeAllowedMillis to avoid reliability triggers happening during package + * update checks. + */ + private int mDelayBeforeReliabilityCheckMillis; + // Reliability check state: If a check was triggered but not acknowledged within // mCheckTimeAllowedMillis then another one can be triggered. private Long mLastTriggerTimestamp = null; @@ -122,6 +129,7 @@ public class PackageTracker implements IntentHelper.Listener { mDataAppPackageName = mConfigHelper.getDataAppPackageName(); mCheckTimeAllowedMillis = mConfigHelper.getCheckTimeAllowedMillis(); mFailedCheckRetryCount = mConfigHelper.getFailedCheckRetryCount(); + mDelayBeforeReliabilityCheckMillis = mCheckTimeAllowedMillis + (60 * 1000); // Validate the device configuration including the application packages. // The manifest entries in the apps themselves are not validated until use as they can @@ -135,9 +143,10 @@ public class PackageTracker implements IntentHelper.Listener { // Initialize the intent helper. mIntentHelper.initialize(mUpdateAppPackageName, mDataAppPackageName, this); - // Enable the reliability triggering so we will have at least one reliability trigger if - // a package isn't updated. - mIntentHelper.enableReliabilityTriggering(); + // Schedule a reliability trigger so we will have at least one after boot. This will allow + // us to catch if a package updated wasn't handled to completion. There's no hurry: it's ok + // to delay for a while before doing this even if idle. + mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis); Slog.i(TAG, "Time zone updater / data package tracking enabled"); } @@ -195,7 +204,6 @@ public class PackageTracker implements IntentHelper.Listener { * @param packageChanged true if this method was called because a known packaged definitely * changed, false if the cause is a reliability trigger */ - @Override public synchronized void triggerUpdateIfNeeded(boolean packageChanged) { if (!mTrackingEnabled) { throw new IllegalStateException("Unexpected call. Tracking is disabled."); @@ -212,8 +220,8 @@ public class PackageTracker implements IntentHelper.Listener { + " updaterApp=" + updaterAppManifestValid + ", dataApp=" + dataAppManifestValid); - // There's no point in doing reliability checks if the current packages are bad. - mIntentHelper.disableReliabilityTriggering(); + // There's no point in doing any reliability triggers if the current packages are bad. + mIntentHelper.unscheduleReliabilityTrigger(); return; } @@ -238,7 +246,8 @@ public class PackageTracker implements IntentHelper.Listener { Slog.d(TAG, "triggerUpdateIfNeeded: checkComplete call is not yet overdue." + " Not triggering."); - // Not doing any work, but also not disabling future reliability triggers. + // Don't do any work now but we do schedule a future reliability trigger. + mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis); return; } } else if (mCheckFailureCount > mFailedCheckRetryCount) { @@ -247,13 +256,13 @@ public class PackageTracker implements IntentHelper.Listener { Slog.i(TAG, "triggerUpdateIfNeeded: number of allowed consecutive check failures" + " exceeded. Stopping reliability triggers until next reboot or package" + " update."); - mIntentHelper.disableReliabilityTriggering(); + mIntentHelper.unscheduleReliabilityTrigger(); return; } else if (mCheckFailureCount == 0) { // Case 4. Slog.i(TAG, "triggerUpdateIfNeeded: No reliability check required. Last check was" + " successful."); - mIntentHelper.disableReliabilityTriggering(); + mIntentHelper.unscheduleReliabilityTrigger(); return; } } @@ -263,7 +272,7 @@ public class PackageTracker implements IntentHelper.Listener { if (currentInstalledVersions == null) { // This should not happen if the device is configured in a valid way. Slog.e(TAG, "triggerUpdateIfNeeded: currentInstalledVersions was null"); - mIntentHelper.disableReliabilityTriggering(); + mIntentHelper.unscheduleReliabilityTrigger(); return; } @@ -288,7 +297,7 @@ public class PackageTracker implements IntentHelper.Listener { // The last check succeeded and nothing has changed. Do nothing and disable // reliability checks. Slog.i(TAG, "triggerUpdateIfNeeded: Prior check succeeded. No need to trigger."); - mIntentHelper.disableReliabilityTriggering(); + mIntentHelper.unscheduleReliabilityTrigger(); return; } } @@ -299,6 +308,8 @@ public class PackageTracker implements IntentHelper.Listener { if (checkToken == null) { Slog.w(TAG, "triggerUpdateIfNeeded: Unable to generate check token." + " Not sending check request."); + // Trigger again later: perhaps we'll have better luck. + mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis); return; } @@ -309,9 +320,9 @@ public class PackageTracker implements IntentHelper.Listener { // Update the reliability check state in case the update fails. setCheckInProgress(); - // Enable reliability triggering in case the check doesn't succeed and there is no - // response at all. Enabling reliability triggering is idempotent. - mIntentHelper.enableReliabilityTriggering(); + // Schedule a reliability trigger in case the update check doesn't succeed and there is no + // response at all. It will be cancelled if the check is successful in recordCheckResult. + mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis); } /** @@ -370,9 +381,9 @@ public class PackageTracker implements IntentHelper.Listener { + " storage state."); mPackageStatusStorage.resetCheckState(); - // Enable reliability triggering and reset the failure count so we know that the + // Schedule a reliability trigger and reset the failure count so we know that the // next reliability trigger will do something. - mIntentHelper.enableReliabilityTriggering(); + mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis); mCheckFailureCount = 0; } else { // This is the expected case when tracking is enabled: a check was triggered and it has @@ -385,13 +396,13 @@ public class PackageTracker implements IntentHelper.Listener { setCheckComplete(); if (success) { - // Since the check was successful, no more reliability checks are required until + // Since the check was successful, no reliability trigger is required until // there is a package change. - mIntentHelper.disableReliabilityTriggering(); + mIntentHelper.unscheduleReliabilityTrigger(); mCheckFailureCount = 0; } else { - // Enable reliability triggering to potentially check again in future. - mIntentHelper.enableReliabilityTriggering(); + // Enable schedule a reliability trigger to check again in future. + mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis); mCheckFailureCount++; } } else { @@ -400,8 +411,8 @@ public class PackageTracker implements IntentHelper.Listener { Slog.i(TAG, "recordCheckResult: could not update token=" + checkToken + " with success=" + success + ". Optimistic lock failure"); - // Enable reliability triggering to potentially try again in future. - mIntentHelper.enableReliabilityTriggering(); + // Schedule a reliability trigger to potentially try again in future. + mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis); mCheckFailureCount++; } } @@ -515,6 +526,7 @@ public class PackageTracker implements IntentHelper.Listener { ", mUpdateAppPackageName='" + mUpdateAppPackageName + '\'' + ", mDataAppPackageName='" + mDataAppPackageName + '\'' + ", mCheckTimeAllowedMillis=" + mCheckTimeAllowedMillis + + ", mDelayBeforeReliabilityCheckMillis=" + mDelayBeforeReliabilityCheckMillis + ", mFailedCheckRetryCount=" + mFailedCheckRetryCount + ", mLastTriggerTimestamp=" + mLastTriggerTimestamp + ", mCheckTriggered=" + mCheckTriggered + diff --git a/services/core/java/com/android/server/timezone/RulesManagerService.java b/services/core/java/com/android/server/timezone/RulesManagerService.java index 50f27ed67a36..6824a597a5f8 100644 --- a/services/core/java/com/android/server/timezone/RulesManagerService.java +++ b/services/core/java/com/android/server/timezone/RulesManagerService.java @@ -69,18 +69,22 @@ public final class RulesManagerService extends IRulesManager.Stub { DistroVersion.CURRENT_FORMAT_MINOR_VERSION); public static class Lifecycle extends SystemService { - private RulesManagerService mService; - public Lifecycle(Context context) { super(context); } @Override public void onStart() { - mService = RulesManagerService.create(getContext()); - mService.start(); + RulesManagerService service = RulesManagerService.create(getContext()); + service.start(); + + // Publish the binder service so it can be accessed from other (appropriately + // permissioned) processes. + publishBinderService(Context.TIME_ZONE_RULES_MANAGER_SERVICE, service); - publishBinderService(Context.TIME_ZONE_RULES_MANAGER_SERVICE, mService); + // Publish the service instance locally so we can use it directly from within the system + // server from TimeZoneUpdateIdler. + publishLocalService(RulesManagerService.class, service); } } @@ -343,16 +347,20 @@ public final class RulesManagerService extends IRulesManager.Stub { @Override public void run() { EventLogTags.writeTimezoneUninstallStarted(toStringOrNull(mCheckToken)); - boolean success = false; + boolean packageTrackerStatus = false; try { - success = mInstaller.stageUninstall(); - // Right now we just have success (0) / failure (1). All clients should be checking - // against SUCCESS. More granular failures may be added in future. - int resultCode = success ? Callback.SUCCESS - : Callback.ERROR_UNKNOWN_FAILURE; + int uninstallResult = mInstaller.stageUninstall(); + packageTrackerStatus = (uninstallResult == TimeZoneDistroInstaller.UNINSTALL_SUCCESS + || uninstallResult == TimeZoneDistroInstaller.UNINSTALL_NOTHING_INSTALLED); + + // Right now we just have Callback.SUCCESS / Callback.ERROR_UNKNOWN_FAILURE for + // uninstall. All clients should be checking against SUCCESS. More granular failures + // may be added in future. + int callbackResultCode = + packageTrackerStatus ? Callback.SUCCESS : Callback.ERROR_UNKNOWN_FAILURE; EventLogTags.writeTimezoneUninstallComplete( - toStringOrNull(mCheckToken), resultCode); - sendFinishedStatus(mCallback, resultCode); + toStringOrNull(mCheckToken), callbackResultCode); + sendFinishedStatus(mCallback, callbackResultCode); } catch (Exception e) { EventLogTags.writeTimezoneUninstallComplete( toStringOrNull(mCheckToken), Callback.ERROR_UNKNOWN_FAILURE); @@ -360,7 +368,7 @@ public final class RulesManagerService extends IRulesManager.Stub { sendFinishedStatus(mCallback, Callback.ERROR_UNKNOWN_FAILURE); } finally { // Notify the package tracker that the operation is now complete. - mPackageTracker.recordCheckResult(mCheckToken, success); + mPackageTracker.recordCheckResult(mCheckToken, packageTrackerStatus); mOperationInProgress.set(false); } @@ -492,6 +500,16 @@ public final class RulesManagerService extends IRulesManager.Stub { mPackageTracker.dump(pw); } + /** + * Called when the device is considered idle. + */ + void notifyIdle() { + // No package has changed: we are just triggering because the device is idle and there + // *might* be work to do. + final boolean packageChanged = false; + mPackageTracker.triggerUpdateIfNeeded(packageChanged); + } + @Override public String toString() { return "RulesManagerService{" + diff --git a/services/core/java/com/android/server/timezone/TimeZoneUpdateIdler.java b/services/core/java/com/android/server/timezone/TimeZoneUpdateIdler.java new file mode 100644 index 000000000000..a7767a4fbd66 --- /dev/null +++ b/services/core/java/com/android/server/timezone/TimeZoneUpdateIdler.java @@ -0,0 +1,100 @@ +/* + * 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.server.timezone; + +import com.android.server.LocalServices; + +import android.app.job.JobInfo; +import android.app.job.JobParameters; +import android.app.job.JobScheduler; +import android.app.job.JobService; +import android.content.ComponentName; +import android.content.Context; +import android.util.Slog; + +/** + * A JobService used to trigger time zone rules update work when a device falls idle. + */ +public final class TimeZoneUpdateIdler extends JobService { + + private static final String TAG = "timezone.TimeZoneUpdateIdler"; + + /** The static job ID used to handle on-idle work. */ + // Must be unique within UID (system service) + private static final int TIME_ZONE_UPDATE_IDLE_JOB_ID = 27042305; + + @Override + public boolean onStartJob(JobParameters params) { + RulesManagerService rulesManagerService = + LocalServices.getService(RulesManagerService.class); + + Slog.d(TAG, "onStartJob() called"); + + // Note: notifyIdle() explicitly handles canceling / re-scheduling so no need to reschedule + // here. + rulesManagerService.notifyIdle(); + + // Everything is handled synchronously. We are done. + return false; + } + + @Override + public boolean onStopJob(JobParameters params) { + // Reschedule if stopped unless it was cancelled due to unschedule(). + boolean reschedule = params.getStopReason() != JobParameters.REASON_CANCELED; + Slog.d(TAG, "onStopJob() called: Reschedule=" + reschedule); + return reschedule; + } + + /** + * Schedules the TimeZoneUpdateIdler job service to run once. + * + * @param context Context to use to get a job scheduler. + */ + public static void schedule(Context context, long minimumDelayMillis) { + // Request that the JobScheduler tell us when the device falls idle. + JobScheduler jobScheduler = + (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); + + // The TimeZoneUpdateIdler will send an intent that will trigger the Receiver. + ComponentName idlerJobServiceName = + new ComponentName(context, TimeZoneUpdateIdler.class); + + // We require the device is idle, but also that it is charging to be as non-invasive as + // we can. + JobInfo.Builder jobInfoBuilder = + new JobInfo.Builder(TIME_ZONE_UPDATE_IDLE_JOB_ID, idlerJobServiceName) + .setRequiresDeviceIdle(true) + .setRequiresCharging(true) + .setMinimumLatency(minimumDelayMillis); + + Slog.d(TAG, "schedule() called: minimumDelayMillis=" + minimumDelayMillis); + jobScheduler.schedule(jobInfoBuilder.build()); + } + + /** + * Unschedules the TimeZoneUpdateIdler job service. + * + * @param context Context to use to get a job scheduler. + */ + public static void unschedule(Context context) { + JobScheduler jobScheduler = + (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); + Slog.d(TAG, "unschedule() called"); + jobScheduler.cancel(TIME_ZONE_UPDATE_IDLE_JOB_ID); + } +} diff --git a/services/core/java/com/android/server/twilight/TwilightState.java b/services/core/java/com/android/server/twilight/TwilightState.java index 30a8cccb6ad5..71304a7a4701 100644 --- a/services/core/java/com/android/server/twilight/TwilightState.java +++ b/services/core/java/com/android/server/twilight/TwilightState.java @@ -18,7 +18,10 @@ package com.android.server.twilight; import android.text.format.DateFormat; -import java.util.Calendar; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.TimeZone; /** * The twilight state, consisting of the sunrise and sunset times (in millis) for the current @@ -45,12 +48,11 @@ public final class TwilightState { } /** - * Returns a new {@link Calendar} instance initialized to {@link #sunriseTimeMillis()}. + * Returns a new {@link LocalDateTime} instance initialized to {@link #sunriseTimeMillis()}. */ - public Calendar sunrise() { - final Calendar sunrise = Calendar.getInstance(); - sunrise.setTimeInMillis(mSunriseTimeMillis); - return sunrise; + public LocalDateTime sunrise() { + final ZoneId zoneId = TimeZone.getDefault().toZoneId(); + return LocalDateTime.ofInstant(Instant.ofEpochMilli(mSunriseTimeMillis), zoneId); } /** @@ -62,12 +64,11 @@ public final class TwilightState { } /** - * Returns a new {@link Calendar} instance initialized to {@link #sunsetTimeMillis()}. + * Returns a new {@link LocalDateTime} instance initialized to {@link #sunsetTimeMillis()}. */ - public Calendar sunset() { - final Calendar sunset = Calendar.getInstance(); - sunset.setTimeInMillis(mSunsetTimeMillis); - return sunset; + public LocalDateTime sunset() { + final ZoneId zoneId = TimeZone.getDefault().toZoneId(); + return LocalDateTime.ofInstant(Instant.ofEpochMilli(mSunsetTimeMillis), zoneId); } /** diff --git a/services/core/java/com/android/server/utils/ManagedApplicationService.java b/services/core/java/com/android/server/utils/ManagedApplicationService.java index 0f251fd83822..1ea70585aa5f 100644 --- a/services/core/java/com/android/server/utils/ManagedApplicationService.java +++ b/services/core/java/com/android/server/utils/ManagedApplicationService.java @@ -44,6 +44,7 @@ public class ManagedApplicationService { private final int mClientLabel; private final String mSettingsAction; private final BinderChecker mChecker; + private final boolean mIsImportant; private final DeathRecipient mDeathRecipient = new DeathRecipient() { @Override @@ -64,13 +65,14 @@ public class ManagedApplicationService { private ManagedApplicationService(final Context context, final ComponentName component, final int userId, int clientLabel, String settingsAction, - BinderChecker binderChecker) { + BinderChecker binderChecker, boolean isImportant) { mContext = context; mComponent = component; mUserId = userId; mClientLabel = clientLabel; mSettingsAction = settingsAction; mChecker = binderChecker; + mIsImportant = isImportant; } /** @@ -99,13 +101,15 @@ public class ManagedApplicationService { * @param settingsAction an action that can be used to open the Settings UI to enable/disable * binding to these services. * @param binderChecker an interface used to validate the returned binder object. + * @param isImportant bind the user service with BIND_IMPORTANT. * @return a ManagedApplicationService instance. */ public static ManagedApplicationService build(@NonNull final Context context, @NonNull final ComponentName component, final int userId, @NonNull int clientLabel, - @NonNull String settingsAction, @NonNull BinderChecker binderChecker) { + @NonNull String settingsAction, @NonNull BinderChecker binderChecker, + boolean isImportant) { return new ManagedApplicationService(context, component, userId, clientLabel, - settingsAction, binderChecker); + settingsAction, binderChecker, isImportant); } /** @@ -248,9 +252,12 @@ public class ManagedApplicationService { mPendingConnection = serviceConnection; + int flags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE; + if (mIsImportant) { + flags |= Context.BIND_IMPORTANT; + } try { - if (!mContext.bindServiceAsUser(intent, serviceConnection, - Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE, + if (!mContext.bindServiceAsUser(intent, serviceConnection, flags, new UserHandle(mUserId))) { Slog.w(TAG, "Unable to bind service: " + intent); } diff --git a/services/core/java/com/android/server/utils/PriorityDump.java b/services/core/java/com/android/server/utils/PriorityDump.java index c05cc3ff8827..054f1564730e 100644 --- a/services/core/java/com/android/server/utils/PriorityDump.java +++ b/services/core/java/com/android/server/utils/PriorityDump.java @@ -59,10 +59,10 @@ public class SpringfieldNuclearPowerPlant extends Binder { Donuts in the box: 1 Nuclear reactor status: DANGER - MELTDOWN IMMINENT - $ adb shell dumpsys snpp --dump_priority CRITICAL + $ adb shell dumpsys snpp --dump-priority CRITICAL Donuts in the box: 1 - $ adb shell dumpsys snpp --dump_priority NORMAL + $ adb shell dumpsys snpp --dump-priority NORMAL Nuclear reactor status: DANGER - MELTDOWN IMMINENT * </code></pre> @@ -84,7 +84,7 @@ public class SpringfieldNuclearPowerPlant extends Binder { */ public final class PriorityDump { - public static final String PRIORITY_ARG = "--dump_priority"; + public static final String PRIORITY_ARG = "--dump-priority"; private PriorityDump() { throw new UnsupportedOperationException(); @@ -92,12 +92,12 @@ public final class PriorityDump { /** * Parses {@code} and call the proper {@link PriorityDumper} method when the first argument is - * {@code --dump_priority}, stripping the priority and its type. + * {@code --dump-priority}, stripping the priority and its type. * <p> - * For example, if called as {@code --dump_priority HIGH arg1 arg2 arg3}, it will call + * For example, if called as {@code --dump-priority HIGH arg1 arg2 arg3}, it will call * <code>dumper.dumpHigh(fd, pw, {"arg1", "arg2", "arg3"}) </code> * <p> - * If the {@code --dump_priority} is not set, it calls + * If the {@code --dump-priority} is not set, it calls * {@link PriorityDumper#dump(FileDescriptor, PrintWriter, String[])} passing the whole * {@code args} instead. */ @@ -124,7 +124,7 @@ public final class PriorityDump { } /** - * Gets an array without the {@code --dump_priority PRIORITY} prefix. + * Gets an array without the {@code --dump-priority PRIORITY} prefix. */ private static String[] getStrippedArgs(String[] args) { final String[] stripped = new String[args.length - 2]; diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java index b6b964b050e3..830ebda0b9c1 100644 --- a/services/core/java/com/android/server/vr/VrManagerService.java +++ b/services/core/java/com/android/server/vr/VrManagerService.java @@ -74,6 +74,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.StringBuilder; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collection; @@ -414,7 +415,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void registerListener(IVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); if (cb == null) { throw new IllegalArgumentException("Callback binder object is null."); } @@ -424,7 +426,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void unregisterListener(IVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); if (cb == null) { throw new IllegalArgumentException("Callback binder object is null."); } @@ -434,7 +437,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void registerPersistentVrStateListener(IPersistentVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); if (cb == null) { throw new IllegalArgumentException("Callback binder object is null."); } @@ -444,7 +448,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void unregisterPersistentVrStateListener(IPersistentVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); if (cb == null) { throw new IllegalArgumentException("Callback binder object is null."); } @@ -454,19 +459,28 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public boolean getVrModeState() { + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); return VrManagerService.this.getVrMode(); } @Override + public boolean getPersistentVrModeEnabled() { + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); + return VrManagerService.this.getPersistentVrMode(); + } + + @Override public void setPersistentVrModeEnabled(boolean enabled) { - enforceCallerPermission(Manifest.permission.RESTRICTED_VR_ACCESS); + enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS); VrManagerService.this.setPersistentVrModeEnabled(enabled); } @Override public void setVr2dDisplayProperties( Vr2dDisplayProperties vr2dDisplayProp) { - enforceCallerPermission(Manifest.permission.RESTRICTED_VR_ACCESS); + enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS); VrManagerService.this.setVr2dDisplayProperties(vr2dDisplayProp); } @@ -530,11 +544,21 @@ public class VrManagerService extends SystemService implements EnabledComponentC }; - private void enforceCallerPermission(String permission) { - if (mContext.checkCallingOrSelfPermission(permission) - != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException("Caller does not hold the permission " + permission); + /** + * Enforces that at lease one of the specified permissions is held by the caller. + * Throws SecurityException if none of the specified permissions are held. + * + * @param permissions One or more permissions to check against. + */ + private void enforceCallerPermissionAnyOf(String... permissions) { + for (String permission : permissions) { + if (mContext.checkCallingOrSelfPermission(permission) + == PackageManager.PERMISSION_GRANTED) { + return; + } } + throw new SecurityException("Caller does not hold at least one of the permissions: " + + Arrays.toString(permissions)); } /** @@ -1002,7 +1026,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC @NonNull ComponentName component, int userId) { return ManagedApplicationService.build(context, component, userId, R.string.vr_listener_binding_label, Settings.ACTION_VR_LISTENER_SETTINGS, - sBinderChecker); + sBinderChecker, /*isImportant*/true); } /** @@ -1204,4 +1228,10 @@ public class VrManagerService extends SystemService implements EnabledComponentC return mVrModeEnabled; } } + + private boolean getPersistentVrMode() { + synchronized (mLock) { + return mPersistentVrModeEnabled; + } + } } diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index f6f5341ff0a9..b888ec21e708 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -280,14 +280,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { Slog.v(TAG, "Crop done; invoking completion callback"); } wallpaper.imageWallpaperPending = false; - if (wallpaper.setComplete != null) { - try { - wallpaper.setComplete.onWallpaperChanged(); - } catch (RemoteException e) { - // if this fails we don't really care; the setting app may just - // have crashed and that sort of thing is a fact of life. - } - } if (sysWallpaperChanged) { // If this was the system wallpaper, rebind... bindWallpaperComponentLocked(mImageWallpaper, true, @@ -311,6 +303,16 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } saveSettingsLocked(wallpaper.userId); + + // Publish completion *after* we've persisted the changes + if (wallpaper.setComplete != null) { + try { + wallpaper.setComplete.onWallpaperChanged(); + } catch (RemoteException e) { + // if this fails we don't really care; the setting app may just + // have crashed and that sort of thing is a fact of life. + } + } } } } @@ -1136,7 +1138,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { mMonitor = new MyPackageMonitor(); mMonitor.register(context, null, UserHandle.ALL, true); getWallpaperDir(UserHandle.USER_SYSTEM).mkdirs(); + + // Initialize state from the persistent store, then guarantee that the + // WallpaperData for the system imagery is instantiated & active, creating + // it from defaults if necessary. loadSettingsLocked(UserHandle.USER_SYSTEM, false); + getWallpaperSafeLocked(UserHandle.USER_SYSTEM, FLAG_SYSTEM); + mColorsChangedListeners = new SparseArray<>(); } @@ -1293,15 +1301,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } void switchUser(int userId, IRemoteCallback reply) { - WallpaperData systemWallpaper; - WallpaperData lockWallpaper; + final WallpaperData systemWallpaper; + final WallpaperData lockWallpaper; synchronized (mLock) { mCurrentUserId = userId; systemWallpaper = getWallpaperSafeLocked(userId, FLAG_SYSTEM); - lockWallpaper = mLockWallpaperMap.get(userId); - if (lockWallpaper == null) { - lockWallpaper = systemWallpaper; - } + final WallpaperData tmpLockWallpaper = mLockWallpaperMap.get(userId); + lockWallpaper = tmpLockWallpaper == null ? systemWallpaper : tmpLockWallpaper; // Not started watching yet, in case wallpaper data was loaded for other reasons. if (systemWallpaper.wallpaperObserver == null) { systemWallpaper.wallpaperObserver = new WallpaperObserver(systemWallpaper); @@ -1309,8 +1315,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } switchWallpaper(systemWallpaper, reply); } - notifyWallpaperColorsChanged(systemWallpaper, FLAG_SYSTEM); - notifyWallpaperColorsChanged(lockWallpaper, FLAG_LOCK); + + // Offload color extraction to another thread since switchUser will be called + // from the main thread. + FgThread.getHandler().post(() -> { + notifyWallpaperColorsChanged(systemWallpaper, FLAG_SYSTEM); + notifyWallpaperColorsChanged(lockWallpaper, FLAG_LOCK); + }); } void switchWallpaper(WallpaperData wallpaper, IRemoteCallback reply) { @@ -1625,13 +1636,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { (which == FLAG_LOCK) ? mLockWallpaperMap : mWallpaperMap; WallpaperData wallpaper = whichSet.get(wallpaperUserId); if (wallpaper == null) { - // common case, this is the first lookup post-boot of the system or - // unified lock, so we bring up the saved state lazily now and recheck. - loadSettingsLocked(wallpaperUserId, false); - wallpaper = whichSet.get(wallpaperUserId); - if (wallpaper == null) { - return null; - } + // There is no established wallpaper imagery of this type (expected + // only for lock wallpapers; a system WallpaperData is established at + // user switch) + return null; } try { if (outParams != null) { @@ -1656,7 +1664,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { @Override public WallpaperInfo getWallpaperInfo(int userId) { userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), - Binder.getCallingUid(), userId, false, true, "getWallpaperIdForUser", null); + Binder.getCallingUid(), userId, false, true, "getWallpaperInfo", null); synchronized (mLock) { WallpaperData wallpaper = mWallpaperMap.get(userId); if (wallpaper != null && wallpaper.connection != null) { @@ -2258,7 +2266,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { private void writeWallpaperAttributes(XmlSerializer out, String tag, WallpaperData wallpaper) throws IllegalArgumentException, IllegalStateException, IOException { if (DEBUG) { - Slog.v(TAG, "writeWallpaperAttributes"); + Slog.v(TAG, "writeWallpaperAttributes id=" + wallpaper.wallpaperId); } out.startTag(null, tag); out.attribute(null, "id", Integer.toString(wallpaper.wallpaperId)); @@ -2357,6 +2365,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { * the event yet. We use this safe method when we don't care about this ordering and just * want to update the data. The data is going to be applied when the user switch observer * is eventually executed. + * + * Important: this method loads settings to initialize the given user's wallpaper data if + * there is no current in-memory state. */ private WallpaperData getWallpaperSafeLocked(int userId, int which) { // We're setting either just system (work with the system wallpaper), @@ -2395,8 +2406,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } private void loadSettingsLocked(int userId, boolean keepDimensionHints) { - if (DEBUG) Slog.v(TAG, "loadSettingsLocked"); - JournaledFile journal = makeJournaledFile(userId); FileInputStream stream = null; File file = journal.chooseForRead(); diff --git a/services/core/java/com/android/server/webkit/SystemImpl.java b/services/core/java/com/android/server/webkit/SystemImpl.java index bf769ed46bc1..1e334b83d8b0 100644 --- a/services/core/java/com/android/server/webkit/SystemImpl.java +++ b/services/core/java/com/android/server/webkit/SystemImpl.java @@ -304,6 +304,6 @@ public class SystemImpl implements SystemInterface { // flags declaring we want extra info from the package manager for webview providers private final static int PACKAGE_FLAGS = PackageManager.GET_META_DATA - | PackageManager.GET_SIGNATURES | PackageManager.MATCH_DEBUG_TRIAGED_MISSING - | PackageManager.MATCH_ANY_USER; + | PackageManager.GET_SIGNATURES | PackageManager.GET_SHARED_LIBRARY_FILES + | PackageManager.MATCH_DEBUG_TRIAGED_MISSING | PackageManager.MATCH_ANY_USER; } diff --git a/services/core/java/com/android/server/webkit/WebViewUpdater.java b/services/core/java/com/android/server/webkit/WebViewUpdater.java index 203bbf61dc51..7fc907f95c93 100644 --- a/services/core/java/com/android/server/webkit/WebViewUpdater.java +++ b/services/core/java/com/android/server/webkit/WebViewUpdater.java @@ -569,6 +569,7 @@ class WebViewUpdater { PackageInfo systemUserPackageInfo = userPackages.get(UserHandle.USER_SYSTEM).getPackageInfo(); if (systemUserPackageInfo == null) { + pw.println(String.format(" %s is NOT installed.", provider.packageName)); continue; } diff --git a/services/core/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java index c2edc04db2e1..c76b90593ab3 100644 --- a/services/core/java/com/android/server/wm/AppWindowAnimator.java +++ b/services/core/java/com/android/server/wm/AppWindowAnimator.java @@ -450,7 +450,7 @@ public class AppWindowAnimator { return isAnimating; } - void dump(PrintWriter pw, String prefix, boolean dumpAll) { + void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken); pw.print(prefix); pw.print("mAnimator="); pw.println(mAnimator); pw.print(prefix); pw.print("freezingScreen="); pw.print(freezingScreen); diff --git a/services/core/java/com/android/server/wm/AppWindowContainerController.java b/services/core/java/com/android/server/wm/AppWindowContainerController.java index f142ff619884..584184020d33 100644 --- a/services/core/java/com/android/server/wm/AppWindowContainerController.java +++ b/services/core/java/com/android/server/wm/AppWindowContainerController.java @@ -181,12 +181,12 @@ public class AppWindowContainerController int requestedOrientation, boolean fullscreen, boolean showForAllUsers, int configChanges, boolean voiceInteraction, boolean launchTaskBehind, boolean alwaysFocusable, int targetSdkVersion, int rotationAnimationHint, long inputDispatchingTimeoutNanos, - Configuration overrideConfig, Rect bounds) { + Rect bounds) { this(taskController, token, listener, index, requestedOrientation, fullscreen, showForAllUsers, configChanges, voiceInteraction, launchTaskBehind, alwaysFocusable, targetSdkVersion, rotationAnimationHint, inputDispatchingTimeoutNanos, - WindowManagerService.getInstance(), overrideConfig, bounds); + WindowManagerService.getInstance(), bounds); } public AppWindowContainerController(TaskWindowContainerController taskController, @@ -194,7 +194,7 @@ public class AppWindowContainerController int requestedOrientation, boolean fullscreen, boolean showForAllUsers, int configChanges, boolean voiceInteraction, boolean launchTaskBehind, boolean alwaysFocusable, int targetSdkVersion, int rotationAnimationHint, long inputDispatchingTimeoutNanos, - WindowManagerService service, Configuration overrideConfig, Rect bounds) { + WindowManagerService service, Rect bounds) { super(listener, service); mHandler = new H(service.mH.getLooper()); mToken = token; @@ -215,7 +215,7 @@ public class AppWindowContainerController atoken = createAppWindow(mService, token, voiceInteraction, task.getDisplayContent(), inputDispatchingTimeoutNanos, fullscreen, showForAllUsers, targetSdkVersion, requestedOrientation, rotationAnimationHint, configChanges, launchTaskBehind, - alwaysFocusable, this, overrideConfig, bounds); + alwaysFocusable, this, bounds); if (DEBUG_TOKEN_MOVEMENT || DEBUG_ADD_REMOVE) Slog.v(TAG_WM, "addAppToken: " + atoken + " controller=" + taskController + " at " + index); task.addChild(atoken, index); @@ -227,12 +227,11 @@ public class AppWindowContainerController boolean voiceInteraction, DisplayContent dc, long inputDispatchingTimeoutNanos, boolean fullscreen, boolean showForAllUsers, int targetSdk, int orientation, int rotationAnimationHint, int configChanges, boolean launchTaskBehind, - boolean alwaysFocusable, AppWindowContainerController controller, - Configuration overrideConfig, Rect bounds) { + boolean alwaysFocusable, AppWindowContainerController controller, Rect bounds) { return new AppWindowToken(service, token, voiceInteraction, dc, inputDispatchingTimeoutNanos, fullscreen, showForAllUsers, targetSdk, orientation, rotationAnimationHint, configChanges, launchTaskBehind, alwaysFocusable, - controller, overrideConfig, bounds); + controller, bounds); } public void removeContainer(int displayId) { @@ -365,8 +364,6 @@ public class AppWindowContainerController // Now that the app is going invisible, we can remove it. It will be restarted // if made visible again. wtoken.removeDeadWindows(); - wtoken.setVisibleBeforeClientHidden(); - mService.mUnknownAppVisibilityController.appRemovedOrHidden(wtoken); } else { if (!mService.mAppTransition.isTransitionSet() && mService.mAppTransition.isReady()) { @@ -653,7 +650,7 @@ public class AppWindowContainerController // Use the same thread to remove the window as we used to add it, as otherwise we end up // with things in the view hierarchy being called from different threads. - mHandler.post(() -> { + mService.mAnimationHandler.post(() -> { if (DEBUG_STARTING_WINDOW) Slog.v(TAG_WM, "Removing startingView=" + surface); try { surface.remove(); @@ -729,35 +726,6 @@ public class AppWindowContainerController } } - /** - * Takes a snapshot of the screen. In landscape mode this grabs the whole screen. - * In portrait mode, it grabs the full screenshot. - * - * @param displayId the Display to take a screenshot of. - * @param width the width of the target bitmap - * @param height the height of the target bitmap - * @param frameScale the scale to apply to the frame, only used when width = -1 and height = -1 - */ - public Bitmap screenshotApplications(int displayId, int width, int height, float frameScale) { - try { - Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "screenshotApplications"); - final DisplayContent dc; - synchronized(mWindowMap) { - dc = mRoot.getDisplayContentOrCreate(displayId); - if (dc == null) { - if (DEBUG_SCREENSHOT) Slog.i(TAG_WM, "Screenshot of " + mToken - + ": returning null. No Display for displayId=" + displayId); - return null; - } - } - return dc.screenshotApplications(mToken.asBinder(), width, height, - false /* includeFullDisplay */, frameScale, Bitmap.Config.RGB_565, - false /* wallpaperOnly */, false /* includeDecor */); - } finally { - Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); - } - } - void reportStartingWindowDrawn() { mHandler.sendMessage(mHandler.obtainMessage(H.NOTIFY_STARTING_WINDOW_DRAWN)); } diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index 7545a10602a6..2d1fc912fcfc 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -53,6 +53,7 @@ import static com.android.server.wm.WindowManagerService.logWithStack; import static com.android.server.wm.proto.AppWindowTokenProto.NAME; import static com.android.server.wm.proto.AppWindowTokenProto.WINDOW_TOKEN; +import android.annotation.CallSuper; import android.annotation.NonNull; import android.app.Activity; import android.content.res.Configuration; @@ -78,8 +79,6 @@ import java.io.PrintWriter; import java.util.ArrayDeque; import java.util.ArrayList; -import static android.os.Build.VERSION_CODES.O; - class AppTokenList extends ArrayList<AppWindowToken> { } @@ -126,14 +125,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree // case do not clear allDrawn until the animation completes. boolean deferClearAllDrawn; - /** - * These are to track the app's real drawing status if there were no saved surfaces. - * @see #updateDrawnWindowStates - */ - boolean allDrawnExcludingSaved; - private int mNumInterestingWindowsExcludingSaved; - private int mNumDrawnWindowsExcludingSaved; - // Is this window's surface needed? This is almost like hidden, except // it will sometimes be true a little earlier: when the token has // been shown, but is still waiting for its app transition to execute @@ -197,7 +188,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree private boolean mDisablePreviewScreenshots; - Task mLastParent; + private Task mLastParent; /** * See {@link #canTurnScreenOn()} @@ -208,8 +199,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree DisplayContent dc, long inputDispatchingTimeoutNanos, boolean fullscreen, boolean showForAllUsers, int targetSdk, int orientation, int rotationAnimationHint, int configChanges, boolean launchTaskBehind, boolean alwaysFocusable, - AppWindowContainerController controller, Configuration overrideConfig, Rect bounds) { - this(service, token, voiceInteraction, dc, fullscreen, overrideConfig, bounds); + AppWindowContainerController controller, Rect bounds) { + this(service, token, voiceInteraction, dc, fullscreen, bounds); setController(controller); mInputDispatchingTimeoutNanos = inputDispatchingTimeoutNanos; mShowForAllUsers = showForAllUsers; @@ -226,7 +217,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } AppWindowToken(WindowManagerService service, IApplicationToken token, boolean voiceInteraction, - DisplayContent dc, boolean fillsParent, Configuration overrideConfig, Rect bounds) { + DisplayContent dc, boolean fillsParent, Rect bounds) { super(service, token != null ? token.asBinder() : null, TYPE_APPLICATION, true, dc, false /* ownerCanManageAppTokens */); appToken = token; @@ -234,9 +225,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree mFillsParent = fillsParent; mInputApplicationHandle = new InputApplicationHandle(this); mAppAnimator = new AppWindowAnimator(this, service); - if (overrideConfig != null) { - onOverrideConfigurationChanged(overrideConfig); - } if (bounds != null) { mBounds.set(bounds); } @@ -372,10 +360,10 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree boolean runningAppAnimation = false; + if (mAppAnimator.animation == AppWindowAnimator.sDummyAnimation) { + mAppAnimator.setNullAnimation(); + } if (transit != AppTransition.TRANSIT_UNSET) { - if (mAppAnimator.animation == AppWindowAnimator.sDummyAnimation) { - mAppAnimator.setNullAnimation(); - } if (mService.applyAnimationLocked(this, lp, transit, visible, isVoiceInteraction)) { delayed = runningAppAnimation = true; } @@ -690,107 +678,9 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } } - /** - * Checks whether we should save surfaces for this app. - * - * @return true if the surfaces should be saved, false otherwise. - */ - boolean shouldSaveSurface() { - // We want to save surface if the app's windows are "allDrawn". - // (If we started entering animation early with saved surfaces, allDrawn - // should have been restored to true. So we'll save again in that case - // even if app didn't actually finish drawing.) - return allDrawn; - } - - private boolean canRestoreSurfaces() { - for (int i = mChildren.size() -1; i >= 0; i--) { - final WindowState w = mChildren.get(i); - if (w.canRestoreSurface()) { - return true; - } - } - return false; - } - - private void clearWasVisibleBeforeClientHidden() { - for (int i = mChildren.size() - 1; i >= 0; i--) { - final WindowState w = mChildren.get(i); - w.clearWasVisibleBeforeClientHidden(); - } - } - - /** - * Whether the app has some window that is invisible in layout, but - * animating with saved surface. - */ - boolean isAnimatingInvisibleWithSavedSurface() { - for (int i = mChildren.size() - 1; i >= 0; i--) { - final WindowState w = mChildren.get(i); - if (w.isAnimatingInvisibleWithSavedSurface()) { - return true; - } - } - return false; - } - - /** - * Hide all window surfaces that's still invisible in layout but animating - * with a saved surface, and mark them destroying. - */ - void stopUsingSavedSurfaceLocked() { - for (int i = mChildren.size() - 1; i >= 0; i--) { - final WindowState w = mChildren.get(i); - w.stopUsingSavedSurface(); - } - destroySurfaces(); - } - - void markSavedSurfaceExiting() { - for (int i = mChildren.size() - 1; i >= 0; i--) { - final WindowState w = mChildren.get(i); - w.markSavedSurfaceExiting(); - } - } - - void restoreSavedSurfaceForInterestingWindows() { - if (!canRestoreSurfaces()) { - clearWasVisibleBeforeClientHidden(); - return; - } - - // Check if all interesting windows are drawn and we can mark allDrawn=true. - int interestingNotDrawn = -1; - - for (int i = mChildren.size() - 1; i >= 0; i--) { - final WindowState w = mChildren.get(i); - interestingNotDrawn = w.restoreSavedSurfaceForInterestingWindow(); - } - - if (!allDrawn) { - allDrawn = (interestingNotDrawn == 0); - if (allDrawn) { - mService.mH.obtainMessage(NOTIFY_ACTIVITY_DRAWN, token).sendToTarget(); - } - } - clearWasVisibleBeforeClientHidden(); - - if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) Slog.d(TAG, - "restoreSavedSurfaceForInterestingWindows: " + this + " allDrawn=" + allDrawn - + " interestingNotDrawn=" + interestingNotDrawn); - } - - void destroySavedSurfaces() { - for (int i = mChildren.size() - 1; i >= 0; i--) { - final WindowState win = mChildren.get(i); - win.destroySavedSurface(); - } - } - void clearAllDrawn() { allDrawn = false; deferClearAllDrawn = false; - allDrawnExcludingSaved = false; } Task getTask() { @@ -1388,8 +1278,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree private boolean allDrawnStatesConsidered() { for (int i = mChildren.size() - 1; i >= 0; --i) { final WindowState child = mChildren.get(i); - if (child.mightAffectAllDrawn(false /*visibleOnly*/ ) - && !child.getDrawnStateEvaluated()) { + if (child.mightAffectAllDrawn() && !child.getDrawnStateEvaluated()) { return false; } } @@ -1429,23 +1318,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } } } - - if (!allDrawnExcludingSaved) { - int numInteresting = mNumInterestingWindowsExcludingSaved; - if (numInteresting > 0 && mNumDrawnWindowsExcludingSaved >= numInteresting) { - if (DEBUG_VISIBILITY) Slog.v(TAG, "allDrawnExcludingSaved: " + this - + " interesting=" + numInteresting - + " drawn=" + mNumDrawnWindowsExcludingSaved); - allDrawnExcludingSaved = true; - if (mDisplayContent != null) { - mDisplayContent.setLayoutNeeded(); - } - if (isAnimatingInvisibleWithSavedSurface() - && !mService.mFinishedEarlyAnim.contains(this)) { - mService.mFinishedEarlyAnim.add(this); - } - } - } } /** @@ -1462,15 +1334,13 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree + " allDrawn=" + allDrawn + " freezingScreen=" + mAppAnimator.freezingScreen); } - if (allDrawn && allDrawnExcludingSaved && !mAppAnimator.freezingScreen) { + if (allDrawn && !mAppAnimator.freezingScreen) { return false; } if (mLastTransactionSequence != mService.mTransactionSequence) { mLastTransactionSequence = mService.mTransactionSequence; mNumInterestingWindows = mNumDrawnWindows = 0; - mNumInterestingWindowsExcludingSaved = 0; - mNumDrawnWindowsExcludingSaved = 0; startingDisplayed = false; } @@ -1478,7 +1348,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree boolean isInterestingAndDrawn = false; - if (!allDrawn && w.mightAffectAllDrawn(false /* visibleOnly */)) { + if (!allDrawn && w.mightAffectAllDrawn()) { if (DEBUG_VISIBILITY || DEBUG_ORIENTATION) { Slog.v(TAG, "Eval win " + w + ": isDrawn=" + w.isDrawnLw() + ", isAnimationSet=" + winAnimator.isAnimationSet()); @@ -1513,23 +1383,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } } - if (!allDrawnExcludingSaved && w.mightAffectAllDrawn(true /* visibleOnly */)) { - if (w != startingWindow && w.isInteresting()) { - mNumInterestingWindowsExcludingSaved++; - if (w.isDrawnLw() && !w.isAnimatingWithSavedSurface()) { - mNumDrawnWindowsExcludingSaved++; - - if (DEBUG_VISIBILITY || DEBUG_ORIENTATION) Slog.v(TAG, - "tokenMayBeDrawnExcludingSaved: " + this + " w=" + w - + " numInteresting=" + mNumInterestingWindowsExcludingSaved - + " freezingScreen=" + mAppAnimator.freezingScreen - + " mAppFreezing=" + w.mAppFreezing); - - isInterestingAndDrawn = true; - } - } - } - return isInterestingAndDrawn; } @@ -1763,10 +1616,14 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree if (mRemovingFromDisplay) { pw.println(prefix + "mRemovingFromDisplay=" + mRemovingFromDisplay); } + if (mAppAnimator.isAnimating()) { + mAppAnimator.dump(pw, prefix + " "); + } } + @CallSuper @Override - void writeToProto(ProtoOutputStream proto, long fieldId) { + public void writeToProto(ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); writeNameToProto(proto, NAME); super.writeToProto(proto, WINDOW_TOKEN); diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java index cff2fadd7649..7953ee430934 100644 --- a/services/core/java/com/android/server/wm/BoundsAnimationController.java +++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java @@ -21,7 +21,6 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.animation.AnimationHandler; -import android.animation.AnimationHandler.AnimationFrameCallbackProvider; import android.animation.Animator; import android.animation.ValueAnimator; import android.annotation.IntDef; @@ -32,13 +31,11 @@ import android.os.IBinder; import android.os.Debug; import android.util.ArrayMap; import android.util.Slog; -import android.view.Choreographer; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; import android.view.WindowManagerInternal; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.graphics.SfVsyncFrameCallbackProvider; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -142,9 +139,6 @@ public class BoundsAnimationController { // True if this this animation was canceled and will be replaced the another animation from // the same {@link #BoundsAnimationTarget} target. private boolean mSkipFinalResize; - // True if this animation replaced a previous animation of the same - // {@link #BoundsAnimationTarget} target. - private final boolean mSkipAnimationStart; // True if this animation was canceled by the user, not as a part of a replacing animation private boolean mSkipAnimationEnd; @@ -159,6 +153,7 @@ public class BoundsAnimationController { // Whether to schedule PiP mode changes on animation start/end private @SchedulePipModeChangedState int mSchedulePipModeChangedState; + private @SchedulePipModeChangedState int mPrevSchedulePipModeChangedState; // Depending on whether we are animating from // a smaller to a larger size @@ -171,14 +166,14 @@ public class BoundsAnimationController { BoundsAnimator(BoundsAnimationTarget target, Rect from, Rect to, @SchedulePipModeChangedState int schedulePipModeChangedState, - boolean moveFromFullscreen, boolean moveToFullscreen, - boolean replacingExistingAnimation) { + @SchedulePipModeChangedState int prevShedulePipModeChangedState, + boolean moveFromFullscreen, boolean moveToFullscreen) { super(); mTarget = target; mFrom.set(from); mTo.set(to); - mSkipAnimationStart = replacingExistingAnimation; mSchedulePipModeChangedState = schedulePipModeChangedState; + mPrevSchedulePipModeChangedState = prevShedulePipModeChangedState; mMoveFromFullscreen = moveFromFullscreen; mMoveToFullscreen = moveToFullscreen; addUpdateListener(this); @@ -200,7 +195,7 @@ public class BoundsAnimationController { @Override public void onAnimationStart(Animator animation) { if (DEBUG) Slog.d(TAG, "onAnimationStart: mTarget=" + mTarget - + " mSkipAnimationStart=" + mSkipAnimationStart + + " mPrevSchedulePipModeChangedState=" + mPrevSchedulePipModeChangedState + " mSchedulePipModeChangedState=" + mSchedulePipModeChangedState); mFinishAnimationAfterTransition = false; mTmpRect.set(mFrom.left, mFrom.top, mFrom.left + mFrozenTaskWidth, @@ -210,18 +205,26 @@ public class BoundsAnimationController { // running updateBooster(); - // Ensure that we have prepared the target for animation before - // we trigger any size changes, so it can swap surfaces - // in to appropriate modes, or do as it wishes otherwise. - if (!mSkipAnimationStart) { + // Ensure that we have prepared the target for animation before we trigger any size + // changes, so it can swap surfaces in to appropriate modes, or do as it wishes + // otherwise. + if (mPrevSchedulePipModeChangedState == NO_PIP_MODE_CHANGED_CALLBACKS) { mTarget.onAnimationStart(mSchedulePipModeChangedState == - SCHEDULE_PIP_MODE_CHANGED_ON_START); + SCHEDULE_PIP_MODE_CHANGED_ON_START, false /* forceUpdate */); // When starting an animation from fullscreen, pause here and wait for the // windows-drawn signal before we start the rest of the transition down into PiP. if (mMoveFromFullscreen) { pause(); } + } else if (mPrevSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_END && + mSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) { + // We are replacing a running animation into PiP, but since it hasn't completed, the + // client will not currently receive any picture-in-picture mode change callbacks. + // However, we still need to report to them that they are leaving PiP, so this will + // force an update via a mode changed callback. + mTarget.onAnimationStart(true /* schedulePipModeChangedCallback */, + true /* forceUpdate */); } // Immediately update the task bounds if they have to become larger, but preserve @@ -388,6 +391,8 @@ public class BoundsAnimationController { boolean moveFromFullscreen, boolean moveToFullscreen) { final BoundsAnimator existing = mRunningAnimations.get(target); final boolean replacing = existing != null; + @SchedulePipModeChangedState int prevSchedulePipModeChangedState = + NO_PIP_MODE_CHANGED_CALLBACKS; if (DEBUG) Slog.d(TAG, "animateBounds: target=" + target + " from=" + from + " to=" + to + " schedulePipModeChangedState=" + schedulePipModeChangedState @@ -403,6 +408,9 @@ public class BoundsAnimationController { return existing; } + // Save the previous state + prevSchedulePipModeChangedState = existing.mSchedulePipModeChangedState; + // Update the PiP callback states if we are replacing the animation if (existing.mSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) { if (schedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) { @@ -428,7 +436,8 @@ public class BoundsAnimationController { existing.cancel(); } final BoundsAnimator animator = new BoundsAnimator(target, from, to, - schedulePipModeChangedState, moveFromFullscreen, moveToFullscreen, replacing); + schedulePipModeChangedState, prevSchedulePipModeChangedState, + moveFromFullscreen, moveToFullscreen); mRunningAnimations.put(target, animator); animator.setFloatValues(0f, 1f); animator.setDuration((animationDuration != -1 ? animationDuration diff --git a/services/core/java/com/android/server/wm/BoundsAnimationTarget.java b/services/core/java/com/android/server/wm/BoundsAnimationTarget.java index 8b1bf7bf77dc..647a2d6deac6 100644 --- a/services/core/java/com/android/server/wm/BoundsAnimationTarget.java +++ b/services/core/java/com/android/server/wm/BoundsAnimationTarget.java @@ -31,7 +31,7 @@ interface BoundsAnimationTarget { * @param schedulePipModeChangedCallback whether or not to schedule the PiP mode changed * callbacks */ - void onAnimationStart(boolean schedulePipModeChangedCallback); + void onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate); /** * Sets the size of the target (without any intermediate steps, like scheduling animation) diff --git a/services/core/java/com/android/server/wm/ConfigurationContainer.java b/services/core/java/com/android/server/wm/ConfigurationContainer.java index 1d3f19857ac0..1da94da1b3b6 100644 --- a/services/core/java/com/android/server/wm/ConfigurationContainer.java +++ b/services/core/java/com/android/server/wm/ConfigurationContainer.java @@ -16,8 +16,24 @@ package com.android.server.wm; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; +import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; +import static android.app.WindowConfiguration.activityTypeToString; +import static com.android.server.wm.proto.ConfigurationContainerProto.FULL_CONFIGURATION; +import static com.android.server.wm.proto.ConfigurationContainerProto.MERGED_OVERRIDE_CONFIGURATION; +import static com.android.server.wm.proto.ConfigurationContainerProto.OVERRIDE_CONFIGURATION; + +import android.annotation.CallSuper; import android.app.WindowConfiguration; import android.content.res.Configuration; +import android.util.proto.ProtoOutputStream; + +import java.util.ArrayList; /** * Contains common logic for classes that have override configurations and are organized in a @@ -41,6 +57,11 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { */ private Configuration mMergedOverrideConfiguration = new Configuration(); + private ArrayList<ConfigurationContainerListener> mChangeListeners = new ArrayList<>(); + + // TODO: Can't have ag/2592611 soon enough! + private final Configuration mTmpConfig = new Configuration(); + /** * Returns full configuration applied to this configuration container. * This method should be used for getting settings applied in each particular level of the @@ -80,6 +101,11 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { onConfigurationChanged(parent != null ? parent.getConfiguration() : Configuration.EMPTY); // Update merged override config of this container and all its children. onMergedOverrideConfigurationChanged(); + + // Inform listeners of the change. + for (int i = mChangeListeners.size() - 1; i >=0; --i) { + mChangeListeners.get(i).onOverrideConfigurationChanged(overrideConfiguration); + } } /** @@ -120,10 +146,100 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { } /** Sets the windowing mode for the configuration container. */ - void setWindowingMode(/*@WindowConfiguration.WindowingMode TODO: causes build error...why?*/ - int windowingMode) { - mOverrideConfiguration.windowConfiguration.setWindowingMode(windowingMode); - onOverrideConfigurationChanged(mOverrideConfiguration); + public void setWindowingMode(/*@WindowConfiguration.WindowingMode*/ int windowingMode) { + mTmpConfig.setTo(getOverrideConfiguration()); + mTmpConfig.windowConfiguration.setWindowingMode(windowingMode); + onOverrideConfigurationChanged(mTmpConfig); + } + + /** Returns true if this container is currently in split-screen windowing mode. */ + public boolean inSplitScreenWindowingMode() { + /*@WindowConfiguration.WindowingMode*/ int windowingMode = + mFullConfiguration.windowConfiguration.getWindowingMode(); + + return windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY + || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; + } + + /** Returns true if this container is currently in split-screen secondary windowing mode. */ + public boolean inSplitScreenSecondaryWindowingMode() { + /*@WindowConfiguration.WindowingMode*/ int windowingMode = + mFullConfiguration.windowConfiguration.getWindowingMode(); + + return windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; + } + + /** + * Returns true if this container can be put in either + * {@link WindowConfiguration#WINDOWING_MODE_SPLIT_SCREEN_PRIMARY} or + * {@link WindowConfiguration##WINDOWING_MODE_SPLIT_SCREEN_SECONDARY} windowing modes based on + * its current state. + */ + public boolean supportSplitScreenWindowingMode() { + return mFullConfiguration.windowConfiguration.supportSplitScreenWindowingMode(); + } + + /** Returns the activity type associated with the the configuration container. */ + /*@WindowConfiguration.ActivityType*/ + public int getActivityType() { + return mFullConfiguration.windowConfiguration.getActivityType(); + } + + /** Sets the activity type to associate with the configuration container. */ + public void setActivityType(/*@WindowConfiguration.ActivityType*/ int activityType) { + int currentActivityType = getActivityType(); + if (currentActivityType == activityType) { + return; + } + if (currentActivityType != ACTIVITY_TYPE_UNDEFINED) { + throw new IllegalStateException("Can't change activity type once set: " + this + + " activityType=" + activityTypeToString(activityType)); + } + mTmpConfig.setTo(getOverrideConfiguration()); + mTmpConfig.windowConfiguration.setActivityType(activityType); + onOverrideConfigurationChanged(mTmpConfig); + } + + public boolean isActivityTypeHome() { + return getActivityType() == ACTIVITY_TYPE_HOME; + } + + public boolean isActivityTypeRecents() { + return getActivityType() == ACTIVITY_TYPE_RECENTS; + } + + public boolean isActivityTypeAssistant() { + return getActivityType() == ACTIVITY_TYPE_ASSISTANT; + } + + public boolean isActivityTypeStandard() { + return getActivityType() == ACTIVITY_TYPE_STANDARD; + } + + public boolean isActivityTypeStandardOrUndefined() { + /*@WindowConfiguration.ActivityType*/ final int activityType = getActivityType(); + return activityType == ACTIVITY_TYPE_STANDARD || activityType == ACTIVITY_TYPE_UNDEFINED; + } + + public boolean hasCompatibleActivityType(ConfigurationContainer other) { + /*@WindowConfiguration.ActivityType*/ int thisType = getActivityType(); + /*@WindowConfiguration.ActivityType*/ int otherType = other.getActivityType(); + + return thisType == otherType + || thisType == ACTIVITY_TYPE_UNDEFINED + || otherType == ACTIVITY_TYPE_UNDEFINED; + } + + public void registerConfigurationChangeListener(ConfigurationContainerListener listener) { + if (mChangeListeners.contains(listener)) { + return; + } + mChangeListeners.add(listener); + listener.onOverrideConfigurationChanged(mOverrideConfiguration); + } + + public void unregisterConfigurationChangeListener(ConfigurationContainerListener listener) { + mChangeListeners.remove(listener); } /** @@ -141,6 +257,24 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { } } + /** + * Write to a protocol buffer output stream. Protocol buffer message definition is at + * {@link com.android.server.wm.proto.ConfigurationContainerProto}. + * + * @param protoOutputStream Stream to write the ConfigurationContainer object to. + * @param fieldId Field Id of the ConfigurationContainer as defined in the parent + * message. + * @hide + */ + @CallSuper + public void writeToProto(ProtoOutputStream protoOutputStream, long fieldId) { + final long token = protoOutputStream.start(fieldId); + mOverrideConfiguration.writeToProto(protoOutputStream, OVERRIDE_CONFIGURATION); + mFullConfiguration.writeToProto(protoOutputStream, FULL_CONFIGURATION); + mMergedOverrideConfiguration.writeToProto(protoOutputStream, MERGED_OVERRIDE_CONFIGURATION); + protoOutputStream.end(token); + } + abstract protected int getChildCount(); abstract protected E getChildAt(int index); diff --git a/services/core/java/com/android/server/wm/ConfigurationContainerListener.java b/services/core/java/com/android/server/wm/ConfigurationContainerListener.java new file mode 100644 index 000000000000..ff14d9784b04 --- /dev/null +++ b/services/core/java/com/android/server/wm/ConfigurationContainerListener.java @@ -0,0 +1,27 @@ +/* + * 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.server.wm; + +import android.content.res.Configuration; + +/** + * Interface for listening to changes in a {@link ConfigurationContainer}. + */ +public interface ConfigurationContainerListener { + + void onOverrideConfigurationChanged(Configuration overrideConfiguration); +} diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index bf1c3f746326..98a1bd359b55 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -60,6 +60,7 @@ import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM; import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_CONFIG; import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT; import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; +import static com.android.server.wm.AppTransition.TRANSIT_KEYGUARD_UNOCCLUDE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_BOOT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY; @@ -108,8 +109,12 @@ import static com.android.server.wm.proto.DisplayProto.DPI; import static com.android.server.wm.proto.DisplayProto.ID; import static com.android.server.wm.proto.DisplayProto.IME_WINDOWS; import static com.android.server.wm.proto.DisplayProto.PINNED_STACK_CONTROLLER; +import static com.android.server.wm.proto.DisplayProto.ROTATION; +import static com.android.server.wm.proto.DisplayProto.SCREEN_ROTATION_ANIMATION; import static com.android.server.wm.proto.DisplayProto.STACKS; +import static com.android.server.wm.proto.DisplayProto.WINDOW_CONTAINER; +import android.annotation.CallSuper; import android.annotation.NonNull; import android.app.ActivityManager.StackId; import android.app.WindowConfiguration; @@ -1081,10 +1086,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } forAllWindows(w -> { - // Discard surface after orientation change, these can't be reused. - if (w.mAppToken != null) { - w.mAppToken.destroySavedSurfaces(); - } if (w.mHasSurface && !rotateSeamlessly) { if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Set mOrientationChanging of " + w); w.setOrientationChanging(true); @@ -1721,21 +1722,22 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo out.set(mContentRect); } - TaskStack addStackToDisplay(int stackId, boolean onTop) { + TaskStack addStackToDisplay(int stackId, boolean onTop, StackWindowController controller) { if (DEBUG_STACK) Slog.d(TAG_WM, "Create new stackId=" + stackId + " on displayId=" + mDisplayId); TaskStack stack = getStackById(stackId); if (stack != null) { - // It's already attached to the display...clear mDeferRemoval and move stack to - // appropriate z-order on display as needed. + // It's already attached to the display...clear mDeferRemoval, set controller, and move + // stack to appropriate z-order on display as needed. stack.mDeferRemoval = false; + stack.setController(controller); // We're not moving the display to front when we're adding stacks, only when // requested to change the position of stack explicitly. mTaskStackContainers.positionChildAt(onTop ? POSITION_TOP : POSITION_BOTTOM, stack, false /* includingParents */); } else { - stack = new TaskStack(mService, stackId); + stack = new TaskStack(mService, stackId, controller); mTaskStackContainers.addStackToDisplay(stack, onTop); } @@ -1916,9 +1918,13 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo super.removeImmediately(); if (DEBUG_DISPLAY) Slog.v(TAG_WM, "Removing display=" + this); mDimLayerController.close(); - if (mDisplayId == DEFAULT_DISPLAY && mService.canDispatchPointerEvents()) { - mService.unregisterPointerEventListener(mTapDetector); - mService.unregisterPointerEventListener(mService.mMousePositionTracker); + if (mService.canDispatchPointerEvents()) { + if (mTapDetector != null) { + mService.unregisterPointerEventListener(mTapDetector); + } + if (mDisplayId == DEFAULT_DISPLAY && mService.mMousePositionTracker != null) { + mService.unregisterPointerEventListener(mService.mMousePositionTracker); + } } } finally { mRemovingDisplay = false; @@ -2116,8 +2122,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } - void writeToProto(ProtoOutputStream proto, long fieldId) { + @CallSuper + @Override + public void writeToProto(ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); + super.writeToProto(proto, WINDOW_CONTAINER); proto.write(ID, mDisplayId); for (int stackNdx = mTaskStackContainers.size() - 1; stackNdx >= 0; --stackNdx) { final TaskStack stack = mTaskStackContainers.get(stackNdx); @@ -2139,6 +2148,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } proto.write(DPI, mBaseDisplayDensity); mDisplayInfo.writeToProto(proto, DISPLAY_INFO); + proto.write(ROTATION, mRotation); + final ScreenRotationAnimation screenRotationAnimation = + mService.mAnimator.getScreenRotationAnimationLocked(mDisplayId); + if (screenRotationAnimation != null) { + screenRotationAnimation.writeToProto(proto, SCREEN_ROTATION_ANIMATION); + } proto.end(token); } @@ -2168,8 +2183,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight); pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth); pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight); - pw.println(subPrefix + "deferred=" + mDeferredRemoval + pw.print(subPrefix + "deferred=" + mDeferredRemoval + " mLayoutNeeded=" + mLayoutNeeded); + pw.println(" mTouchExcludeRegion=" + mTouchExcludeRegion); pw.println(); pw.println(prefix + "Application tokens in top down Z order:"); @@ -2345,8 +2361,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } else if (w.mAppToken != null && w.mAppToken.isClientHidden()) { Slog.w(TAG_WM, "LEAKED SURFACE (app token hidden): " + w + " surface=" + wsa.mSurfaceController - + " token=" + w.mAppToken - + " saved=" + w.hasSavedSurface()); + + " token=" + w.mAppToken); if (SHOW_TRANSACTIONS) logSurface(w, "LEAK DESTROY", false); wsa.destroySurface(); mTmpWindow = w; @@ -3061,7 +3076,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo final boolean foundTargetWs = (w.mAppToken != null && w.mAppToken.token == appToken) || (mScreenshotApplicationState.appWin != null && wallpaperOnly); - if (foundTargetWs && winAnim.getShown()) { + if (foundTargetWs && winAnim.getShown() && winAnim.mLastAlpha > 0f) { mScreenshotApplicationState.screenshotReady = true; } @@ -3598,7 +3613,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo mLastWindowForcedOrientation = SCREEN_ORIENTATION_UNSPECIFIED; - if (policy.isKeyguardShowingAndNotOccluded()) { + if (policy.isKeyguardShowingAndNotOccluded() + || mService.mAppTransition.getAppTransition() == TRANSIT_KEYGUARD_UNOCCLUDE) { return mLastKeyguardForcedOrientation; } diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java index ce21991e1b3e..030b986ef0e9 100644 --- a/services/core/java/com/android/server/wm/DockedStackDividerController.java +++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java @@ -608,8 +608,7 @@ public class DockedStackDividerController implements DimLayerUser { final TaskStack fullscreenStack = mDisplayContent.getStackById(FULLSCREEN_WORKSPACE_STACK_ID); final boolean homeVisible = homeTask.getTopVisibleAppToken() != null; - final boolean homeBehind = (fullscreenStack != null && fullscreenStack.isVisible()) - || (homeStack.hasMultipleTaskWithHomeTaskNotTop()); + final boolean homeBehind = fullscreenStack != null && fullscreenStack.isVisible(); setMinimizedDockedStack(homeVisible && !homeBehind, animate); } diff --git a/services/core/java/com/android/server/wm/PinnedStackWindowController.java b/services/core/java/com/android/server/wm/PinnedStackWindowController.java index 3f81b389b31c..590ac6ed94e8 100644 --- a/services/core/java/com/android/server/wm/PinnedStackWindowController.java +++ b/services/core/java/com/android/server/wm/PinnedStackWindowController.java @@ -40,9 +40,8 @@ public class PinnedStackWindowController extends StackWindowController { private Rect mTmpToBounds = new Rect(); public PinnedStackWindowController(int stackId, PinnedStackWindowListener listener, - int displayId, boolean onTop, Rect outBounds, Configuration outOverrideConfig) { - super(stackId, listener, displayId, onTop, outBounds, outOverrideConfig, - WindowManagerService.getInstance()); + int displayId, boolean onTop, Rect outBounds) { + super(stackId, listener, displayId, onTop, outBounds, WindowManagerService.getInstance()); } /** @@ -204,10 +203,12 @@ public class PinnedStackWindowController extends StackWindowController { */ /** Calls directly into activity manager so window manager lock shouldn't held. */ - public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds) { + public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds, + boolean forceUpdate) { if (mListener != null) { PinnedStackWindowListener listener = (PinnedStackWindowListener) mListener; - listener.updatePictureInPictureModeForPinnedStackAnimation(targetStackBounds); + listener.updatePictureInPictureModeForPinnedStackAnimation(targetStackBounds, + forceUpdate); } } } diff --git a/services/core/java/com/android/server/wm/PinnedStackWindowListener.java b/services/core/java/com/android/server/wm/PinnedStackWindowListener.java index 12b9c1f0c552..33e8a60329bf 100644 --- a/services/core/java/com/android/server/wm/PinnedStackWindowListener.java +++ b/services/core/java/com/android/server/wm/PinnedStackWindowListener.java @@ -28,5 +28,6 @@ public interface PinnedStackWindowListener extends StackWindowListener { * Called when the stack container pinned stack animation will change the picture-in-picture * mode. This is a direct call into ActivityManager. */ - default void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds) {} + default void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds, + boolean forceUpdate) {} } diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 05ef1a5fe106..227e4b2b59af 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -16,9 +16,9 @@ package com.android.server.wm; +import android.annotation.CallSuper; import android.content.res.Configuration; import android.graphics.Rect; -import android.hardware.display.DisplayManager; import android.hardware.power.V1_0.PowerHint; import android.os.Binder; import android.os.Debug; @@ -32,6 +32,7 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; +import android.util.ArraySet; import android.util.EventLog; import android.util.Slog; import android.util.SparseIntArray; @@ -89,8 +90,9 @@ import static com.android.server.wm.WindowSurfacePlacer.SET_TURN_ON_SCREEN; import static com.android.server.wm.WindowSurfacePlacer.SET_UPDATE_ROTATION; import static com.android.server.wm.WindowSurfacePlacer.SET_WALLPAPER_ACTION_PENDING; import static com.android.server.wm.WindowSurfacePlacer.SET_WALLPAPER_MAY_CHANGE; -import static com.android.server.wm.proto.WindowManagerServiceProto.DISPLAYS; -import static com.android.server.wm.proto.WindowManagerServiceProto.WINDOWS; +import static com.android.server.wm.proto.RootWindowContainerProto.DISPLAYS; +import static com.android.server.wm.proto.RootWindowContainerProto.WINDOWS; +import static com.android.server.wm.proto.RootWindowContainerProto.WINDOW_CONTAINER; /** Root {@link WindowContainer} for the device. */ class RootWindowContainer extends WindowContainer<DisplayContent> { @@ -249,13 +251,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { // Tap Listeners are supported for: // 1. All physical displays (multi-display). - // 2. VirtualDisplays that support virtual touch input. (Only VR for now) - // TODO(multi-display): Support VirtualDisplays with no virtual touch input. - if ((display.getType() != Display.TYPE_VIRTUAL - || (display.getType() == Display.TYPE_VIRTUAL - // Only VR VirtualDisplays - && displayId == mService.mVr2dDisplayId)) - && mService.canDispatchPointerEvents()) { + // 2. VirtualDisplays on VR, AA (and everything else). + if (mService.canDispatchPointerEvents()) { if (DEBUG_DISPLAY) { Slog.d(TAG, "Registering PointerEventListener for DisplayId: " + displayId); @@ -665,19 +662,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { defaultDisplay.pendingLayoutChanges); } - for (i = mService.mResizingWindows.size() - 1; i >= 0; i--) { - WindowState win = mService.mResizingWindows.get(i); - if (win.mAppFreezing) { - // Don't remove this window until rotation has completed. - continue; - } - // Discard the saved surface if window size is changed, it can't be reused. - if (win.mAppToken != null) { - win.mAppToken.destroySavedSurfaces(); - } - win.reportResized(); - mService.mResizingWindows.remove(i); - } + final ArraySet<DisplayContent> touchExcludeRegionUpdateDisplays = handleResizingWindows(); if (DEBUG_ORIENTATION && mService.mDisplayFrozen) Slog.v(TAG, "With display frozen, orientationChangeComplete=" + mOrientationChangeComplete); @@ -704,7 +689,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { if (win.getDisplayContent().mWallpaperController.isWallpaperTarget(win)) { wallpaperDestroyed = true; } - win.destroyOrSaveSurfaceUnchecked(); + win.destroySurfaceUnchecked(); } while (i > 0); mService.mDestroySurface.clear(); } @@ -819,6 +804,16 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { mService.mInputMonitor.updateInputWindowsLw(false /*force*/); } mService.setFocusTaskRegionLocked(null); + if (touchExcludeRegionUpdateDisplays != null) { + final DisplayContent focusedDc = mService.mFocusedApp != null + ? mService.mFocusedApp.getDisplayContent() : null; + for (DisplayContent dc : touchExcludeRegionUpdateDisplays) { + // The focused DisplayContent was recalcuated in setFocusTaskRegionLocked + if (focusedDc != dc) { + dc.setTouchExcludeRegion(null /* focusedTask */); + } + } + } // Check to see if we are now in a state where the screen should // be enabled, because the window obscured flags have changed. @@ -870,6 +865,33 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } /** + * Handles resizing windows during surface placement. + * + * @return A set of any DisplayContent whose touch exclude region needs to be recalculated due + * to a tap-exclude window resizing, or null if no such DisplayContents were found. + */ + private ArraySet<DisplayContent> handleResizingWindows() { + ArraySet<DisplayContent> touchExcludeRegionUpdateSet = null; + for (int i = mService.mResizingWindows.size() - 1; i >= 0; i--) { + WindowState win = mService.mResizingWindows.get(i); + if (win.mAppFreezing) { + // Don't remove this window until rotation has completed. + continue; + } + win.reportResized(); + mService.mResizingWindows.remove(i); + if (WindowManagerService.excludeWindowTypeFromTapOutTask(win.mAttrs.type)) { + final DisplayContent dc = win.getDisplayContent(); + if (touchExcludeRegionUpdateSet == null) { + touchExcludeRegionUpdateSet = new ArraySet<>(); + } + touchExcludeRegionUpdateSet.add(dc); + } + } + return touchExcludeRegionUpdateSet; + } + + /** * @param w WindowState this method is applied to. * @param obscured True if there is a window on top of this obscuring the display. * @param syswin System window? @@ -1057,7 +1079,11 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } } - void writeToProto(ProtoOutputStream proto) { + @CallSuper + @Override + public void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + super.writeToProto(proto, WINDOW_CONTAINER); if (mService.mDisplayReady) { final int count = mChildren.size(); for (int i = 0; i < count; ++i) { @@ -1068,6 +1094,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { forAllWindows((w) -> { w.writeIdentifierToProto(proto, WINDOWS); }, true); + proto.end(token); } @Override diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java index 08a9caa80d1e..d5b6d24631e6 100644 --- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java @@ -25,12 +25,15 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.TYPE_LAYER_MULTIPLIER; import static com.android.server.wm.WindowStateAnimator.WINDOW_FREEZE_LAYER; import static com.android.server.wm.WindowSurfaceController.SurfaceTrace; +import static com.android.server.wm.proto.ScreenRotationAnimationProto.ANIMATION_RUNNING; +import static com.android.server.wm.proto.ScreenRotationAnimationProto.STARTED; import android.content.Context; import android.graphics.Matrix; import android.graphics.PixelFormat; import android.graphics.Rect; import android.util.Slog; +import android.util.proto.ProtoOutputStream; import android.view.Display; import android.view.DisplayInfo; import android.view.Surface; @@ -198,7 +201,7 @@ class ScreenRotationAnimation { pw.print(prefix); pw.print("mEnterTransformation="); mEnterTransformation.printShortString(pw); pw.println(); pw.print(prefix); pw.print("mFrameTransformation="); - mEnterTransformation.printShortString(pw); pw.println(); + mFrameTransformation.printShortString(pw); pw.println(); pw.print(prefix); pw.print("mFrameInitialMatrix="); mFrameInitialMatrix.printShortString(pw); pw.println(); @@ -216,6 +219,13 @@ class ScreenRotationAnimation { } } + public void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + proto.write(STARTED, mStarted); + proto.write(ANIMATION_RUNNING, mAnimRunning); + proto.end(token); + } + public ScreenRotationAnimation(Context context, DisplayContent displayContent, SurfaceSession session, boolean inTransaction, boolean forceDefaultOrientation, boolean isSecure, WindowManagerService service) { diff --git a/services/core/java/com/android/server/wm/StackWindowController.java b/services/core/java/com/android/server/wm/StackWindowController.java index 3f6378a2ad24..c0a4cb72a348 100644 --- a/services/core/java/com/android/server/wm/StackWindowController.java +++ b/services/core/java/com/android/server/wm/StackWindowController.java @@ -18,8 +18,6 @@ package com.android.server.wm; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; -import android.app.ActivityManager.StackId; -import android.app.WindowConfiguration; import android.content.res.Configuration; import android.graphics.Rect; import android.os.Handler; @@ -57,16 +55,14 @@ public class StackWindowController private final Rect mTmpNonDecorInsets = new Rect(); private final Rect mTmpDisplayBounds = new Rect(); - public StackWindowController(int stackId, StackWindowListener listener, - int displayId, boolean onTop, Rect outBounds, Configuration outOverriderConfig) { - this(stackId, listener, displayId, onTop, outBounds, outOverriderConfig, - WindowManagerService.getInstance()); + public StackWindowController(int stackId, StackWindowListener listener, int displayId, + boolean onTop, Rect outBounds) { + this(stackId, listener, displayId, onTop, outBounds, WindowManagerService.getInstance()); } @VisibleForTesting public StackWindowController(int stackId, StackWindowListener listener, - int displayId, boolean onTop, Rect outBounds, Configuration outOverrideConfig, - WindowManagerService service) { + int displayId, boolean onTop, Rect outBounds, WindowManagerService service) { super(listener, service); mStackId = stackId; mHandler = new H(new WeakReference<>(this), service.mH.getLooper()); @@ -78,10 +74,8 @@ public class StackWindowController + " to unknown displayId=" + displayId); } - final TaskStack stack = dc.addStackToDisplay(stackId, onTop); - stack.setController(this); + dc.addStackToDisplay(stackId, onTop, this); getRawBounds(outBounds); - outOverrideConfig.setTo(mContainer.getOverrideConfiguration()); } } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 60384f27d594..7464a9b92d40 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -34,7 +34,9 @@ import static com.android.server.wm.proto.TaskProto.BOUNDS; import static com.android.server.wm.proto.TaskProto.FILLS_PARENT; import static com.android.server.wm.proto.TaskProto.ID; import static com.android.server.wm.proto.TaskProto.TEMP_INSET_BOUNDS; +import static com.android.server.wm.proto.TaskProto.WINDOW_CONTAINER; +import android.annotation.CallSuper; import android.app.ActivityManager.StackId; import android.app.ActivityManager.TaskDescription; import android.content.pm.ActivityInfo; @@ -97,19 +99,16 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU private boolean mDragResizing; private int mDragResizeMode; - private boolean mHomeTask; - private TaskDescription mTaskDescription; // If set to true, the task will report that it is not in the floating - // state regardless of it's stack affilation. As the floating state drives + // state regardless of it's stack affiliation. As the floating state drives // production of content insets this can be used to preserve them across // stack moves and we in fact do so when moving from full screen to pinned. private boolean mPreserveNonFloatingState = false; Task(int taskId, TaskStack stack, int userId, WindowManagerService service, Rect bounds, - Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture, - boolean homeTask, TaskDescription taskDescription, + int resizeMode, boolean supportsPictureInPicture, TaskDescription taskDescription, TaskWindowContainerController controller) { mTaskId = taskId; mStack = stack; @@ -117,9 +116,8 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU mService = service; mResizeMode = resizeMode; mSupportsPictureInPicture = supportsPictureInPicture; - mHomeTask = homeTask; setController(controller); - setBounds(bounds, overrideConfig); + setBounds(bounds, getOverrideConfiguration()); mTaskDescription = taskDescription; // Tasks have no set orientation value (including SCREEN_ORIENTATION_UNSPECIFIED). @@ -277,6 +275,9 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU } /** Set the task bounds. Passing in null sets the bounds to fullscreen. */ + // TODO: There is probably not a need to pass in overrideConfig anymore since any change to it + // will be automatically propagated from the AM. Also, mBound is going to be in + // WindowConfiguration long term. private int setBounds(Rect bounds, Configuration overrideConfig) { if (overrideConfig == null) { overrideConfig = Configuration.EMPTY; @@ -370,10 +371,6 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU return isResizeable(); } - boolean isHomeTask() { - return mHomeTask; - } - boolean resizeLocked(Rect bounds, Configuration overrideConfig, boolean forced) { int boundsChanged = setBounds(bounds, overrideConfig); if (forced) { @@ -426,9 +423,9 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU /** Return true if the current bound can get outputted to the rest of the system as-is. */ private boolean useCurrentBounds() { - final DisplayContent displayContent = mStack.getDisplayContent(); + final DisplayContent displayContent = getDisplayContent(); return mFillsParent - || !StackId.isTaskResizeableByDockedStack(mStack.mStackId) + || !inSplitScreenSecondaryWindowingMode() || displayContent == null || displayContent.getDockedStackIgnoringVisibility() != null; } @@ -740,8 +737,11 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU return "Task=" + mTaskId; } - void writeToProto(ProtoOutputStream proto, long fieldId) { + @CallSuper + @Override + public void writeToProto(ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); + super.writeToProto(proto, WINDOW_CONTAINER); proto.write(ID, mTaskId); for (int i = mChildren.size() - 1; i >= 0; i--) { final AppWindowToken appWindowToken = mChildren.get(i); diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index ecf9067b55c9..751769a63d62 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -16,8 +16,6 @@ package com.android.server.wm; -import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS; - import static com.android.server.wm.TaskSnapshotPersister.DISABLE_FULL_SIZED_BITMAPS; import static com.android.server.wm.TaskSnapshotPersister.REDUCED_SCALE; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; @@ -225,7 +223,7 @@ class TaskSnapshotController { } private boolean shouldDisableSnapshots() { - return !ENABLE_TASK_SNAPSHOTS || mIsRunningOnWear || mIsRunningOnTv || mIsRunningOnIoT; + return mIsRunningOnWear || mIsRunningOnTv || mIsRunningOnIoT; } private Rect minRect(Rect rect1, Rect rect2) { @@ -299,7 +297,7 @@ class TaskSnapshotController { return new TaskSnapshot(hwBitmap.createGraphicBufferHandle(), topChild.getConfiguration().orientation, mainWindow.mStableInsets, - false /* reduced */, 1.0f /* scale */); + ActivityManager.isLowRamDeviceStatic() /* reduced */, 1.0f /* scale */); } /** diff --git a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java index 1252aee14964..7b047a80d572 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java @@ -53,7 +53,7 @@ class TaskSnapshotPersister { private static final String TAG = TAG_WITH_CLASS_NAME ? "TaskSnapshotPersister" : TAG_WM; private static final String SNAPSHOTS_DIRNAME = "snapshots"; private static final String REDUCED_POSTFIX = "_reduced"; - static final float REDUCED_SCALE = 0.5f; + static final float REDUCED_SCALE = ActivityManager.isLowRamDeviceStatic() ? 0.6f : 0.5f; static final boolean DISABLE_FULL_SIZED_BITMAPS = ActivityManager.isLowRamDeviceStatic(); private static final long DELAY_MS = 100; private static final int QUALITY = 95; @@ -333,7 +333,6 @@ class TaskSnapshotPersister { } boolean writeBuffer() { - final File file = getBitmapFile(mTaskId, mUserId); final Bitmap bitmap = Bitmap.createHardwareBitmap(mSnapshot.getSnapshot()); if (bitmap == null) { Slog.e(TAG, "Invalid task snapshot hw bitmap"); @@ -361,6 +360,7 @@ class TaskSnapshotPersister { return true; } + final File file = getBitmapFile(mTaskId, mUserId); try { FileOutputStream fos = new FileOutputStream(file); swBitmap.compress(JPEG, QUALITY, fos); diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index 8a4a49af1223..7cb90de49b1a 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -18,18 +18,9 @@ package com.android.server.wm; import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT; import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT; -import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; -import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; -import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID; import static android.app.ActivityManager.StackId.HOME_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; -import static android.app.ActivityManager.StackId.RECENTS_STACK_ID; -import static android.app.WindowConfiguration.WINDOWING_MODE_DOCKED; -import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; -import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; -import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.content.res.Configuration.DENSITY_DPI_UNDEFINED; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; @@ -50,9 +41,10 @@ import static com.android.server.wm.proto.StackProto.BOUNDS; import static com.android.server.wm.proto.StackProto.FILLS_PARENT; import static com.android.server.wm.proto.StackProto.ID; import static com.android.server.wm.proto.StackProto.TASKS; +import static com.android.server.wm.proto.StackProto.WINDOW_CONTAINER; +import android.annotation.CallSuper; import android.app.ActivityManager.StackId; -import android.app.WindowConfiguration; import android.content.res.Configuration; import android.graphics.Rect; import android.graphics.Region; @@ -157,38 +149,13 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye Rect mPreAnimationBounds = new Rect(); - TaskStack(WindowManagerService service, int stackId) { + TaskStack(WindowManagerService service, int stackId, StackWindowController controller) { mService = service; mStackId = stackId; + setController(controller); mDockedStackMinimizeThickness = service.mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.docked_stack_minimize_thickness); EventLog.writeEvent(EventLogTags.WM_STACK_CREATED, stackId); - - // TODO: Remove once we are no longer using Stacks for windowing mode or grouping tasks. - final int windowingMode; - switch (stackId) { - case FULLSCREEN_WORKSPACE_STACK_ID: - case HOME_STACK_ID: - case RECENTS_STACK_ID: - case ASSISTANT_STACK_ID: - windowingMode = WINDOWING_MODE_FULLSCREEN; - break; - case PINNED_STACK_ID: - windowingMode = WINDOWING_MODE_PINNED; - break; - case DOCKED_STACK_ID: - windowingMode = WINDOWING_MODE_DOCKED; - break; - case FREEFORM_WORKSPACE_STACK_ID: - windowingMode = WINDOWING_MODE_FREEFORM; - break; - default : - windowingMode = WINDOWING_MODE_UNDEFINED; - } - - if (windowingMode != WINDOWING_MODE_UNDEFINED) { - setWindowingMode(windowingMode); - } } DisplayContent getDisplayContent() { @@ -196,20 +163,10 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye } Task findHomeTask() { - if (mStackId != HOME_STACK_ID) { + if (!isActivityTypeHome() || mChildren.isEmpty()) { return null; } - - for (int i = mChildren.size() - 1; i >= 0; i--) { - if (mChildren.get(i).isHomeTask()) { - return mChildren.get(i); - } - } - return null; - } - - boolean hasMultipleTaskWithHomeTaskNotTop() { - return mChildren.size() > 1 && !mChildren.get(mChildren.size() - 1).isHomeTask(); + return mChildren.get(mChildren.size() - 1); } /** @@ -335,7 +292,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye /** Return true if the current bound can get outputted to the rest of the system as-is. */ private boolean useCurrentBounds() { if (mFillsParent - || !StackId.isResizeableByDockedStack(mStackId) + || !inSplitScreenSecondaryWindowingMode() || mDisplayContent == null || mDisplayContent.getDockedStackLocked() != null) { return true; @@ -730,7 +687,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye Rect bounds = null; final TaskStack dockedStack = dc.getDockedStackIgnoringVisibility(); if (mStackId == DOCKED_STACK_ID - || (dockedStack != null && StackId.isResizeableByDockedStack(mStackId) + || (dockedStack != null && inSplitScreenSecondaryWindowingMode() && !dockedStack.fillsParent())) { // The existence of a docked stack affects the size of other static stack created since // the docked stack occupies a dedicated region on screen, but only if the dock stack is @@ -802,8 +759,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye return; } - if ((mStackId != DOCKED_STACK_ID && !StackId.isResizeableByDockedStack(mStackId)) - || mDisplayContent == null) { + if (!inSplitScreenWindowingMode() || mDisplayContent == null) { outStackBounds.set(mBounds); return; } @@ -1266,8 +1222,11 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye return mMinimizeAmount != 0f; } - void writeToProto(ProtoOutputStream proto, long fieldId) { + @CallSuper + @Override + public void writeToProto(ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); + super.writeToProto(proto, WINDOW_CONTAINER); proto.write(ID, mStackId); for (int taskNdx = mChildren.size() - 1; taskNdx >= 0; taskNdx--) { mChildren.get(taskNdx).writeToProto(proto, TASKS); @@ -1370,8 +1329,8 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye return getDockSide(mBounds); } - int getDockSide(Rect bounds) { - if (mStackId != DOCKED_STACK_ID && !StackId.isResizeableByDockedStack(mStackId)) { + private int getDockSide(Rect bounds) { + if (!inSplitScreenWindowingMode()) { return DOCKED_INVALID; } if (mDisplayContent == null) { @@ -1496,7 +1455,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye * small portion which the home stack currently is resized to. */ - if (task.isHomeTask() && isMinimizedDockAndHomeStackResizable()) { + if (task.isActivityTypeHome() && isMinimizedDockAndHomeStackResizable()) { mDisplayContent.getLogicalDisplayRect(mTmpRect); } else { task.getDimBounds(mTmpRect); @@ -1551,7 +1510,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye } @Override // AnimatesBounds - public void onAnimationStart(boolean schedulePipModeChangedCallback) { + public void onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate) { // Hold the lock since this is called from the BoundsAnimator running on the UiThread synchronized (mService.mWindowMap) { mBoundsAnimatingRequested = false; @@ -1576,9 +1535,11 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye final PinnedStackWindowController controller = (PinnedStackWindowController) getController(); if (schedulePipModeChangedCallback && controller != null) { - // We need to schedule the PiP mode change after the animation down, so use the - // final bounds - controller.updatePictureInPictureModeForPinnedStackAnimation(null); + // We need to schedule the PiP mode change before the animation up. It is possible + // in this case for the animation down to not have been completed, so always + // force-schedule and update to the client to ensure that it is notified that it + // is no longer in picture-in-picture mode + controller.updatePictureInPictureModeForPinnedStackAnimation(null, forceUpdate); } } } @@ -1606,7 +1567,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye // We need to schedule the PiP mode change after the animation down, so use the // final bounds controller.updatePictureInPictureModeForPinnedStackAnimation( - mBoundsAnimationTarget); + mBoundsAnimationTarget, false /* forceUpdate */); } if (finalStackSize != null) { diff --git a/services/core/java/com/android/server/wm/TaskWindowContainerController.java b/services/core/java/com/android/server/wm/TaskWindowContainerController.java index 54a6cc01c831..65f8cdf3acc0 100644 --- a/services/core/java/com/android/server/wm/TaskWindowContainerController.java +++ b/services/core/java/com/android/server/wm/TaskWindowContainerController.java @@ -49,19 +49,17 @@ public class TaskWindowContainerController private final H mHandler; public TaskWindowContainerController(int taskId, TaskWindowContainerListener listener, - StackWindowController stackController, int userId, Rect bounds, - Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture, - boolean homeTask, boolean toTop, boolean showForAllUsers, + StackWindowController stackController, int userId, Rect bounds, int resizeMode, + boolean supportsPictureInPicture, boolean toTop, boolean showForAllUsers, TaskDescription taskDescription) { - this(taskId, listener, stackController, userId, bounds, overrideConfig, resizeMode, - supportsPictureInPicture, homeTask, toTop, showForAllUsers, taskDescription, + this(taskId, listener, stackController, userId, bounds, resizeMode, + supportsPictureInPicture, toTop, showForAllUsers, taskDescription, WindowManagerService.getInstance()); } public TaskWindowContainerController(int taskId, TaskWindowContainerListener listener, - StackWindowController stackController, int userId, Rect bounds, - Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture, - boolean homeTask, boolean toTop, boolean showForAllUsers, + StackWindowController stackController, int userId, Rect bounds, int resizeMode, + boolean supportsPictureInPicture, boolean toTop, boolean showForAllUsers, TaskDescription taskDescription, WindowManagerService service) { super(listener, service); mTaskId = taskId; @@ -77,8 +75,8 @@ public class TaskWindowContainerController + stackController); } EventLog.writeEvent(WM_TASK_CREATED, taskId, stack.mStackId); - final Task task = createTask(taskId, stack, userId, bounds, overrideConfig, resizeMode, - supportsPictureInPicture, homeTask, taskDescription); + final Task task = createTask(taskId, stack, userId, bounds, resizeMode, + supportsPictureInPicture, taskDescription); final int position = toTop ? POSITION_TOP : POSITION_BOTTOM; // We only want to move the parents to the parents if we are creating this task at the // top of its stack. @@ -87,11 +85,10 @@ public class TaskWindowContainerController } @VisibleForTesting - Task createTask(int taskId, TaskStack stack, int userId, Rect bounds, - Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture, - boolean homeTask, TaskDescription taskDescription) { - return new Task(taskId, stack, userId, mService, bounds, overrideConfig, resizeMode, - supportsPictureInPicture, homeTask, taskDescription, this); + Task createTask(int taskId, TaskStack stack, int userId, Rect bounds, int resizeMode, + boolean supportsPictureInPicture, TaskDescription taskDescription) { + return new Task(taskId, stack, userId, mService, bounds, resizeMode, + supportsPictureInPicture, taskDescription, this); } @Override diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java index 079ae40bcb48..c01ee31e8c1c 100644 --- a/services/core/java/com/android/server/wm/WindowAnimator.java +++ b/services/core/java/com/android/server/wm/WindowAnimator.java @@ -272,7 +272,6 @@ public class WindowAnimator { mRemoveReplacedWindows = false; } - mService.stopUsingSavedSurfaceLocked(); mService.destroyPreservedSurfaceLocked(); mService.mWindowPlacerLocked.destroyPendingSurfaces(); diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index bf79dfa15ea5..40923c8216c0 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -19,12 +19,14 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; -import static android.content.res.Configuration.EMPTY; +import static com.android.server.wm.proto.WindowContainerProto.CONFIGURATION_CONTAINER; +import static com.android.server.wm.proto.WindowContainerProto.ORIENTATION; import android.annotation.CallSuper; import android.content.res.Configuration; import android.util.Pools; +import android.util.proto.ProtoOutputStream; import com.android.internal.util.ToBooleanFunction; import java.util.Comparator; @@ -363,13 +365,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< } } - void setVisibleBeforeClientHidden() { - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowContainer wc = mChildren.get(i); - wc.setVisibleBeforeClientHidden(); - } - } - /** * Returns true if the container or one of its children as some content it can display or wants * to display (e.g. app views or saved surface). @@ -692,6 +687,23 @@ a * Returns whether this child is on top of the window hierarchy. } } + /** + * Write to a protocol buffer output stream. Protocol buffer message definition is at + * {@link com.android.server.wm.proto.WindowContainerProto}. + * + * @param protoOutputStream Stream to write the WindowContainer object to. + * @param fieldId Field Id of the WindowContainer as defined in the parent message. + * @hide + */ + @CallSuper + @Override + public void writeToProto(ProtoOutputStream protoOutputStream, long fieldId) { + final long token = protoOutputStream.start(fieldId); + super.writeToProto(protoOutputStream, CONFIGURATION_CONTAINER); + protoOutputStream.write(ORIENTATION, mOrientation); + protoOutputStream.end(token); + } + String getName() { return toString(); } diff --git a/services/core/java/com/android/server/wm/WindowContainerController.java b/services/core/java/com/android/server/wm/WindowContainerController.java index c4a68377bc36..eb23fafb47f0 100644 --- a/services/core/java/com/android/server/wm/WindowContainerController.java +++ b/services/core/java/com/android/server/wm/WindowContainerController.java @@ -16,9 +16,7 @@ package com.android.server.wm; -import android.os.IBinder; - -import java.util.HashMap; +import android.content.res.Configuration; /** * Class that allows the owner/creator of a {@link WindowContainer} to communicate directly with the @@ -29,7 +27,8 @@ import java.util.HashMap; * * Test class: {@link WindowContainerControllerTests} */ -class WindowContainerController<E extends WindowContainer, I extends WindowContainerListener> { +class WindowContainerController<E extends WindowContainer, I extends WindowContainerListener> + implements ConfigurationContainerListener { final WindowManagerService mService; final RootWindowContainer mRoot; @@ -53,18 +52,32 @@ class WindowContainerController<E extends WindowContainer, I extends WindowConta + " for controller=" + this + " Already set to=" + mContainer); } mContainer = container; + if (mContainer != null && mListener != null) { + mListener.registerConfigurationChangeListener(this); + } } void removeContainer() { // TODO: See if most uses cases should support removeIfPossible here. //mContainer.removeIfPossible(); - if (mContainer != null) { - mContainer.setController(null); - mContainer = null; + if (mContainer == null) { + return; + } + + mContainer.setController(null); + mContainer = null; + if (mListener != null) { + mListener.unregisterConfigurationChangeListener(this); } } - boolean checkCallingPermission(String permission, String func) { - return mService.checkCallingPermission(permission, func); + @Override + public void onOverrideConfigurationChanged(Configuration overrideConfiguration) { + synchronized (mWindowMap) { + if (mContainer == null) { + return; + } + mContainer.onOverrideConfigurationChanged(overrideConfiguration); + } } } diff --git a/services/core/java/com/android/server/wm/WindowContainerListener.java b/services/core/java/com/android/server/wm/WindowContainerListener.java index ab9d71ac2ea8..4b3cd36040c6 100644 --- a/services/core/java/com/android/server/wm/WindowContainerListener.java +++ b/services/core/java/com/android/server/wm/WindowContainerListener.java @@ -21,5 +21,6 @@ package com.android.server.wm; * @see WindowContainerController */ public interface WindowContainerListener { - + void registerConfigurationChangeListener(ConfigurationContainerListener listener); + void unregisterConfigurationChangeListener(ConfigurationContainerListener listener); } diff --git a/services/core/java/com/android/server/wm/WindowLayersController.java b/services/core/java/com/android/server/wm/WindowLayersController.java index 5dc79f8500c0..857b13d2fa40 100644 --- a/services/core/java/com/android/server/wm/WindowLayersController.java +++ b/services/core/java/com/android/server/wm/WindowLayersController.java @@ -30,6 +30,7 @@ import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYERS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; +import static com.android.server.wm.WindowManagerService.TYPE_LAYER_OFFSET; import static com.android.server.wm.WindowManagerService.WINDOW_LAYER_MULTIPLIER; /** @@ -100,7 +101,7 @@ class WindowLayersController { mHighestLayerInImeTargetBaseLayer = Math.max(mHighestLayerInImeTargetBaseLayer, w.mWinAnimator.mAnimLayer); } - if (w.getAppToken() != null && StackId.isResizeableByDockedStack(w.getStackId())) { + if (w.getAppToken() != null && w.inSplitScreenSecondaryWindowingMode()) { mHighestDockedAffectedLayer = Math.max(mHighestDockedAffectedLayer, w.mWinAnimator.mAnimLayer); } @@ -198,7 +199,7 @@ class WindowLayersController { private void adjustSpecialWindows() { // The following adjustments are beyond the highest docked-affected layer - int layer = mHighestDockedAffectedLayer + WINDOW_LAYER_MULTIPLIER; + int layer = mHighestDockedAffectedLayer + TYPE_LAYER_OFFSET; // Adjust the docked stack windows and dock divider above only the windows that are affected // by the docked stack. When this happens, also boost the assistant window layers, otherwise diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8e741c50c540..6a5f6fafb275 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -109,6 +109,7 @@ import static com.android.server.wm.proto.WindowManagerServiceProto.FOCUSED_WIND import static com.android.server.wm.proto.WindowManagerServiceProto.INPUT_METHOD_WINDOW; import static com.android.server.wm.proto.WindowManagerServiceProto.LAST_ORIENTATION; import static com.android.server.wm.proto.WindowManagerServiceProto.POLICY; +import static com.android.server.wm.proto.WindowManagerServiceProto.ROOT_WINDOW_CONTAINER; import static com.android.server.wm.proto.WindowManagerServiceProto.ROTATION; import android.Manifest; @@ -246,6 +247,7 @@ import com.android.server.Watchdog; import com.android.server.input.InputManagerService; import com.android.server.power.BatterySaverPolicy.ServiceType; import com.android.server.power.ShutdownThread; +import com.android.server.utils.PriorityDump; import java.io.BufferedWriter; import java.io.DataInputStream; @@ -390,6 +392,18 @@ public class WindowManagerService extends IWindowManager.Stub }; final WindowSurfacePlacer mWindowPlacerLocked; + private final PriorityDump.PriorityDumper mPriorityDumper = new PriorityDump.PriorityDumper() { + @Override + public void dumpCritical(FileDescriptor fd, PrintWriter pw, String[] args) { + doDump(fd, pw, new String[] {"-a"}); + } + + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + doDump(fd, pw, args); + } + }; + /** * Current user when multi-user is enabled. Don't show windows of * non-current user. Also see mCurrentProfileIds. @@ -445,13 +459,6 @@ public class WindowManagerService extends IWindowManager.Stub final ArrayList<AppWindowToken> mFinishedStarting = new ArrayList<>(); /** - * List of window tokens that have finished drawing their own windows and - * no longer need to show any saved surfaces. Windows that's still showing - * saved surfaces will be cleaned up after next animation pass. - */ - final ArrayList<AppWindowToken> mFinishedEarlyAnim = new ArrayList<>(); - - /** * List of app window tokens that are waiting for replacing windows. If the * replacement doesn't come in time the stale windows needs to be disposed of. */ @@ -2078,17 +2085,8 @@ public class WindowManagerService extends IWindowManager.Stub winAnimator.mEnterAnimationPending = false; winAnimator.mEnteringAnimation = false; - final boolean usingSavedSurfaceBeforeVisible = - oldVisibility != View.VISIBLE && win.isAnimatingWithSavedSurface(); - if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) { - if (winAnimator.hasSurface() && !win.mAnimatingExit - && usingSavedSurfaceBeforeVisible) { - Slog.d(TAG, "Ignoring layout to invisible when using saved surface " + win); - } - } - if (winAnimator.hasSurface() && !win.mAnimatingExit - && !usingSavedSurfaceBeforeVisible) { + if (winAnimator.hasSurface() && !win.mAnimatingExit) { if (DEBUG_VISIBILITY) Slog.i(TAG_WM, "Relayout invis " + win + ": mAnimatingExit=" + win.mAnimatingExit); // If we are not currently running the exit animation, we @@ -5374,14 +5372,6 @@ public class WindowManagerService extends IWindowManager.Stub mDestroyPreservedSurface.clear(); } - void stopUsingSavedSurfaceLocked() { - for (int i = mFinishedEarlyAnim.size() - 1; i >= 0 ; i--) { - final AppWindowToken wtoken = mFinishedEarlyAnim.get(i); - wtoken.stopUsingSavedSurfaceLocked(); - } - mFinishedEarlyAnim.clear(); - } - // ------------------------------------------------------------- // IWindowManager API // ------------------------------------------------------------- @@ -6529,7 +6519,7 @@ public class WindowManagerService extends IWindowManager.Stub private void writeToProtoLocked(ProtoOutputStream proto) { mPolicy.writeToProto(proto, POLICY); - mRoot.writeToProto(proto); + mRoot.writeToProto(proto, ROOT_WINDOW_CONTAINER); if (mCurrentFocus != null) { mCurrentFocus.writeIdentifierToProto(proto, FOCUSED_WINDOW); } @@ -6817,8 +6807,11 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; + PriorityDump.dump(mPriorityDumper, fd, pw, args); + } + private void doDump(FileDescriptor fd, PrintWriter pw, String[] args) { + if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; boolean dumpAll = false; boolean useProto = false; diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index f7ab534aa27a..8a2cb5a148d8 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -16,12 +16,10 @@ package com.android.server.wm; -import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS; import static android.app.ActivityManager.StackId; import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; -import static android.app.ActivityManager.isLowRamDeviceStatic; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_CONTENT; @@ -38,7 +36,6 @@ import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; import static android.view.WindowManager.LayoutParams.FLAG_SCALED; -import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; import static android.view.WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON; @@ -119,7 +116,9 @@ import static com.android.server.wm.proto.WindowStateProto.IDENTIFIER; import static com.android.server.wm.proto.WindowStateProto.PARENT_FRAME; import static com.android.server.wm.proto.WindowStateProto.STACK_ID; import static com.android.server.wm.proto.WindowStateProto.SURFACE_INSETS; +import static com.android.server.wm.proto.WindowStateProto.WINDOW_CONTAINER; +import android.annotation.CallSuper; import android.app.AppOpsManager; import android.content.Context; import android.content.res.Configuration; @@ -138,8 +137,8 @@ import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; import android.os.WorkSource; -import android.util.MergedConfiguration; import android.util.DisplayMetrics; +import android.util.MergedConfiguration; import android.util.Slog; import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; @@ -182,9 +181,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // to capture touch events in that area. static final int RESIZE_HANDLE_WIDTH_IN_DP = 30; - private static final boolean DEBUG_DISABLE_SAVING_SURFACES = false || - ENABLE_TASK_SNAPSHOTS; - final WindowManagerService mService; final WindowManagerPolicy mPolicy; final Context mContext; @@ -521,15 +517,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP /** When true this window can be displayed on screens owther than mOwnerUid's */ private boolean mShowToOwnerOnly; - // Whether the window has a saved surface from last pause, which can be - // used to start an entering animation earlier. - private boolean mSurfaceSaved = false; - - // Whether we're performing an entering animation with a saved surface. This flag is - // true during the time we're showing a window with a previously saved surface. It's - // cleared when surface is destroyed, saved, or re-drawn by the app. - private boolean mAnimatingWithSavedSurface; - // Whether the window was visible when we set the app to invisible last time. WM uses // this as a hint to restore the surface (if available) for early animation next time // the app is brought visible. @@ -585,8 +572,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP */ boolean mSeamlesslyRotated = false; - private static final Region sEmptyRegion = new Region(); - /** * Surface insets from the previous call to relayout(), used to track * if we are changing the Surface insets. @@ -1370,10 +1355,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP @Override boolean hasContentToDisplay() { - // If we're animating with a saved surface, we're already visible. - // Return true so that the alpha doesn't get cleared. - if (!mAppFreezing && isDrawnLw() - && (mViewVisibility == View.VISIBLE || isAnimatingWithSavedSurface() + if (!mAppFreezing && isDrawnLw() && (mViewVisibility == View.VISIBLE || (mWinAnimator.isAnimationSet() && !mService.mAppTransition.isTransitionSet()))) { return true; } @@ -1461,19 +1443,12 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP /** * Whether this window's drawn state might affect the drawn states of the app token. * - * @param visibleOnly Whether we should consider only the windows that's currently - * visible in layout. If true, windows that has not relayout to VISIBLE - * would always return false. - * * @return true if the window should be considered while evaluating allDrawn flags. */ - boolean mightAffectAllDrawn(boolean visibleOnly) { - final boolean isViewVisible = (mAppToken == null || !mAppToken.isClientHidden()) - && (mViewVisibility == View.VISIBLE) && !mWindowRemovalAllowed; - return (isOnScreen() && (!visibleOnly || isViewVisible) - || mWinAnimator.mAttrType == TYPE_BASE_APPLICATION - || mWinAnimator.mAttrType == TYPE_DRAWN_APPLICATION) - && !mAnimatingExit && !mDestroying; + boolean mightAffectAllDrawn() { + final boolean isAppType = mWinAnimator.mAttrType == TYPE_BASE_APPLICATION + || mWinAnimator.mAttrType == TYPE_DRAWN_APPLICATION; + return (isOnScreen() || isAppType) && !mAnimatingExit && !mDestroying; } /** @@ -1502,7 +1477,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // TODO: Another visibility method that was added late in the release to minimize risk. @Override public boolean canAffectSystemUiFlags() { - final boolean shown = mWinAnimator.getShown() && mWinAnimator.mShownAlpha > 0f; + final boolean shown = mWinAnimator.getShown(); // We only consider the app to be exiting when the animation has started. After the app // transition is executed the windows are marked exiting before the new windows have been @@ -1516,7 +1491,12 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP final boolean exiting = exitingSelf || mDestroying || appExiting; final boolean translucent = mAttrs.alpha == 0.0f; - return shown && !exiting && !translucent; + + // If we are entering with a dummy animation, avoid affecting SystemUI flags until the + // transition is starting. + final boolean enteringWithDummyAnimation = + mWinAnimator.isDummyAnimation() && mWinAnimator.mShownAlpha == 0f; + return shown && !exiting && !translucent && !enteringWithDummyAnimation; } /** @@ -1667,10 +1647,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP @Override void onResize() { - // Some windows won't go through the resizing process, if they don't have a surface, so - // destroy all saved surfaces here. - destroySavedSurface(); - final ArrayList<WindowState> resizingWindows = mService.mResizingWindows; if (mHasSurface && !resizingWindows.contains(this)) { if (DEBUG_RESIZE) Slog.d(TAG, "onResize: Resizing " + this); @@ -1919,19 +1895,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return; } - if (isAnimatingWithSavedSurface() && !mAppToken.allDrawnExcludingSaved) { - // We started enter animation early with a saved surface, now the app asks to remove - // this window. If we remove it now and the app is not yet drawn, we'll show a - // flicker. Delay the removal now until it's really drawn. - if (DEBUG_ADD_REMOVE) Slog.d(TAG_WM, - "removeWindowLocked: delay removal of " + this + " due to early animation"); - // Do not set mAnimatingExit to true here, it will cause the surface to be hidden - // immediately after the enter animation is done. If the app is not yet drawn then - // it will show up as a flicker. - setupWindowForRemoveOnExit(); - Binder.restoreCallingIdentity(origId); - return; - } // If we are not currently running the exit animation, we need to see about starting one wasVisible = isWinVisibleLw(); @@ -2634,10 +2597,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return mAnimatingExit || (mService.mClosingApps.contains(mAppToken)); } - boolean isAnimatingWithSavedSurface() { - return mAnimatingWithSavedSurface; - } - @Override boolean isAnimating() { if (mWinAnimator.isAnimationSet() || mAnimatingExit) { @@ -2646,48 +2605,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return super.isAnimating(); } - boolean isAnimatingInvisibleWithSavedSurface() { - if (mAnimatingWithSavedSurface - && (mViewVisibility != View.VISIBLE || mWindowRemovalAllowed)) { - return true; - } - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowState c = mChildren.get(i); - if (c.isAnimatingInvisibleWithSavedSurface()) { - return true; - } - } - return false; - } - - void stopUsingSavedSurface() { - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowState c = mChildren.get(i); - c.stopUsingSavedSurface(); - } - - if (!isAnimatingInvisibleWithSavedSurface()) { - return; - } - - if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) Slog.d(TAG, "stopUsingSavedSurface: " + this); - clearAnimatingWithSavedSurface(); - mDestroying = true; - mWinAnimator.hide("stopUsingSavedSurface"); - getDisplayContent().mWallpaperController.hideWallpapers(this); - } - - void markSavedSurfaceExiting() { - if (isAnimatingInvisibleWithSavedSurface()) { - mAnimatingExit = true; - mWinAnimator.mAnimating = true; - } - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowState c = mChildren.get(i); - c.markSavedSurfaceExiting(); - } - } - void addWinAnimatorToList(ArrayList<WindowStateAnimator> animators) { animators.add(mWinAnimator); @@ -2726,25 +2643,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } } - public void setVisibleBeforeClientHidden() { - mWasVisibleBeforeClientHidden |= - (mViewVisibility == View.VISIBLE || mAnimatingWithSavedSurface); - - super.setVisibleBeforeClientHidden(); - } - - public void clearWasVisibleBeforeClientHidden() { - mWasVisibleBeforeClientHidden = false; - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowState c = mChildren.get(i); - c.clearWasVisibleBeforeClientHidden(); - } - } - - public boolean wasVisibleBeforeClientHidden() { - return mWasVisibleBeforeClientHidden; - } - void onStartFreezingScreen() { mAppFreezing = true; for (int i = mChildren.size() - 1; i >= 0; --i) { @@ -2777,48 +2675,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return true; } - private boolean shouldSaveSurface() { - if (mWinAnimator.mSurfaceController == null) { - // Don't bother if the surface controller is gone for any reason. - return false; - } - - if (!mWasVisibleBeforeClientHidden) { - return false; - } - - if ((mAttrs.flags & FLAG_SECURE) != 0) { - // We don't save secure surfaces since their content shouldn't be shown while the app - // isn't on screen and content might leak through during the transition animation with - // saved surface. - return false; - } - - if (isLowRamDeviceStatic()) { - // Don't save surfaces on Svelte devices. - return false; - } - - final Task task = getTask(); - final AppWindowToken taskTop = task.getTopVisibleAppToken(); - if (taskTop != null && taskTop != mAppToken) { - // Don't save if the window is not the topmost window. - return false; - } - - if (mResizedWhileGone) { - // Somebody resized our window while we were gone for layout, which means that the - // client got an old size, so we have an outdated surface here. - return false; - } - - if (DEBUG_DISABLE_SAVING_SURFACES) { - return false; - } - - return mAppToken.shouldSaveSurface(); - } - boolean destroySurface(boolean cleanupOnResume, boolean appStopped) { boolean destroyedSomething = false; for (int i = mChildren.size() - 1; i >= 0; --i) { @@ -2840,7 +2696,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP + " win.mWindowRemovalAllowed=" + mWindowRemovalAllowed + " win.mRemoveOnExit=" + mRemoveOnExit); if (!cleanupOnResume || mRemoveOnExit) { - destroyOrSaveSurfaceUnchecked(); + destroySurfaceUnchecked(); } if (mRemoveOnExit) { removeImmediately(); @@ -2858,156 +2714,14 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // Destroy or save the application surface without checking // various indicators of whether the client has released the surface. // This is in general unsafe, and most callers should use {@link #destroySurface} - void destroyOrSaveSurfaceUnchecked() { - mSurfaceSaved = shouldSaveSurface(); - if (mSurfaceSaved) { - if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) { - Slog.v(TAG, "Saving surface: " + this); - } - // Previous user of the surface may have set a transparent region signaling a portion - // doesn't need to be composited, so reset to default empty state. - mSession.setTransparentRegion(mClient, sEmptyRegion); - - mWinAnimator.hide("saved surface"); - mWinAnimator.mDrawState = WindowStateAnimator.NO_SURFACE; - setHasSurface(false); - // The client should have disconnected at this point, but if it doesn't, - // we need to make sure it's disconnected. Otherwise when we reuse the surface - // the client can't reconnect to the buffer queue, and rendering will fail. - if (mWinAnimator.mSurfaceController != null) { - mWinAnimator.mSurfaceController.disconnectInTransaction(); - } - mAnimatingWithSavedSurface = false; - } else { - mWinAnimator.destroySurfaceLocked(); - } + void destroySurfaceUnchecked() { + mWinAnimator.destroySurfaceLocked(); + // Clear animating flags now, since the surface is now gone. (Note this is true even // if the surface is saved, to outside world the surface is still NO_SURFACE.) mAnimatingExit = false; } - void destroySavedSurface() { - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowState c = mChildren.get(i); - c.destroySavedSurface(); - } - - if (mSurfaceSaved) { - if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) Slog.v(TAG, "Destroying saved surface: " + this); - mWinAnimator.destroySurfaceLocked(); - mSurfaceSaved = false; - } - mWasVisibleBeforeClientHidden = false; - } - - /** Returns -1 if there are no interesting windows or number of interesting windows not drawn.*/ - int restoreSavedSurfaceForInterestingWindow() { - int interestingNotDrawn = -1; - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowState c = mChildren.get(i); - final int childInterestingNotDrawn = c.restoreSavedSurfaceForInterestingWindow(); - if (childInterestingNotDrawn != -1) { - if (interestingNotDrawn == -1) { - interestingNotDrawn = childInterestingNotDrawn; - } else { - interestingNotDrawn += childInterestingNotDrawn; - } - } - } - - if (mAttrs.type == TYPE_APPLICATION_STARTING - || mAppDied || !wasVisibleBeforeClientHidden() - || (mAppToken.mAppAnimator.freezingScreen && mAppFreezing)) { - // Window isn't interesting... - return interestingNotDrawn; - } - - restoreSavedSurface(); - - if (!isDrawnLw()) { - if (interestingNotDrawn == -1) { - interestingNotDrawn = 1; - } else { - interestingNotDrawn++; - } - } - return interestingNotDrawn; - } - - /** Returns true if the saved surface was restored. */ - boolean restoreSavedSurface() { - if (!mSurfaceSaved) { - return false; - } - - // Sometimes we save surfaces due to layout invisible directly after rotation occurs. - // However this means the surface was never laid out in the new orientation. - // We can only restore to the last rotation we were laid out as visible in. - if (mLastVisibleLayoutRotation != getDisplayContent().getRotation()) { - destroySavedSurface(); - return false; - } - mSurfaceSaved = false; - - if (mWinAnimator.mSurfaceController != null) { - setHasSurface(true); - mWinAnimator.mDrawState = READY_TO_SHOW; - mAnimatingWithSavedSurface = true; - - requestUpdateWallpaperIfNeeded(); - - if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) { - Slog.v(TAG, "Restoring saved surface: " + this); - } - } else { - // mSurfaceController shouldn't be null if mSurfaceSaved was still true at - // this point. Even if we destroyed the saved surface because of rotation - // or resize, mSurfaceSaved flag should have been cleared. So this is a wtf. - Slog.wtf(TAG, "Failed to restore saved surface: surface gone! " + this); - } - - return true; - } - - boolean canRestoreSurface() { - if (mWasVisibleBeforeClientHidden && mSurfaceSaved) { - return true; - } - - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowState c = mChildren.get(i); - if (c.canRestoreSurface()) { - return true; - } - } - - return false; - } - - boolean hasSavedSurface() { - return mSurfaceSaved; - } - - void clearHasSavedSurface() { - mSurfaceSaved = false; - mAnimatingWithSavedSurface = false; - if (mWasVisibleBeforeClientHidden) { - mAppToken.destroySavedSurfaces(); - } - } - - boolean clearAnimatingWithSavedSurface() { - if (mAnimatingWithSavedSurface) { - // App has drawn something to its windows, we're no longer animating with - // the saved surfaces. - if (DEBUG_ANIM) Slog.d(TAG, - "clearAnimatingWithSavedSurface(): win=" + this); - mAnimatingWithSavedSurface = false; - return true; - } - return false; - } - @Override public boolean isDefaultDisplay() { final DisplayContent displayContent = getDisplayContent(); @@ -3412,8 +3126,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP || (isChildWindow() && getParentWindow().isDockedResizing()); } - void writeToProto(ProtoOutputStream proto, long fieldId) { + @CallSuper + @Override + public void writeToProto(ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); + super.writeToProto(proto, WINDOW_CONTAINER); writeIdentifierToProto(proto, IDENTIFIER); proto.write(DISPLAY_ID, getDisplayId()); proto.write(STACK_ID, getStackId()); @@ -3487,12 +3204,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (mAppToken != null) { pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken); pw.print(prefix); pw.print(" isAnimatingWithSavedSurface()="); - pw.print(isAnimatingWithSavedSurface()); pw.print(" mAppDied=");pw.print(mAppDied); pw.print(prefix); pw.print("drawnStateEvaluated="); pw.print(getDrawnStateEvaluated()); pw.print(prefix); pw.print("mightAffectAllDrawn="); - pw.println(mightAffectAllDrawn(false /*visibleOnly*/)); + pw.println(mightAffectAllDrawn()); } pw.print(prefix); pw.print("mViewVisibility=0x"); pw.print(Integer.toHexString(mViewVisibility)); @@ -3543,7 +3259,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP pw.print(prefix); pw.print("mHasSurface="); pw.print(mHasSurface); pw.print(" mShownPosition="); mShownPosition.printShortString(pw); pw.print(" isReadyForDisplay()="); pw.print(isReadyForDisplay()); - pw.print(" hasSavedSurface()="); pw.print(hasSavedSurface()); pw.print(" mWindowRemovalAllowed="); pw.println(mWindowRemovalAllowed); if (dumpAll) { pw.print(prefix); pw.print("mFrame="); mFrame.printShortString(pw); @@ -4601,11 +4316,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP && getResizeMode() == DRAG_RESIZE_MODE_DOCKED_DIVIDER; result |= freeformResizing ? RELAYOUT_RES_DRAG_RESIZING_FREEFORM : 0; result |= dockedResizing ? RELAYOUT_RES_DRAG_RESIZING_DOCKED : 0; - if (isAnimatingWithSavedSurface()) { - // If we're animating with a saved surface now, request client to report draw. - // We still need to know when the real thing is drawn. - result |= RELAYOUT_RES_FIRST_TIME; - } return result; } diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index d0b6be6fa133..1b7e52788631 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -16,7 +16,6 @@ package com.android.server.wm; -import static android.app.ActivityManager.StackId; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; import static android.view.WindowManager.LayoutParams.FLAG_SCALED; @@ -347,7 +346,7 @@ class WindowStateAnimator { mAnimation.cancel(); mAnimation = null; mLocalAnimating = false; - mWin.destroyOrSaveSurfaceUnchecked(); + mWin.destroySurfaceUnchecked(); } } @@ -507,7 +506,7 @@ class WindowStateAnimator { + drawStateToString()); } - boolean layoutNeeded = mWin.clearAnimatingWithSavedSurface(); + boolean layoutNeeded = false; if (mDrawState == DRAW_PENDING) { if (DEBUG_SURFACE_TRACE || DEBUG_ANIM || SHOW_TRANSACTIONS || DEBUG_ORIENTATION) @@ -626,11 +625,6 @@ class WindowStateAnimator { WindowSurfaceController createSurfaceLocked(int windowType, int ownerUid) { final WindowState w = mWin; - if (w.restoreSavedSurface()) { - if (DEBUG_ANIM) Slog.i(TAG, - "createSurface: " + this + ": called when we had a saved surface"); - return mSurfaceController; - } if (mSurfaceController != null) { return mSurfaceController; @@ -789,8 +783,7 @@ class WindowStateAnimator { } boolean hasSurface() { - return !mWin.hasSavedSurface() - && mSurfaceController != null && mSurfaceController.hasSurface(); + return mSurfaceController != null && mSurfaceController.hasSurface(); } void destroySurfaceLocked() { @@ -801,8 +794,6 @@ class WindowStateAnimator { } } - mWin.clearHasSavedSurface(); - if (mSurfaceController == null) { return; } @@ -1164,11 +1155,10 @@ class WindowStateAnimator { transform.postScale(spec.scale, spec.scale); transform.postTranslate(-spec.offsetX, -spec.offsetY); transform.mapRect(finalCrop); - finalClipRect.top = (int)finalCrop.top; - finalClipRect.left = (int)finalCrop.left; - // TODO: Are the assignments below a mistake? - finalClipRect.right = (int)finalClipRect.right; - finalClipRect.bottom = (int)finalClipRect.bottom; + finalClipRect.top = (int) finalCrop.top; + finalClipRect.left = (int) finalCrop.left; + finalClipRect.right = (int) finalCrop.right; + finalClipRect.bottom = (int) finalCrop.bottom; } return true; @@ -1662,7 +1652,14 @@ class WindowStateAnimator { if (mWin.mAppToken != null) { mWin.mAppToken.setCanTurnScreenOn(false); } - mAnimator.mBulkUpdateParams |= SET_TURN_ON_SCREEN; + + // We do not add {@code SET_TURN_ON_SCREEN} when the screen is already + // interactive as the value may persist until the next animation, which could + // potentially occurring while turning off the screen. This would lead to the + // screen incorrectly turning back on. + if (!mService.mPowerManager.isInteractive()) { + mAnimator.mBulkUpdateParams |= SET_TURN_ON_SCREEN; + } } } if (hasSurface()) { diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index 581b0447dafc..88625d35f9b4 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -2,7 +2,6 @@ package com.android.server.wm; import static android.app.ActivityManager.StackId.INVALID_STACK_ID; -import static android.app.ActivityManagerInternal.APP_TRANSITION_SAVED_SURFACE; import static android.app.ActivityManagerInternal.APP_TRANSITION_SNAPSHOT; import static android.app.ActivityManagerInternal.APP_TRANSITION_SPLASH_SCREEN; import static android.app.ActivityManagerInternal.APP_TRANSITION_WINDOWS_DRAWN; @@ -445,13 +444,6 @@ class WindowSurfacePlacer { for (int i = 0; i < appsCount; i++) { AppWindowToken wtoken = mService.mClosingApps.valueAt(i); - // If we still have some windows animating with saved surfaces that's - // either invisible or already removed, mark them exiting so that they - // are disposed of after the exit animation. These are not supposed to - // be shown, or are delayed removal until app is actually drawn (in which - // case the window will be removed after the animation). - wtoken.markSavedSurfaceExiting(); - final AppWindowAnimator appAnimator = wtoken.mAppAnimator; if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "Now closing app " + wtoken); appAnimator.clearThumbnail(); @@ -539,8 +531,6 @@ class WindowSurfacePlacer { + wtoken.startingMoved + " isRelaunching()=" + wtoken.isRelaunching()); - final boolean drawnBeforeRestoring = wtoken.allDrawn; - wtoken.restoreSavedSurfaceForInterestingWindows(); final boolean allDrawn = wtoken.allDrawn && !wtoken.isRelaunching(); if (!allDrawn && !wtoken.startingDisplayed && !wtoken.startingMoved) { @@ -549,8 +539,7 @@ class WindowSurfacePlacer { final TaskStack stack = wtoken.getStack(); final int stackId = stack != null ? stack.mStackId : INVALID_STACK_ID; if (allDrawn) { - outReasons.put(stackId, drawnBeforeRestoring ? APP_TRANSITION_WINDOWS_DRAWN - : APP_TRANSITION_SAVED_SURFACE); + outReasons.put(stackId, APP_TRANSITION_WINDOWS_DRAWN); } else { outReasons.put(stackId, wtoken.startingData instanceof SplashScreenStartingData ? APP_TRANSITION_SPLASH_SCREEN diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java index 422615b10fc1..943448eea2b0 100644 --- a/services/core/java/com/android/server/wm/WindowToken.java +++ b/services/core/java/com/android/server/wm/WindowToken.java @@ -16,6 +16,7 @@ package com.android.server.wm; +import android.annotation.CallSuper; import android.util.proto.ProtoOutputStream; import java.util.Comparator; import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; @@ -28,6 +29,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL; import static com.android.server.wm.proto.WindowTokenProto.HASH_CODE; import static com.android.server.wm.proto.WindowTokenProto.WINDOWS; +import static com.android.server.wm.proto.WindowTokenProto.WINDOW_CONTAINER; import android.os.Debug; import android.os.IBinder; @@ -263,8 +265,11 @@ class WindowToken extends WindowContainer<WindowState> { super.onDisplayChanged(dc); } - void writeToProto(ProtoOutputStream proto, long fieldId) { + @CallSuper + @Override + public void writeToProto(ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); + super.writeToProto(proto, WINDOW_CONTAINER); proto.write(HASH_CODE, System.identityHashCode(this)); for (int i = 0; i < mChildren.size(); i++) { final WindowState w = mChildren.get(i); diff --git a/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp b/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp index 85ec9e07e39e..81d46f39d84a 100644 --- a/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp +++ b/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp @@ -48,15 +48,19 @@ void NativeCallbackThread::threadLoop() { return; } - while (!mExiting) { - ALOGV("Waiting for task..."); + while (true) { Task task; { unique_lock<mutex> lk(mQueueMutex); - mQueueCond.wait(lk); + if (mExiting) break; + if (mQueue.empty()) { + ALOGV("Waiting for task..."); + mQueueCond.wait(lk); + if (mExiting) break; + if (mQueue.empty()) continue; + } - if (mQueue.empty()) continue; task = mQueue.front(); mQueue.pop(); } @@ -74,6 +78,7 @@ void NativeCallbackThread::threadLoop() { ALOGE_IF(res != JNI_OK, "Couldn't detach thread"); ALOGV("Native callback thread %p finished", this); + ALOGD_IF(!mQueue.empty(), "Skipped execution of %zu tasks", mQueue.size()); } void NativeCallbackThread::enqueue(const Task &task) { @@ -84,6 +89,7 @@ void NativeCallbackThread::enqueue(const Task &task) { return; } + ALOGV("Adding task to the queue..."); mQueue.push(task); mQueueCond.notify_one(); } diff --git a/services/core/jni/BroadcastRadio/Tuner.cpp b/services/core/jni/BroadcastRadio/Tuner.cpp index 85603d5e3608..e1ade4dc02da 100644 --- a/services/core/jni/BroadcastRadio/Tuner.cpp +++ b/services/core/jni/BroadcastRadio/Tuner.cpp @@ -84,6 +84,7 @@ struct TunerContext { bool mIsClosed = false; HalRevision mHalRev; bool mWithAudio; + bool mIsAudioConnected = false; Band mBand; wp<V1_0::IBroadcastRadio> mHalModule; wp<V1_1::IBroadcastRadio> mHalModule11; @@ -142,6 +143,8 @@ void HalDeathRecipient::serviceDied(uint64_t cookie __unused, // TODO(b/62713378): implement support for multiple tuners open at the same time static void notifyAudioService(TunerContext& ctx, bool connected) { if (!ctx.mWithAudio) return; + if (ctx.mIsAudioConnected == connected) return; + ctx.mIsAudioConnected = connected; ALOGD("Notifying AudioService about new state: %d", connected); auto token = IPCThreadState::self()->clearCallingIdentity(); @@ -265,6 +268,14 @@ static jobject nativeGetConfiguration(JNIEnv *env, jobject obj, jlong nativeCont return convert::BandConfigFromHal(env, halConfig, region).release(); } +static void nativeSetMuted(JNIEnv *env, jobject obj, jlong nativeContext, bool mute) { + ALOGV("%s(%d)", __func__, mute); + lock_guard<mutex> lk(gContextMutex); + auto& ctx = getNativeContext(nativeContext); + + notifyAudioService(ctx, !mute); +} + static void nativeStep(JNIEnv *env, jobject obj, jlong nativeContext, bool directionDown, bool skipSubChannel) { ALOGV("%s", __func__); @@ -497,6 +508,7 @@ static const JNINativeMethod gTunerMethods[] = { (void*)nativeSetConfiguration }, { "nativeGetConfiguration", "(JI)Landroid/hardware/radio/RadioManager$BandConfig;", (void*)nativeGetConfiguration }, + { "nativeSetMuted", "(JZ)V", (void*)nativeSetMuted }, { "nativeStep", "(JZZ)V", (void*)nativeStep }, { "nativeScan", "(JZZ)V", (void*)nativeScan }, { "nativeTune", "(JLandroid/hardware/radio/ProgramSelector;)V", (void*)nativeTune }, diff --git a/services/core/jni/BroadcastRadio/regions.cpp b/services/core/jni/BroadcastRadio/regions.cpp index e31352107030..b85641992e6c 100644 --- a/services/core/jni/BroadcastRadio/regions.cpp +++ b/services/core/jni/BroadcastRadio/regions.cpp @@ -64,7 +64,7 @@ static const RegionalBandDefinition kKnownRegionConfigs[] = { { { Region::ITU_2 }, { Band::FM, Band::FM_HD }, - 87900, + 87700, 107900, 200, Deemphasis::D75, @@ -101,14 +101,14 @@ static const RegionalBandDefinition kKnownRegionConfigs[] = { { Region::ITU_1, Region::OIRT, Region::JAPAN, Region::KOREA }, { Band::AM }, 153, - 279, + 282, 9, }, { // AM MW { Region::ITU_1, Region::OIRT, Region::JAPAN, Region::KOREA }, { Band::AM }, 531, - 1611, + 1620, 9, }, { // AM SW @@ -128,8 +128,8 @@ static const RegionalBandDefinition kKnownRegionConfigs[] = { { // AM MW ITU2 { Region::ITU_2 }, { Band::AM, Band::AM_HD }, - 540, - 1610, + 530, + 1700, 10, }, { // AM SW ITU2 diff --git a/services/core/jni/com_android_server_VibratorService.cpp b/services/core/jni/com_android_server_VibratorService.cpp index 0370490668ec..d2f374dd9e08 100644 --- a/services/core/jni/com_android_server_VibratorService.cpp +++ b/services/core/jni/com_android_server_VibratorService.cpp @@ -153,9 +153,9 @@ static jlong vibratorPerformEffect(JNIEnv*, jobject, jlong effect, jint strength if (status == Status::OK) { return lengthMs; } else if (status != Status::UNSUPPORTED_OPERATION) { - // Don't warn on UNSUPPORTED_OPERATION, that's a normal even and just means the motor - // doesn't have a pre-defined waveform to perform for it, so we should just fall back - // to the framework waveforms. + // Don't warn on UNSUPPORTED_OPERATION, that's a normal event and just means the motor + // doesn't have a pre-defined waveform to perform for it, so we should just give the + // opportunity to fall back to the framework waveforms. ALOGE("Failed to perform haptic effect: effect=%" PRId64 ", strength=%" PRId32 ", error=%" PRIu32 ").", static_cast<int64_t>(effect), static_cast<int32_t>(strength), static_cast<uint32_t>(status)); diff --git a/services/core/jni/com_android_server_am_BatteryStatsService.cpp b/services/core/jni/com_android_server_am_BatteryStatsService.cpp index 2dc388a5873a..ae7d6daa649b 100644 --- a/services/core/jni/com_android_server_am_BatteryStatsService.cpp +++ b/services/core/jni/com_android_server_am_BatteryStatsService.cpp @@ -63,6 +63,12 @@ extern sp<android::hardware::power::V1_0::IPower> gPowerHalV1_0; extern std::mutex gPowerHalMutex; extern bool getPowerHal(); +// Java methods used in getLowPowerStats +static jmethodID jgetAndUpdatePlatformState = NULL; +static jmethodID jgetSubsystem = NULL; +static jmethodID jputVoter = NULL; +static jmethodID jputState = NULL; + static void wakeup_callback(bool success) { ALOGV("In wakeup_callback: %s", success ? "resumed from suspend" : "suspend aborted"); @@ -185,6 +191,97 @@ static jint nativeWaitWakeup(JNIEnv *env, jobject clazz, jobject outBuf) return mergedreasonpos - mergedreason; } +static void getLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject jrpmStats) { + if (jrpmStats == NULL) { + jniThrowException(env, "java/lang/NullPointerException", + "The rpmstats jni input jobject jrpmStats is null."); + return; + } + if (jgetAndUpdatePlatformState == NULL || jgetSubsystem == NULL + || jputVoter == NULL || jputState == NULL) { + ALOGE("A rpmstats jni jmethodID is null."); + return; + } + + std::lock_guard<std::mutex> lock(gPowerHalMutex); + if (!getPowerHal()) { + ALOGE("Power Hal not loaded"); + return; + } + + Return<void> ret = gPowerHalV1_0->getPlatformLowPowerStats( + [&env, &jrpmStats](hidl_vec<PowerStatePlatformSleepState> states, Status status) { + + if (status != Status::SUCCESS) return; + + for (size_t i = 0; i < states.size(); i++) { + const PowerStatePlatformSleepState& state = states[i]; + + jobject jplatformState = env->CallObjectMethod(jrpmStats, + jgetAndUpdatePlatformState, + env->NewStringUTF(state.name.c_str()), + state.residencyInMsecSinceBoot, + state.totalTransitions); + if (jplatformState == NULL) { + ALOGE("The rpmstats jni jobject jplatformState is null."); + return; + } + + for (size_t j = 0; j < state.voters.size(); j++) { + const PowerStateVoter& voter = state.voters[j]; + env->CallVoidMethod(jplatformState, jputVoter, + env->NewStringUTF(voter.name.c_str()), + voter.totalTimeInMsecVotedForSinceBoot, + voter.totalNumberOfTimesVotedSinceBoot); + } + } + }); + if (!ret.isOk()) { + ALOGE("getLowPowerStats() failed: power HAL service not available"); + gPowerHalV1_0 = nullptr; + return; + } + + //Trying to cast to IPower 1.1, this will succeed only for devices supporting 1.1 + sp<android::hardware::power::V1_1::IPower> gPowerHal_1_1 + = android::hardware::power::V1_1::IPower::castFrom(gPowerHalV1_0); + if (gPowerHal_1_1 == nullptr) { + //This device does not support IPower@1.1, exiting gracefully + return; + } + ret = gPowerHal_1_1->getSubsystemLowPowerStats( + [&env, &jrpmStats](hidl_vec<PowerStateSubsystem> subsystems, Status status) { + + if (status != Status::SUCCESS) return; + + if (subsystems.size() > 0) { + for (size_t i = 0; i < subsystems.size(); i++) { + const PowerStateSubsystem &subsystem = subsystems[i]; + + jobject jsubsystem = env->CallObjectMethod(jrpmStats, jgetSubsystem, + env->NewStringUTF(subsystem.name.c_str())); + if (jsubsystem == NULL) { + ALOGE("The rpmstats jni jobject jsubsystem is null."); + return; + } + + for (size_t j = 0; j < subsystem.states.size(); j++) { + const PowerStateSubsystemSleepState& state = subsystem.states[j]; + env->CallVoidMethod(jsubsystem, jputState, + env->NewStringUTF(state.name.c_str()), + state.residencyInMsecSinceBoot, + state.totalTransitions); + } + } + } + }); + if (!ret.isOk()) { + ALOGE("getSubsystemLowPowerStats() failed: power HAL service not available"); + gPowerHalV1_0 = nullptr; + } + // gPowerHalMutex released here +} + static jint getPlatformLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject outBuf) { char *output = (char*)env->GetDirectBufferAddress(outBuf); char *offset = output; @@ -369,12 +466,33 @@ static jint getSubsystemLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject static const JNINativeMethod method_table[] = { { "nativeWaitWakeup", "(Ljava/nio/ByteBuffer;)I", (void*)nativeWaitWakeup }, + { "getLowPowerStats", "(Lcom/android/internal/os/RpmStats;)V", (void*)getLowPowerStats }, { "getPlatformLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getPlatformLowPowerStats }, { "getSubsystemLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getSubsystemLowPowerStats }, }; int register_android_server_BatteryStatsService(JNIEnv *env) { + // get java classes and methods + jclass clsRpmStats = env->FindClass("com/android/internal/os/RpmStats"); + jclass clsPowerStatePlatformSleepState = + env->FindClass("com/android/internal/os/RpmStats$PowerStatePlatformSleepState"); + jclass clsPowerStateSubsystem = + env->FindClass("com/android/internal/os/RpmStats$PowerStateSubsystem"); + if (clsRpmStats == NULL || clsPowerStatePlatformSleepState == NULL + || clsPowerStateSubsystem == NULL) { + ALOGE("A rpmstats jni jclass is null."); + } else { + jgetAndUpdatePlatformState = env->GetMethodID(clsRpmStats, "getAndUpdatePlatformState", + "(Ljava/lang/String;JI)Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;"); + jgetSubsystem = env->GetMethodID(clsRpmStats, "getSubsystem", + "(Ljava/lang/String;)Lcom/android/internal/os/RpmStats$PowerStateSubsystem;"); + jputVoter = env->GetMethodID(clsPowerStatePlatformSleepState, "putVoter", + "(Ljava/lang/String;JI)V"); + jputState = env->GetMethodID(clsPowerStateSubsystem, "putState", + "(Ljava/lang/String;JI)V"); + } + return jniRegisterNativeMethods(env, "com/android/server/am/BatteryStatsService", method_table, NELEM(method_table)); } diff --git a/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp b/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp index 87312f82d58a..9a17635721b8 100644 --- a/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp +++ b/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp @@ -74,10 +74,9 @@ int conntrackSocket(unsigned groups) { hidl_handle handleFromFileDescriptor(base::unique_fd fd) { hidl_handle h; - NATIVE_HANDLE_DECLARE_STORAGE(storage, 0, 0); static constexpr int kNumFds = 1; static constexpr int kNumInts = 0; - native_handle_t *nh = native_handle_init(storage, kNumFds, kNumInts); + native_handle_t *nh = native_handle_create(kNumFds, kNumInts); nh->data[0] = fd.release(); static constexpr bool kTakeOwnership = true; @@ -114,7 +113,7 @@ static jboolean android_server_connectivity_tethering_OffloadHardwareInterface_c hidl_handle h1(handleFromFileDescriptor(std::move(fd1))), h2(handleFromFileDescriptor(std::move(fd2))); - bool rval; + bool rval(false); hidl_string msg; const auto status = configInterface->setHandles(h1, h2, [&rval, &msg](bool success, const hidl_string& errMsg) { @@ -124,6 +123,8 @@ static jboolean android_server_connectivity_tethering_OffloadHardwareInterface_c if (!status.isOk() || !rval) { ALOGE("IOffloadConfig::setHandles() error: '%s' / '%s'", status.description().c_str(), msg.c_str()); + // If status is somehow not ok, make sure rval captures this too. + rval = false; } return rval; diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index eb9683e1a470..6c859f76c906 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -43,11 +43,11 @@ import static android.app.admin.DevicePolicyManager.DELEGATION_PACKAGE_ACCESS; import static android.app.admin.DevicePolicyManager.DELEGATION_PERMISSION_GRANT; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_COMPLEX; import static android.app.admin.DevicePolicyManager.PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER; +import static android.app.admin.DevicePolicyManager.START_USER_IN_BACKGROUND; import static android.app.admin.DevicePolicyManager.WIPE_EUICC; import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE; import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA; import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES; - import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PROVISIONING_ENTRY_POINT_ADB; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW; import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; @@ -80,9 +80,9 @@ import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.IDevicePolicyManager; import android.app.admin.NetworkEvent; import android.app.admin.PasswordMetrics; -import android.app.admin.SystemUpdateInfo; import android.app.admin.SecurityLog; import android.app.admin.SecurityLog.SecurityEvent; +import android.app.admin.SystemUpdateInfo; import android.app.admin.SystemUpdatePolicy; import android.app.backup.IBackupManager; import android.app.trust.TrustManager; @@ -93,6 +93,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; +import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -614,11 +615,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } else if (Intent.ACTION_USER_STARTED.equals(action)) { synchronized (DevicePolicyManagerService.this) { + maybeSendAdminEnabledBroadcastLocked(userHandle); // Reset the policy data mUserData.remove(userHandle); - sendAdminEnabledBroadcastLocked(userHandle); } handlePackagesChanged(null /* check all admins */, userHandle); + } else if (Intent.ACTION_USER_UNLOCKED.equals(action)) { + synchronized (DevicePolicyManagerService.this) { + maybeSendAdminEnabledBroadcastLocked(userHandle); + } } else if (Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE.equals(action)) { handlePackagesChanged(null /* check all admins */, userHandle); } else if (Intent.ACTION_PACKAGE_CHANGED.equals(action) @@ -1854,6 +1859,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { filter.addAction(Intent.ACTION_USER_ADDED); filter.addAction(Intent.ACTION_USER_REMOVED); filter.addAction(Intent.ACTION_USER_STARTED); + filter.addAction(Intent.ACTION_USER_UNLOCKED); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); mContext.registerReceiverAsUser(mReceiver, UserHandle.ALL, filter, null, mHandler); filter = new IntentFilter(); @@ -2372,11 +2378,18 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { sendAdminCommandLocked(admin, action, null, result); } + void sendAdminCommandLocked(ActiveAdmin admin, String action, Bundle adminExtras, + BroadcastReceiver result) { + sendAdminCommandLocked(admin, action, adminExtras, result, false); + } + /** * Send an update to one specific admin, get notified when that admin returns a result. + * + * @return whether the broadcast was successfully sent */ - void sendAdminCommandLocked(ActiveAdmin admin, String action, Bundle adminExtras, - BroadcastReceiver result) { + boolean sendAdminCommandLocked(ActiveAdmin admin, String action, Bundle adminExtras, + BroadcastReceiver result, boolean inForeground) { Intent intent = new Intent(action); intent.setComponent(admin.info.getComponent()); if (UserManager.isDeviceInDemoMode(mContext)) { @@ -2385,15 +2398,25 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { if (action.equals(DeviceAdminReceiver.ACTION_PASSWORD_EXPIRING)) { intent.putExtra("expiration", admin.passwordExpirationDate); } + if (inForeground) { + intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + } if (adminExtras != null) { intent.putExtras(adminExtras); } + if (mInjector.getPackageManager().queryBroadcastReceiversAsUser( + intent, + PackageManager.MATCH_DEBUG_TRIAGED_MISSING, + admin.getUserHandle()).isEmpty()) { + return false; + } if (result != null) { mContext.sendOrderedBroadcastAsUser(intent, admin.getUserHandle(), null, result, mHandler, Activity.RESULT_OK, null, null); } else { mContext.sendBroadcastAsUser(intent, admin.getUserHandle()); } + return true; } /** @@ -4078,6 +4101,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return true; } enforceFullCrossUsersPermission(userHandle); + enforceUserUnlocked(userHandle, parent); synchronized (this) { // This API can only be called by an active device admin, @@ -4097,7 +4121,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { enforceManagedProfile(userHandle, "call APIs refering to the parent profile"); synchronized (this) { - int targetUser = getProfileParentId(userHandle); + final int targetUser = getProfileParentId(userHandle); + enforceUserUnlocked(targetUser, false); DevicePolicyData policy = getUserDataUnchecked(getCredentialOwner(userHandle, false)); return isActivePasswordSufficientForUserLocked(policy, targetUser, false); } @@ -4105,7 +4130,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private boolean isActivePasswordSufficientForUserLocked( DevicePolicyData policy, int userHandle, boolean parent) { - enforceUserUnlocked(userHandle, parent); + final int requiredPasswordQuality = getPasswordQuality(null, userHandle, parent); + if (requiredPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { + // A special case is when there is no required password quality, then we just return + // true since any password would be sufficient. This is for the scenario when a work + // profile is first created so there is no information about the current password but + // it should be considered sufficient as there is no password requirement either. + // This is useful since it short-circuits the password checkpoint for FDE device below. + return true; + } if (!mInjector.storageManagerIsFileBasedEncryptionEnabled() && !policy.mPasswordStateHasBeenSetSinceBoot) { @@ -4117,7 +4150,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return policy.mPasswordValidAtLastCheckpoint; } - final int requiredPasswordQuality = getPasswordQuality(null, userHandle, parent); if (policy.mActivePasswordMetrics.quality < requiredPasswordQuality) { return false; } @@ -4439,7 +4471,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { result = mLockPatternUtils.setLockCredentialWithToken(password, TextUtils.isEmpty(password) ? LockPatternUtils.CREDENTIAL_TYPE_NONE : LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, - tokenHandle, token, userHandle); + quality, tokenHandle, token, userHandle); } boolean requireEntry = (flags & DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY) != 0; if (requireEntry) { @@ -5443,6 +5475,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } + /** + * Notify DPMS regarding the metric of the current password. This happens when the user changes + * the password, but also when the user just unlocks the keyguard. In comparison, + * reportPasswordChanged() is only called when the user changes the password. + */ @Override public void setActivePasswordState(PasswordMetrics metrics, int userHandle) { if (!mHasFeature) { @@ -8099,20 +8136,27 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } - - private void sendAdminEnabledBroadcastLocked(int userHandle) { + private void maybeSendAdminEnabledBroadcastLocked(int userHandle) { DevicePolicyData policyData = getUserData(userHandle); if (policyData.mAdminBroadcastPending) { // Send the initialization data to profile owner and delete the data ActiveAdmin admin = getProfileOwnerAdminLocked(userHandle); + boolean clearInitBundle = true; if (admin != null) { PersistableBundle initBundle = policyData.mInitBundle; - sendAdminCommandLocked(admin, DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED, - initBundle == null ? null : new Bundle(initBundle), null); + clearInitBundle = sendAdminCommandLocked(admin, + DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED, + initBundle == null ? null : new Bundle(initBundle), + null /* result receiver */, + true /* send in foreground */); + } + if (clearInitBundle) { + // If there's no admin or we've successfully called the admin, clear the init bundle + // otherwise, keep it around + policyData.mInitBundle = null; + policyData.mAdminBroadcastPending = false; + saveSettingsLocked(userHandle); } - policyData.mInitBundle = null; - policyData.mAdminBroadcastPending = false; - saveSettingsLocked(userHandle); } } @@ -8158,7 +8202,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { if (user == null) { return null; } - // Set admin. final long id = mInjector.binderClearCallingIdentity(); try { final String adminPkg = admin.getPackageName(); @@ -8171,30 +8214,38 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { 0 /*installFlags*/, PackageManager.INSTALL_REASON_POLICY); } } catch (RemoteException e) { - Slog.e(LOG_TAG, "Failed to make remote calls for createAndManageUser, " - + "removing created user", e); - mUserManager.removeUser(user.getIdentifier()); - return null; + // Does not happen, same process } + // Set admin. setActiveAdmin(profileOwner, true, userHandle); - // User is not started yet, the broadcast by setActiveAdmin will not be received. - // So we store adminExtras for broadcasting when the user starts for first time. - synchronized(this) { + final String ownerName = getProfileOwnerName(Process.myUserHandle().getIdentifier()); + setProfileOwner(profileOwner, ownerName, userHandle); + + synchronized (this) { DevicePolicyData policyData = getUserData(userHandle); policyData.mInitBundle = adminExtras; policyData.mAdminBroadcastPending = true; saveSettingsLocked(userHandle); } - final String ownerName = getProfileOwnerName(Process.myUserHandle().getIdentifier()); - setProfileOwner(profileOwner, ownerName, userHandle); if ((flags & DevicePolicyManager.SKIP_SETUP_WIZARD) != 0) { Settings.Secure.putIntForUser(mContext.getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1, userHandle); } + if ((flags & START_USER_IN_BACKGROUND) != 0) { + try { + mInjector.getIActivityManager().startUserInBackground(user.getIdentifier()); + } catch (RemoteException re) { + // Does not happen, same process + } + } + return user; + } catch (Throwable re) { + mUserManager.removeUser(user.getIdentifier()); + return null; } finally { mInjector.binderRestoreCallingIdentity(id); } @@ -9077,6 +9128,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return false; } mLockPatternUtils.setLockScreenDisabled(disabled, userId); + mInjector.getIWindowManager().dismissKeyguard(null); + } catch (RemoteException e) { + // Same process, does not happen. } finally { mInjector.binderRestoreCallingIdentity(ident); } @@ -11146,4 +11200,40 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { new ArrayList<>(getUserData(userId).mOwnerInstalledCaCerts)); } } + + @Override + public boolean clearApplicationUserData(ComponentName admin, String packageName, + IPackageDataObserver callback) { + Preconditions.checkNotNull(admin, "ComponentName is null"); + synchronized (this) { + getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER); + } + final int userId = UserHandle.getCallingUserId(); + + long ident = mInjector.binderClearCallingIdentity(); + try { + return ActivityManager.getService().clearApplicationUserData(packageName, callback, + userId); + } catch(RemoteException re) { + // Same process, should not happen. + } catch (SecurityException se) { + // This can happen e.g. for device admin packages, do not throw out the exception, + // because callers have no means to know beforehand for which packages this might + // happen. + Slog.w(LOG_TAG, "Not allowed to clear application user data for package " + packageName, + se); + } finally { + mInjector.binderRestoreCallingIdentity(ident); + } + + if (callback != null) { + try { + // If there was a throw above, we send back that removal failed + callback.onRemoveCompleted(packageName, false); + } catch (RemoteException re) { + // Caller is no longer available, ignore + } + } + return false; + } } diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 569b3265e997..948c028d46ca 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -103,6 +103,7 @@ import com.android.server.restrictions.RestrictionsManagerService; import com.android.server.security.KeyAttestationApplicationIdProviderService; import com.android.server.security.KeyChainSystemService; import com.android.server.soundtrigger.SoundTriggerService; +import com.android.server.stats.StatsCompanionService; import com.android.server.statusbar.StatusBarManagerService; import com.android.server.storage.DeviceStorageMonitorService; import com.android.server.telecom.TelecomLoaderService; @@ -828,9 +829,11 @@ public final class SystemServer { // because it need to connect to SensorManager. This have to start // after START_SENSOR_SERVICE is done. SystemServerInitThreadPool.get().submit(() -> { - traceBeginAndSlog(START_HIDL_SERVICES); + TimingsTraceLog traceLog = new TimingsTraceLog( + SYSTEM_SERVER_TIMING_ASYNC_TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + traceLog.traceBegin(START_HIDL_SERVICES); startHidlServices(); - traceEnd(); + traceLog.traceEnd(); }, START_HIDL_SERVICES); if (!disableVrManager) { @@ -1144,20 +1147,6 @@ public final class SystemServer { traceEnd(); } - /* - * StorageManagerService has a few dependencies: Notification Manager and - * AppWidget Provider. Make sure StorageManagerService is completely started - * first before continuing. - */ - if (storageManager != null && !mOnlyCore) { - traceBeginAndSlog("WaitForAsecScan"); - try { - storageManager.waitForAsecScan(); - } catch (RemoteException ignored) { - } - traceEnd(); - } - traceBeginAndSlog("StartNotificationManager"); mSystemServiceManager.startService(NotificationManagerService.class); SystemNotificationChannels.createAll(context); @@ -1207,18 +1196,6 @@ public final class SystemServer { traceEnd(); } - // timezone.RulesManagerService will prevent a device starting up if the chain of trust - // required for safe time zone updates might be broken. RuleManagerService cannot do - // this check when mOnlyCore == true, so we don't enable the service in this case. - final boolean startRulesManagerService = - !mOnlyCore && context.getResources().getBoolean( - R.bool.config_enableUpdateableTimeZoneRules); - if (startRulesManagerService) { - traceBeginAndSlog("StartTimeZoneRulesManagerService"); - mSystemServiceManager.startService(TIME_ZONE_RULES_MANAGER_SERVICE_CLASS); - traceEnd(); - } - traceBeginAndSlog("StartAudioService"); mSystemServiceManager.startService(AudioService.Lifecycle.class); traceEnd(); @@ -1329,11 +1306,13 @@ public final class SystemServer { traceEnd(); } - if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_VOICE_RECOGNIZERS)) { - traceBeginAndSlog("StartVoiceRecognitionManager"); - mSystemServiceManager.startService(VOICE_RECOGNITION_MANAGER_SERVICE_CLASS); - traceEnd(); - } + // We need to always start this service, regardless of whether the + // FEATURE_VOICE_RECOGNIZERS feature is set, because it needs to take care + // of initializing various settings. It will internally modify its behavior + // based on that feature. + traceBeginAndSlog("StartVoiceRecognitionManager"); + mSystemServiceManager.startService(VOICE_RECOGNITION_MANAGER_SERVICE_CLASS); + traceEnd(); if (GestureLauncherService.isGestureLauncherEnabled(context.getResources())) { traceBeginAndSlog("StartGestureLauncher"); @@ -1357,6 +1336,19 @@ public final class SystemServer { } traceEnd(); + // timezone.RulesManagerService will prevent a device starting up if the chain of trust + // required for safe time zone updates might be broken. RuleManagerService cannot do + // this check when mOnlyCore == true, so we don't enable the service in this case. + // This service requires that JobSchedulerService is already started when it starts. + final boolean startRulesManagerService = + !mOnlyCore && context.getResources().getBoolean( + R.bool.config_enableUpdateableTimeZoneRules); + if (startRulesManagerService) { + traceBeginAndSlog("StartTimeZoneRulesManagerService"); + mSystemServiceManager.startService(TIME_ZONE_RULES_MANAGER_SERVICE_CLASS); + traceEnd(); + } + if (!disableNetwork && !disableNetworkTime) { traceBeginAndSlog("StartNetworkTimeUpdateService"); try { @@ -1532,6 +1524,11 @@ public final class SystemServer { traceEnd(); } + // Statsd helper + traceBeginAndSlog("StartStatsCompanionService"); + mSystemServiceManager.startService(StatsCompanionService.Lifecycle.class); + traceEnd(); + // Before things start rolling, be sure we have decided whether // we are in safe mode. final boolean safeMode = wm.detectSafeMode(); diff --git a/services/net/java/android/net/ip/InterfaceController.java b/services/net/java/android/net/ip/InterfaceController.java new file mode 100644 index 000000000000..02e4f875230a --- /dev/null +++ b/services/net/java/android/net/ip/InterfaceController.java @@ -0,0 +1,162 @@ +/* + * 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 android.net.ip; + +import android.net.INetd; +import android.net.InterfaceConfiguration; +import android.net.LinkAddress; +import android.net.util.NetdService; +import android.net.util.SharedLog; +import android.os.INetworkManagementService; +import android.os.RemoteException; +import android.os.ServiceSpecificException; +import android.system.OsConstants; + +import java.net.InetAddress; + + +/** + * Encapsulates the multiple IP configuration operations performed on an interface. + * + * TODO: refactor/eliminate the redundant ways to set and clear addresses. + * + * @hide + */ +public class InterfaceController { + private final static boolean DBG = false; + + private final String mIfName; + private final INetworkManagementService mNMS; + private final INetd mNetd; + private final SharedLog mLog; + + public InterfaceController(String ifname, INetworkManagementService nms, INetd netd, + SharedLog log) { + mIfName = ifname; + mNMS = nms; + mNetd = netd; + mLog = log; + } + + public boolean setIPv4Address(LinkAddress address) { + final InterfaceConfiguration ifcg = new InterfaceConfiguration(); + ifcg.setLinkAddress(address); + try { + mNMS.setInterfaceConfig(mIfName, ifcg); + if (DBG) mLog.log("IPv4 configuration succeeded"); + } catch (IllegalStateException | RemoteException e) { + logError("IPv4 configuration failed: %s", e); + return false; + } + return true; + } + + public boolean clearIPv4Address() { + try { + final InterfaceConfiguration ifcg = new InterfaceConfiguration(); + ifcg.setLinkAddress(new LinkAddress("0.0.0.0/0")); + mNMS.setInterfaceConfig(mIfName, ifcg); + } catch (IllegalStateException | RemoteException e) { + logError("Failed to clear IPv4 address on interface %s: %s", mIfName, e); + return false; + } + return true; + } + + public boolean enableIPv6() { + try { + mNMS.enableIpv6(mIfName); + } catch (IllegalStateException | RemoteException e) { + logError("enabling IPv6 failed: %s", e); + return false; + } + return true; + } + + public boolean disableIPv6() { + try { + mNMS.disableIpv6(mIfName); + } catch (IllegalStateException | RemoteException e) { + logError("disabling IPv6 failed: %s", e); + return false; + } + return true; + } + + public boolean setIPv6PrivacyExtensions(boolean enabled) { + try { + mNMS.setInterfaceIpv6PrivacyExtensions(mIfName, enabled); + } catch (IllegalStateException | RemoteException e) { + logError("error setting IPv6 privacy extensions: %s", e); + return false; + } + return true; + } + + public boolean setIPv6AddrGenModeIfSupported(int mode) { + try { + mNMS.setIPv6AddrGenMode(mIfName, mode); + } catch (RemoteException e) { + logError("Unable to set IPv6 addrgen mode: %s", e); + return false; + } catch (ServiceSpecificException e) { + if (e.errorCode != OsConstants.EOPNOTSUPP) { + logError("Unable to set IPv6 addrgen mode: %s", e); + return false; + } + } + return true; + } + + public boolean addAddress(LinkAddress addr) { + return addAddress(addr.getAddress(), addr.getPrefixLength()); + } + + public boolean addAddress(InetAddress ip, int prefixLen) { + try { + mNetd.interfaceAddAddress(mIfName, ip.getHostAddress(), prefixLen); + } catch (ServiceSpecificException | RemoteException e) { + logError("failed to add %s/%d: %s", ip, prefixLen, e); + return false; + } + return true; + } + + public boolean removeAddress(InetAddress ip, int prefixLen) { + try { + mNetd.interfaceDelAddress(mIfName, ip.getHostAddress(), prefixLen); + } catch (ServiceSpecificException | RemoteException e) { + logError("failed to remove %s/%d: %s", ip, prefixLen, e); + return false; + } + return true; + } + + public boolean clearAllAddresses() { + try { + mNMS.clearInterfaceAddresses(mIfName); + } catch (Exception e) { + logError("Failed to clear addresses: %s", e); + return false; + } + return true; + } + + private void logError(String fmt, Object... args) { + mLog.e(String.format(fmt, args)); + } +} diff --git a/services/net/java/android/net/ip/IpManager.java b/services/net/java/android/net/ip/IpManager.java index 2d8fcf80e467..b1eb0854e334 100644 --- a/services/net/java/android/net/ip/IpManager.java +++ b/services/net/java/android/net/ip/IpManager.java @@ -22,7 +22,6 @@ import com.android.internal.util.WakeupMessage; import android.content.Context; import android.net.DhcpResults; import android.net.INetd; -import android.net.InterfaceConfiguration; import android.net.IpPrefix; import android.net.LinkAddress; import android.net.LinkProperties.ProvisioningChange; @@ -43,9 +42,7 @@ import android.os.INetworkManagementService; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; -import android.os.ServiceSpecificException; import android.os.SystemClock; -import android.system.OsConstants; import android.text.TextUtils; import android.util.LocalLog; import android.util.Log; @@ -94,7 +91,6 @@ import java.util.stream.Collectors; */ public class IpManager extends StateMachine { private static final boolean DBG = false; - private static final boolean VDBG = false; // For message logging. private static final Class[] sMessageClasses = { IpManager.class, DhcpClient.class }; @@ -526,17 +522,18 @@ public class IpManager extends StateMachine { public static final String DUMP_ARG = "ipmanager"; public static final String DUMP_ARG_CONFIRM = "confirm"; - private static final int CMD_STOP = 1; - private static final int CMD_START = 2; - private static final int CMD_CONFIRM = 3; - private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 4; + private static final int CMD_TERMINATE_AFTER_STOP = 1; + private static final int CMD_STOP = 2; + private static final int CMD_START = 3; + private static final int CMD_CONFIRM = 4; + private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 5; // Sent by NetlinkTracker to communicate netlink events. - private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 5; - private static final int CMD_UPDATE_TCP_BUFFER_SIZES = 6; - private static final int CMD_UPDATE_HTTP_PROXY = 7; - private static final int CMD_SET_MULTICAST_FILTER = 8; - private static final int EVENT_PROVISIONING_TIMEOUT = 9; - private static final int EVENT_DHCPACTION_TIMEOUT = 10; + private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 6; + private static final int CMD_UPDATE_TCP_BUFFER_SIZES = 7; + private static final int CMD_UPDATE_HTTP_PROXY = 8; + private static final int CMD_SET_MULTICAST_FILTER = 9; + private static final int EVENT_PROVISIONING_TIMEOUT = 10; + private static final int EVENT_DHCPACTION_TIMEOUT = 11; private static final int MAX_LOG_RECORDS = 500; private static final int MAX_PACKET_RECORDS = 100; @@ -568,7 +565,7 @@ public class IpManager extends StateMachine { private final LocalLog mConnectivityPacketLog; private final MessageHandlingLogger mMsgStateLogger; private final IpConnectivityLog mMetricsLog = new IpConnectivityLog(); - private final INetd mNetd; + private final InterfaceController mInterfaceCtrl; private NetworkInterface mNetworkInterface; @@ -612,12 +609,13 @@ public class IpManager extends StateMachine { mClatInterfaceName = CLAT_PREFIX + ifName; mCallback = new LoggingCallbackWrapper(callback); mNwService = nwService; - mNetd = netd; mLog = new SharedLog(MAX_LOG_RECORDS, mTag); mConnectivityPacketLog = new LocalLog(MAX_PACKET_RECORDS); mMsgStateLogger = new MessageHandlingLogger(); + mInterfaceCtrl = new InterfaceController(mInterfaceName, mNwService, netd, mLog); + mNetlinkTracker = new NetlinkTracker( mInterfaceName, new NetlinkTracker.Callback() { @@ -704,6 +702,16 @@ public class IpManager extends StateMachine { mMultinetworkPolicyTracker.start(); } + private void stopStateMachineUpdaters() { + try { + mNwService.unregisterObserver(mNetlinkTracker); + } catch (RemoteException e) { + logError("Couldn't unregister NetlinkTracker: %s", e); + } + + mMultinetworkPolicyTracker.shutdown(); + } + @Override protected void onQuitting() { mCallback.onQuit(); @@ -712,8 +720,7 @@ public class IpManager extends StateMachine { // Shut down this IpManager instance altogether. public void shutdown() { stop(); - mMultinetworkPolicyTracker.shutdown(); - quit(); + sendMessage(CMD_TERMINATE_AFTER_STOP); } public static ProvisioningConfiguration.Builder buildProvisioningConfiguration() { @@ -858,7 +865,7 @@ public class IpManager extends StateMachine { final String richerLogLine = getWhatToString(msg.what) + " " + logLine; mLog.log(richerLogLine); - if (VDBG) { + if (DBG) { Log.d(mTag, richerLogLine); } @@ -1013,19 +1020,19 @@ public class IpManager extends StateMachine { private void dispatchCallback(ProvisioningChange delta, LinkProperties newLp) { switch (delta) { case GAINED_PROVISIONING: - if (VDBG) { Log.d(mTag, "onProvisioningSuccess()"); } + if (DBG) { Log.d(mTag, "onProvisioningSuccess()"); } recordMetric(IpManagerEvent.PROVISIONING_OK); mCallback.onProvisioningSuccess(newLp); break; case LOST_PROVISIONING: - if (VDBG) { Log.d(mTag, "onProvisioningFailure()"); } + if (DBG) { Log.d(mTag, "onProvisioningFailure()"); } recordMetric(IpManagerEvent.PROVISIONING_FAIL); mCallback.onProvisioningFailure(newLp); break; default: - if (VDBG) { Log.d(mTag, "onLinkPropertiesChange()"); } + if (DBG) { Log.d(mTag, "onLinkPropertiesChange()"); } mCallback.onLinkPropertiesChange(newLp); break; } @@ -1113,7 +1120,7 @@ public class IpManager extends StateMachine { addAllReachableDnsServers(newLp, config.dnsServers); } final LinkProperties oldLp = mLinkProperties; - if (VDBG) { + if (DBG) { Log.d(mTag, String.format("Netlink-seen LPs: %s, new LPs: %s; old LPs: %s", netlinkLinkProperties, newLp, oldLp)); } @@ -1148,35 +1155,12 @@ public class IpManager extends StateMachine { return (delta != ProvisioningChange.LOST_PROVISIONING); } - private boolean setIPv4Address(LinkAddress address) { - final InterfaceConfiguration ifcg = new InterfaceConfiguration(); - ifcg.setLinkAddress(address); - try { - mNwService.setInterfaceConfig(mInterfaceName, ifcg); - if (VDBG) Log.d(mTag, "IPv4 configuration succeeded"); - } catch (IllegalStateException | RemoteException e) { - logError("IPv4 configuration failed: %s", e); - return false; - } - return true; - } - - private void clearIPv4Address() { - try { - final InterfaceConfiguration ifcg = new InterfaceConfiguration(); - ifcg.setLinkAddress(new LinkAddress("0.0.0.0/0")); - mNwService.setInterfaceConfig(mInterfaceName, ifcg); - } catch (IllegalStateException | RemoteException e) { - logError("Failed to clear IPv4 address on interface %s: %s", mInterfaceName, e); - } - } - private void handleIPv4Success(DhcpResults dhcpResults) { mDhcpResults = new DhcpResults(dhcpResults); final LinkProperties newLp = assembleLinkProperties(); final ProvisioningChange delta = setLinkProperties(newLp); - if (VDBG) { + if (DBG) { Log.d(mTag, "onNewDhcpResults(" + Objects.toString(dhcpResults) + ")"); } mCallback.onNewDhcpResults(dhcpResults); @@ -1190,9 +1174,9 @@ public class IpManager extends StateMachine { // that could trigger a call to this function. If we missed handling // that message in StartedState for some reason we would still clear // any addresses upon entry to StoppedState. - clearIPv4Address(); + mInterfaceCtrl.clearIPv4Address(); mDhcpResults = null; - if (VDBG) { Log.d(mTag, "onNewDhcpResults(null)"); } + if (DBG) { Log.d(mTag, "onNewDhcpResults(null)"); } mCallback.onNewDhcpResults(null); handleProvisioningFailure(); @@ -1229,7 +1213,7 @@ public class IpManager extends StateMachine { // If we have a StaticIpConfiguration attempt to apply it and // handle the result accordingly. if (mConfiguration.mStaticIpConfig != null) { - if (setIPv4Address(mConfiguration.mStaticIpConfig.ipAddress)) { + if (mInterfaceCtrl.setIPv4Address(mConfiguration.mStaticIpConfig.ipAddress)) { handleIPv4Success(new DhcpResults(mConfiguration.mStaticIpConfig)); } else { return false; @@ -1244,46 +1228,16 @@ public class IpManager extends StateMachine { return true; } - private void setIPv6AddrGenModeIfSupported() throws RemoteException { - try { - mNwService.setIPv6AddrGenMode(mInterfaceName, mConfiguration.mIPv6AddrGenMode); - } catch (ServiceSpecificException e) { - if (e.errorCode != OsConstants.EOPNOTSUPP) { - logError("Unable to set IPv6 addrgen mode: %s", e); - } - } - } - private boolean startIPv6() { - // Set privacy extensions. - try { - mNwService.setInterfaceIpv6PrivacyExtensions(mInterfaceName, true); - - setIPv6AddrGenModeIfSupported(); - mNwService.enableIpv6(mInterfaceName); - } catch (IllegalStateException | RemoteException | ServiceSpecificException e) { - logError("Unable to change interface settings: %s", e); - return false; - } - - return true; + return mInterfaceCtrl.setIPv6PrivacyExtensions(true) && + mInterfaceCtrl.setIPv6AddrGenModeIfSupported(mConfiguration.mIPv6AddrGenMode) && + mInterfaceCtrl.enableIPv6(); } private boolean applyInitialConfig(InitialConfiguration config) { - if (mNetd == null) { - logError("tried to add %s to %s but INetd was null", config, mInterfaceName); - return false; - } - // TODO: also support specifying a static IPv4 configuration in InitialConfiguration. for (LinkAddress addr : findAll(config.ipAddresses, LinkAddress::isIPv6)) { - try { - mNetd.interfaceAddAddress( - mInterfaceName, addr.getAddress().getHostAddress(), addr.getPrefixLength()); - } catch (ServiceSpecificException | RemoteException e) { - logError("failed to add %s to %s: %s", addr, mInterfaceName, e); - return false; - } + if (!mInterfaceCtrl.addAddress(addr)) return false; } return true; @@ -1320,17 +1274,8 @@ public class IpManager extends StateMachine { // - we don't get IPv4 routes from netlink // so we neither react to nor need to wait for changes in either. - try { - mNwService.disableIpv6(mInterfaceName); - } catch (Exception e) { - logError("Failed to disable IPv6: %s", e); - } - - try { - mNwService.clearInterfaceAddresses(mInterfaceName); - } catch (Exception e) { - logError("Failed to clear addresses: %s", e); - } + mInterfaceCtrl.disableIPv6(); + mInterfaceCtrl.clearAllAddresses(); } class StoppedState extends State { @@ -1348,6 +1293,11 @@ public class IpManager extends StateMachine { @Override public boolean processMessage(Message msg) { switch (msg.what) { + case CMD_TERMINATE_AFTER_STOP: + stopStateMachineUpdaters(); + quit(); + break; + case CMD_STOP: break; @@ -1404,7 +1354,7 @@ public class IpManager extends StateMachine { break; case DhcpClient.CMD_CLEAR_LINKADDRESS: - clearIPv4Address(); + mInterfaceCtrl.clearIPv4Address(); break; case DhcpClient.CMD_ON_QUIT: @@ -1660,12 +1610,12 @@ public class IpManager extends StateMachine { break; case DhcpClient.CMD_CLEAR_LINKADDRESS: - clearIPv4Address(); + mInterfaceCtrl.clearIPv4Address(); break; case DhcpClient.CMD_CONFIGURE_LINKADDRESS: { final LinkAddress ipAddress = (LinkAddress) msg.obj; - if (setIPv4Address(ipAddress)) { + if (mInterfaceCtrl.setIPv4Address(ipAddress)) { mDhcpClient.sendMessage(DhcpClient.EVENT_LINKADDRESS_CONFIGURED); } else { logError("Failed to set IPv4 address."); diff --git a/services/net/java/android/net/ip/IpReachabilityMonitor.java b/services/net/java/android/net/ip/IpReachabilityMonitor.java index e833f6a03bce..714b35a03396 100644 --- a/services/net/java/android/net/ip/IpReachabilityMonitor.java +++ b/services/net/java/android/net/ip/IpReachabilityMonitor.java @@ -205,44 +205,14 @@ public class IpReachabilityMonitor { final byte[] msg = RtNetlinkNeighborMessage.newNewNeighborMessage( 1, ip, StructNdMsg.NUD_PROBE, ifIndex, null); - int errno = -OsConstants.EPROTO; - try (NetlinkSocket nlSocket = new NetlinkSocket(OsConstants.NETLINK_ROUTE)) { - final long IO_TIMEOUT = 300L; - nlSocket.connectToKernel(); - nlSocket.sendMessage(msg, 0, msg.length, IO_TIMEOUT); - final ByteBuffer bytes = nlSocket.recvMessage(IO_TIMEOUT); - // recvMessage() guaranteed to not return null if it did not throw. - final NetlinkMessage response = NetlinkMessage.parse(bytes); - if (response != null && response instanceof NetlinkErrorMessage && - (((NetlinkErrorMessage) response).getNlMsgError() != null)) { - errno = ((NetlinkErrorMessage) response).getNlMsgError().error; - if (errno != 0) { - // TODO: consider ignoring EINVAL (-22), which appears to be - // normal when probing a neighbor for which the kernel does - // not already have / no longer has a link layer address. - Log.e(TAG, "Error " + msgSnippet + ", errmsg=" + response.toString()); - } - } else { - String errmsg; - if (response == null) { - bytes.position(0); - errmsg = "raw bytes: " + NetlinkConstants.hexify(bytes); - } else { - errmsg = response.toString(); - } - Log.e(TAG, "Error " + msgSnippet + ", errmsg=" + errmsg); - } + try { + NetlinkSocket.sendOneShotKernelMessage(OsConstants.NETLINK_ROUTE, msg); } catch (ErrnoException e) { - Log.e(TAG, "Error " + msgSnippet, e); - errno = -e.errno; - } catch (InterruptedIOException e) { - Log.e(TAG, "Error " + msgSnippet, e); - errno = -OsConstants.ETIMEDOUT; - } catch (SocketException e) { - Log.e(TAG, "Error " + msgSnippet, e); - errno = -OsConstants.EIO; + Log.e(TAG, "Error " + msgSnippet + ": " + e); + return -e.errno; } - return errno; + + return 0; } public IpReachabilityMonitor(Context context, String ifName, SharedLog log, Callback callback) { diff --git a/services/net/java/android/net/netlink/ConntrackMessage.java b/services/net/java/android/net/netlink/ConntrackMessage.java new file mode 100644 index 000000000000..605c46b3b4e0 --- /dev/null +++ b/services/net/java/android/net/netlink/ConntrackMessage.java @@ -0,0 +1,117 @@ +/* + * 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 android.net.netlink; + +import static android.net.netlink.NetlinkConstants.alignedLengthOf; +import static android.net.netlink.StructNlAttr.makeNestedType; +import static android.net.netlink.StructNlAttr.NLA_HEADERLEN; +import static android.net.netlink.StructNlMsgHdr.NLM_F_ACK; +import static android.net.netlink.StructNlMsgHdr.NLM_F_DUMP; +import static android.net.netlink.StructNlMsgHdr.NLM_F_REPLACE; +import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST; +import static android.net.util.NetworkConstants.IPV4_ADDR_LEN; +import static java.nio.ByteOrder.BIG_ENDIAN; + +import android.system.OsConstants; +import android.util.Log; +import libcore.io.SizeOf; + +import java.net.Inet4Address; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + + +/** + * A NetlinkMessage subclass for netlink conntrack messages. + * + * see also: <linux_src>/include/uapi/linux/netfilter/nfnetlink_conntrack.h + * + * @hide + */ +public class ConntrackMessage extends NetlinkMessage { + public static final int STRUCT_SIZE = StructNlMsgHdr.STRUCT_SIZE + StructNfGenMsg.STRUCT_SIZE; + + public static final short NFNL_SUBSYS_CTNETLINK = 1; + public static final short IPCTNL_MSG_CT_NEW = 0; + + // enum ctattr_type + public static final short CTA_TUPLE_ORIG = 1; + public static final short CTA_TUPLE_REPLY = 2; + public static final short CTA_TIMEOUT = 7; + + // enum ctattr_tuple + public static final short CTA_TUPLE_IP = 1; + public static final short CTA_TUPLE_PROTO = 2; + + // enum ctattr_ip + public static final short CTA_IP_V4_SRC = 1; + public static final short CTA_IP_V4_DST = 2; + + // enum ctattr_l4proto + public static final short CTA_PROTO_NUM = 1; + public static final short CTA_PROTO_SRC_PORT = 2; + public static final short CTA_PROTO_DST_PORT = 3; + + public static byte[] newIPv4TimeoutUpdateRequest( + int proto, Inet4Address src, int sport, Inet4Address dst, int dport, int timeoutSec) { + // *** STYLE WARNING *** + // + // Code below this point uses extra block indentation to highlight the + // packing of nested tuple netlink attribute types. + final StructNlAttr ctaTupleOrig = new StructNlAttr(CTA_TUPLE_ORIG, + new StructNlAttr(CTA_TUPLE_IP, + new StructNlAttr(CTA_IP_V4_SRC, src), + new StructNlAttr(CTA_IP_V4_DST, dst)), + new StructNlAttr(CTA_TUPLE_PROTO, + new StructNlAttr(CTA_PROTO_NUM, (byte) proto), + new StructNlAttr(CTA_PROTO_SRC_PORT, (short) sport, BIG_ENDIAN), + new StructNlAttr(CTA_PROTO_DST_PORT, (short) dport, BIG_ENDIAN))); + + final StructNlAttr ctaTimeout = new StructNlAttr(CTA_TIMEOUT, timeoutSec, BIG_ENDIAN); + + final int payloadLength = ctaTupleOrig.getAlignedLength() + ctaTimeout.getAlignedLength(); + final byte[] bytes = new byte[STRUCT_SIZE + payloadLength]; + final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes); + byteBuffer.order(ByteOrder.nativeOrder()); + + final ConntrackMessage ctmsg = new ConntrackMessage(); + ctmsg.mHeader.nlmsg_len = bytes.length; + ctmsg.mHeader.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | IPCTNL_MSG_CT_NEW; + ctmsg.mHeader.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_REPLACE; + ctmsg.mHeader.nlmsg_seq = 1; + ctmsg.pack(byteBuffer); + + ctaTupleOrig.pack(byteBuffer); + ctaTimeout.pack(byteBuffer); + + return bytes; + } + + protected StructNfGenMsg mNfGenMsg; + + private ConntrackMessage() { + super(new StructNlMsgHdr()); + mNfGenMsg = new StructNfGenMsg((byte) OsConstants.AF_INET); + } + + public void pack(ByteBuffer byteBuffer) { + mHeader.pack(byteBuffer); + mNfGenMsg.pack(byteBuffer); + } +} diff --git a/services/net/java/android/net/netlink/NetlinkSocket.java b/services/net/java/android/net/netlink/NetlinkSocket.java index 657d48c15250..a9e0cd996fbd 100644 --- a/services/net/java/android/net/netlink/NetlinkSocket.java +++ b/services/net/java/android/net/netlink/NetlinkSocket.java @@ -51,6 +51,47 @@ public class NetlinkSocket implements Closeable { private long mLastRecvTimeoutMs; private long mLastSendTimeoutMs; + public static void sendOneShotKernelMessage(int nlProto, byte[] msg) throws ErrnoException { + final String errPrefix = "Error in NetlinkSocket.sendOneShotKernelMessage"; + + try (NetlinkSocket nlSocket = new NetlinkSocket(nlProto)) { + final long IO_TIMEOUT = 300L; + nlSocket.connectToKernel(); + nlSocket.sendMessage(msg, 0, msg.length, IO_TIMEOUT); + final ByteBuffer bytes = nlSocket.recvMessage(IO_TIMEOUT); + // recvMessage() guaranteed to not return null if it did not throw. + final NetlinkMessage response = NetlinkMessage.parse(bytes); + if (response != null && response instanceof NetlinkErrorMessage && + (((NetlinkErrorMessage) response).getNlMsgError() != null)) { + final int errno = ((NetlinkErrorMessage) response).getNlMsgError().error; + if (errno != 0) { + // TODO: consider ignoring EINVAL (-22), which appears to be + // normal when probing a neighbor for which the kernel does + // not already have / no longer has a link layer address. + Log.e(TAG, errPrefix + ", errmsg=" + response.toString()); + // Note: convert kernel errnos (negative) into userspace errnos (positive). + throw new ErrnoException(response.toString(), Math.abs(errno)); + } + } else { + final String errmsg; + if (response == null) { + bytes.position(0); + errmsg = "raw bytes: " + NetlinkConstants.hexify(bytes); + } else { + errmsg = response.toString(); + } + Log.e(TAG, errPrefix + ", errmsg=" + errmsg); + throw new ErrnoException(errmsg, OsConstants.EPROTO); + } + } catch (InterruptedIOException e) { + Log.e(TAG, errPrefix, e); + throw new ErrnoException(errPrefix, OsConstants.ETIMEDOUT, e); + } catch (SocketException e) { + Log.e(TAG, errPrefix, e); + throw new ErrnoException(errPrefix, OsConstants.EIO, e); + } + } + public NetlinkSocket(int nlProto) throws ErrnoException { mDescriptor = Os.socket( OsConstants.AF_NETLINK, OsConstants.SOCK_DGRAM, nlProto); diff --git a/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java b/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java index 02df1313c43f..e784fbb5e0dc 100644 --- a/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java +++ b/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java @@ -36,7 +36,7 @@ import java.nio.ByteOrder; /** - * A NetlinkMessage subclass for netlink error messages. + * A NetlinkMessage subclass for rtnetlink neighbor messages. * * see also: <linux_src>/include/uapi/linux/neighbour.h * diff --git a/services/net/java/android/net/netlink/StructNfGenMsg.java b/services/net/java/android/net/netlink/StructNfGenMsg.java new file mode 100644 index 000000000000..99695e23b248 --- /dev/null +++ b/services/net/java/android/net/netlink/StructNfGenMsg.java @@ -0,0 +1,51 @@ +/* + * 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 android.net.netlink; + +import libcore.io.SizeOf; + +import java.nio.ByteBuffer; + + +/** + * struct nfgenmsg + * + * see <linux_src>/include/uapi/linux/netfilter/nfnetlink.h + * + * @hide + */ +public class StructNfGenMsg { + public static final int STRUCT_SIZE = 2 + SizeOf.SHORT; + + public static final int NFNETLINK_V0 = 0; + + final public byte nfgen_family; + final public byte version; + final public short res_id; // N.B.: this is big endian in the kernel + + public StructNfGenMsg(byte family) { + nfgen_family = family; + version = (byte) NFNETLINK_V0; + res_id = (short) 0; + } + + public void pack(ByteBuffer byteBuffer) { + byteBuffer.put(nfgen_family); + byteBuffer.put(version); + byteBuffer.putShort(res_id); + } +} diff --git a/services/net/java/android/net/netlink/StructNlAttr.java b/services/net/java/android/net/netlink/StructNlAttr.java index 597a6aa1c9eb..811bdbbe821a 100644 --- a/services/net/java/android/net/netlink/StructNlAttr.java +++ b/services/net/java/android/net/netlink/StructNlAttr.java @@ -34,7 +34,12 @@ import java.nio.ByteBuffer; */ public class StructNlAttr { // Already aligned. - public static final int NLA_HEADERLEN = 4; + public static final int NLA_HEADERLEN = 4; + public static final int NLA_F_NESTED = (1 << 15); + + public static short makeNestedType(short type) { + return (short) (type | NLA_F_NESTED); + } // Return a (length, type) object only, without consuming any bytes in // |byteBuffer| and without copying or interpreting any value bytes. @@ -46,10 +51,17 @@ public class StructNlAttr { } final int baseOffset = byteBuffer.position(); - final StructNlAttr struct = new StructNlAttr(); - struct.nla_len = byteBuffer.getShort(); - struct.nla_type = byteBuffer.getShort(); - struct.mByteOrder = byteBuffer.order(); + // Assume the byte order of the buffer is the expected byte order of the value. + final StructNlAttr struct = new StructNlAttr(byteBuffer.order()); + // The byte order of nla_len and nla_type is always native. + final ByteOrder originalOrder = byteBuffer.order(); + byteBuffer.order(ByteOrder.nativeOrder()); + try { + struct.nla_len = byteBuffer.getShort(); + struct.nla_type = byteBuffer.getShort(); + } finally { + byteBuffer.order(originalOrder); + } byteBuffer.position(baseOffset); if (struct.nla_len < NLA_HEADERLEN) { @@ -78,13 +90,65 @@ public class StructNlAttr { return struct; } - public short nla_len; + public short nla_len = (short) NLA_HEADERLEN; public short nla_type; public byte[] nla_value; - public ByteOrder mByteOrder; - public StructNlAttr() { - mByteOrder = ByteOrder.nativeOrder(); + // The byte order used to read/write the value member. Netlink length and + // type members are always read/written in native order. + private ByteOrder mByteOrder = ByteOrder.nativeOrder(); + + public StructNlAttr() {} + + public StructNlAttr(ByteOrder byteOrder) { + mByteOrder = byteOrder; + } + + public StructNlAttr(short type, byte value) { + nla_type = type; + setValue(new byte[1]); + nla_value[0] = value; + } + + public StructNlAttr(short type, short value) { + this(type, value, ByteOrder.nativeOrder()); + } + + public StructNlAttr(short type, short value, ByteOrder order) { + this(order); + nla_type = type; + setValue(new byte[SizeOf.SHORT]); + getValueAsByteBuffer().putShort(value); + } + + public StructNlAttr(short type, int value) { + this(type, value, ByteOrder.nativeOrder()); + } + + public StructNlAttr(short type, int value, ByteOrder order) { + this(order); + nla_type = type; + setValue(new byte[SizeOf.INT]); + getValueAsByteBuffer().putInt(value); + } + + public StructNlAttr(short type, InetAddress ip) { + nla_type = type; + setValue(ip.getAddress()); + } + + public StructNlAttr(short type, StructNlAttr... nested) { + this(); + nla_type = makeNestedType(type); + + int payloadLength = 0; + for (StructNlAttr nla : nested) payloadLength += nla.getAlignedLength(); + setValue(new byte[payloadLength]); + + final ByteBuffer buf = getValueAsByteBuffer(); + for (StructNlAttr nla : nested) { + nla.pack(buf); + } } public int getAlignedLength() { @@ -117,13 +181,25 @@ public class StructNlAttr { } public void pack(ByteBuffer byteBuffer) { + final ByteOrder originalOrder = byteBuffer.order(); final int originalPosition = byteBuffer.position(); - byteBuffer.putShort(nla_len); - byteBuffer.putShort(nla_type); - byteBuffer.put(nla_value); + + byteBuffer.order(ByteOrder.nativeOrder()); + try { + byteBuffer.putShort(nla_len); + byteBuffer.putShort(nla_type); + if (nla_value != null) byteBuffer.put(nla_value); + } finally { + byteBuffer.order(originalOrder); + } byteBuffer.position(originalPosition + getAlignedLength()); } + private void setValue(byte[] value) { + nla_value = value; + nla_len = (short) (NLA_HEADERLEN + ((nla_value != null) ? nla_value.length : 0)); + } + @Override public String toString() { return "StructNlAttr{ " diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java index 6a6b542f9bb6..71ba685b99c9 100644 --- a/services/print/java/com/android/server/print/PrintManagerService.java +++ b/services/print/java/com/android/server/print/PrintManagerService.java @@ -63,6 +63,7 @@ import com.android.server.SystemService; import java.io.FileDescriptor; import java.io.PrintWriter; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -645,7 +646,6 @@ public final class PrintManagerService extends SystemService { int opti = 0; boolean dumpAsProto = false; - int user = UserHandle.USER_ALL; while (opti < args.length) { String opt = args[opti]; if (opt == null || opt.length() <= 0 || opt.charAt(0) != '-') { @@ -659,48 +659,47 @@ public final class PrintManagerService extends SystemService { } } + ArrayList<UserState> userStatesToDump = new ArrayList<>(); synchronized (mLock) { - final long identity = Binder.clearCallingIdentity(); - try { - if (dumpAsProto) { - dumpLocked(new ProtoOutputStream(fd), UserHandle.of(user)); - } else { - dumpLocked(fd, pw, UserHandle.of(user)); - } - } finally { - Binder.restoreCallingIdentity(identity); + int numUserStates = mUserStates.size(); + for (int i = 0; i < numUserStates; i++) { + userStatesToDump.add(mUserStates.valueAt(i)); + } + } + + final long identity = Binder.clearCallingIdentity(); + try { + if (dumpAsProto) { + dump(new ProtoOutputStream(fd), userStatesToDump); + } else { + dump(fd, pw, userStatesToDump); } + } finally { + Binder.restoreCallingIdentity(identity); } } - private void dumpLocked(@NonNull ProtoOutputStream proto, @NonNull UserHandle user) { - final int userStateCount = mUserStates.size(); + private void dump(@NonNull ProtoOutputStream proto, + @NonNull ArrayList<UserState> userStatesToDump) { + final int userStateCount = userStatesToDump.size(); for (int i = 0; i < userStateCount; i++) { - UserState userState = mUserStates.valueAt(i); - - if (user.equals(UserHandle.ALL) || mUserStates.keyAt(i) == user.getIdentifier()) { - long token = proto.start(PrintServiceDumpProto.USER_STATES); - userState.dump(proto); - proto.end(token); - } + long token = proto.start(PrintServiceDumpProto.USER_STATES); + userStatesToDump.get(i).dump(proto); + proto.end(token); } proto.flush(); } - private void dumpLocked(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, - @NonNull UserHandle user) { + private void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, + @NonNull ArrayList<UserState> userStatesToDump) { pw = Preconditions.checkNotNull(pw); pw.println("PRINT MANAGER STATE (dumpsys print)"); - final int userStateCount = mUserStates.size(); + final int userStateCount = userStatesToDump.size(); for (int i = 0; i < userStateCount; i++) { - UserState userState = mUserStates.valueAt(i); - - if (user.equals(UserHandle.ALL) || mUserStates.keyAt(i) == user.getIdentifier()) { - userState.dump(fd, pw, ""); - pw.println(); - } + userStatesToDump.get(i).dump(fd, pw, ""); + pw.println(); } } diff --git a/services/robotests/Android.mk b/services/robotests/Android.mk new file mode 100644 index 000000000000..322b891116d9 --- /dev/null +++ b/services/robotests/Android.mk @@ -0,0 +1,77 @@ +# 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. + + +############################################################ +# FrameworksServicesLib app just for Robolectric test target. # +############################################################ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_PACKAGE_NAME := FrameworksServicesLib +LOCAL_MODULE_TAGS := optional + +LOCAL_PRIVILEGED_MODULE := true + +LOCAL_STATIC_JAVA_LIBRARIES := \ + frameworks-base-testutils \ + services.backup \ + services.core \ + android-support-test \ + mockito-target-minus-junit4 \ + platform-test-annotations \ + truth-prebuilt + +include $(BUILD_PACKAGE) + +############################################# +# FrameworksServices Robolectric test target. # +############################################# +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +# Include the testing libraries (JUnit4 + Robolectric libs). +LOCAL_STATIC_JAVA_LIBRARIES := \ + truth-prebuilt + +LOCAL_JAVA_LIBRARIES := \ + junit \ + platform-robolectric-prebuilt + +LOCAL_INSTRUMENTATION_FOR := FrameworksServicesLib +LOCAL_MODULE := FrameworksServicesRoboTests + +LOCAL_MODULE_TAGS := optional + +include $(BUILD_STATIC_JAVA_LIBRARY) + +############################################################# +# FrameworksServices runner target to run the previous target. # +############################################################# +include $(CLEAR_VARS) + +LOCAL_MODULE := RunFrameworksServicesRoboTests + +LOCAL_SDK_VERSION := current + +LOCAL_STATIC_JAVA_LIBRARIES := \ + FrameworksServicesRoboTests + +LOCAL_TEST_PACKAGE := FrameworksServicesLib + +LOCAL_INSTRUMENT_SOURCE_DIRS := $(dir $(LOCAL_PATH))backup/java + +include prebuilts/misc/common/robolectric/run_robotests.mk diff --git a/services/robotests/src/com/android/server/backup/TransportManagerTest.java b/services/robotests/src/com/android/server/backup/TransportManagerTest.java new file mode 100644 index 000000000000..2824b35636b7 --- /dev/null +++ b/services/robotests/src/com/android/server/backup/TransportManagerTest.java @@ -0,0 +1,571 @@ +/* + * 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.server.backup; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.mock; + +import android.app.backup.BackupManager; +import android.content.ComponentName; +import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; +import android.os.IBinder; +import android.platform.test.annotations.Presubmit; + +import com.android.server.backup.testing.BackupTransportStub; +import com.android.server.backup.testing.DefaultPackageManagerWithQueryIntentServicesAsUser; +import com.android.server.backup.testing.ShadowBackupTransportStub; +import com.android.server.backup.testing.ShadowContextImplForBackup; +import com.android.server.backup.testing.TransportBoundListenerStub; +import com.android.server.backup.testing.TransportReadyCallbackStub; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; +import org.robolectric.res.builder.RobolectricPackageManager; +import org.robolectric.shadows.ShadowLog; +import org.robolectric.shadows.ShadowLooper; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; + +@RunWith(RobolectricTestRunner.class) +@Config( + manifest = Config.NONE, + sdk = 23, + shadows = { + ShadowContextImplForBackup.class, + ShadowBackupTransportStub.class + } +) +@Presubmit +public class TransportManagerTest { + private static final String PACKAGE_NAME = "some.package.name"; + private static final String ANOTHER_PACKAGE_NAME = "another.package.name"; + + private TransportInfo mTransport1; + private TransportInfo mTransport2; + + private RobolectricPackageManager mPackageManager; + + private final TransportBoundListenerStub mTransportBoundListenerStub = + new TransportBoundListenerStub(true); + + private final TransportReadyCallbackStub mTransportReadyCallbackStub = + new TransportReadyCallbackStub(); + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + + ShadowLog.stream = System.out; + mPackageManager = new DefaultPackageManagerWithQueryIntentServicesAsUser( + RuntimeEnvironment.getAppResourceLoader()); + RuntimeEnvironment.setRobolectricPackageManager(mPackageManager); + + mTransport1 = new TransportInfo(PACKAGE_NAME, "transport1.name"); + mTransport2 = new TransportInfo(PACKAGE_NAME, "transport2.name"); + + ShadowContextImplForBackup.sComponentBinderMap.put(mTransport1.componentName, + mTransport1.binder); + ShadowContextImplForBackup.sComponentBinderMap.put(mTransport2.componentName, + mTransport2.binder); + ShadowBackupTransportStub.sBinderTransportMap.put(mTransport1.binder, mTransport1.stub); + ShadowBackupTransportStub.sBinderTransportMap.put(mTransport2.binder, mTransport2.stub); + } + + @After + public void tearDown() throws Exception { + ShadowContextImplForBackup.resetBackupShadowState(); + } + + @Test + public void onPackageAdded_bindsToAllTransports() throws Exception { + setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2), + ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + new HashSet<>(Arrays.asList( + mTransport1.componentName, mTransport2.componentName)), + null /* defaultTransport */, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + transportManager.onPackageAdded(PACKAGE_NAME); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.componentName, mTransport2.componentName)); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.name, mTransport2.name)); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isTrue(); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue(); + } + + @Test + public void onPackageAdded_oneTransportUnavailable_bindsToOnlyOneTransport() throws Exception { + setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2), + ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + + ShadowContextImplForBackup.sUnbindableComponents.add(mTransport1.componentName); + + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + new HashSet<>(Arrays.asList( + mTransport1.componentName, mTransport2.componentName)), + null /* defaultTransport */, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + transportManager.onPackageAdded(PACKAGE_NAME); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + Collections.singleton(mTransport2.componentName)); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + Collections.singleton(mTransport2.name)); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse(); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue(); + } + + @Test + public void onPackageAdded_whitelistIsNull_doesNotBindToTransports() throws Exception { + setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2), + ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + null /* whitelist */, + null /* defaultTransport */, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + transportManager.onPackageAdded(PACKAGE_NAME); + + assertThat(transportManager.getAllTransportComponents()).isEmpty(); + assertThat(transportManager.getBoundTransportNames()).isEmpty(); + assertThat(mTransportBoundListenerStub.isCalled()).isFalse(); + } + + @Test + public void onPackageAdded_onlyOneTransportWhitelisted_onlyConnectsToWhitelistedTransport() + throws Exception { + setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2), + ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + new HashSet<>(Collections.singleton(mTransport2.componentName)), + null /* defaultTransport */, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + transportManager.onPackageAdded(PACKAGE_NAME); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + Collections.singleton(mTransport2.componentName)); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + Collections.singleton(mTransport2.name)); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse(); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue(); + } + + @Test + public void onPackageAdded_appIsNotPrivileged_doesNotBindToTransports() throws Exception { + setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2), 0); + + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + new HashSet<>(Arrays.asList( + mTransport1.componentName, mTransport2.componentName)), + null /* defaultTransport */, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + transportManager.onPackageAdded(PACKAGE_NAME); + + assertThat(transportManager.getAllTransportComponents()).isEmpty(); + assertThat(transportManager.getBoundTransportNames()).isEmpty(); + assertThat(mTransportBoundListenerStub.isCalled()).isFalse(); + } + + @Test + public void onPackageRemoved_transportsUnbound() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + transportManager.onPackageRemoved(PACKAGE_NAME); + + assertThat(transportManager.getAllTransportComponents()).isEmpty(); + assertThat(transportManager.getBoundTransportNames()).isEmpty(); + } + + @Test + public void onPackageRemoved_incorrectPackageName_nothingHappens() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + transportManager.onPackageRemoved(ANOTHER_PACKAGE_NAME); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.componentName, mTransport2.componentName)); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.name, mTransport2.name)); + } + + @Test + public void onPackageChanged_oneComponentChanged_onlyOneTransportRebound() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + transportManager.onPackageChanged(PACKAGE_NAME, new String[]{mTransport2.name}); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.componentName, mTransport2.componentName)); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.name, mTransport2.name)); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse(); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue(); + } + + @Test + public void onPackageChanged_nothingChanged_noTransportsRebound() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + transportManager.onPackageChanged(PACKAGE_NAME, new String[0]); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.componentName, mTransport2.componentName)); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.name, mTransport2.name)); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse(); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isFalse(); + } + + @Test + public void onPackageChanged_unexpectedComponentChanged_noTransportsRebound() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + transportManager.onPackageChanged(PACKAGE_NAME, new String[]{"unexpected.component"}); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.componentName, mTransport2.componentName)); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.name, mTransport2.name)); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse(); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isFalse(); + } + + @Test + public void onPackageChanged_transportsRebound() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + transportManager.onPackageChanged(PACKAGE_NAME, new String[]{mTransport2.name}); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.componentName, mTransport2.componentName)); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + Arrays.asList(mTransport1.name, mTransport2.name)); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse(); + assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue(); + } + + @Test + public void getTransportBinder_returnsCorrectBinder() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + assertThat(transportManager.getTransportBinder(mTransport1.name)).isEqualTo( + mTransport1.stub); + assertThat(transportManager.getTransportBinder(mTransport2.name)).isEqualTo( + mTransport2.stub); + } + + @Test + public void getTransportBinder_incorrectTransportName_returnsNull() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + assertThat(transportManager.getTransportBinder("incorrect.transport")).isNull(); + } + + @Test + public void getTransportBinder_oneTransportUnavailable_returnsCorrectBinder() throws Exception { + TransportManager transportManager = + createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2), + Collections.singletonList(mTransport1), mTransport1.name); + + assertThat(transportManager.getTransportBinder(mTransport1.name)).isNull(); + assertThat(transportManager.getTransportBinder(mTransport2.name)).isEqualTo( + mTransport2.stub); + } + + @Test + public void getCurrentTransport_selectTransportNotCalled_returnsDefaultTransport() + throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + assertThat(transportManager.getCurrentTransportName()).isEqualTo(mTransport1.name); + } + + @Test + public void getCurrentTransport_selectTransportCalled_returnsCorrectTransport() + throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + assertThat(transportManager.getCurrentTransportName()).isEqualTo(mTransport1.name); + + transportManager.selectTransport(mTransport2.name); + + assertThat(transportManager.getCurrentTransportName()).isEqualTo(mTransport2.name); + } + + @Test + public void getCurrentTransportBinder_returnsCorrectBinder() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + assertThat(transportManager.getCurrentTransportBinder()).isEqualTo(mTransport1.stub); + } + + @Test + public void getCurrentTransportBinder_transportNotBound_returnsNull() throws Exception { + TransportManager transportManager = + createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2), + Collections.singletonList(mTransport1), mTransport2.name); + + transportManager.selectTransport(mTransport1.name); + + assertThat(transportManager.getCurrentTransportBinder()).isNull(); + } + + @Test + public void getTransportName_returnsCorrectTransportName() throws Exception { + TransportManager transportManager = createTransportManagerAndSetUpTransports( + Arrays.asList(mTransport1, mTransport2), mTransport1.name); + + assertThat(transportManager.getTransportName(mTransport1.stub)).isEqualTo(mTransport1.name); + assertThat(transportManager.getTransportName(mTransport2.stub)).isEqualTo(mTransport2.name); + } + + @Test + public void getTransportName_transportNotBound_returnsNull() throws Exception { + TransportManager transportManager = + createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2), + Collections.singletonList(mTransport1), mTransport1.name); + + assertThat(transportManager.getTransportName(mTransport1.stub)).isNull(); + assertThat(transportManager.getTransportName(mTransport2.stub)).isEqualTo(mTransport2.name); + } + + @Test + public void getTransportWhitelist_returnsCorrectWhiteList() throws Exception { + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + new HashSet<>(Arrays.asList(mTransport1.componentName, mTransport2.componentName)), + mTransport1.name, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + + assertThat(transportManager.getTransportWhitelist()).containsExactlyElementsIn( + Arrays.asList(mTransport1.componentName, mTransport2.componentName)); + } + + @Test + public void getTransportWhitelist_whiteListIsNull_returnsEmptyArray() throws Exception { + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + null /* whitelist */, + mTransport1.name, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + + assertThat(transportManager.getTransportWhitelist()).isEmpty(); + } + + @Test + public void selectTransport_setsTransportCorrectlyAndReturnsPreviousTransport() + throws Exception { + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + null /* whitelist */, + mTransport1.name, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + + assertThat(transportManager.selectTransport(mTransport2.name)).isEqualTo(mTransport1.name); + assertThat(transportManager.selectTransport(mTransport1.name)).isEqualTo(mTransport2.name); + } + + @Test + public void ensureTransportReady_transportNotYetBound_callsListenerOnFailure() + throws Exception { + setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2), + ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + new HashSet<>(Arrays.asList(mTransport1.componentName, mTransport2.componentName)), + mTransport1.name, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + + transportManager.ensureTransportReady(mTransport1.componentName, + mTransportReadyCallbackStub); + + assertThat(mTransportReadyCallbackStub.getSuccessCalls()).isEmpty(); + assertThat(mTransportReadyCallbackStub.getFailureCalls()).containsExactlyElementsIn( + Collections.singleton( + BackupManager.ERROR_TRANSPORT_UNAVAILABLE)); + } + + @Test + public void ensureTransportReady_transportCannotBeBound_callsListenerOnFailure() + throws Exception { + TransportManager transportManager = + createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2), + Collections.singletonList(mTransport1), mTransport1.name); + + transportManager.ensureTransportReady(mTransport1.componentName, + mTransportReadyCallbackStub); + + assertThat(mTransportReadyCallbackStub.getSuccessCalls()).isEmpty(); + assertThat(mTransportReadyCallbackStub.getFailureCalls()).containsExactlyElementsIn( + Collections.singleton( + BackupManager.ERROR_TRANSPORT_UNAVAILABLE)); + } + + @Test + public void ensureTransportReady_transportsAlreadyBound_callsListenerOnSuccess() + throws Exception { + TransportManager transportManager = + createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2), + Collections.singletonList(mTransport1), mTransport1.name); + + transportManager.ensureTransportReady(mTransport2.componentName, + mTransportReadyCallbackStub); + + assertThat(mTransportReadyCallbackStub.getSuccessCalls()).containsExactlyElementsIn( + Collections.singleton(mTransport2.name)); + assertThat(mTransportReadyCallbackStub.getFailureCalls()).isEmpty(); + } + + private void setUpPackageWithTransports(String packageName, List<TransportInfo> transports, + int flags) throws Exception { + PackageInfo packageInfo = new PackageInfo(); + packageInfo.packageName = packageName; + packageInfo.applicationInfo = new ApplicationInfo(); + packageInfo.applicationInfo.privateFlags = flags; + + mPackageManager.addPackage(packageInfo); + + List<ResolveInfo> transportsInfo = new ArrayList<>(); + for (TransportInfo transport : transports) { + ResolveInfo info = new ResolveInfo(); + info.serviceInfo = new ServiceInfo(); + info.serviceInfo.packageName = packageName; + info.serviceInfo.name = transport.name; + transportsInfo.add(info); + } + + Intent intent = new Intent(TransportManager.SERVICE_ACTION_TRANSPORT_HOST); + intent.setPackage(packageName); + + mPackageManager.addResolveInfoForIntent(intent, transportsInfo); + } + + private TransportManager createTransportManagerAndSetUpTransports( + List<TransportInfo> availableTransports, String defaultTransportName) throws Exception { + return createTransportManagerAndSetUpTransports(availableTransports, + Collections.<TransportInfo>emptyList(), defaultTransportName); + } + + private TransportManager createTransportManagerAndSetUpTransports( + List<TransportInfo> availableTransports, List<TransportInfo> unavailableTransports, + String defaultTransportName) + throws Exception { + List<String> availableTransportsNames = new ArrayList<>(); + List<ComponentName> availableTransportsComponentNames = new ArrayList<>(); + for (TransportInfo transport : availableTransports) { + availableTransportsNames.add(transport.name); + availableTransportsComponentNames.add(transport.componentName); + } + + List<ComponentName> allTransportsComponentNames = new ArrayList<>(); + allTransportsComponentNames.addAll(availableTransportsComponentNames); + for (TransportInfo transport : unavailableTransports) { + allTransportsComponentNames.add(transport.componentName); + } + + for (TransportInfo transport : unavailableTransports) { + ShadowContextImplForBackup.sUnbindableComponents.add(transport.componentName); + } + + setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2), + ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + + TransportManager transportManager = new TransportManager( + RuntimeEnvironment.application.getApplicationContext(), + new HashSet<>(allTransportsComponentNames), + defaultTransportName, + mTransportBoundListenerStub, + ShadowLooper.getMainLooper()); + transportManager.onPackageAdded(PACKAGE_NAME); + + assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn( + availableTransportsComponentNames); + assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn( + availableTransportsNames); + for (TransportInfo transport : availableTransports) { + assertThat(mTransportBoundListenerStub.isCalledForTransport(transport.stub)).isTrue(); + } + for (TransportInfo transport : unavailableTransports) { + assertThat(mTransportBoundListenerStub.isCalledForTransport(transport.stub)).isFalse(); + } + + mTransportBoundListenerStub.resetState(); + + return transportManager; + } + + private static class TransportInfo { + public final String packageName; + public final String name; + public final ComponentName componentName; + public final BackupTransportStub stub; + public final IBinder binder; + + TransportInfo(String packageName, String name) { + this.packageName = packageName; + this.name = name; + this.componentName = new ComponentName(packageName, name); + this.stub = new BackupTransportStub(name); + this.binder = mock(IBinder.class); + } + } +} diff --git a/services/robotests/src/com/android/server/backup/testing/BackupTransportStub.java b/services/robotests/src/com/android/server/backup/testing/BackupTransportStub.java new file mode 100644 index 000000000000..ec09f908c90d --- /dev/null +++ b/services/robotests/src/com/android/server/backup/testing/BackupTransportStub.java @@ -0,0 +1,179 @@ +/* + * 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.server.backup.testing; + +import android.app.backup.RestoreDescription; +import android.app.backup.RestoreSet; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.os.IBinder; +import android.os.ParcelFileDescriptor; +import android.os.RemoteException; + +import com.android.internal.backup.IBackupTransport; + +/** + * Stub backup transport, doing nothing and returning default values. + */ +public class BackupTransportStub implements IBackupTransport { + + private final String mName; + + public BackupTransportStub(String name) { + mName = name; + } + + @Override + public IBinder asBinder() { + return null; + } + + @Override + public String name() throws RemoteException { + return mName; + } + + @Override + public Intent configurationIntent() throws RemoteException { + return null; + } + + @Override + public String currentDestinationString() throws RemoteException { + return null; + } + + @Override + public Intent dataManagementIntent() throws RemoteException { + return null; + } + + @Override + public String dataManagementLabel() throws RemoteException { + return null; + } + + @Override + public String transportDirName() throws RemoteException { + return null; + } + + @Override + public long requestBackupTime() throws RemoteException { + return 0; + } + + @Override + public int initializeDevice() throws RemoteException { + return 0; + } + + @Override + public int performBackup(PackageInfo packageInfo, ParcelFileDescriptor inFd, int flags) + throws RemoteException { + return 0; + } + + @Override + public int clearBackupData(PackageInfo packageInfo) throws RemoteException { + return 0; + } + + @Override + public int finishBackup() throws RemoteException { + return 0; + } + + @Override + public RestoreSet[] getAvailableRestoreSets() throws RemoteException { + return new RestoreSet[0]; + } + + @Override + public long getCurrentRestoreSet() throws RemoteException { + return 0; + } + + @Override + public int startRestore(long token, PackageInfo[] packages) throws RemoteException { + return 0; + } + + @Override + public RestoreDescription nextRestorePackage() throws RemoteException { + return null; + } + + @Override + public int getRestoreData(ParcelFileDescriptor outFd) throws RemoteException { + return 0; + } + + @Override + public void finishRestore() throws RemoteException { + + } + + @Override + public long requestFullBackupTime() throws RemoteException { + return 0; + } + + @Override + public int performFullBackup(PackageInfo targetPackage, ParcelFileDescriptor socket, + int flags) + throws RemoteException { + return 0; + } + + @Override + public int checkFullBackupSize(long size) throws RemoteException { + return 0; + } + + @Override + public int sendBackupData(int numBytes) throws RemoteException { + return 0; + } + + @Override + public void cancelFullBackup() throws RemoteException { + + } + + @Override + public boolean isAppEligibleForBackup(PackageInfo targetPackage, boolean isFullBackup) + throws RemoteException { + return false; + } + + @Override + public long getBackupQuota(String packageName, boolean isFullBackup) + throws RemoteException { + return 0; + } + + @Override + public int getNextFullRestoreDataChunk(ParcelFileDescriptor socket) throws RemoteException { + return 0; + } + + @Override + public int abortFullRestore() throws RemoteException { + return 0; + } +} diff --git a/services/robotests/src/com/android/server/backup/testing/DefaultPackageManagerWithQueryIntentServicesAsUser.java b/services/robotests/src/com/android/server/backup/testing/DefaultPackageManagerWithQueryIntentServicesAsUser.java new file mode 100644 index 000000000000..5a0967ba2420 --- /dev/null +++ b/services/robotests/src/com/android/server/backup/testing/DefaultPackageManagerWithQueryIntentServicesAsUser.java @@ -0,0 +1,43 @@ +/* + * 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.server.backup.testing; + +import android.content.Intent; +import android.content.pm.ResolveInfo; + +import org.robolectric.res.ResourceLoader; +import org.robolectric.res.builder.DefaultPackageManager; + +import java.util.List; + +/** + * Implementation of PackageManager for Robolectric which handles queryIntentServicesAsUser(). + */ +public class DefaultPackageManagerWithQueryIntentServicesAsUser extends + DefaultPackageManager { + + /* package */ + public DefaultPackageManagerWithQueryIntentServicesAsUser( + ResourceLoader appResourceLoader) { + super(appResourceLoader); + } + + @Override + public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int flags, int userId) { + return super.queryIntentServices(intent, flags); + } +} diff --git a/services/robotests/src/com/android/server/backup/testing/ShadowBackupTransportStub.java b/services/robotests/src/com/android/server/backup/testing/ShadowBackupTransportStub.java new file mode 100644 index 000000000000..48a12f0f5435 --- /dev/null +++ b/services/robotests/src/com/android/server/backup/testing/ShadowBackupTransportStub.java @@ -0,0 +1,40 @@ +/* + * 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.server.backup.testing; + +import android.os.IBinder; + +import com.android.internal.backup.IBackupTransport; + +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; + +import java.util.HashMap; +import java.util.Map; + +/** + * Shadow IBackupTransport.Stub, returns a transport corresponding to the binder. + */ +@Implements(IBackupTransport.Stub.class) +public class ShadowBackupTransportStub { + public static Map<IBinder, IBackupTransport> sBinderTransportMap = new HashMap<>(); + + @Implementation + public static IBackupTransport asInterface(IBinder obj) { + return sBinderTransportMap.get(obj); + } +} diff --git a/services/robotests/src/com/android/server/backup/testing/ShadowContextImplForBackup.java b/services/robotests/src/com/android/server/backup/testing/ShadowContextImplForBackup.java new file mode 100644 index 000000000000..c3975db3057f --- /dev/null +++ b/services/robotests/src/com/android/server/backup/testing/ShadowContextImplForBackup.java @@ -0,0 +1,64 @@ +/* + * 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.server.backup.testing; + +import android.annotation.RequiresPermission; +import android.content.ComponentName; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.IBinder; +import android.os.UserHandle; + +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; +import org.robolectric.shadows.ShadowApplication; +import org.robolectric.shadows.ShadowContextImpl; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * Implementation of ContextImpl shadow, handling bindServiceAsUser(). + */ +@Implements(className = ShadowContextImpl.CLASS_NAME) +public class ShadowContextImplForBackup extends ShadowContextImpl { + public static Map<ComponentName, IBinder> sComponentBinderMap = new HashMap<>(); + public static Set<ComponentName> sUnbindableComponents = new HashSet<>(); + + @Implementation + public boolean bindServiceAsUser(@RequiresPermission Intent service, ServiceConnection conn, + int flags, UserHandle user) { + if (sUnbindableComponents.contains(service.getComponent())) { + return false; + } + + ShadowApplication.getInstance().setComponentNameAndServiceForBindService( + service.getComponent(), sComponentBinderMap.get(service.getComponent())); + return bindService(service, conn, flags); + } + + + /** + * Resets backup-related shadow state. + */ + public static void resetBackupShadowState() { + sComponentBinderMap.clear(); + sUnbindableComponents.clear(); + } +} diff --git a/services/robotests/src/com/android/server/backup/testing/TransportBoundListenerStub.java b/services/robotests/src/com/android/server/backup/testing/TransportBoundListenerStub.java new file mode 100644 index 000000000000..84ac2c212854 --- /dev/null +++ b/services/robotests/src/com/android/server/backup/testing/TransportBoundListenerStub.java @@ -0,0 +1,64 @@ +/* + * 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.server.backup.testing; + +import com.android.internal.backup.IBackupTransport; +import com.android.server.backup.TransportManager; + +import java.util.HashSet; +import java.util.Set; + +/** + * Stub implementation of TransportBoundListener, which returns given result and can tell whether + * it was called for given transport. + */ +public class TransportBoundListenerStub implements + TransportManager.TransportBoundListener { + private boolean mAlwaysReturnSuccess; + private Set<IBackupTransport> mTransportsCalledFor = new HashSet<>(); + + public TransportBoundListenerStub(boolean alwaysReturnSuccess) { + this.mAlwaysReturnSuccess = alwaysReturnSuccess; + } + + @Override + public boolean onTransportBound(IBackupTransport binder) { + mTransportsCalledFor.add(binder); + return mAlwaysReturnSuccess; + } + + /** + * Returns whether the listener was called for the specified transport at least once. + */ + public boolean isCalledForTransport(IBackupTransport binder) { + return mTransportsCalledFor.contains(binder); + } + + /** + * Returns whether the listener was called at least once. + */ + public boolean isCalled() { + return !mTransportsCalledFor.isEmpty(); + } + + /** + * Resets listener calls. + */ + public void resetState() { + mTransportsCalledFor.clear(); + } +} diff --git a/services/robotests/src/com/android/server/backup/testing/TransportReadyCallbackStub.java b/services/robotests/src/com/android/server/backup/testing/TransportReadyCallbackStub.java new file mode 100644 index 000000000000..bbe7eba149c6 --- /dev/null +++ b/services/robotests/src/com/android/server/backup/testing/TransportReadyCallbackStub.java @@ -0,0 +1,55 @@ +/* + * 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.server.backup.testing; + +import com.android.server.backup.TransportManager; + +import java.util.HashSet; +import java.util.Set; + +/** + * Stub implementation of TransportReadyCallback, which can tell which calls were made. + */ +public class TransportReadyCallbackStub implements + TransportManager.TransportReadyCallback { + private final Set<String> mSuccessCalls = new HashSet<>(); + private final Set<Integer> mFailureCalls = new HashSet<>(); + + @Override + public void onSuccess(String transportName) { + mSuccessCalls.add(transportName); + } + + @Override + public void onFailure(int reason) { + mFailureCalls.add(reason); + } + + /** + * Returns set of transport names for which {@link #onSuccess(String)} was called. + */ + public Set<String> getSuccessCalls() { + return mSuccessCalls; + } + + /** + * Returns set of reasons for which {@link #onFailure(int)} } was called. + */ + public Set<Integer> getFailureCalls() { + return mFailureCalls; + } +} diff --git a/services/tests/notification/AndroidTest.xml b/services/tests/notification/AndroidTest.xml index fa77407262b8..448bc3de5a0e 100644 --- a/services/tests/notification/AndroidTest.xml +++ b/services/tests/notification/AndroidTest.xml @@ -23,6 +23,6 @@ <option name="test-tag" value="FrameworksNotificationTests" /> <test class="com.android.tradefed.testtype.AndroidJUnitTest" > <option name="package" value="com.android.frameworks.tests.notification" /> - <option name="runner" value="android.support.test.runner.AndroidJUnitRunner" /> + <option name="runner" value="android.testing.TestableInstrumentation" /> </test> </configuration> diff --git a/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java b/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java index 8242149d61be..a4b9b256aa07 100644 --- a/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java +++ b/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java @@ -91,6 +91,7 @@ public class ManagedServicesTest extends NotificationTestCase { private ArrayMap<Integer, String> mExpectedSecondaryPackages; private ArrayMap<Integer, String> mExpectedSecondaryComponentNames; + // type : user : list of approved private ArrayMap<Integer, ArrayMap<Integer, String>> mExpectedPrimary = new ArrayMap<>(); private ArrayMap<Integer, ArrayMap<Integer, String>> mExpectedSecondary = new ArrayMap<>(); @@ -253,6 +254,14 @@ public class ManagedServicesTest extends NotificationTestCase { loadXml(service); verifyExpectedApprovedEntries(service); + + int[] invalidUsers = new int[] {98, 99}; + for (int invalidUser : invalidUsers) { + assertFalse("service type " + service.mApprovalLevel + ":" + + invalidUser + " is allowed for user " + invalidUser, + service.isPackageOrComponentAllowed( + String.valueOf(invalidUser), invalidUser)); + } } } @@ -578,6 +587,32 @@ public class ManagedServicesTest extends NotificationTestCase { assertEquals(0, service.getAllowedComponents(10).size()); } + @Test + public void testOnUserRemoved() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + loadXml(service); + + ArrayMap<Integer, String> verifyMap = mExpectedPrimary.get(service.mApprovalLevel); + String user0 = verifyMap.remove(0); + verifyMap = mExpectedSecondary.get(service.mApprovalLevel); + user0 = user0 + ":" + verifyMap.remove(0); + + service.onUserRemoved(0); + + for (String verifyValue : user0.split(":")) { + if (!TextUtils.isEmpty(verifyValue)) { + assertFalse("service type " + service.mApprovalLevel + ":" + verifyValue + + " is still allowed", + service.isPackageOrComponentAllowed(verifyValue, 0)); + } + } + + verifyExpectedApprovedEntries(service); + } + } + private void loadXml(ManagedServices service) throws Exception { final StringBuffer xml = new StringBuffer(); xml.append("<" + service.getConfig().xmlTag + ">\n"); @@ -589,6 +624,14 @@ public class ManagedServicesTest extends NotificationTestCase { xml.append(getXmlEntry( mExpectedSecondary.get(service.mApprovalLevel).get(userId), userId, false)); } + xml.append("<" + ManagedServices.TAG_MANAGED_SERVICES + " " + + ManagedServices.ATT_USER_ID + "=\"99\" " + + ManagedServices.ATT_IS_PRIMARY + "=\"true\" " + + ManagedServices.ATT_APPROVED_LIST + "=\"99\" />\n"); + xml.append("<" + ManagedServices.TAG_MANAGED_SERVICES + " " + + ManagedServices.ATT_USER_ID + "=\"98\" " + + ManagedServices.ATT_IS_PRIMARY + "=\"false\" " + + ManagedServices.ATT_APPROVED_LIST + "=\"98\" />\n"); xml.append("</" + service.getConfig().xmlTag + ">"); XmlPullParser parser = Xml.newPullParser(); @@ -657,7 +700,8 @@ public class ManagedServicesTest extends NotificationTestCase { for (String packageOrComponent : verifyMap.get(userId).split(":")) { if (!TextUtils.isEmpty(packageOrComponent)) { if (service.mApprovalLevel == APPROVAL_BY_PACKAGE) { - assertTrue(packageOrComponent, service.isComponentEnabledForPackage(packageOrComponent)); + assertTrue(packageOrComponent, + service.isComponentEnabledForPackage(packageOrComponent)); for (int i = 1; i <= 3; i ++) { ComponentName componentName = ComponentName.unflattenFromString( packageOrComponent +"/C" + i); diff --git a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java index 04b42f1ee312..71a024c5be07 100644 --- a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -16,12 +16,15 @@ package com.android.server.notification; +import static android.app.NotificationManager.IMPORTANCE_HIGH; import static android.app.NotificationManager.IMPORTANCE_LOW; import static android.app.NotificationManager.IMPORTANCE_NONE; +import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; import static android.content.pm.PackageManager.PERMISSION_DENIED; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; @@ -56,6 +59,7 @@ import android.content.pm.ParceledListSlice; import android.graphics.Color; import android.media.AudioManager; import android.os.Binder; +import android.os.Build; import android.os.Process; import android.os.UserHandle; import android.provider.Settings.Secure; @@ -241,6 +245,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { nb.build(), new UserHandle(mUid), null, 0); return new NotificationRecord(mContext, sbn, channel); } + private NotificationRecord generateNotificationRecord(NotificationChannel channel) { return generateNotificationRecord(channel, null); } @@ -342,7 +347,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { // Recreating the channel doesn't throw, but ignores importance. final NotificationChannel dupeChannel = - new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH); + new NotificationChannel("id", "name", IMPORTANCE_HIGH); mBinderService.createNotificationChannels(PKG, new ParceledListSlice(Arrays.asList(dupeChannel))); final NotificationChannel createdChannel = @@ -378,7 +383,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { // The user modifies importance directly, can no longer be changed by the app. final NotificationChannel updatedChannel = - new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH); + new NotificationChannel("id", "name", IMPORTANCE_HIGH); mBinderService.updateNotificationChannelForPackage(PKG, mUid, updatedChannel); // Recreating with a lower importance leaves channel unchanged. @@ -388,7 +393,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { new ParceledListSlice(Arrays.asList(dupeChannel))); final NotificationChannel createdChannel = mBinderService.getNotificationChannel(PKG, "id"); - assertEquals(NotificationManager.IMPORTANCE_HIGH, createdChannel.getImportance()); + assertEquals(IMPORTANCE_HIGH, createdChannel.getImportance()); } @Test @@ -397,7 +402,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { final NotificationChannel channel1 = new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT); final NotificationChannel channel2 = - new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH); + new NotificationChannel("id", "name", IMPORTANCE_HIGH); mBinderService.createNotificationChannels(PKG, new ParceledListSlice(Arrays.asList(channel1, channel2))); final NotificationChannel createdChannel = @@ -410,7 +415,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(true); NotificationChannel channel = new NotificationChannel("id", "name", - NotificationManager.IMPORTANCE_HIGH); + IMPORTANCE_HIGH); NotificationRecord r = generateNotificationRecord(channel); assertTrue(mNotificationManagerService.isBlocked(r, mUsageStats)); verify(mUsageStats, times(1)).registerSuspendedByAdmin(eq(r)); @@ -421,8 +426,79 @@ public class NotificationManagerServiceTest extends NotificationTestCase { when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); NotificationChannel channel = new NotificationChannel("id", "name", + NotificationManager.IMPORTANCE_NONE); + NotificationRecord r = generateNotificationRecord(channel); + assertTrue(mNotificationManagerService.isBlocked(r, mUsageStats)); + verify(mUsageStats, times(1)).registerBlocked(eq(r)); + + mBinderService.createNotificationChannels( + PKG, new ParceledListSlice(Arrays.asList(channel))); + final StatusBarNotification sbn = generateNotificationRecord(channel).sbn; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length); + } + + @Test + public void testEnqueuedBlockedNotifications_appBlockedChannelForegroundService() + throws Exception { + when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); + + NotificationChannel channel = new NotificationChannel("blocked", "name", + NotificationManager.IMPORTANCE_NONE); + mBinderService.createNotificationChannels( + PKG, new ParceledListSlice(Arrays.asList(channel))); + + final StatusBarNotification sbn = generateNotificationRecord(channel).sbn; + sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(1, mBinderService.getActiveNotifications(sbn.getPackageName()).length); + assertEquals(IMPORTANCE_LOW, + mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance()); + assertEquals(IMPORTANCE_LOW, + mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance()); + } + + @Test + public void testEnqueuedBlockedNotifications_userBlockedChannelForegroundService() + throws Exception { + when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); + + NotificationChannel channel = + new NotificationChannel("blockedbyuser", "name", IMPORTANCE_HIGH); + mBinderService.createNotificationChannels( + PKG, new ParceledListSlice(Arrays.asList(channel))); + + NotificationChannel update = + new NotificationChannel("blockedbyuser", "name", IMPORTANCE_NONE); + mBinderService.updateNotificationChannelForPackage(PKG, mUid, update); + waitForIdle(); + assertEquals(IMPORTANCE_NONE, + mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance()); + + final StatusBarNotification sbn = generateNotificationRecord(channel).sbn; + sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length); + assertNull(mNotificationManagerService.getNotificationRecord(sbn.getKey())); + assertEquals(IMPORTANCE_NONE, + mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance()); + } + + @Test + public void testBlockedNotifications_blockedChannelGroup() throws Exception { + when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); + mNotificationManagerService.setRankingHelper(mRankingHelper); + when(mRankingHelper.isGroupBlocked(anyString(), anyInt(), anyString())).thenReturn(true); + + NotificationChannel channel = new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH); - channel.setImportance(IMPORTANCE_NONE); + channel.setGroup("something"); NotificationRecord r = generateNotificationRecord(channel); assertTrue(mNotificationManagerService.isBlocked(r, mUsageStats)); verify(mUsageStats, times(1)).registerBlocked(eq(r)); @@ -442,6 +518,21 @@ public class NotificationManagerServiceTest extends NotificationTestCase { } @Test + public void testEnqueuedBlockedNotifications_blockedAppForegroundService() throws Exception { + when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); + + mBinderService.setNotificationsEnabledForPackage(PKG, mUid, false); + + final StatusBarNotification sbn = generateNotificationRecord(null).sbn; + sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length); + assertNull(mNotificationManagerService.getNotificationRecord(sbn.getKey())); + } + + @Test public void testEnqueueNotificationWithTag_PopulatesGetActiveNotifications() throws Exception { mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", 0, generateNotificationRecord(null).getNotification(), 0); @@ -798,7 +889,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { mNotificationManagerService.setRankingHelper(mRankingHelper); when(mRankingHelper.getNotificationChannel( anyString(), anyInt(), eq("foo"), anyBoolean())).thenReturn( - new NotificationChannel("foo", "foo", NotificationManager.IMPORTANCE_HIGH)); + new NotificationChannel("foo", "foo", IMPORTANCE_HIGH)); Notification.TvExtender tv = new Notification.TvExtender().setChannelId("foo"); mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", 0, @@ -927,7 +1018,8 @@ public class NotificationManagerServiceTest extends NotificationTestCase { mBinderService.updateNotificationChannelFromPrivilegedListener( null, PKG, Process.myUserHandle(), mTestNotificationChannel); - verify(mRankingHelper, times(1)).updateNotificationChannel(anyString(), anyInt(), any()); + verify(mRankingHelper, times(1)).updateNotificationChannel( + anyString(), anyInt(), any(), anyBoolean()); verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), @@ -948,7 +1040,8 @@ public class NotificationManagerServiceTest extends NotificationTestCase { // pass } - verify(mRankingHelper, never()).updateNotificationChannel(anyString(), anyInt(), any()); + verify(mRankingHelper, never()).updateNotificationChannel( + anyString(), anyInt(), any(), anyBoolean()); verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), @@ -974,7 +1067,8 @@ public class NotificationManagerServiceTest extends NotificationTestCase { // pass } - verify(mRankingHelper, never()).updateNotificationChannel(anyString(), anyInt(), any()); + verify(mRankingHelper, never()).updateNotificationChannel( + anyString(), anyInt(), any(), anyBoolean()); verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), @@ -1345,7 +1439,8 @@ public class NotificationManagerServiceTest extends NotificationTestCase { @Test public void testOnlyAutogroupIfGroupChanged_groupChanged_autogroups() throws Exception { - NotificationRecord r = generateNotificationRecord(mTestNotificationChannel, 0, "group", false); + NotificationRecord r = + generateNotificationRecord(mTestNotificationChannel, 0, "group", false); mNotificationManagerService.addNotification(r); r = generateNotificationRecord(mTestNotificationChannel, 0, null, false); @@ -1425,12 +1520,16 @@ public class NotificationManagerServiceTest extends NotificationTestCase { // Same notifications are enqueued as posted, everything counts b/c id and tag don't match int userId = new UserHandle(mUid).getIdentifier(); - assertEquals(40, mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, null)); - assertEquals(40, mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag2")); - assertEquals(2, mNotificationManagerService.getNotificationCountLocked("a", userId, 0, "banana")); + assertEquals(40, + mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, null)); + assertEquals(40, + mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag2")); + assertEquals(2, + mNotificationManagerService.getNotificationCountLocked("a", userId, 0, "banana")); // exclude a known notification - it's excluded from only the posted list, not enqueued - assertEquals(39, mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag")); + assertEquals(39, + mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag")); } @Test @@ -1560,4 +1659,51 @@ public class NotificationManagerServiceTest extends NotificationTestCase { verify(mZenModeHelper, times(1)).updateDefaultZenRules(); } + + @Test + public void testBumpFGImportance_noChannelChangePreOApp() throws Exception { + String preOPkg = "preO"; + int preOUid = 145; + final ApplicationInfo legacy = new ApplicationInfo(); + legacy.targetSdkVersion = Build.VERSION_CODES.N_MR1; + when(mPackageManagerClient.getApplicationInfoAsUser(eq(preOPkg), anyInt(), anyInt())) + .thenReturn(legacy); + when(mPackageManagerClient.getPackageUidAsUser(eq(preOPkg), anyInt())).thenReturn(preOUid); + getContext().setMockPackageManager(mPackageManagerClient); + + Notification.Builder nb = new Notification.Builder(mContext, + NotificationChannel.DEFAULT_CHANNEL_ID) + .setContentTitle("foo") + .setSmallIcon(android.R.drawable.sym_def_app_icon) + .setFlag(Notification.FLAG_FOREGROUND_SERVICE, true) + .setPriority(Notification.PRIORITY_MIN); + + StatusBarNotification sbn = new StatusBarNotification(preOPkg, preOPkg, 9, "tag", preOUid, + 0, nb.build(), new UserHandle(preOUid), null, 0); + + mBinderService.enqueueNotificationWithTag(preOPkg, preOPkg, "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(IMPORTANCE_LOW, + mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance()); + + nb = new Notification.Builder(mContext) + .setContentTitle("foo") + .setSmallIcon(android.R.drawable.sym_def_app_icon) + .setFlag(Notification.FLAG_FOREGROUND_SERVICE, true) + .setPriority(Notification.PRIORITY_MIN); + + sbn = new StatusBarNotification(preOPkg, preOPkg, 9, "tag", preOUid, + 0, nb.build(), new UserHandle(preOUid), null, 0); + + mBinderService.enqueueNotificationWithTag(preOPkg, preOPkg, "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(IMPORTANCE_LOW, + mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance()); + + NotificationChannel defaultChannel = mBinderService.getNotificationChannel( + preOPkg, NotificationChannel.DEFAULT_CHANNEL_ID); + assertEquals(IMPORTANCE_UNSPECIFIED, defaultChannel.getImportance()); + } } diff --git a/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java b/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java index 65bf33084bb4..2249ff0ce448 100644 --- a/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java +++ b/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java @@ -240,12 +240,23 @@ public class RankingHelperTest extends NotificationTestCase { private void compareGroups(NotificationChannelGroup expected, NotificationChannelGroup actual) { assertEquals(expected.getId(), actual.getId()); assertEquals(expected.getName(), actual.getName()); + assertEquals(expected.getDescription(), actual.getDescription()); + assertEquals(expected.isBlocked(), actual.isBlocked()); } private NotificationChannel getChannel() { return new NotificationChannel("id", "name", IMPORTANCE_LOW); } + private NotificationChannel findChannel(List<NotificationChannel> channels, String id) { + for (NotificationChannel channel : channels) { + if (channel.getId().equals(id)) { + return channel; + } + } + return null; + } + @Test public void testFindAfterRankingWithASplitGroup() throws Exception { ArrayList<NotificationRecord> notificationList = new ArrayList<NotificationRecord>(3); @@ -299,6 +310,8 @@ public class RankingHelperTest extends NotificationTestCase { @Test public void testChannelXml() throws Exception { NotificationChannelGroup ncg = new NotificationChannelGroup("1", "bye"); + ncg.setBlocked(true); + ncg.setDescription("group desc"); NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "hello"); NotificationChannel channel1 = new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); @@ -484,7 +497,7 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel defaultChannel = mHelper.getNotificationChannel(PKG, UID, NotificationChannel.DEFAULT_CHANNEL_ID, false); defaultChannel.setImportance(NotificationManager.IMPORTANCE_LOW); - mHelper.updateNotificationChannel(PKG, UID, defaultChannel); + mHelper.updateNotificationChannel(PKG, UID, defaultChannel, true); ByteArrayOutputStream baos = writeXmlAndPurge(PKG, UID, false, NotificationChannel.DEFAULT_CHANNEL_ID); @@ -633,7 +646,7 @@ public class RankingHelperTest extends NotificationTestCase { channel2.setBypassDnd(false); channel2.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); - mHelper.updateNotificationChannel(PKG, UID, channel2); + mHelper.updateNotificationChannel(PKG, UID, channel2, true); // all fields should be changed assertEquals(channel2, mHelper.getNotificationChannel(PKG, UID, channel.getId(), false)); @@ -657,7 +670,7 @@ public class RankingHelperTest extends NotificationTestCase { defaultChannel.setBypassDnd(true); defaultChannel.setLockscreenVisibility(Notification.VISIBILITY_SECRET); - mHelper.updateNotificationChannel(PKG, UID, defaultChannel); + mHelper.updateNotificationChannel(PKG, UID, defaultChannel, true); // ensure app level fields are changed assertFalse(mHelper.canShowBadge(PKG, UID)); @@ -681,7 +694,7 @@ public class RankingHelperTest extends NotificationTestCase { channel.setBypassDnd(true); channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET); - mHelper.updateNotificationChannel(PKG, UID, channel); + mHelper.updateNotificationChannel(PKG, UID, channel, true); // ensure app level fields are not changed assertTrue(mHelper.canShowBadge(PKG, UID)); @@ -772,14 +785,14 @@ public class RankingHelperTest extends NotificationTestCase { update1.setSound(new Uri.Builder().scheme("test").build(), new AudioAttributes.Builder().build()); update1.lockFields(NotificationChannel.USER_LOCKED_PRIORITY); // should be ignored - mHelper.updateNotificationChannel(PKG, UID, update1); + mHelper.updateNotificationChannel(PKG, UID, update1, true); assertEquals(NotificationChannel.USER_LOCKED_SOUND, mHelper.getNotificationChannel(PKG, UID, update1.getId(), false) .getUserLockedFields()); NotificationChannel update2 = getChannel(); update2.enableVibration(true); - mHelper.updateNotificationChannel(PKG, UID, update2); + mHelper.updateNotificationChannel(PKG, UID, update2, true); assertEquals(NotificationChannel.USER_LOCKED_SOUND | NotificationChannel.USER_LOCKED_VIBRATION, mHelper.getNotificationChannel(PKG, UID, update2.getId(), false) @@ -792,14 +805,14 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel update1 = getChannel(); update1.setVibrationPattern(new long[]{7945, 46 ,246}); - mHelper.updateNotificationChannel(PKG, UID, update1); + mHelper.updateNotificationChannel(PKG, UID, update1, true); assertEquals(NotificationChannel.USER_LOCKED_VIBRATION, mHelper.getNotificationChannel(PKG, UID, update1.getId(), false) .getUserLockedFields()); final NotificationChannel update2 = getChannel(); update2.enableLights(true); - mHelper.updateNotificationChannel(PKG, UID, update2); + mHelper.updateNotificationChannel(PKG, UID, update2, true); assertEquals(NotificationChannel.USER_LOCKED_VIBRATION | NotificationChannel.USER_LOCKED_LIGHTS, mHelper.getNotificationChannel(PKG, UID, update2.getId(), false) @@ -812,14 +825,14 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel update1 = getChannel(); update1.setLightColor(Color.GREEN); - mHelper.updateNotificationChannel(PKG, UID, update1); + mHelper.updateNotificationChannel(PKG, UID, update1, true); assertEquals(NotificationChannel.USER_LOCKED_LIGHTS, mHelper.getNotificationChannel(PKG, UID, update1.getId(), false) .getUserLockedFields()); final NotificationChannel update2 = getChannel(); update2.setImportance(IMPORTANCE_DEFAULT); - mHelper.updateNotificationChannel(PKG, UID, update2); + mHelper.updateNotificationChannel(PKG, UID, update2, true); assertEquals(NotificationChannel.USER_LOCKED_LIGHTS | NotificationChannel.USER_LOCKED_IMPORTANCE, mHelper.getNotificationChannel(PKG, UID, update2.getId(), false) @@ -835,14 +848,14 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel update1 = getChannel(); update1.setBypassDnd(true); - mHelper.updateNotificationChannel(PKG, UID, update1); + mHelper.updateNotificationChannel(PKG, UID, update1, true); assertEquals(NotificationChannel.USER_LOCKED_PRIORITY, mHelper.getNotificationChannel(PKG, UID, update1.getId(), false) .getUserLockedFields()); final NotificationChannel update2 = getChannel(); update2.setLockscreenVisibility(Notification.VISIBILITY_SECRET); - mHelper.updateNotificationChannel(PKG, UID, update2); + mHelper.updateNotificationChannel(PKG, UID, update2, true); assertEquals(NotificationChannel.USER_LOCKED_PRIORITY | NotificationChannel.USER_LOCKED_VISIBILITY, mHelper.getNotificationChannel(PKG, UID, update2.getId(), false) @@ -850,7 +863,7 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel update3 = getChannel(); update3.setShowBadge(false); - mHelper.updateNotificationChannel(PKG, UID, update3); + mHelper.updateNotificationChannel(PKG, UID, update3, true); assertEquals(NotificationChannel.USER_LOCKED_PRIORITY | NotificationChannel.USER_LOCKED_VISIBILITY | NotificationChannel.USER_LOCKED_SHOW_BADGE, @@ -1263,7 +1276,7 @@ public class RankingHelperTest extends NotificationTestCase { mHelper.getNotificationChannelGroups(PKG, UID, true).getList(); channel1.setImportance(IMPORTANCE_LOW); - mHelper.updateNotificationChannel(PKG, UID, channel1); + mHelper.updateNotificationChannel(PKG, UID, channel1, true); List<NotificationChannelGroup> actual = mHelper.getNotificationChannelGroups(PKG, UID, true).getList(); @@ -1294,6 +1307,26 @@ public class RankingHelperTest extends NotificationTestCase { } @Test + public void testCreateChannel_addToGroup() throws Exception { + NotificationChannelGroup group = new NotificationChannelGroup("group", ""); + mHelper.createNotificationChannelGroup(PKG, UID, group, true); + NotificationChannel nc = new NotificationChannel("id", "hello", IMPORTANCE_DEFAULT); + mHelper.createNotificationChannel(PKG, UID, nc, true); + NotificationChannel actual = mHelper.getNotificationChannel(PKG, UID, "id", false); + assertNull(actual.getGroup()); + + nc = new NotificationChannel("id", "hello", IMPORTANCE_HIGH); + nc.setGroup(group.getId()); + mHelper.createNotificationChannel(PKG, UID, nc, true); + + actual = mHelper.getNotificationChannel(PKG, UID, "id", false); + assertNotNull(actual.getGroup()); + assertEquals(IMPORTANCE_DEFAULT, actual.getImportance()); + + verify(mHandler, times(1)).requestSort(); + } + + @Test public void testDumpChannelsJson() throws Exception { final ApplicationInfo upgrade = new ApplicationInfo(); upgrade.targetSdkVersion = Build.VERSION_CODES.O; @@ -1388,4 +1421,77 @@ public class RankingHelperTest extends NotificationTestCase { assertEquals(newLabel, mHelper.getNotificationChannel(PKG, UID, NotificationChannel.DEFAULT_CHANNEL_ID, false).getName()); } + + @Test + public void testIsGroupBlocked_noGroup() throws Exception { + assertFalse(mHelper.isGroupBlocked(PKG, UID, null)); + + assertFalse(mHelper.isGroupBlocked(PKG, UID, "non existent group")); + } + + @Test + public void testIsGroupBlocked_notBlocked() throws Exception { + NotificationChannelGroup group = new NotificationChannelGroup("id", "name"); + mHelper.createNotificationChannelGroup(PKG, UID, group, true); + + assertFalse(mHelper.isGroupBlocked(PKG, UID, group.getId())); + } + + @Test + public void testIsGroupBlocked_blocked() throws Exception { + NotificationChannelGroup group = new NotificationChannelGroup("id", "name"); + mHelper.createNotificationChannelGroup(PKG, UID, group, true); + group.setBlocked(true); + mHelper.createNotificationChannelGroup(PKG, UID, group, false); + + assertTrue(mHelper.isGroupBlocked(PKG, UID, group.getId())); + } + + @Test + public void testIsGroup_appCannotResetBlock() throws Exception { + NotificationChannelGroup group = new NotificationChannelGroup("id", "name"); + mHelper.createNotificationChannelGroup(PKG, UID, group, true); + NotificationChannelGroup group2 = group.clone(); + group2.setBlocked(true); + mHelper.createNotificationChannelGroup(PKG, UID, group2, false); + assertTrue(mHelper.isGroupBlocked(PKG, UID, group.getId())); + + NotificationChannelGroup group3 = group.clone(); + group3.setBlocked(false); + mHelper.createNotificationChannelGroup(PKG, UID, group3, true); + assertTrue(mHelper.isGroupBlocked(PKG, UID, group.getId())); + } + + @Test + public void testGetNotificationChannelGroupWithChannels() throws Exception { + NotificationChannelGroup group = new NotificationChannelGroup("group", ""); + NotificationChannelGroup other = new NotificationChannelGroup("something else", ""); + mHelper.createNotificationChannelGroup(PKG, UID, group, true); + mHelper.createNotificationChannelGroup(PKG, UID, other, true); + + NotificationChannel a = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT); + a.setGroup(group.getId()); + NotificationChannel b = new NotificationChannel("b", "b", IMPORTANCE_DEFAULT); + b.setGroup(other.getId()); + NotificationChannel c = new NotificationChannel("c", "c", IMPORTANCE_DEFAULT); + c.setGroup(group.getId()); + NotificationChannel d = new NotificationChannel("d", "d", IMPORTANCE_DEFAULT); + + mHelper.createNotificationChannel(PKG, UID, a, true); + mHelper.createNotificationChannel(PKG, UID, b, true); + mHelper.createNotificationChannel(PKG, UID, c, true); + mHelper.createNotificationChannel(PKG, UID, d, true); + mHelper.deleteNotificationChannel(PKG, UID, c.getId()); + + NotificationChannelGroup retrieved = mHelper.getNotificationChannelGroupWithChannels( + PKG, UID, group.getId(), true); + assertEquals(2, retrieved.getChannels().size()); + compareChannels(a, findChannel(retrieved.getChannels(), a.getId())); + compareChannels(c, findChannel(retrieved.getChannels(), c.getId())); + + retrieved = mHelper.getNotificationChannelGroupWithChannels( + PKG, UID, group.getId(), false); + assertEquals(1, retrieved.getChannels().size()); + compareChannels(a, findChannel(retrieved.getChannels(), a.getId())); + } } diff --git a/services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java b/services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java index 58a4456ff4d7..3a92d638fb02 100644 --- a/services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java @@ -30,13 +30,14 @@ import android.support.test.runner.AndroidJUnit4; import android.test.mock.MockContentResolver; import com.android.internal.app.NightDisplayController; -import com.android.internal.app.NightDisplayController.LocalTime; import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.display.DisplayTransformManager; import com.android.server.display.NightDisplayService; import com.android.server.twilight.TwilightListener; import com.android.server.twilight.TwilightManager; import com.android.server.twilight.TwilightState; +import java.time.LocalDateTime; +import java.time.ZoneId; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -45,6 +46,7 @@ import org.mockito.Mockito; import java.util.Calendar; import java.util.HashMap; +import java.time.LocalTime; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -926,11 +928,10 @@ public class NightDisplayServiceTest { */ private void setActivated(boolean activated, int lastActivatedTimeOffset) { mNightDisplayController.setActivated(activated); - - final Calendar c = Calendar.getInstance(); - c.add(Calendar.MINUTE, lastActivatedTimeOffset); - Secure.putLongForUser(mContext.getContentResolver(), - Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, c.getTimeInMillis(), mUserId); + Secure.putStringForUser(mContext.getContentResolver(), + Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, + LocalDateTime.now().plusMinutes(lastActivatedTimeOffset).toString(), + mUserId); } /** @@ -969,7 +970,7 @@ public class NightDisplayServiceTest { private static LocalTime getLocalTimeRelativeToNow(int offsetMinutes) { final Calendar c = Calendar.getInstance(); c.add(Calendar.MINUTE, offsetMinutes); - return new LocalTime(c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE)); + return LocalTime.of(c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE)); } /** @@ -984,13 +985,27 @@ public class NightDisplayServiceTest { final LocalTime sunset = getLocalTimeRelativeToNow(sunsetOffset); final LocalTime sunrise = getLocalTimeRelativeToNow(sunriseOffset); - final Calendar now = Calendar.getInstance(); - long sunsetMillis = sunset.getDateTimeBefore(now).getTimeInMillis(); - long sunriseMillis = sunrise.getDateTimeBefore(now).getTimeInMillis(); + final LocalDateTime now = LocalDateTime.now(); + final ZoneId zoneId = ZoneId.systemDefault(); + + long sunsetMillis = NightDisplayService.getDateTimeBefore(sunset, now) + .atZone(zoneId) + .toInstant() + .toEpochMilli(); + long sunriseMillis = NightDisplayService.getDateTimeBefore(sunrise, now) + .atZone(zoneId) + .toInstant() + .toEpochMilli(); if (sunsetMillis < sunriseMillis) { - sunsetMillis = sunset.getDateTimeAfter(now).getTimeInMillis(); + sunsetMillis = NightDisplayService.getDateTimeAfter(sunset, now) + .atZone(zoneId) + .toInstant() + .toEpochMilli(); } else { - sunriseMillis = sunrise.getDateTimeAfter(now).getTimeInMillis(); + sunriseMillis = NightDisplayService.getDateTimeAfter(sunrise, now) + .atZone(zoneId) + .toInstant() + .toEpochMilli(); } return new TwilightState(sunriseMillis, sunsetMillis); diff --git a/services/tests/servicestests/src/com/android/server/accessibility/MagnificationGestureHandlerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/MagnificationGestureHandlerTest.java new file mode 100644 index 000000000000..50824e32e50d --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/accessibility/MagnificationGestureHandlerTest.java @@ -0,0 +1,535 @@ +/* + * 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.server.accessibility; + +import static android.util.ExceptionUtils.propagate; +import static android.view.MotionEvent.ACTION_DOWN; +import static android.view.MotionEvent.ACTION_MOVE; +import static android.view.MotionEvent.ACTION_POINTER_DOWN; +import static android.view.MotionEvent.ACTION_POINTER_UP; + +import static com.android.server.testutils.TestUtils.strictMock; + +import static org.junit.Assert.fail; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import android.annotation.NonNull; +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; +import android.util.DebugUtils; +import android.view.InputDevice; +import android.view.MotionEvent; + +import com.android.server.testutils.OffsettableClock; +import com.android.server.testutils.TestHandler; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.function.IntConsumer; + + +@RunWith(AndroidJUnit4.class) +public class MagnificationGestureHandlerTest { + + public static final int STATE_IDLE = 1; + public static final int STATE_ZOOMED = 2; + public static final int STATE_2TAPS = 3; + public static final int STATE_ZOOMED_2TAPS = 4; + public static final int STATE_SHORTCUT_TRIGGERED = 5; + public static final int STATE_DRAGGING_TMP = 6; + public static final int STATE_DRAGGING = 7; + public static final int STATE_PANNING = 8; + public static final int STATE_SCALING_AND_PANNING = 9; + + + public static final int FIRST_STATE = STATE_IDLE; + public static final int LAST_STATE = STATE_SCALING_AND_PANNING; + + // Co-prime x and y, to potentially catch x-y-swapped errors + public static final float DEFAULT_X = 301; + public static final float DEFAULT_Y = 299; + + private Context mContext; + private AccessibilityManagerService mAms; + private MagnificationController mMagnificationController; + private OffsettableClock mClock; + private MagnificationGestureHandler mMgh; + private TestHandler mHandler; + + @Before + public void setUp() { + mContext = InstrumentationRegistry.getContext(); + mAms = new AccessibilityManagerService(mContext); + mMagnificationController = new MagnificationController( + mContext, mAms, /* lock */ new Object()) { + @Override + public boolean magnificationRegionContains(float x, float y) { + return true; + } + + @Override + void setForceShowMagnifiableBounds(boolean show) {} + }; + mMagnificationController.mRegistered = true; + mClock = new OffsettableClock.Stopped(); + + boolean detectTripleTap = true; + boolean detectShortcutTrigger = true; + mMgh = newInstance(detectTripleTap, detectShortcutTrigger); + } + + @NonNull + public MagnificationGestureHandler newInstance(boolean detectTripleTap, + boolean detectShortcutTrigger) { + MagnificationGestureHandler h = new MagnificationGestureHandler( + mContext, mMagnificationController, + detectTripleTap, detectShortcutTrigger); + mHandler = new TestHandler(h.mDetectingStateHandler, mClock); + h.mDetectingStateHandler.mHandler = mHandler; + h.setNext(strictMock(EventStreamTransformation.class)); + return h; + } + + @Test + public void testInitialState_isIdle() { + assertIn(STATE_IDLE); + } + + /** + * Covers paths to get to and back between each state and {@link #STATE_IDLE} + * This navigates between states using "canonical" paths, specified in + * {@link #goFromStateIdleTo} (for traversing away from {@link #STATE_IDLE}) and + * {@link #returnToNormalFrom} (for navigating back to {@link #STATE_IDLE}) + */ + @Test + public void testEachState_isReachableAndRecoverable() { + forEachState(state -> { + goFromStateIdleTo(state); + assertIn(state); + + returnToNormalFrom(state); + try { + assertIn(STATE_IDLE); + } catch (AssertionError e) { + throw new AssertionError("Failed while testing state " + stateToString(state), e); + } + }); + } + + @Test + public void testStates_areMutuallyExclusive() { + forEachState(state1 -> { + forEachState(state2 -> { + if (state1 < state2) { + goFromStateIdleTo(state1); + try { + assertIn(state2); + fail("State " + stateToString(state1) + " also implies state " + + stateToString(state2) + stateDump()); + } catch (AssertionError e) { + // expected + returnToNormalFrom(state1); + } + } + }); + }); + } + + /** + * Covers edges of the graph not covered by "canonical" transitions specified in + * {@link #goFromStateIdleTo} and {@link #returnToNormalFrom} + */ + @SuppressWarnings("Convert2MethodRef") + @Test + public void testAlternativeTransitions_areWorking() { + // A11y button followed by a tap&hold turns temporary "viewport dragging" zoom on + assertTransition(STATE_SHORTCUT_TRIGGERED, () -> { + send(downEvent()); + fastForward1sec(); + }, STATE_DRAGGING_TMP); + + // A11y button followed by a tap turns zoom on + assertTransition(STATE_SHORTCUT_TRIGGERED, () -> tap(), STATE_ZOOMED); + + // A11y button pressed second time negates the 1st press + assertTransition(STATE_SHORTCUT_TRIGGERED, () -> triggerShortcut(), STATE_IDLE); + + // A11y button turns zoom off + assertTransition(STATE_ZOOMED, () -> triggerShortcut(), STATE_IDLE); + + + // Double tap times out while zoomed + assertTransition(STATE_ZOOMED_2TAPS, () -> { + allowEventDelegation(); + fastForward1sec(); + }, STATE_ZOOMED); + + // tap+tap+swipe gets delegated + assertTransition(STATE_2TAPS, () -> { + allowEventDelegation(); + swipe(); + }, STATE_IDLE); + } + + @Test + public void testNonTransitions_dontChangeState() { + // ACTION_POINTER_DOWN triggers event delegation if not magnifying + assertStaysIn(STATE_IDLE, () -> { + allowEventDelegation(); + send(downEvent()); + send(pointerEvent(ACTION_POINTER_DOWN, DEFAULT_X * 2, DEFAULT_Y)); + }); + + // Long tap breaks the triple-tap detection sequence + Runnable tapAndLongTap = () -> { + allowEventDelegation(); + tap(); + longTap(); + }; + assertStaysIn(STATE_IDLE, tapAndLongTap); + assertStaysIn(STATE_ZOOMED, tapAndLongTap); + + // Triple tap with delays in between doesn't count + Runnable slow3tap = () -> { + tap(); + fastForward1sec(); + tap(); + fastForward1sec(); + tap(); + }; + assertStaysIn(STATE_IDLE, slow3tap); + assertStaysIn(STATE_ZOOMED, slow3tap); + } + + @Test + public void testDisablingTripleTap_removesInputLag() { + mMgh = newInstance(/* detect3tap */ false, /* detectShortcut */ true); + goFromStateIdleTo(STATE_IDLE); + allowEventDelegation(); + tap(); + // no fast forward + verify(mMgh.mNext, times(2)).onMotionEvent(any(), any(), anyInt()); + } + + private void assertTransition(int fromState, Runnable transitionAction, int toState) { + goFromStateIdleTo(fromState); + transitionAction.run(); + assertIn(toState); + returnToNormalFrom(toState); + } + + private void assertStaysIn(int state, Runnable action) { + assertTransition(state, action, state); + } + + private void forEachState(IntConsumer action) { + for (int state = FIRST_STATE; state <= LAST_STATE; state++) { + action.accept(state); + } + } + + private void allowEventDelegation() { + doNothing().when(mMgh.mNext).onMotionEvent(any(), any(), anyInt()); + } + + private void fastForward1sec() { + fastForward(1000); + } + + private void fastForward(int ms) { + mClock.fastForward(ms); + mHandler.timeAdvance(); + } + + /** + * Asserts that {@link #mMgh the handler} is in the given {@code state} + */ + private void assertIn(int state) { + switch (state) { + + // Asserts on separate lines for accurate stack traces + + case STATE_IDLE: { + check(tapCount() < 2, state); + check(!mMgh.mShortcutTriggered, state); + check(!isZoomed(), state); + } break; + case STATE_ZOOMED: { + check(isZoomed(), state); + check(tapCount() < 2, state); + } break; + case STATE_2TAPS: { + check(!isZoomed(), state); + check(tapCount() == 2, state); + } break; + case STATE_ZOOMED_2TAPS: { + check(isZoomed(), state); + check(tapCount() == 2, state); + } break; + case STATE_DRAGGING: { + check(mMgh.mCurrentState == MagnificationGestureHandler.STATE_VIEWPORT_DRAGGING, + state); + check(mMgh.mViewportDraggingStateHandler.mZoomedInBeforeDrag, state); + } break; + case STATE_DRAGGING_TMP: { + check(mMgh.mCurrentState == MagnificationGestureHandler.STATE_VIEWPORT_DRAGGING, + state); + check(!mMgh.mViewportDraggingStateHandler.mZoomedInBeforeDrag, state); + } break; + case STATE_SHORTCUT_TRIGGERED: { + check(mMgh.mShortcutTriggered, state); + check(!isZoomed(), state); + } break; + case STATE_PANNING: { + check(mMgh.mCurrentState == MagnificationGestureHandler.STATE_PANNING_SCALING, + state); + check(!mMgh.mPanningScalingStateHandler.mScaling, state); + } break; + case STATE_SCALING_AND_PANNING: { + check(mMgh.mCurrentState == MagnificationGestureHandler.STATE_PANNING_SCALING, + state); + check(mMgh.mPanningScalingStateHandler.mScaling, state); + } break; + default: throw new IllegalArgumentException("Illegal state: " + state); + } + } + + /** + * Defines a "canonical" path from {@link #STATE_IDLE} to {@code state} + */ + private void goFromStateIdleTo(int state) { + try { + switch (state) { + case STATE_IDLE: { + mMgh.clearAndTransitionToStateDetecting(); + } break; + case STATE_2TAPS: { + goFromStateIdleTo(STATE_IDLE); + tap(); + tap(); + } break; + case STATE_ZOOMED: { + if (mMgh.mDetectTripleTap) { + goFromStateIdleTo(STATE_2TAPS); + tap(); + } else { + goFromStateIdleTo(STATE_SHORTCUT_TRIGGERED); + tap(); + } + } break; + case STATE_ZOOMED_2TAPS: { + goFromStateIdleTo(STATE_ZOOMED); + tap(); + tap(); + } break; + case STATE_DRAGGING: { + goFromStateIdleTo(STATE_ZOOMED_2TAPS); + send(downEvent()); + fastForward1sec(); + } break; + case STATE_DRAGGING_TMP: { + goFromStateIdleTo(STATE_2TAPS); + send(downEvent()); + fastForward1sec(); + } break; + case STATE_SHORTCUT_TRIGGERED: { + goFromStateIdleTo(STATE_IDLE); + triggerShortcut(); + } break; + case STATE_PANNING: { + goFromStateIdleTo(STATE_ZOOMED); + send(downEvent()); + send(pointerEvent(ACTION_POINTER_DOWN, DEFAULT_X * 2, DEFAULT_Y)); + } break; + case STATE_SCALING_AND_PANNING: { + goFromStateIdleTo(STATE_PANNING); + send(pointerEvent(ACTION_MOVE, DEFAULT_X * 2, DEFAULT_Y * 3)); + send(pointerEvent(ACTION_MOVE, DEFAULT_X * 2, DEFAULT_Y * 4)); + } break; + default: + throw new IllegalArgumentException("Illegal state: " + state); + } + } catch (Throwable t) { + throw new RuntimeException("Failed to go to state " + stateToString(state), t); + } + } + + /** + * Defines a "canonical" path from {@code state} to {@link #STATE_IDLE} + */ + private void returnToNormalFrom(int state) { + switch (state) { + case STATE_IDLE: { + // no op + } break; + case STATE_2TAPS: { + allowEventDelegation(); + fastForward1sec(); + } break; + case STATE_ZOOMED: { + if (mMgh.mDetectTripleTap) { + tap(); + tap(); + returnToNormalFrom(STATE_ZOOMED_2TAPS); + } else { + triggerShortcut(); + } + } break; + case STATE_ZOOMED_2TAPS: { + tap(); + } break; + case STATE_DRAGGING: { + send(upEvent()); + returnToNormalFrom(STATE_ZOOMED); + } break; + case STATE_DRAGGING_TMP: { + send(upEvent()); + } break; + case STATE_SHORTCUT_TRIGGERED: { + triggerShortcut(); + } break; + case STATE_PANNING: { + send(pointerEvent(ACTION_POINTER_UP, DEFAULT_X * 2, DEFAULT_Y)); + send(upEvent()); + returnToNormalFrom(STATE_ZOOMED); + } break; + case STATE_SCALING_AND_PANNING: { + returnToNormalFrom(STATE_PANNING); + } break; + default: throw new IllegalArgumentException("Illegal state: " + state); + } + } + + private void check(boolean condition, int expectedState) { + if (!condition) { + fail("Expected to be in state " + stateToString(expectedState) + stateDump()); + } + } + + private boolean isZoomed() { + return mMgh.mMagnificationController.isMagnifying(); + } + + private int tapCount() { + return mMgh.mDetectingStateHandler.tapCount(); + } + + private static String stateToString(int state) { + return DebugUtils.valueToString(MagnificationGestureHandlerTest.class, "STATE_", state); + } + + private void tap() { + MotionEvent downEvent = downEvent(); + send(downEvent); + send(upEvent(downEvent.getDownTime())); + } + + private void swipe() { + MotionEvent downEvent = downEvent(); + send(downEvent); + send(moveEvent(DEFAULT_X * 2, DEFAULT_Y * 2)); + send(upEvent(downEvent.getDownTime())); + } + + private void longTap() { + MotionEvent downEvent = downEvent(); + send(downEvent); + fastForward(2000); + send(upEvent(downEvent.getDownTime())); + } + + private void triggerShortcut() { + mMgh.notifyShortcutTriggered(); + } + + private void send(MotionEvent event) { + event.setSource(InputDevice.SOURCE_TOUCHSCREEN); + try { + mMgh.onMotionEvent(event, event, /* policyFlags */ 0); + } catch (Throwable t) { + throw new RuntimeException("Exception while handling " + event, t); + } + fastForward(1); + } + + private MotionEvent moveEvent(float x, float y) { + return MotionEvent.obtain(defaultDownTime(), mClock.now(), ACTION_MOVE, x, y, 0); + } + + private MotionEvent downEvent() { + return MotionEvent.obtain(mClock.now(), mClock.now(), + ACTION_DOWN, DEFAULT_X, DEFAULT_Y, 0); + } + + private MotionEvent upEvent() { + return upEvent(defaultDownTime()); + } + + private MotionEvent upEvent(long downTime) { + return MotionEvent.obtain(downTime, mClock.now(), + MotionEvent.ACTION_UP, DEFAULT_X, DEFAULT_Y, 0); + } + + private long defaultDownTime() { + MotionEvent lastDown = mMgh.mDetectingStateHandler.mLastDown; + return lastDown == null ? mClock.now() - 1 : lastDown.getDownTime(); + } + + private MotionEvent pointerEvent(int action, float x, float y) { + MotionEvent.PointerProperties defPointerProperties = new MotionEvent.PointerProperties(); + defPointerProperties.id = 0; + defPointerProperties.toolType = MotionEvent.TOOL_TYPE_FINGER; + MotionEvent.PointerProperties pointerProperties = new MotionEvent.PointerProperties(); + pointerProperties.id = 1; + pointerProperties.toolType = MotionEvent.TOOL_TYPE_FINGER; + + MotionEvent.PointerCoords defPointerCoords = new MotionEvent.PointerCoords(); + defPointerCoords.x = DEFAULT_X; + defPointerCoords.y = DEFAULT_Y; + MotionEvent.PointerCoords pointerCoords = new MotionEvent.PointerCoords(); + pointerCoords.x = x; + pointerCoords.y = y; + + return MotionEvent.obtain( + /* downTime */ mClock.now(), + /* eventTime */ mClock.now(), + /* action */ action, + /* pointerCount */ 2, + /* pointerProperties */ new MotionEvent.PointerProperties[] { + defPointerProperties, pointerProperties }, + /* pointerCoords */ new MotionEvent.PointerCoords[] { defPointerCoords, pointerCoords }, + /* metaState */ 0, + /* buttonState */ 0, + /* xPrecision */ 1.0f, + /* yPrecision */ 1.0f, + /* deviceId */ 0, + /* edgeFlags */ 0, + /* source */ InputDevice.SOURCE_TOUCHSCREEN, + /* flags */ 0); + } + + private String stateDump() { + return "\nCurrent state dump:\n" + mMgh + "\n" + mHandler.getPendingMessages(); + } +} diff --git a/services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java b/services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java index 0dba35f2a164..e3ee47f3421d 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java @@ -16,6 +16,7 @@ package com.android.server.accessibility; +import android.app.Notification; import android.os.Handler; import android.os.Message; import android.util.Pair; @@ -49,7 +50,7 @@ public class MessageCapturingHandler extends Handler { public void sendOneMessage() { Message message = timedMessages.remove(0).first; removeMessages(message.what, message.obj); - mCallback.handleMessage(message); + dispatchMessage(message); removeStaleMessages(); } @@ -62,7 +63,7 @@ public class MessageCapturingHandler extends Handler { public void sendLastMessage() { Message message = timedMessages.remove(timedMessages.size() - 1).first; removeMessages(message.what, message.obj); - mCallback.handleMessage(message); + dispatchMessage(message); removeStaleMessages(); } @@ -79,4 +80,12 @@ public class MessageCapturingHandler extends Handler { } } } + + public void dispatchMessage(Message m) { + if (mCallback != null) { + mCallback.handleMessage(m); + return; + } + super.dispatchMessage(m); + } } diff --git a/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java index f63d438fd223..6311d0009258 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java @@ -19,7 +19,9 @@ package com.android.server.accessibility; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.accessibilityservice.AccessibilityServiceInfo; @@ -29,7 +31,6 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; -import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.view.WindowManagerInternal; @@ -38,6 +39,7 @@ import android.view.accessibility.AccessibilityEvent; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -49,6 +51,8 @@ public class UiAutomationManagerTest { final UiAutomationManager mUiAutomationManager = new UiAutomationManager(); + MessageCapturingHandler mMessageCapturingHandler; + @Mock AccessibilityManagerService.UserState mMockUserState; @Mock Context mMockContext; @Mock AccessibilityServiceInfo mMockServiceInfo; @@ -68,7 +72,6 @@ public class UiAutomationManagerTest { } } - @Before public void setup() { MockitoAnnotations.initMocks(this); @@ -80,6 +83,8 @@ public class UiAutomationManagerTest { mMockResolveInfo.serviceInfo.applicationInfo = mock(ApplicationInfo.class); when(mMockAccessibilityServiceClient.asBinder()).thenReturn(mMockServiceAsBinder); + + mMessageCapturingHandler = new MessageCapturingHandler(null); } @Test @@ -146,10 +151,20 @@ public class UiAutomationManagerTest { assertEquals(0, mUiAutomationManager.getRequestedEventMaskLocked()); } + @Test + public void uiAutomationBinderDiesBeforeConnecting_shouldNotCrash() throws Exception { + register(0); + ArgumentCaptor<IBinder.DeathRecipient> captor = ArgumentCaptor.forClass( + IBinder.DeathRecipient.class); + verify(mMockOwner).linkToDeath(captor.capture(), anyInt()); + captor.getValue().binderDied(); + mMessageCapturingHandler.sendAllMessages(); + } + private void register(int flags) { mUiAutomationManager.registerUiTestAutomationServiceLocked(mMockOwner, mMockAccessibilityServiceClient, mMockContext, mMockServiceInfo, SERVICE_ID, - new Handler(), new Object(), mMockSecurityPolicy, mMockSystemSupport, + mMessageCapturingHandler, new Object(), mMockSecurityPolicy, mMockSystemSupport, mMockWindowManagerInternal, mMockGlobalActionPerformer, flags); } diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java index 47a3a7242a44..526f81572b07 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java @@ -20,15 +20,19 @@ import static android.view.WindowManagerPolicy.NAV_BAR_BOTTOM; import static android.view.WindowManagerPolicy.NAV_BAR_LEFT; import static android.view.WindowManagerPolicy.NAV_BAR_RIGHT; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; import android.content.ComponentName; +import android.content.pm.ActivityInfo; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; import android.support.test.filters.MediumTest; import android.support.test.runner.AndroidJUnit4; +import android.view.Display; import org.junit.runner.RunWith; import org.junit.Test; @@ -46,6 +50,8 @@ public class ActivityRecordTests extends ActivityTestsBase { private final ComponentName testActivityComponent = ComponentName.unflattenFromString("com.foo/.BarActivity"); + private final ComponentName secondaryActivityComponent = + ComponentName.unflattenFromString("com.foo/.BarActivity2"); @Test public void testStackCleanupOnClearingTask() throws Exception { final ActivityManagerService service = createActivityManagerService(); @@ -131,4 +137,45 @@ public class ActivityRecordTests extends ActivityTestsBase { record.ensureActivityConfigurationLocked(0 /* globalChanges */, false /* preserveWindow */); assertEquals(expectedActivityBounds, record.getBounds()); } + + + @Test + public void testCanBeLaunchedOnDisplay() throws Exception { + testSupportsLaunchingResizeable(false /*taskPresent*/, true /*taskResizeable*/, + true /*activityResizeable*/, true /*expected*/); + + testSupportsLaunchingResizeable(false /*taskPresent*/, true /*taskResizeable*/, + false /*activityResizeable*/, false /*expected*/); + + testSupportsLaunchingResizeable(true /*taskPresent*/, false /*taskResizeable*/, + true /*activityResizeable*/, false /*expected*/); + + testSupportsLaunchingResizeable(true /*taskPresent*/, true /*taskResizeable*/, + false /*activityResizeable*/, true /*expected*/); + } + + private void testSupportsLaunchingResizeable(boolean taskPresent, boolean taskResizeable, + boolean activityResizeable, boolean expected) { + final ActivityManagerService service = createActivityManagerService(); + service.mSupportsMultiWindow = true; + + + final TaskRecord task = taskPresent + ? createTask(service, testActivityComponent, TEST_STACK_ID) : null; + + if (task != null) { + task.setResizeMode(taskResizeable ? ActivityInfo.RESIZE_MODE_RESIZEABLE + : ActivityInfo.RESIZE_MODE_UNRESIZEABLE); + } + + final ActivityRecord record = createActivity(service, secondaryActivityComponent, + task); + record.info.resizeMode = activityResizeable ? ActivityInfo.RESIZE_MODE_RESIZEABLE + : ActivityInfo.RESIZE_MODE_UNRESIZEABLE; + + record.canBeLaunchedOnDisplay(Display.DEFAULT_DISPLAY); + + assertEquals(((TestActivityStackSupervisor) service.mStackSupervisor) + .getLastResizeableFromCanPlaceEntityOnDisplay(), expected); + } } diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java index fc9ab9635c57..cd1843b37ae2 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java @@ -17,10 +17,14 @@ package com.android.server.am; import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID; +import static android.app.ActivityManager.StackId.HOME_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import android.content.ComponentName; import android.graphics.Rect; @@ -59,7 +63,7 @@ public class ActivityStackSupervisorTests extends ActivityTestsBase { public void testRestoringInvalidTask() throws Exception { final ActivityManagerService service = createActivityManagerService(); TaskRecord task = service.mStackSupervisor.anyTaskForIdLocked(0 /*taskId*/, - MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE, 0 /*stackId*/); + MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE, null); assertNull(task); } @@ -117,4 +121,21 @@ public class ActivityStackSupervisorTests extends ActivityTestsBase { assertTrue(stackTasks.contains(task)); } } + + /** + * Ensures that an activity is removed from the stopping activities list once it is resumed. + */ + @Test + public void testStoppingActivityRemovedWhenResumed() throws Exception { + final ActivityManagerService service = createActivityManagerService(); + final TaskRecord firstTask = createTask(service, testActivityComponent, + FULLSCREEN_WORKSPACE_STACK_ID); + final ActivityRecord firstActivity = createActivity(service, testActivityComponent, + firstTask); + service.mStackSupervisor.mStoppingActivities.add(firstActivity); + + firstActivity.completeResumeLocked(); + + assertFalse(service.mStackSupervisor.mStoppingActivities.contains(firstActivity)); + } } diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java index 80e241c0581f..02fba082ca98 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java @@ -24,6 +24,7 @@ import static org.junit.Assert.assertNull; import android.app.ActivityManager; import android.content.ComponentName; import android.content.pm.ActivityInfo; +import android.os.UserHandle; import android.platform.test.annotations.Presubmit; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -44,6 +45,8 @@ public class ActivityStackTests extends ActivityTestsBase { private static final int TEST_STACK_ID = 100; private static final ComponentName testActivityComponent = ComponentName.unflattenFromString("com.foo/.BarActivity"); + private static final ComponentName testOverlayComponent = + ComponentName.unflattenFromString("com.foo/.OverlayActivity"); @Test public void testEmptyTaskCleanupOnRemove() throws Exception { @@ -98,4 +101,25 @@ public class ActivityStackTests extends ActivityTestsBase { testStack.stopActivityLocked(activityRecord); } + + @Test + public void testFindTaskWithOverlay() throws Exception { + final ActivityManagerService service = createActivityManagerService(); + final TaskRecord task = createTask(service, testActivityComponent, TEST_STACK_ID); + final ActivityRecord activityRecord = createActivity(service, testActivityComponent, task, + 0); + // Overlay must be for a different user to prevent recognizing a matching top activity + final ActivityRecord taskOverlay = createActivity(service, testOverlayComponent, task, + UserHandle.PER_USER_RANGE * 2); + taskOverlay.mTaskOverlay = true; + + final ActivityStack testStack = service.mStackSupervisor.getStack(TEST_STACK_ID); + final ActivityStackSupervisor.FindTaskResult result = + new ActivityStackSupervisor.FindTaskResult(); + testStack.findTaskLocked(activityRecord, result); + + assertEquals(task.getTopActivity(false /* includeOverlays */), activityRecord); + assertEquals(task.getTopActivity(true /* includeOverlays */), taskOverlay); + assertNotNull(result.r); + } } diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java index f64de001371d..0cf1df84c073 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java @@ -87,11 +87,17 @@ public class ActivityTestsBase { protected static ActivityRecord createActivity(ActivityManagerService service, ComponentName component, TaskRecord task) { + return createActivity(service, component, task, 0 /* userId */); + } + + protected static ActivityRecord createActivity(ActivityManagerService service, + ComponentName component, TaskRecord task, int uid) { Intent intent = new Intent(); intent.setComponent(component); final ActivityInfo aInfo = new ActivityInfo(); aInfo.applicationInfo = new ApplicationInfo(); aInfo.applicationInfo.packageName = component.getPackageName(); + aInfo.applicationInfo.uid = uid; AttributeCache.init(service.mContext); final ActivityRecord activity = new ActivityRecord(service, null /* caller */, 0 /* launchedFromPid */, 0, null, intent, null, @@ -117,7 +123,7 @@ public class ActivityTestsBase { intent.setComponent(component); final TaskRecord task = new TaskRecord(service, 0, aInfo, intent /*intent*/, - null /*_taskDescription*/, new ActivityManager.TaskThumbnailInfo()); + null /*_taskDescription*/); final ActivityStack stack = service.mStackSupervisor.getStack(stackId, true /*createStaticStackIfNeeded*/, true /*onTop*/); service.mStackSupervisor.setFocusStackUnchecked("test", stack); @@ -145,6 +151,10 @@ public class ActivityTestsBase { protected ActivityStackSupervisor createStackSupervisor() { return new TestActivityStackSupervisor(this, mHandlerThread.getLooper()); } + + @Override + void updateUsageStats(ActivityRecord component, boolean resumed) { + } } /** @@ -153,6 +163,7 @@ public class ActivityTestsBase { */ protected static class TestActivityStackSupervisor extends ActivityStackSupervisor { private final ActivityDisplay mDisplay; + private boolean mLastResizeable; public TestActivityStackSupervisor(ActivityManagerService service, Looper looper) { super(service, looper); @@ -160,6 +171,22 @@ public class ActivityTestsBase { mDisplay = new ActivityDisplay(); } + // TODO: Use Mockito spy instead. Currently not possible due to TestActivityStackSupervisor + // access to ActivityDisplay + @Override + boolean canPlaceEntityOnDisplay(int displayId, boolean resizeable, int callingPid, + int callingUid, ActivityInfo activityInfo) { + mLastResizeable = resizeable; + return super.canPlaceEntityOnDisplay(displayId, resizeable, callingPid, callingUid, + activityInfo); + } + + // TODO: remove and use Mockito verify once {@link #canPlaceEntityOnDisplay} override is + // removed. + public boolean getLastResizeableFromCanPlaceEntityOnDisplay() { + return mLastResizeable; + } + // No home stack is set. @Override void moveHomeStackToFront(String reason) { @@ -271,8 +298,7 @@ public class ActivityTestsBase { } @Override - protected T createStackWindowController(int displayId, boolean onTop, Rect outBounds, - Configuration outOverrideConfig) { + protected T createStackWindowController(int displayId, boolean onTop, Rect outBounds) { mContainerController = (T) WindowTestUtils.createMockStackWindowContainerController(); return mContainerController; } diff --git a/services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java b/services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java index e98e5bfb110e..f9d7f9d4904a 100644 --- a/services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java @@ -20,19 +20,13 @@ import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED; import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED; import static android.os.Process.SYSTEM_UID; + import static com.android.server.am.LockTaskController.STATUS_BAR_MASK_LOCKED; import static com.android.server.am.LockTaskController.STATUS_BAR_MASK_PINNED; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; + +import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; import android.app.StatusBarManager; import android.app.admin.IDevicePolicyManager; @@ -72,7 +66,8 @@ import org.mockito.verification.VerificationMode; @SmallTest public class LockTaskControllerTest { private static final String TEST_PACKAGE_NAME = "com.test.package"; - private static final String TEST_CLASS_NAME = TEST_PACKAGE_NAME + ".TestClass"; + private static final String TEST_PACKAGE_NAME_2 = "com.test.package2"; + private static final String TEST_CLASS_NAME = ".TestClass"; private static final int TEST_USER_ID = 123; private static final int TEST_UID = 10467; @@ -309,15 +304,111 @@ public class LockTaskControllerTest { verify(mLockPatternUtils).requireCredentialEntry(UserHandle.USER_ALL); } + @Test + public void testUpdateLockTaskPackages() throws Exception { + String[] whitelist1 = {TEST_PACKAGE_NAME, TEST_PACKAGE_NAME_2}; + String[] whitelist2 = {TEST_PACKAGE_NAME}; + + // No package is whitelisted initially + for (String pkg : whitelist1) { + assertFalse("Package shouldn't be whitelisted: " + pkg, + mLockTaskController.isPackageWhitelisted(TEST_USER_ID, pkg)); + assertFalse("Package shouldn't be whitelisted for user 0: " + pkg, + mLockTaskController.isPackageWhitelisted(0, pkg)); + } + + // Apply whitelist + mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist1); + + // Assert the whitelist is applied to the correct user + for (String pkg : whitelist1) { + assertTrue("Package should be whitelisted: " + pkg, + mLockTaskController.isPackageWhitelisted(TEST_USER_ID, pkg)); + assertFalse("Package shouldn't be whitelisted for user 0: " + pkg, + mLockTaskController.isPackageWhitelisted(0, pkg)); + } + + // Update whitelist + mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist2); + + // Assert the new whitelist is applied + assertTrue("Package should remain whitelisted: " + TEST_PACKAGE_NAME, + mLockTaskController.isPackageWhitelisted(TEST_USER_ID, TEST_PACKAGE_NAME)); + assertFalse("Package should no longer be whitelisted: " + TEST_PACKAGE_NAME_2, + mLockTaskController.isPackageWhitelisted(TEST_USER_ID, TEST_PACKAGE_NAME_2)); + } + + @Test + public void testUpdateLockTaskPackages_taskRemoved() throws Exception { + // GIVEN two tasks which are whitelisted initially + TaskRecord tr1 = getTaskRecordForUpdate(TEST_PACKAGE_NAME, true); + TaskRecord tr2 = getTaskRecordForUpdate(TEST_PACKAGE_NAME_2, false); + String[] whitelist = {TEST_PACKAGE_NAME, TEST_PACKAGE_NAME_2}; + mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist); + + // GIVEN the tasks are launched into LockTask mode + mLockTaskController.startLockTaskMode(tr1, false, TEST_UID); + mLockTaskController.startLockTaskMode(tr2, false, TEST_UID); + assertEquals(LOCK_TASK_MODE_LOCKED, mLockTaskController.getLockTaskModeState()); + assertTrue(mLockTaskController.checkLockedTask(tr1)); + assertTrue(mLockTaskController.checkLockedTask(tr2)); + verifyLockTaskStarted(STATUS_BAR_MASK_LOCKED); + + // WHEN removing one package from whitelist + whitelist = new String[] {TEST_PACKAGE_NAME}; + mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist); + + // THEN the task running that package should be stopped + verify(tr2).performClearTaskLocked(); + assertFalse(mLockTaskController.checkLockedTask(tr2)); + // THEN the other task should remain locked + assertEquals(LOCK_TASK_MODE_LOCKED, mLockTaskController.getLockTaskModeState()); + assertTrue(mLockTaskController.checkLockedTask(tr1)); + verifyLockTaskStarted(STATUS_BAR_MASK_LOCKED); + + // WHEN removing the last package from whitelist + whitelist = new String[] {}; + mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist); + + // THEN the last task should be cleared, and the system should quit LockTask mode + verify(tr1).performClearTaskLocked(); + assertFalse(mLockTaskController.checkLockedTask(tr1)); + assertEquals(LOCK_TASK_MODE_NONE, mLockTaskController.getLockTaskModeState()); + verifyLockTaskStopped(times(1)); + } + private TaskRecord getTaskRecord(int lockTaskAuth) { + return getTaskRecord(TEST_PACKAGE_NAME, lockTaskAuth); + } + + private TaskRecord getTaskRecord(String pkg, int lockTaskAuth) { TaskRecord tr = mock(TaskRecord.class); tr.mLockTaskAuth = lockTaskAuth; tr.intent = new Intent() - .setComponent(new ComponentName(TEST_PACKAGE_NAME, TEST_CLASS_NAME)); + .setComponent(ComponentName.createRelative(pkg, TEST_CLASS_NAME)); tr.userId = TEST_USER_ID; return tr; } + /** + * @param isAppAware {@code true} if the app has marked if_whitelisted in its manifest + */ + private TaskRecord getTaskRecordForUpdate(String pkg, boolean isAppAware) { + final int authIfWhitelisted = isAppAware + ? TaskRecord.LOCK_TASK_AUTH_LAUNCHABLE + : TaskRecord.LOCK_TASK_AUTH_WHITELISTED; + TaskRecord tr = getTaskRecord(pkg, authIfWhitelisted); + doAnswer((invocation) -> { + boolean isWhitelisted = + mLockTaskController.isPackageWhitelisted(TEST_USER_ID, pkg); + tr.mLockTaskAuth = isWhitelisted + ? authIfWhitelisted + : TaskRecord.LOCK_TASK_AUTH_PINNABLE; + return null; + }).when(tr).setLockTaskAuth(); + return tr; + } + private void verifyLockTaskStarted(int statusBarMask) throws Exception { // THEN the keyguard should have been disabled verify(mWindowManager).disableKeyguard(any(IBinder.class), anyString()); diff --git a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java index 4475de5aa14e..419a161669aa 100644 --- a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java @@ -48,13 +48,13 @@ import java.util.List; import java.util.Set; import static android.content.pm.PackageManager.PERMISSION_GRANTED; -import static com.android.server.am.ActivityManagerService.CONTINUE_USER_SWITCH_MSG; -import static com.android.server.am.ActivityManagerService.REPORT_LOCKED_BOOT_COMPLETE_MSG; -import static com.android.server.am.ActivityManagerService.REPORT_USER_SWITCH_COMPLETE_MSG; -import static com.android.server.am.ActivityManagerService.REPORT_USER_SWITCH_MSG; -import static com.android.server.am.ActivityManagerService.SYSTEM_USER_CURRENT_MSG; -import static com.android.server.am.ActivityManagerService.SYSTEM_USER_START_MSG; -import static com.android.server.am.ActivityManagerService.USER_SWITCH_TIMEOUT_MSG; +import static com.android.server.am.UserController.CONTINUE_USER_SWITCH_MSG; +import static com.android.server.am.UserController.REPORT_LOCKED_BOOT_COMPLETE_MSG; +import static com.android.server.am.UserController.REPORT_USER_SWITCH_COMPLETE_MSG; +import static com.android.server.am.UserController.REPORT_USER_SWITCH_MSG; +import static com.android.server.am.UserController.SYSTEM_USER_CURRENT_MSG; +import static com.android.server.am.UserController.SYSTEM_USER_START_MSG; +import static com.android.server.am.UserController.USER_SWITCH_TIMEOUT_MSG; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; @@ -309,6 +309,7 @@ public class UserControllerTest extends AndroidTestCase { private static class TestInjector extends UserController.Injector { final Object lock = new Object(); TestHandler handler; + TestHandler uiHandler; HandlerThread handlerThread; UserManagerService userManagerMock; UserManagerInternal userManagerInternalMock; @@ -324,6 +325,7 @@ public class UserControllerTest extends AndroidTestCase { handlerThread = new HandlerThread(TAG); handlerThread.start(); handler = new TestHandler(handlerThread.getLooper()); + uiHandler = new TestHandler(handlerThread.getLooper()); userManagerMock = mock(UserManagerService.class); userManagerInternalMock = mock(UserManagerInternal.class); windowManagerMock = mock(WindowManagerService.class); @@ -337,11 +339,16 @@ public class UserControllerTest extends AndroidTestCase { } @Override - protected Handler getHandler() { + protected Handler getHandler(Handler.Callback callback) { return handler; } @Override + protected Handler getUiHandler(Handler.Callback callback) { + return uiHandler; + } + + @Override protected UserManagerService getUserManager() { return userManagerMock; } diff --git a/services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java b/services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java index 04c02510cb3d..bc162977de2b 100644 --- a/services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java @@ -16,7 +16,7 @@ package com.android.server.backup; -import static com.android.server.testutis.TestUtils.assertExpectException; +import static com.android.server.testutils.TestUtils.assertExpectException; import static com.google.common.truth.Truth.assertThat; diff --git a/services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java b/services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java index 0e940f25a62a..f22dfdcadc2c 100644 --- a/services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java +++ b/services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java @@ -45,6 +45,7 @@ import java.util.List; */ public class PackageManagerStub extends PackageManager { public static PackageInfo sPackageInfo; + public static int sApplicationEnabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; @Override public PackageInfo getPackageInfo(String packageName, int flags) @@ -820,7 +821,7 @@ public class PackageManagerStub extends PackageManager { @Override public int getApplicationEnabledSetting(String packageName) { - return 0; + return sApplicationEnabledSetting; } @Override diff --git a/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java b/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java index db0ec0702b9f..ed26296ba72a 100644 --- a/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java +++ b/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.content.pm.Signature; import android.os.Process; import android.platform.test.annotations.Presubmit; @@ -27,6 +28,7 @@ import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import com.android.server.backup.RefactoredBackupManagerService; +import com.android.server.backup.testutils.PackageManagerStub; import org.junit.Test; import org.junit.runner.RunWith; @@ -43,6 +45,8 @@ public class AppBackupUtilsTest { private static final Signature SIGNATURE_3 = generateSignature((byte) 3); private static final Signature SIGNATURE_4 = generateSignature((byte) 4); + private final PackageManagerStub mPackageManagerStub = new PackageManagerStub(); + @Test public void appIsEligibleForBackup_backupNotAllowed_returnsFalse() throws Exception { ApplicationInfo applicationInfo = new ApplicationInfo(); @@ -51,7 +55,8 @@ public class AppBackupUtilsTest { applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; applicationInfo.packageName = TEST_PACKAGE_NAME; - boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo); + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); assertThat(isEligible).isFalse(); } @@ -65,7 +70,8 @@ public class AppBackupUtilsTest { applicationInfo.backupAgentName = null; applicationInfo.packageName = TEST_PACKAGE_NAME; - boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo); + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); assertThat(isEligible).isFalse(); } @@ -78,13 +84,14 @@ public class AppBackupUtilsTest { applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; applicationInfo.packageName = RefactoredBackupManagerService.SHARED_BACKUP_AGENT_PACKAGE; - boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo); + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); assertThat(isEligible).isFalse(); } @Test - public void appIsEligibleForBackup_systemAppWithCustomBackupAgent_returnsTrue() + public void appIsEligibleForBackup_systemAppWithCustomBackupAgentAndEnabled_returnsTrue() throws Exception { ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP; @@ -92,13 +99,17 @@ public class AppBackupUtilsTest { applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; applicationInfo.packageName = TEST_PACKAGE_NAME; - boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo); + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); assertThat(isEligible).isTrue(); } @Test - public void appIsEligibleForBackup_nonSystemAppWithoutCustomBackupAgent_returnsTrue() + public void appIsEligibleForBackup_nonSystemAppWithoutCustomBackupAgentAndEnabled_returnsTrue() throws Exception { ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP; @@ -106,13 +117,17 @@ public class AppBackupUtilsTest { applicationInfo.backupAgentName = null; applicationInfo.packageName = TEST_PACKAGE_NAME; - boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo); + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); assertThat(isEligible).isTrue(); } @Test - public void appIsEligibleForBackup_nonSystemAppWithCustomBackupAgent_returnsTrue() + public void appIsEligibleForBackup_nonSystemAppWithCustomBackupAgentAndEnabled_returnsTrue() throws Exception { ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP; @@ -120,12 +135,134 @@ public class AppBackupUtilsTest { applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; applicationInfo.packageName = TEST_PACKAGE_NAME; - boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo); + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); assertThat(isEligible).isTrue(); } @Test + public void appIsEligibleForBackup_systemAppWithCustomBackupAgentAndDisabled_returnsFalse() + throws Exception { + ApplicationInfo applicationInfo = new ApplicationInfo(); + applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP; + applicationInfo.uid = Process.SYSTEM_UID; + applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; + applicationInfo.packageName = TEST_PACKAGE_NAME; + + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); + + assertThat(isEligible).isFalse(); + } + + @Test + public void appIsEligibleForBackup_nonSystemAppWithoutCustomBackupAgentAndDisabled_returnsFalse() + throws Exception { + ApplicationInfo applicationInfo = new ApplicationInfo(); + applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP; + applicationInfo.uid = Process.FIRST_APPLICATION_UID; + applicationInfo.backupAgentName = null; + applicationInfo.packageName = TEST_PACKAGE_NAME; + + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); + + assertThat(isEligible).isFalse(); + } + + @Test + public void appIsEligibleForBackup_nonSystemAppWithCustomBackupAgentAndDisbled_returnsFalse() + throws Exception { + ApplicationInfo applicationInfo = new ApplicationInfo(); + applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP; + applicationInfo.uid = Process.FIRST_APPLICATION_UID; + applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; + applicationInfo.packageName = TEST_PACKAGE_NAME; + + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + + boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo, + mPackageManagerStub); + + assertThat(isEligible).isFalse(); + } + + @Test + public void appIsDisabled_stateEnabled_returnsFalse() throws Exception { + ApplicationInfo applicationInfo = new ApplicationInfo(); + applicationInfo.flags = 0; + applicationInfo.uid = Process.FIRST_APPLICATION_UID; + applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; + applicationInfo.packageName = TEST_PACKAGE_NAME; + + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + + boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub); + + assertThat(isDisabled).isFalse(); + } + + @Test + public void appIsDisabled_stateDisabled_returnsTrue() throws Exception { + ApplicationInfo applicationInfo = new ApplicationInfo(); + applicationInfo.flags = 0; + applicationInfo.uid = Process.FIRST_APPLICATION_UID; + applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; + applicationInfo.packageName = TEST_PACKAGE_NAME; + + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + + boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub); + + assertThat(isDisabled).isTrue(); + } + + @Test + public void appIsDisabled_stateDisabledUser_returnsTrue() throws Exception { + ApplicationInfo applicationInfo = new ApplicationInfo(); + applicationInfo.flags = 0; + applicationInfo.uid = Process.FIRST_APPLICATION_UID; + applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; + applicationInfo.packageName = TEST_PACKAGE_NAME; + + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER; + + boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub); + + assertThat(isDisabled).isTrue(); + } + + @Test + public void appIsDisabled_stateDisabledUntilUsed_returnsTrue() throws Exception { + ApplicationInfo applicationInfo = new ApplicationInfo(); + applicationInfo.flags = 0; + applicationInfo.uid = Process.FIRST_APPLICATION_UID; + applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME; + applicationInfo.packageName = TEST_PACKAGE_NAME; + + PackageManagerStub.sApplicationEnabledSetting = + PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED; + + boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub); + + assertThat(isDisabled).isTrue(); + } + + @Test public void appIsStopped_returnsTrue() throws Exception { ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.flags |= ApplicationInfo.FLAG_STOPPED; diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java index e3faa5280859..87b0db80103a 100644 --- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java @@ -22,7 +22,7 @@ import static android.os.UserManagerInternal.CAMERA_DISABLED_GLOBALLY; import static android.os.UserManagerInternal.CAMERA_DISABLED_LOCALLY; import static android.os.UserManagerInternal.CAMERA_NOT_DISABLED; -import static com.android.server.testutis.TestUtils.assertExpectException; +import static com.android.server.testutils.TestUtils.assertExpectException; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; @@ -54,11 +54,11 @@ import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.PasswordMetrics; import android.content.BroadcastReceiver; import android.content.ComponentName; -import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.content.pm.StringParceledListSlice; import android.content.pm.UserInfo; import android.graphics.Color; @@ -167,6 +167,11 @@ public class DevicePolicyManagerTest extends DpmTestBase { mServiceContext.binder.callingUid = DpmMockContext.CALLER_UID; when(getServices().packageManager.hasSystemFeature(eq(PackageManager.FEATURE_DEVICE_ADMIN))) .thenReturn(true); + doReturn(Collections.singletonList(new ResolveInfo())) + .when(getServices().packageManager).queryBroadcastReceiversAsUser( + any(Intent.class), + anyInt(), + any(UserHandle.class)); // By default, pretend all users are running and unlocked. when(getServices().userManager.isUserUnlocked(anyInt())).thenReturn(true); @@ -3653,7 +3658,8 @@ public class DevicePolicyManagerTest extends DpmTestBase { // test reset password with token when(getServices().lockPatternUtils.setLockCredentialWithToken(eq(password), - eq(LockPatternUtils.CREDENTIAL_TYPE_PASSWORD), eq(handle), eq(token), + eq(LockPatternUtils.CREDENTIAL_TYPE_PASSWORD), + eq(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED), eq(handle), eq(token), eq(UserHandle.USER_SYSTEM))) .thenReturn(true); assertTrue(dpm.resetPasswordWithToken(admin1, password, token, 0)); diff --git a/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java b/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java index 70d22745b3dc..afe432b96f85 100644 --- a/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java +++ b/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java @@ -32,7 +32,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.pm.PackageManager; import android.os.IDeviceIdleController; import android.os.RemoteException; import android.os.ServiceManager; @@ -117,7 +116,6 @@ public class BackgroundRestrictionsTest { intentFilter.addAction(ACTION_JOB_STARTED); intentFilter.addAction(ACTION_JOB_STOPPED); mContext.registerReceiver(mJobStateChangeReceiver, intentFilter); - setGlobalSwitch(true); setAppOpsModeAllowed(true); setPowerWhiteListed(false); } @@ -133,16 +131,6 @@ public class BackgroundRestrictionsTest { } @Test - public void testGlobalSwitch() throws Exception { - setGlobalSwitch(false); // Job should not stop now. - scheduleAndAssertJobStarted(); - setAppOpsModeAllowed(false); - mIActivityManager.makePackageIdle(TEST_APP_PACKAGE, UserHandle.USER_CURRENT); - assertFalse("Job stopped even when feature switch is off", - awaitJobStop(DEFAULT_WAIT_TIMEOUT)); - } - - @Test public void testPowerWhiteList() throws Exception { scheduleAndAssertJobStarted(); setAppOpsModeAllowed(false); @@ -164,16 +152,10 @@ public class BackgroundRestrictionsTest { cancelJobsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(cancelJobsIntent); mContext.unregisterReceiver(mJobStateChangeReceiver); - setGlobalSwitch(false); setAppOpsModeAllowed(true); setPowerWhiteListed(false); } - private void setGlobalSwitch(boolean enabled) { - Settings.Global.putString(mContext.getContentResolver(), - Settings.Global.JOB_SCHEDULER_CONSTANTS, "bg_jobs_restricted=" + enabled); - } - private void setPowerWhiteListed(boolean whitelist) throws RemoteException { if (whitelist) { mDeviceIdleController.addPowerSaveWhitelistApp(TEST_APP_PACKAGE); @@ -182,7 +164,7 @@ public class BackgroundRestrictionsTest { } } - private void setAppOpsModeAllowed(boolean allow) throws PackageManager.NameNotFoundException { + private void setAppOpsModeAllowed(boolean allow) { mAppOpsManager.setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mTestPackageUid, TEST_APP_PACKAGE, allow ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED); } diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java index 0df834f0469e..0916a335b51e 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java @@ -21,6 +21,7 @@ import static org.mockito.Mockito.mock; import android.app.IActivityManager; import android.content.Context; import android.os.Handler; +import android.os.Looper; import android.os.Process; import android.os.RemoteException; import android.os.storage.IStorageManager; @@ -56,7 +57,7 @@ public class LockSettingsServiceTestable extends LockSettingsService { @Override public Handler getHandler() { - return mock(Handler.class); + return new Handler(Looper.getMainLooper()); } @Override diff --git a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java index fd77de344aa6..2c9aa9d6a245 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java @@ -23,8 +23,9 @@ import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PASSWORD; import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_ENABLED_KEY; import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_HANDLE_KEY; +import static org.mockito.Mockito.verify; -import android.app.admin.DevicePolicyManager; +import android.app.admin.PasswordMetrics; import android.os.RemoteException; import android.os.UserHandle; @@ -272,14 +273,22 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests { long handle = mService.addEscrowToken(TOKEN.getBytes(), PRIMARY_USER_ID); assertFalse(mService.isEscrowTokenActive(handle, PRIMARY_USER_ID)); - mService.verifyCredential(PASSWORD, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, PRIMARY_USER_ID).getResponseCode(); + mService.verifyCredential(PASSWORD, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, + PRIMARY_USER_ID).getResponseCode(); assertTrue(mService.isEscrowTokenActive(handle, PRIMARY_USER_ID)); mService.setLockCredentialWithToken(PATTERN, LockPatternUtils.CREDENTIAL_TYPE_PATTERN, handle, TOKEN.getBytes(), PASSWORD_QUALITY_SOMETHING, PRIMARY_USER_ID); + // Verify DPM gets notified about new device lock + mService.mHandler.runWithScissors(() -> {}, 0 /*now*/); // Flush runnables on handler + PasswordMetrics metric = PasswordMetrics.computeForPassword(PATTERN); + metric.quality = PASSWORD_QUALITY_SOMETHING; + verify(mDevicePolicyManager).setActivePasswordState(metric, PRIMARY_USER_ID); + assertEquals(VerifyCredentialResponse.RESPONSE_OK, - mService.verifyCredential(PATTERN, LockPatternUtils.CREDENTIAL_TYPE_PATTERN, 0, PRIMARY_USER_ID).getResponseCode()); + mService.verifyCredential(PATTERN, LockPatternUtils.CREDENTIAL_TYPE_PATTERN, 0, + PRIMARY_USER_ID).getResponseCode()); assertArrayEquals(storageKey, mStorageManager.getUserUnlockToken(PRIMARY_USER_ID)); } diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java index 9f77297b49dd..d1366144d33b 100644 --- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java @@ -55,11 +55,11 @@ public class UserManagerServiceTest extends AndroidTestCase { public void testWriteReadApplicationRestrictions() throws IOException { AtomicFile atomicFile = new AtomicFile(restrictionsFile); Bundle bundle = createBundle(); - UserManagerService.writeApplicationRestrictionsLP(bundle, atomicFile); + UserManagerService.writeApplicationRestrictionsLAr(bundle, atomicFile); assertTrue(atomicFile.getBaseFile().exists()); String s = FileUtils.readTextFile(restrictionsFile, 10000, ""); System.out.println("restrictionsFile: " + s); - bundle = UserManagerService.readApplicationRestrictionsLP(atomicFile); + bundle = UserManagerService.readApplicationRestrictionsLAr(atomicFile); System.out.println("readApplicationRestrictionsLocked bundle: " + bundle); assertBundle(bundle); } diff --git a/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java b/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java index 2c56a8263a8c..150f7f0c948c 100644 --- a/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java @@ -16,10 +16,14 @@ package com.android.server.pm.dex; +import com.android.server.pm.PackageDexOptimizer; + +import static com.android.server.pm.PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import android.content.pm.ApplicationInfo; import android.support.test.filters.SmallTest; @@ -46,22 +50,35 @@ public class DexoptUtilsTest { private static final String DELEGATE_LAST_CLASS_LOADER_NAME = DelegateLastClassLoader.class.getName(); - private ApplicationInfo createMockApplicationInfo(String baseClassLoader, boolean addSplits, + private static class TestData { + ApplicationInfo info; + boolean[] pathsWithCode; + } + + private TestData createMockApplicationInfo(String baseClassLoader, boolean addSplits, boolean addSplitDependencies) { ApplicationInfo ai = new ApplicationInfo(); String codeDir = "/data/app/mock.android.com"; ai.setBaseCodePath(codeDir + "/base.dex"); ai.classLoaderName = baseClassLoader; ai.privateFlags = ai.privateFlags | ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING; + boolean[] pathsWithCode; + if (!addSplits) { + pathsWithCode = new boolean[] {true}; + } else { + pathsWithCode = new boolean[9]; + Arrays.fill(pathsWithCode, true); + pathsWithCode[7] = false; // config split - if (addSplits) { ai.setSplitCodePaths(new String[]{ codeDir + "/base-1.dex", codeDir + "/base-2.dex", codeDir + "/base-3.dex", codeDir + "/base-4.dex", codeDir + "/base-5.dex", - codeDir + "/base-6.dex"}); + codeDir + "/base-6.dex", + codeDir + "/config-split-7.dex", + codeDir + "/feature-no-deps.dex"}); ai.splitClassLoaderNames = new String[]{ DELEGATE_LAST_CLASS_LOADER_NAME, @@ -69,7 +86,9 @@ public class DexoptUtilsTest { PATH_CLASS_LOADER_NAME, DEX_CLASS_LOADER_NAME, PATH_CLASS_LOADER_NAME, - null}; // A null class loader name should default to PathClassLoader. + null, // A null class loader name should default to PathClassLoader. + null, // The config split gets a null class loader. + null}; // The feature split with no dependency and no specified class loader. if (addSplitDependencies) { ai.splitDependencies = new SparseArray<>(ai.splitClassLoaderNames.length + 1); ai.splitDependencies.put(0, new int[] {-1}); // base has no dependency @@ -79,18 +98,24 @@ public class DexoptUtilsTest { ai.splitDependencies.put(4, new int[] {0}); // split 4 depends on base ai.splitDependencies.put(5, new int[] {0}); // split 5 depends on base ai.splitDependencies.put(6, new int[] {5}); // split 6 depends on 5 + // Do not add the config split to the dependency list. + // Do not add the feature split with no dependency to the dependency list. } } - return ai; + TestData data = new TestData(); + data.info = ai; + data.pathsWithCode = pathsWithCode; + return data; } @Test public void testSplitChain() { - ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, true); + TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, true); String[] sharedLibrary = new String[] {"a.dex", "b.dex"}; - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, sharedLibrary, data.pathsWithCode); - assertEquals(7, contexts.length); + assertEquals(9, contexts.length); assertEquals("PCL[a.dex:b.dex]", contexts[0]); assertEquals("DLC[];DLC[base-2.dex];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[1]); @@ -99,15 +124,18 @@ public class DexoptUtilsTest { assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[4]); assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[5]); assertEquals("PCL[];PCL[base-5.dex];PCL[a.dex:b.dex:base.dex]", contexts[6]); + assertEquals(null, contexts[7]); // config split + assertEquals("PCL[]", contexts[8]); // feature split with no dependency } @Test public void testSplitChainNoSplitDependencies() { - ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, false); + TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, false); String[] sharedLibrary = new String[] {"a.dex", "b.dex"}; - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, sharedLibrary, data.pathsWithCode); - assertEquals(7, contexts.length); + assertEquals(9, contexts.length); assertEquals("PCL[a.dex:b.dex]", contexts[0]); assertEquals("PCL[a.dex:b.dex:base.dex]", contexts[1]); assertEquals("PCL[a.dex:b.dex:base.dex:base-1.dex]", contexts[2]); @@ -119,15 +147,21 @@ public class DexoptUtilsTest { assertEquals( "PCL[a.dex:b.dex:base.dex:base-1.dex:base-2.dex:base-3.dex:base-4.dex:base-5.dex]", contexts[6]); + assertEquals(null, contexts[7]); // config split + assertEquals( + "PCL[a.dex:b.dex:base.dex:base-1.dex:base-2.dex:base-3.dex:base-4.dex:base-5.dex:base-6.dex:config-split-7.dex]", + contexts[8]); // feature split with no dependency } @Test public void testSplitChainNoIsolationNoSharedLibrary() { - ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, true); - ai.privateFlags = ai.privateFlags & (~ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING); - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, null); + TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, true); + data.info.privateFlags = data.info.privateFlags + & (~ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, null, data.pathsWithCode); - assertEquals(7, contexts.length); + assertEquals(9, contexts.length); assertEquals("PCL[]", contexts[0]); assertEquals("PCL[base.dex]", contexts[1]); assertEquals("PCL[base.dex:base-1.dex]", contexts[2]); @@ -137,14 +171,20 @@ public class DexoptUtilsTest { assertEquals( "PCL[base.dex:base-1.dex:base-2.dex:base-3.dex:base-4.dex:base-5.dex]", contexts[6]); + assertEquals(null, contexts[7]); // config split + assertEquals( + "PCL[base.dex:base-1.dex:base-2.dex:base-3.dex:base-4.dex:base-5.dex:base-6.dex:config-split-7.dex]", + contexts[8]); // feature split with no dependency } + @Test public void testSplitChainNoSharedLibraries() { - ApplicationInfo ai = createMockApplicationInfo( + TestData data = createMockApplicationInfo( DELEGATE_LAST_CLASS_LOADER_NAME, true, true); - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, null); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, null, data.pathsWithCode); - assertEquals(7, contexts.length); + assertEquals(9, contexts.length); assertEquals("DLC[]", contexts[0]); assertEquals("DLC[];DLC[base-2.dex];PCL[base-4.dex];DLC[base.dex]", contexts[1]); assertEquals("DLC[];PCL[base-4.dex];DLC[base.dex]", contexts[2]); @@ -152,16 +192,19 @@ public class DexoptUtilsTest { assertEquals("PCL[];DLC[base.dex]", contexts[4]); assertEquals("PCL[];DLC[base.dex]", contexts[5]); assertEquals("PCL[];PCL[base-5.dex];DLC[base.dex]", contexts[6]); + assertEquals(null, contexts[7]); // config split + assertEquals("PCL[]", contexts[8]); // feature split with no dependency } @Test public void testSplitChainWithNullPrimaryClassLoader() { // A null classLoaderName should mean PathClassLoader. - ApplicationInfo ai = createMockApplicationInfo(null, true, true); + TestData data = createMockApplicationInfo(null, true, true); String[] sharedLibrary = new String[] {"a.dex", "b.dex"}; - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, sharedLibrary, data.pathsWithCode); - assertEquals(7, contexts.length); + assertEquals(9, contexts.length); assertEquals("PCL[a.dex:b.dex]", contexts[0]); assertEquals("DLC[];DLC[base-2.dex];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[1]); assertEquals("DLC[];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[2]); @@ -169,13 +212,16 @@ public class DexoptUtilsTest { assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[4]); assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[5]); assertEquals("PCL[];PCL[base-5.dex];PCL[a.dex:b.dex:base.dex]", contexts[6]); + assertEquals(null, contexts[7]); // config split + assertEquals("PCL[]", contexts[8]); // feature split with no dependency } @Test public void tesNoSplits() { - ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, false, false); + TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, false, false); String[] sharedLibrary = new String[] {"a.dex", "b.dex"}; - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, sharedLibrary, data.pathsWithCode); assertEquals(1, contexts.length); assertEquals("PCL[a.dex:b.dex]", contexts[0]); @@ -183,9 +229,10 @@ public class DexoptUtilsTest { @Test public void tesNoSplitsNullClassLoaderName() { - ApplicationInfo ai = createMockApplicationInfo(null, false, false); + TestData data = createMockApplicationInfo(null, false, false); String[] sharedLibrary = new String[] {"a.dex", "b.dex"}; - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, sharedLibrary, data.pathsWithCode); assertEquals(1, contexts.length); assertEquals("PCL[a.dex:b.dex]", contexts[0]); @@ -193,10 +240,11 @@ public class DexoptUtilsTest { @Test public void tesNoSplitDelegateLast() { - ApplicationInfo ai = createMockApplicationInfo( + TestData data = createMockApplicationInfo( DELEGATE_LAST_CLASS_LOADER_NAME, false, false); String[] sharedLibrary = new String[] {"a.dex", "b.dex"}; - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, sharedLibrary, data.pathsWithCode); assertEquals(1, contexts.length); assertEquals("DLC[a.dex:b.dex]", contexts[0]); @@ -204,8 +252,9 @@ public class DexoptUtilsTest { @Test public void tesNoSplitsNoSharedLibraries() { - ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, false, false); - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, null); + TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, false, false); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, null, data.pathsWithCode); assertEquals(1, contexts.length); assertEquals("PCL[]", contexts[0]); @@ -213,15 +262,55 @@ public class DexoptUtilsTest { @Test public void tesNoSplitDelegateLastNoSharedLibraries() { - ApplicationInfo ai = createMockApplicationInfo( + TestData data = createMockApplicationInfo( DELEGATE_LAST_CLASS_LOADER_NAME, false, false); - String[] contexts = DexoptUtils.getClassLoaderContexts(ai, null); + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, null, data.pathsWithCode); assertEquals(1, contexts.length); assertEquals("DLC[]", contexts[0]); } @Test + public void testContextWithNoCode() { + TestData data = createMockApplicationInfo(null, true, false); + Arrays.fill(data.pathsWithCode, false); + + String[] sharedLibrary = new String[] {"a.dex", "b.dex"}; + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, sharedLibrary, data.pathsWithCode); + + assertEquals(9, contexts.length); + assertEquals(null, contexts[0]); + assertEquals(null, contexts[1]); + assertEquals(null, contexts[2]); + assertEquals(null, contexts[3]); + assertEquals(null, contexts[4]); + assertEquals(null, contexts[5]); + assertEquals(null, contexts[6]); + assertEquals(null, contexts[7]); + } + + @Test + public void testContextBaseNoCode() { + TestData data = createMockApplicationInfo(null, true, true); + data.pathsWithCode[0] = false; + String[] sharedLibrary = new String[] {"a.dex", "b.dex"}; + String[] contexts = DexoptUtils.getClassLoaderContexts( + data.info, sharedLibrary, data.pathsWithCode); + + assertEquals(9, contexts.length); + assertEquals(null, contexts[0]); + assertEquals("DLC[];DLC[base-2.dex];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[1]); + assertEquals("DLC[];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[2]); + assertEquals("PCL[];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[3]); + assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[4]); + assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[5]); + assertEquals("PCL[];PCL[base-5.dex];PCL[a.dex:b.dex:base.dex]", contexts[6]); + assertEquals(null, contexts[7]); + } + + @Test public void testProcessContextForDexLoad() { List<String> classLoaders = Arrays.asList( DELEGATE_LAST_CLASS_LOADER_NAME, @@ -284,4 +373,49 @@ public class DexoptUtilsTest { } assertTrue(gotException); } + + @Test + public void testEncodeClassLoader() { + assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoader( + SKIP_SHARED_LIBRARY_CHECK, "dalvik.system.PathClassLoader")); + assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoader( + SKIP_SHARED_LIBRARY_CHECK, "dalvik.system.DexClassLoader")); + assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoader( + SKIP_SHARED_LIBRARY_CHECK, "dalvik.system.DelegateLastClassLoader")); + assertEquals("PCL[xyz]", DexoptUtils.encodeClassLoader("xyz", + "dalvik.system.PathClassLoader")); + assertEquals("PCL[xyz]", DexoptUtils.encodeClassLoader("xyz", + "dalvik.system.DexClassLoader")); + assertEquals("DLC[xyz]", DexoptUtils.encodeClassLoader("xyz", + "dalvik.system.DelegateLastClassLoader")); + assertEquals("PCL[xyz]", DexoptUtils.encodeClassLoader("xyz", null)); + assertEquals("abc[xyz]", DexoptUtils.encodeClassLoader("xyz", "abc")); + + try { + DexoptUtils.encodeClassLoader(null, "abc"); + fail(); // Exception should be caught. + } catch (NullPointerException expected) {} + } + + @Test + public void testEncodeClassLoaderChain() { + assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoaderChain( + SKIP_SHARED_LIBRARY_CHECK, "PCL[a]")); + assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoaderChain("PCL[a]", + SKIP_SHARED_LIBRARY_CHECK)); + assertEquals("PCL[a];DLC[b]", DexoptUtils.encodeClassLoaderChain("PCL[a]", + "DLC[b]")); + assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoaderChain("PCL[a]", + SKIP_SHARED_LIBRARY_CHECK)); + + try { + DexoptUtils.encodeClassLoaderChain("a", null); + fail(); // exception is expected + } catch (NullPointerException expected) {} + + try { + DexoptUtils.encodeClassLoaderChain(null, "b"); + fail(); // exception is expected + } catch (NullPointerException expected) {} + } } diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java index 14b1ce1662c7..4559660351b0 100644 --- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java @@ -33,6 +33,10 @@ import org.junit.rules.TemporaryFolder; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import static android.os.PowerManagerInternal.WAKEFULNESS_ASLEEP; +import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE; +import static android.os.PowerManagerInternal.WAKEFULNESS_DOZING; +import static android.os.PowerManagerInternal.WAKEFULNESS_DREAMING; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.eq; @@ -83,4 +87,33 @@ public class PowerManagerServiceTest extends AndroidTestCase { SystemProperties.set(TEST_LAST_REBOOT_PROPERTY, ""); assertThat(reason).isEqualTo(PowerManager.SHUTDOWN_REASON_THERMAL_SHUTDOWN); } + + @SmallTest + public void testGetDesiredScreenPolicy_WithVR() throws Exception { + // Brighten up the screen + mService.setWakefulnessLocked(WAKEFULNESS_AWAKE, 0); + assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo( + DisplayPowerRequest.POLICY_BRIGHT); + + // Move to VR + mService.setVrModeEnabled(true); + assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo( + DisplayPowerRequest.POLICY_VR); + + // Then take a nap + mService.setWakefulnessLocked(WAKEFULNESS_ASLEEP, 0); + assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo( + DisplayPowerRequest.POLICY_OFF); + + // Wake up to VR + mService.setWakefulnessLocked(WAKEFULNESS_AWAKE, 0); + assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo( + DisplayPowerRequest.POLICY_VR); + + // And back to normal + mService.setVrModeEnabled(false); + assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo( + DisplayPowerRequest.POLICY_BRIGHT); + + } } diff --git a/services/tests/servicestests/src/com/android/server/testutils/OffsettableClock.java b/services/tests/servicestests/src/com/android/server/testutils/OffsettableClock.java new file mode 100644 index 000000000000..8dabbc4d4356 --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/testutils/OffsettableClock.java @@ -0,0 +1,79 @@ +/* + * 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.server.testutils; + +import android.os.SystemClock; + +import java.util.function.LongSupplier; + +/** + * A time supplier (in the format of a {@code long} as the amount of milliseconds) similar + * to {@link SystemClock#uptimeMillis()}, but with the ability to {@link #fastForward} + * and {@link #rewind} + * + * Implements {@link LongSupplier} to be interchangeable with {@code SystemClock::uptimeMillis} + * + * Can be provided to {@link TestHandler} to "mock time" for the delayed execution testing + * + * @see OffsettableClock.Stopped for a version of this clock that does not advance on its own + */ +public class OffsettableClock implements LongSupplier { + private long mOffset = 0L; + + /** + * @return Current time in milliseconds, according to this clock + */ + public long now() { + return realNow() + mOffset; + } + + /** + * Can be overriden with a constant for a clock that stands still, and is only ever moved + * manually + */ + public long realNow() { + return SystemClock.uptimeMillis(); + } + + public void fastForward(long timeMs) { + mOffset += timeMs; + } + public void rewind(long timeMs) { + fastForward(-timeMs); + } + public void reset() { + mOffset = 0; + } + + /** @deprecated Only present for {@link LongSupplier} contract */ + @Override + @Deprecated + public long getAsLong() { + return now(); + } + + /** + * An {@link OffsettableClock} that does not advance with real time, and can only be + * advanced manually via {@link #fastForward} + */ + public static class Stopped extends OffsettableClock { + @Override + public long realNow() { + return 0L; + } + } +} diff --git a/services/tests/servicestests/src/com/android/server/testutils/TestHandler.java b/services/tests/servicestests/src/com/android/server/testutils/TestHandler.java new file mode 100644 index 000000000000..2d4bc0f8b7d0 --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/testutils/TestHandler.java @@ -0,0 +1,156 @@ +/* + * 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.server.testutils; + + +import static android.util.ExceptionUtils.getRootCause; +import static android.util.ExceptionUtils.propagate; + +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; +import android.util.ArrayMap; + +import java.util.Map; +import java.util.PriorityQueue; +import java.util.function.LongSupplier; + +/** + * A test {@link Handler} that stores incoming {@link Message}s and {@link Runnable callbacks} + * in a {@link PriorityQueue} based on time, to be manually processed later in a correct order + * either all together with {@link #flush}, or only those due at the current time with + * {@link #timeAdvance}. + * + * For the latter use case this also supports providing a custom clock (in a format of a + * milliseconds-returning {@link LongSupplier}), that will be used for storing the messages' + * timestamps to be posted at, and checked against during {@link #timeAdvance}. + * + * This allows to test code that uses {@link Handler}'s delayed invocation capabilities, such as + * {@link Handler#sendMessageDelayed} or {@link Handler#postDelayed} without resorting to + * synchronously {@link Thread#sleep}ing in your test. + * + * @see OffsettableClock for a useful custom clock implementation to use with this handler + */ +public class TestHandler extends Handler { + private static final LongSupplier DEFAULT_CLOCK = SystemClock::uptimeMillis; + + private final PriorityQueue<MsgInfo> mMessages = new PriorityQueue<>(); + /** + * Map of: {@code message id -> count of such messages currently pending } + */ + // Boxing is ok here - both msg ids and their pending counts tend to be well below 128 + private final Map<Integer, Integer> mPendingMsgTypeCounts = new ArrayMap<>(); + private final LongSupplier mClock; + + public TestHandler(Callback callback) { + this(callback, DEFAULT_CLOCK); + } + + public TestHandler(Callback callback, LongSupplier clock) { + super(callback); + mClock = clock; + } + + @Override + public boolean sendMessageAtTime(Message msg, long uptimeMillis) { + mPendingMsgTypeCounts.put(msg.what, + mPendingMsgTypeCounts.getOrDefault(msg.what, 0) + 1); + + // uptimeMillis is an absolute time obtained as SystemClock.uptimeMillis() + offsetMillis + // if custom clock is given, recalculate the time with regards to it + if (mClock != DEFAULT_CLOCK) { + uptimeMillis = uptimeMillis - SystemClock.uptimeMillis() + mClock.getAsLong(); + } + + // post a dummy queue entry to keep track of message removal + return super.sendMessageAtTime(msg, Long.MAX_VALUE) + && mMessages.add(new MsgInfo(Message.obtain(msg), uptimeMillis)); + } + + /** @see TestHandler */ + public void timeAdvance() { + long now = mClock.getAsLong(); + while (!mMessages.isEmpty() && mMessages.peek().sendTime <= now) { + dispatch(mMessages.poll()); + } + } + + /** + * Dispatch all messages in order + * + * @see TestHandler + */ + public void flush() { + MsgInfo msg; + while ((msg = mMessages.poll()) != null) { + dispatch(msg); + } + } + + public PriorityQueue<MsgInfo> getPendingMessages() { + return new PriorityQueue<>(mMessages); + } + + private void dispatch(MsgInfo msg) { + int msgId = msg.message.what; + + if (!hasMessages(msgId)) { + // Handler.removeMessages(msgId) must have been called + return; + } + + try { + Integer pendingMsgCount = mPendingMsgTypeCounts.getOrDefault(msgId, 0); + if (pendingMsgCount <= 1) { + removeMessages(msgId); + } + mPendingMsgTypeCounts.put(msgId, pendingMsgCount - 1); + + dispatchMessage(msg.message); + } catch (Throwable t) { + // Append stack trace of this message being posted as a cause for a helpful + // test error message + throw propagate(getRootCause(t).initCause(msg.postPoint)); + } finally { + msg.message.recycle(); + } + } + + private class MsgInfo implements Comparable<MsgInfo> { + public final Message message; + public final long sendTime; + public final RuntimeException postPoint; + + private MsgInfo(Message message, long sendTime) { + this.message = message; + this.sendTime = sendTime; + this.postPoint = new RuntimeException("Message originated from here:"); + } + + @Override + public int compareTo(MsgInfo o) { + return (int) (sendTime - o.sendTime); + } + + @Override + public String toString() { + return "MsgInfo{" + + "message=" + message + + ", sendTime=" + sendTime + + '}'; + } + } +} diff --git a/services/tests/servicestests/src/com/android/server/testutis/TestUtils.java b/services/tests/servicestests/src/com/android/server/testutils/TestUtils.java index 88289888b0dd..b200293ee916 100644 --- a/services/tests/servicestests/src/com/android/server/testutis/TestUtils.java +++ b/services/tests/servicestests/src/com/android/server/testutils/TestUtils.java @@ -13,12 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.server.testutis; +package com.android.server.testutils; import android.test.MoreAsserts; import junit.framework.Assert; +import org.mockito.Mockito; +import org.mockito.stubbing.Answer; + public class TestUtils { private TestUtils() { } @@ -44,4 +47,17 @@ public class TestUtils { Assert.fail("Expected exception type " + expectedExceptionType.getName() + " was not thrown"); } + + /** + * EasyMock-style "strict" mock that throws immediately on any interaction that was not + * explicitly allowed. + * + * You can allow certain method calls on a whitelist basis by stubbing them e.g. with + * {@link Mockito#doAnswer}, {@link Mockito#doNothing}, etc. + */ + public static <T> T strictMock(Class<T> c) { + return Mockito.mock(c, (Answer) invocation -> { + throw new AssertionError("Unexpected invocation: " + invocation); + }); + } } diff --git a/services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java b/services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java index 38142d3681b6..7d73e82eaf76 100644 --- a/services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java +++ b/services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java @@ -107,7 +107,7 @@ public class PackageTrackerTest { mFakeIntentHelper.assertNotInitialized(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); } @Test @@ -119,7 +119,7 @@ public class PackageTrackerTest { mPackageTracker.start(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); try { // This call should also not be allowed and will throw an exception if tracking is @@ -129,7 +129,7 @@ public class PackageTrackerTest { } catch (IllegalStateException expected) {} // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); } @Test @@ -141,14 +141,14 @@ public class PackageTrackerTest { mPackageTracker.start(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); // Receiving a check result when tracking is disabled should cause the storage to be // reset. mPackageTracker.recordCheckResult(null /* checkToken */, true /* success */); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); // Assert the storage was reset. checkPackageStorageStatusIsInitialOrReset(); @@ -166,13 +166,13 @@ public class PackageTrackerTest { mPackageTracker.start(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); // Receiving a check result when tracking is disabled should cause the storage to be reset. mPackageTracker.recordCheckResult(createArbitraryCheckToken(), true /* success */); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); // Assert the storage was reset. checkPackageStorageStatusIsInitialOrReset(); @@ -195,7 +195,7 @@ public class PackageTrackerTest { mFakeIntentHelper.assertNotInitialized(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); } @Test @@ -215,7 +215,7 @@ public class PackageTrackerTest { mFakeIntentHelper.assertNotInitialized(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); } @Test @@ -235,7 +235,7 @@ public class PackageTrackerTest { mFakeIntentHelper.assertNotInitialized(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); } @Test @@ -255,7 +255,7 @@ public class PackageTrackerTest { mFakeIntentHelper.assertNotInitialized(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); } @Test @@ -289,7 +289,7 @@ public class PackageTrackerTest { mFakeIntentHelper.assertUpdateNotTriggered(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); // Assert the storage was not touched. checkPackageStorageStatusIsInitialOrReset(); @@ -325,7 +325,7 @@ public class PackageTrackerTest { mFakeIntentHelper.assertUpdateNotTriggered(); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); // Assert the storage was not touched. checkPackageStorageStatusIsInitialOrReset(); @@ -416,7 +416,7 @@ public class PackageTrackerTest { mPackageTracker.recordCheckResult(null /* checkToken */, success); // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); // Assert the storage was reset. checkPackageStorageStatusIsInitialOrReset(); @@ -627,7 +627,7 @@ public class PackageTrackerTest { mPackageTracker.recordCheckResult(token1, true /* success */); // Reliability triggering should still be enabled. - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); // Check the expected storage state. checkPackageStorageStatus(PackageStatus.CHECK_STARTED, packageVersions2); @@ -743,7 +743,7 @@ public class PackageTrackerTest { // Under the covers we expect it to fail to update because the storage should recognize that // the token is no longer valid. - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); // Peek inside the package tracker to make sure it is tracking failure counts properly. assertEquals(1, mPackageTracker.getCheckFailureCountForTests()); @@ -766,7 +766,7 @@ public class PackageTrackerTest { checkPackageStorageStatusIsInitialOrReset(); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did trigger an update. checkUpdateCheckTriggered(packageVersions); @@ -803,7 +803,7 @@ public class PackageTrackerTest { checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_SUCCESS, packageVersions); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did not attempt to trigger an update. mFakeIntentHelper.assertUpdateNotTriggered(); @@ -843,7 +843,7 @@ public class PackageTrackerTest { checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_FAILURE, oldPackageVersions); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did trigger an update. checkUpdateCheckTriggered(currentPackageVersions); @@ -890,7 +890,7 @@ public class PackageTrackerTest { for (int i = 0; i < retriesAllowed + 1; i++) { // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did trigger an update. checkUpdateCheckTriggered(currentPackageVersions); @@ -912,9 +912,9 @@ public class PackageTrackerTest { // Check reliability triggering is in the correct state. if (i <= retriesAllowed) { - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); } else { - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); } } } @@ -950,7 +950,7 @@ public class PackageTrackerTest { // Fail (retries - 1) times. for (int i = 0; i < retriesAllowed - 1; i++) { // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did trigger an update. checkUpdateCheckTriggered(currentPackageVersions); @@ -971,11 +971,11 @@ public class PackageTrackerTest { currentPackageVersions); // Check reliability triggering is still enabled. - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); } // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did trigger an update. checkUpdateCheckTriggered(currentPackageVersions); @@ -1023,7 +1023,7 @@ public class PackageTrackerTest { checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_FAILURE, oldPackageVersions); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did trigger an update. checkUpdateCheckTriggered(currentPackageVersions); @@ -1033,18 +1033,18 @@ public class PackageTrackerTest { mFakeClock.incrementClock(checkDelayMillis - 1); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did not trigger an update. mFakeIntentHelper.assertUpdateNotTriggered(); checkPackageStorageStatus(PackageStatus.CHECK_STARTED, currentPackageVersions); - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); // Increment the clock slightly more. Should now consider the response overdue. mFakeClock.incrementClock(2); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Triggering should have happened. checkUpdateCheckTriggered(currentPackageVersions); @@ -1096,7 +1096,7 @@ public class PackageTrackerTest { mFakeClock.incrementClock(checkDelayMillis + 1); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker triggered an update. checkUpdateCheckTriggered(newPackageVersions); @@ -1154,18 +1154,18 @@ public class PackageTrackerTest { mFakeClock.incrementClock(checkDelayMillis - 1); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Assert the PackageTracker did not trigger an update. mFakeIntentHelper.assertUpdateNotTriggered(); checkPackageStorageStatus(PackageStatus.CHECK_STARTED, newPackageVersions); - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); // Increment the clock slightly more. Should now consider the response overdue. mFakeClock.incrementClock(2); // Simulate a reliability trigger. - mFakeIntentHelper.simulateReliabilityTrigger(); + mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */); // Triggering should have happened. checkUpdateCheckTriggered(newPackageVersions); @@ -1202,7 +1202,7 @@ public class PackageTrackerTest { // If an update check was triggered reliability triggering should always be enabled to // ensure that it can be completed if it fails. - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); // Check the expected storage state. checkPackageStorageStatus(PackageStatus.CHECK_STARTED, packageVersions); @@ -1210,7 +1210,7 @@ public class PackageTrackerTest { private void checkUpdateCheckFailed(PackageVersions packageVersions) { // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); // Assert the storage was updated. checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_FAILURE, packageVersions); @@ -1218,7 +1218,7 @@ public class PackageTrackerTest { private void checkUpdateCheckSuccessful(PackageVersions packageVersions) { // Check reliability triggering state. - mFakeIntentHelper.assertReliabilityTriggeringDisabled(); + mFakeIntentHelper.assertReliabilityTriggerNotScheduled(); // Assert the storage was updated. checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_SUCCESS, packageVersions); @@ -1345,7 +1345,7 @@ public class PackageTrackerTest { mFakeIntentHelper.assertInitialized(UPDATE_APP_PACKAGE_NAME, DATA_APP_PACKAGE_NAME); // Assert that reliability tracking is always enabled after initialization. - mFakeIntentHelper.assertReliabilityTriggeringEnabled(); + mFakeIntentHelper.assertReliabilityTriggerScheduled(); } private void checkPackageStorageStatus( @@ -1368,34 +1368,34 @@ public class PackageTrackerTest { */ private static class FakeIntentHelper implements IntentHelper { - private Listener mListener; + private PackageTracker mPackageTracker; private String mUpdateAppPackageName; private String mDataAppPackageName; private CheckToken mLastToken; - private boolean mReliabilityTriggeringEnabled; + private boolean mReliabilityTriggerScheduled; @Override public void initialize(String updateAppPackageName, String dataAppPackageName, - Listener listener) { + PackageTracker packageTracker) { assertNotNull(updateAppPackageName); assertNotNull(dataAppPackageName); - assertNotNull(listener); - mListener = listener; + assertNotNull(packageTracker); + mPackageTracker = packageTracker; mUpdateAppPackageName = updateAppPackageName; mDataAppPackageName = dataAppPackageName; } public void assertInitialized( String expectedUpdateAppPackageName, String expectedDataAppPackageName) { - assertNotNull(mListener); + assertNotNull(mPackageTracker); assertEquals(expectedUpdateAppPackageName, mUpdateAppPackageName); assertEquals(expectedDataAppPackageName, mDataAppPackageName); } public void assertNotInitialized() { - assertNull(mListener); + assertNull(mPackageTracker); } @Override @@ -1407,21 +1407,21 @@ public class PackageTrackerTest { } @Override - public void enableReliabilityTriggering() { - mReliabilityTriggeringEnabled = true; + public void scheduleReliabilityTrigger(long minimumDelayMillis) { + mReliabilityTriggerScheduled = true; } @Override - public void disableReliabilityTriggering() { - mReliabilityTriggeringEnabled = false; + public void unscheduleReliabilityTrigger() { + mReliabilityTriggerScheduled = false; } - public void assertReliabilityTriggeringEnabled() { - assertTrue(mReliabilityTriggeringEnabled); + public void assertReliabilityTriggerScheduled() { + assertTrue(mReliabilityTriggerScheduled); } - public void assertReliabilityTriggeringDisabled() { - assertFalse(mReliabilityTriggeringEnabled); + public void assertReliabilityTriggerNotScheduled() { + assertFalse(mReliabilityTriggerScheduled); } public void assertUpdateTriggered() { @@ -1440,11 +1440,7 @@ public class PackageTrackerTest { } public void simulatePackageUpdatedEvent() { - mListener.triggerUpdateIfNeeded(true); - } - - public void simulateReliabilityTrigger() { - mListener.triggerUpdateIfNeeded(false); + mPackageTracker.triggerUpdateIfNeeded(true /* packageChanged */); } } diff --git a/services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java index 2887e3bb520f..d09d0c8d9e5c 100644 --- a/services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java @@ -585,7 +585,39 @@ public class RulesManagerServiceTest { verifyNoPackageTrackerCallsMade(); // Set up the installer. - configureStageUninstallExpectation(true /* success */); + configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_SUCCESS); + + // Simulate the async execution. + mFakeExecutor.simulateAsyncExecutionOfLastCommand(); + + // Verify the expected calls were made to other components. + verifyStageUninstallCalled(); + verifyPackageTrackerCalled(token, true /* success */); + + // Check the callback was called. + callback.assertResultReceived(Callback.SUCCESS); + } + + @Test + public void requestUninstall_asyncNothingInstalled() throws Exception { + configureCallerHasPermission(); + + CheckToken token = createArbitraryToken(); + byte[] tokenBytes = token.toByteArray(); + + TestCallback callback = new TestCallback(); + + // Request the uninstall. + assertEquals(RulesManager.SUCCESS, + mRulesManagerService.requestUninstall(tokenBytes, callback)); + + // Assert nothing has happened yet. + callback.assertNoResultReceived(); + verifyNoInstallerCallsMade(); + verifyNoPackageTrackerCallsMade(); + + // Set up the installer. + configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_NOTHING_INSTALLED); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); @@ -613,7 +645,7 @@ public class RulesManagerServiceTest { callback.assertNoResultReceived(); // Set up the installer. - configureStageUninstallExpectation(true /* success */); + configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_SUCCESS); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); @@ -644,7 +676,7 @@ public class RulesManagerServiceTest { callback.assertNoResultReceived(); // Set up the installer. - configureStageUninstallExpectation(false /* success */); + configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_FAIL); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); @@ -849,8 +881,8 @@ public class RulesManagerServiceTest { .thenReturn(resultCode); } - private void configureStageUninstallExpectation(boolean success) throws Exception { - doReturn(success).when(mMockTimeZoneDistroInstaller).stageUninstall(); + private void configureStageUninstallExpectation(int resultCode) throws Exception { + doReturn(resultCode).when(mMockTimeZoneDistroInstaller).stageUninstall(); } private void verifyStageInstallCalled() throws Exception { diff --git a/services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java b/services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java index d378b7c56acb..8a312f64a846 100644 --- a/services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java +++ b/services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java @@ -80,7 +80,7 @@ public class PriorityDumpTest { @Test public void testMissingPriority() { final String[] args = { - "--dump_priority" + "--dump-priority" }; dump(mDumper, mFd, mPw, args); verify(mDumper).dump(same(mFd), same(mPw), same(args)); @@ -89,7 +89,7 @@ public class PriorityDumpTest { @Test public void testInvalidPriorityNoExtraArgs() { final String[] args = { - "--dump_priority", "SUPER_HIGH" + "--dump-priority", "SUPER_HIGH" }; dump(mDumper, mFd, mPw, args); verify(mDumper).dump(same(mFd), same(mPw), same(args)); @@ -98,7 +98,7 @@ public class PriorityDumpTest { @Test public void testInvalidPriorityExtraArgs() { final String[] args = { - "--dump_priority", "SUPER_HIGH", "--high", "--five" + "--dump-priority", "SUPER_HIGH", "--high", "--five" }; dump(mDumper, mFd, mPw, args); verify(mDumper).dump(same(mFd), same(mPw), same(args)); @@ -129,7 +129,7 @@ public class PriorityDumpTest { @Test public void testCriticalNoExtraArgs() { dump(mDumper, mFd, mPw, new String[] { - "--dump_priority", "CRITICAL" + "--dump-priority", "CRITICAL" }); verify(mDumper).dumpCritical(same(mFd), same(mPw), eq(EMPTY_ARGS)); } @@ -137,7 +137,7 @@ public class PriorityDumpTest { @Test public void testCriticalExtraArgs() { dump(mDumper, mFd, mPw, new String[] { - "--dump_priority", "CRITICAL", "--high", "--five" + "--dump-priority", "CRITICAL", "--high", "--five" }); verify(mDumper).dumpCritical(same(mFd), same(mPw), eq(new String[] { "--high", "--five" @@ -147,7 +147,7 @@ public class PriorityDumpTest { @Test public void testHighNoExtraArgs() { dump(mDumper, mFd, mPw, new String[] { - "--dump_priority", "HIGH" + "--dump-priority", "HIGH" }); verify(mDumper).dumpHigh(same(mFd), same(mPw), eq(EMPTY_ARGS)); } @@ -155,7 +155,7 @@ public class PriorityDumpTest { @Test public void testHighExtraArgs() { dump(mDumper, mFd, mPw, new String[] { - "--dump_priority", "HIGH", "--high", "--five" + "--dump-priority", "HIGH", "--high", "--five" }); verify(mDumper).dumpHigh(same(mFd), same(mPw), eq(new String[] { "--high", "--five" @@ -165,7 +165,7 @@ public class PriorityDumpTest { @Test public void testNormalNoExtraArgs() { dump(mDumper, mFd, mPw, new String[] { - "--dump_priority", "NORMAL" + "--dump-priority", "NORMAL" }); verify(mDumper).dumpNormal(same(mFd), same(mPw), eq(EMPTY_ARGS)); } @@ -173,7 +173,7 @@ public class PriorityDumpTest { @Test public void testNormalExtraArgs() { dump(mDumper, mFd, mPw, new String[] { - "--dump_priority", "NORMAL", "--high", "--five" + "--dump-priority", "NORMAL", "--high", "--five" }); verify(mDumper).dumpNormal(same(mFd), same(mPw), eq(new String[] { "--high", "--five" diff --git a/services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java b/services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java index 9d32496c7817..0081214a24da 100644 --- a/services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java @@ -126,6 +126,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { boolean mMovedToFullscreen; boolean mAnimationStarted; boolean mSchedulePipModeChangedOnStart; + boolean mForcePipModeChangedCallback; boolean mAnimationEnded; Rect mAnimationEndFinalStackBounds; boolean mSchedulePipModeChangedOnEnd; @@ -140,6 +141,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { mAnimationStarted = false; mAnimationEnded = false; mAnimationEndFinalStackBounds = null; + mForcePipModeChangedCallback = false; mSchedulePipModeChangedOnStart = false; mSchedulePipModeChangedOnEnd = false; mStackBounds = from; @@ -148,10 +150,11 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { } @Override - public void onAnimationStart(boolean schedulePipModeChangedCallback) { + public void onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate) { mAwaitingAnimationStart = false; mAnimationStarted = true; mSchedulePipModeChangedOnStart = schedulePipModeChangedCallback; + mForcePipModeChangedCallback = forceUpdate; } @Override @@ -232,7 +235,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { return this; } - BoundsAnimationDriver restart(Rect to) { + BoundsAnimationDriver restart(Rect to, boolean expectStartedAndPipModeChangedCallback) { if (mAnimator == null) { throw new IllegalArgumentException("Call start() to start a new animation"); } @@ -251,8 +254,15 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { assertSame(oldAnimator, mAnimator); } - // No animation start for replacing animation - assertTrue(!mTarget.mAnimationStarted); + if (expectStartedAndPipModeChangedCallback) { + // Replacing animation with pending pip mode changed callback, ensure we update + assertTrue(mTarget.mAnimationStarted); + assertTrue(mTarget.mSchedulePipModeChangedOnStart); + assertTrue(mTarget.mForcePipModeChangedCallback); + } else { + // No animation start for replacing animation + assertTrue(!mTarget.mAnimationStarted); + } mTarget.mAnimationStarted = true; return this; } @@ -467,7 +477,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING) .expectStarted(!SCHEDULE_PIP_MODE_CHANGED) .update(0.25f) - .restart(BOUNDS_FLOATING) + .restart(BOUNDS_FLOATING, false /* expectStartedAndPipModeChangedCallback */) .end() .expectEnded(SCHEDULE_PIP_MODE_CHANGED, !MOVE_TO_FULLSCREEN); } @@ -478,7 +488,8 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING) .expectStarted(!SCHEDULE_PIP_MODE_CHANGED) .update(0.25f) - .restart(BOUNDS_SMALLER_FLOATING) + .restart(BOUNDS_SMALLER_FLOATING, + false /* expectStartedAndPipModeChangedCallback */) .end() .expectEnded(SCHEDULE_PIP_MODE_CHANGED, !MOVE_TO_FULLSCREEN); } @@ -486,10 +497,12 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { @UiThreadTest @Test public void testFullscreenToFloatingCancelFromAnimationToFullscreenBounds() throws Exception { + // When animating from fullscreen and the animation is interruped, we expect the animation + // start callback to be made, with a forced pip mode change callback mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING) .expectStarted(!SCHEDULE_PIP_MODE_CHANGED) .update(0.25f) - .restart(BOUNDS_FULL) + .restart(BOUNDS_FULL, true /* expectStartedAndPipModeChangedCallback */) .end() .expectEnded(!SCHEDULE_PIP_MODE_CHANGED, MOVE_TO_FULLSCREEN); } @@ -512,7 +525,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL) .expectStarted(SCHEDULE_PIP_MODE_CHANGED) .update(0.25f) - .restart(BOUNDS_FULL) + .restart(BOUNDS_FULL, false /* expectStartedAndPipModeChangedCallback */) .end() .expectEnded(!SCHEDULE_PIP_MODE_CHANGED, MOVE_TO_FULLSCREEN); } @@ -523,7 +536,8 @@ public class BoundsAnimationControllerTests extends WindowTestsBase { mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL) .expectStarted(SCHEDULE_PIP_MODE_CHANGED) .update(0.25f) - .restart(BOUNDS_SMALLER_FLOATING) + .restart(BOUNDS_SMALLER_FLOATING, + false /* expectStartedAndPipModeChangedCallback */) .end() .expectEnded(SCHEDULE_PIP_MODE_CHANGED, !MOVE_TO_FULLSCREEN); } diff --git a/services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java b/services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java index 0f9b7217bd24..192e1564ae8d 100644 --- a/services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java @@ -16,24 +16,31 @@ package com.android.server.wm; - -import org.junit.Test; -import org.junit.runner.RunWith; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT; +import static android.content.res.Configuration.EMPTY; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import android.content.res.Configuration; import android.platform.test.annotations.Presubmit; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; +import org.junit.Test; +import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.List; -import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; -import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; -import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE; -import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT; -import static org.junit.Assert.assertEquals; - /** * Test class for {@link ConfigurationContainer}. * @@ -49,22 +56,22 @@ public class ConfigurationContainerTests { public void testConfigurationInit() throws Exception { // Check root container initial config. final TestConfigurationContainer root = new TestConfigurationContainer(); - assertEquals(Configuration.EMPTY, root.getOverrideConfiguration()); - assertEquals(Configuration.EMPTY, root.getMergedOverrideConfiguration()); - assertEquals(Configuration.EMPTY, root.getConfiguration()); + assertEquals(EMPTY, root.getOverrideConfiguration()); + assertEquals(EMPTY, root.getMergedOverrideConfiguration()); + assertEquals(EMPTY, root.getConfiguration()); // Check child initial config. final TestConfigurationContainer child1 = root.addChild(); - assertEquals(Configuration.EMPTY, child1.getOverrideConfiguration()); - assertEquals(Configuration.EMPTY, child1.getMergedOverrideConfiguration()); - assertEquals(Configuration.EMPTY, child1.getConfiguration()); + assertEquals(EMPTY, child1.getOverrideConfiguration()); + assertEquals(EMPTY, child1.getMergedOverrideConfiguration()); + assertEquals(EMPTY, child1.getConfiguration()); // Check child initial config if root has overrides. final Configuration rootOverrideConfig = new Configuration(); rootOverrideConfig.fontScale = 1.3f; root.onOverrideConfigurationChanged(rootOverrideConfig); final TestConfigurationContainer child2 = root.addChild(); - assertEquals(Configuration.EMPTY, child2.getOverrideConfiguration()); + assertEquals(EMPTY, child2.getOverrideConfiguration()); assertEquals(rootOverrideConfig, child2.getMergedOverrideConfiguration()); assertEquals(rootOverrideConfig, child2.getConfiguration()); @@ -77,7 +84,7 @@ public class ConfigurationContainerTests { rootFullConfig.updateFrom(rootOverrideConfig); final TestConfigurationContainer child3 = root.addChild(); - assertEquals(Configuration.EMPTY, child3.getOverrideConfiguration()); + assertEquals(EMPTY, child3.getOverrideConfiguration()); assertEquals(rootOverrideConfig, child3.getMergedOverrideConfiguration()); assertEquals(rootFullConfig, child3.getConfiguration()); } @@ -201,6 +208,82 @@ public class ConfigurationContainerTests { assertEquals(mergedConfig2, child2.getConfiguration()); } + @Test + public void testSetWindowingMode() throws Exception { + final TestConfigurationContainer root = new TestConfigurationContainer(); + root.setWindowingMode(WINDOWING_MODE_UNDEFINED); + final TestConfigurationContainer child = root.addChild(); + child.setWindowingMode(WINDOWING_MODE_FREEFORM); + assertEquals(WINDOWING_MODE_UNDEFINED, root.getWindowingMode()); + assertEquals(WINDOWING_MODE_FREEFORM, child.getWindowingMode()); + + root.setWindowingMode(WINDOWING_MODE_FULLSCREEN); + assertEquals(WINDOWING_MODE_FULLSCREEN, root.getWindowingMode()); + assertEquals(WINDOWING_MODE_FREEFORM, child.getWindowingMode()); + } + + @Test + public void testSetActivityType() throws Exception { + final TestConfigurationContainer root = new TestConfigurationContainer(); + root.setActivityType(ACTIVITY_TYPE_UNDEFINED); + final TestConfigurationContainer child = root.addChild(); + child.setActivityType(ACTIVITY_TYPE_STANDARD); + assertEquals(ACTIVITY_TYPE_UNDEFINED, root.getActivityType()); + assertEquals(ACTIVITY_TYPE_STANDARD, child.getActivityType()); + + boolean gotException = false; + try { + // Can't change activity type once set. + child.setActivityType(ACTIVITY_TYPE_HOME); + } catch (IllegalStateException e) { + gotException = true; + } + assertTrue("Can't change activity type once set.", gotException); + + // TODO: Commenting out for now until we figure-out a good way to test these rules that + // should only apply to system process. + /* + gotException = false; + try { + // Parent can't change child's activity type once set. + root.setActivityType(ACTIVITY_TYPE_HOME); + } catch (IllegalStateException e) { + gotException = true; + } + assertTrue("Parent can't change activity type once set.", gotException); + assertEquals(ACTIVITY_TYPE_HOME, root.getActivityType()); + + final TestConfigurationContainer child2 = new TestConfigurationContainer(); + child2.setActivityType(ACTIVITY_TYPE_RECENTS); + + gotException = false; + try { + // Can't re-parent to a different activity type. + root.addChild(child2); + } catch (IllegalStateException e) { + gotException = true; + } + assertTrue("Can't re-parent to a different activity type.", gotException); + */ + + } + + @Test + public void testRegisterConfigurationChangeListener() throws Exception { + final TestConfigurationContainer container = new TestConfigurationContainer(); + final TestConfigurationChangeListener listener = new TestConfigurationChangeListener(); + final Configuration config = new Configuration(); + config.windowConfiguration.setWindowingMode(WINDOWING_MODE_FREEFORM); + config.windowConfiguration.setAppBounds(10, 10, 10, 10); + container.onOverrideConfigurationChanged(config); + container.registerConfigurationChangeListener(listener); + // Assert listener got the current config. of the container after it was registered. + assertEquals(config, listener.mOverrideConfiguration); + // Assert listener gets changes to override configuration. + container.onOverrideConfigurationChanged(EMPTY); + assertEquals(EMPTY, listener.mOverrideConfiguration); + } + /** * Contains minimal implementation of {@link ConfigurationContainer}'s abstract behavior needed * for testing. @@ -241,4 +324,13 @@ public class ConfigurationContainerTests { return mParent; } } + + private class TestConfigurationChangeListener implements ConfigurationContainerListener { + + final Configuration mOverrideConfiguration = new Configuration(); + + public void onOverrideConfigurationChanged(Configuration overrideConfiguration) { + mOverrideConfiguration.setTo(overrideConfiguration); + } + } } diff --git a/services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java b/services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java index d9b99eeac6f0..5da322409f83 100644 --- a/services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java @@ -17,6 +17,7 @@ package com.android.server.wm; import android.graphics.Rect; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -60,6 +61,7 @@ public class StackWindowControllerTests extends WindowTestsBase { } @Test + @Ignore("b/65379195") public void testRemoveContainer_deferRemoval() throws Exception { final StackWindowController stackController = createStackControllerOnDisplay(mDisplayContent); diff --git a/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java b/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java index efe766771673..29bbe6eca39f 100644 --- a/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java @@ -29,6 +29,7 @@ import android.platform.test.annotations.Presubmit; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; +import static android.app.ActivityManager.StackId.getWindowingModeForStackId; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -51,9 +52,12 @@ public class TaskStackContainersTests extends WindowTestsBase { @Before public void setUp() throws Exception { super.setUp(); + final Configuration overrideConfig = new Configuration(); + overrideConfig.windowConfiguration.setWindowingMode( + getWindowingModeForStackId(PINNED_STACK_ID, false /* inSplitScreenMode */)); mPinnedStack = new StackWindowController(PINNED_STACK_ID, null, - mDisplayContent.getDisplayId(), true /* onTop */, new Rect(), new Configuration(), - sWm).mContainer; + mDisplayContent.getDisplayId(), true /* onTop */, new Rect(), sWm).mContainer; + mPinnedStack.onOverrideConfigurationChanged(overrideConfig); // Stack should contain visible app window to be considered visible. final Task pinnedTask = createTaskInStack(mPinnedStack, 0 /* userId */); diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java index bd0e0dfb4900..31aad79b5b82 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java @@ -27,8 +27,9 @@ import android.support.test.runner.AndroidJUnit4; import android.view.DisplayInfo; import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOW_CONFIG_APP_BOUNDS; import static android.app.WindowConfiguration.WINDOW_CONFIG_WINDOWING_MODE; import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION; @@ -118,6 +119,17 @@ public class WindowConfigurationTests extends WindowTestsBase { assertEquals(blankWinConfig.compareTo(winConfig1), 1); } + @Test + public void testSetActivityType() throws Exception { + final WindowConfiguration config = new WindowConfiguration(); + config.setActivityType(ACTIVITY_TYPE_HOME); + assertEquals(ACTIVITY_TYPE_HOME, config.getActivityType()); + + // Allowed to change from app process. + config.setActivityType(ACTIVITY_TYPE_STANDARD); + assertEquals(ACTIVITY_TYPE_STANDARD, config.getActivityType()); + } + /** Ensures the configuration app bounds at the root level match the app dimensions. */ @Test public void testAppBounds_RootConfigurationBounds() throws Exception { @@ -197,8 +209,7 @@ public class WindowConfigurationTests extends WindowTestsBase { false /*overrideHeight*/, mDisplayInfo.logicalDensityDpi, config, parentConfig); // Assert that both expected and actual are null or are equal to each other - assertTrue((expectedConfigBounds == null && winConfig.getAppBounds() == null) - || expectedConfigBounds.equals(winConfig.getAppBounds())); + assertEquals(expectedConfigBounds, winConfig.getAppBounds()); } } diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java index f1e15d9c5900..8df7568ebcd9 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java @@ -16,12 +16,16 @@ package com.android.server.wm; +import android.app.WindowConfiguration; +import android.content.res.Configuration; import org.junit.Test; import android.platform.test.annotations.Presubmit; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; +import static android.content.res.Configuration.EMPTY; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @@ -80,4 +84,27 @@ public class WindowContainerControllerTests extends WindowTestsBase { controller.removeContainer(); assertNull(controller.mContainer); } + + @Test + public void testOnOverrideConfigurationChanged() throws Exception { + final WindowContainerController controller = new WindowContainerController(null, sWm); + final WindowContainer container = new WindowContainer(); + + controller.setContainer(container); + assertEquals(controller.mContainer, container); + assertEquals(EMPTY, container.getOverrideConfiguration()); + + final Configuration config = new Configuration(); + config.windowConfiguration.setWindowingMode(WINDOWING_MODE_FREEFORM); + config.windowConfiguration.setAppBounds(10, 10, 10, 10); + + // Assert that the config change through the controller is propagated to the container. + controller.onOverrideConfigurationChanged(config); + assertEquals(config, container.getOverrideConfiguration()); + + // Assert the container configuration isn't changed after removal from the controller. + controller.removeContainer(); + controller.onOverrideConfigurationChanged(EMPTY); + assertEquals(config, container.getOverrideConfiguration()); + } } diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java index 6e253e743ddb..5d2bb4d92620 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java @@ -75,7 +75,7 @@ public class WindowFrameTests extends WindowTestsBase { final Rect mInsetBounds = new Rect(); boolean mFullscreenForTest = true; TaskWithBounds(Rect bounds) { - super(0, mStubStack, 0, sWm, null, null, 0, false, false, new TaskDescription(), null); + super(0, mStubStack, 0, sWm, null, 0, false, new TaskDescription(), null); mBounds = bounds; } @Override @@ -102,7 +102,7 @@ public class WindowFrameTests extends WindowTestsBase { sWm.mSystemDecorLayer = 10000; mWindowToken = new WindowTestUtils.TestAppWindowToken(sWm.getDefaultDisplayContentLocked()); - mStubStack = new TaskStack(sWm, 0); + mStubStack = new TaskStack(sWm, 0, null); } public void assertRect(Rect rect, int left, int top, int right, int bottom) { diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java b/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java index 40c79bbb183d..0315c8d6f9ba 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java @@ -66,8 +66,8 @@ public class WindowTestUtils { /** Creates a {@link Task} and adds it to the specified {@link TaskStack}. */ public static Task createTaskInStack(WindowManagerService service, TaskStack stack, int userId) { - final Task newTask = new Task(sNextTaskId++, stack, userId, service, null, EMPTY, 0, false, - false, new ActivityManager.TaskDescription(), null); + final Task newTask = new Task(sNextTaskId++, stack, userId, service, null, 0, false, + new ActivityManager.TaskDescription(), null); stack.addTask(newTask, POSITION_TOP); return newTask; } @@ -78,7 +78,7 @@ public class WindowTestUtils { */ public static class TestTaskStack extends TaskStack { TestTaskStack(WindowManagerService service, int stackId) { - super(service, stackId); + super(service, stackId, null); } @Override @@ -94,19 +94,17 @@ public class WindowTestUtils { TestAppWindowToken(DisplayContent dc) { super(dc.mService, new IApplicationToken.Stub() { public String getName() {return null;} - }, false, dc, true /* fillsParent */, - null /* overrideConfig */, null /* bounds */); + }, false, dc, true /* fillsParent */, null /* bounds */); } TestAppWindowToken(WindowManagerService service, IApplicationToken token, boolean voiceInteraction, DisplayContent dc, long inputDispatchingTimeoutNanos, boolean fullscreen, boolean showForAllUsers, int targetSdk, int orientation, int rotationAnimationHint, int configChanges, boolean launchTaskBehind, - boolean alwaysFocusable, AppWindowContainerController controller, - Configuration overrideConfig, Rect bounds) { + boolean alwaysFocusable, AppWindowContainerController controller, Rect bounds) { super(service, token, voiceInteraction, dc, inputDispatchingTimeoutNanos, fullscreen, showForAllUsers, targetSdk, orientation, rotationAnimationHint, configChanges, - launchTaskBehind, alwaysFocusable, controller, overrideConfig, bounds); + launchTaskBehind, alwaysFocusable, controller, bounds); } int getWindowsCount() { @@ -174,11 +172,10 @@ public class WindowTestUtils { private boolean mIsAnimating = false; TestTask(int taskId, TaskStack stack, int userId, WindowManagerService service, Rect bounds, - Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture, - boolean homeTask, TaskWindowContainerController controller) { - super(taskId, stack, userId, service, bounds, overrideConfig, resizeMode, - supportsPictureInPicture, homeTask, new ActivityManager.TaskDescription(), - controller); + int resizeMode, boolean supportsPictureInPicture, + TaskWindowContainerController controller) { + super(taskId, stack, userId, service, bounds, resizeMode, supportsPictureInPicture, + new ActivityManager.TaskDescription(), controller); } boolean shouldDeferRemoval() { @@ -219,6 +216,18 @@ public class WindowTestUtils { TestTaskWindowContainerController(StackWindowController stackController) { super(sNextTaskId++, new TaskWindowContainerListener() { @Override + public void registerConfigurationChangeListener( + ConfigurationContainerListener listener) { + + } + + @Override + public void unregisterConfigurationChangeListener( + ConfigurationContainerListener listener) { + + } + + @Override public void onSnapshotChanged(ActivityManager.TaskSnapshot snapshot) { } @@ -227,19 +236,17 @@ public class WindowTestUtils { public void requestResize(Rect bounds, int resizeMode) { } - }, stackController, 0 /* userId */, null /* bounds */, - EMPTY /* overrideConfig*/, RESIZE_MODE_UNRESIZEABLE, - false /* supportsPictureInPicture */, false /* homeTask*/, true /* toTop*/, + }, stackController, 0 /* userId */, null /* bounds */, RESIZE_MODE_UNRESIZEABLE, + false /* supportsPictureInPicture */, true /* toTop*/, true /* showForAllUsers */, new ActivityManager.TaskDescription(), stackController.mService); } @Override - TestTask createTask(int taskId, TaskStack stack, int userId, Rect bounds, - Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture, - boolean homeTask, ActivityManager.TaskDescription taskDescription) { - return new TestTask(taskId, stack, userId, mService, bounds, overrideConfig, resizeMode, - supportsPictureInPicture, homeTask, this); + TestTask createTask(int taskId, TaskStack stack, int userId, Rect bounds, int resizeMode, + boolean supportsPictureInPicture, ActivityManager.TaskDescription taskDescription) { + return new TestTask(taskId, stack, userId, mService, bounds, resizeMode, + supportsPictureInPicture, this); } } @@ -259,7 +266,7 @@ public class WindowTestUtils { false /* launchTaskBehind */, false /* alwaysFocusable */, 0 /* targetSdkVersion */, 0 /* rotationAnimationHint */, 0 /* inputDispatchingTimeoutNanos */, taskController.mService, - null /* overrideConfig */, null /* bounds */); + null /* bounds */); mToken = token; } @@ -268,13 +275,12 @@ public class WindowTestUtils { boolean voiceInteraction, DisplayContent dc, long inputDispatchingTimeoutNanos, boolean fullscreen, boolean showForAllUsers, int targetSdk, int orientation, int rotationAnimationHint, int configChanges, boolean launchTaskBehind, - boolean alwaysFocusable, AppWindowContainerController controller, - Configuration overrideConfig, Rect bounds) { + boolean alwaysFocusable, AppWindowContainerController controller, Rect bounds) { return new TestAppWindowToken(service, token, voiceInteraction, dc, inputDispatchingTimeoutNanos, fullscreen, showForAllUsers, targetSdk, orientation, rotationAnimationHint, configChanges, launchTaskBehind, alwaysFocusable, - controller, overrideConfig, bounds); + controller, bounds); } AppWindowToken getAppWindowToken(DisplayContent dc) { diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java index eb8cf9160d5b..3df13abb2345 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java @@ -16,6 +16,7 @@ package com.android.server.wm; +import static android.app.ActivityManager.StackId.getWindowingModeForStackId; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.View.VISIBLE; @@ -236,10 +237,14 @@ class WindowTestsBase { return createStackControllerOnStackOnDisplay(stackId, dc); } - StackWindowController createStackControllerOnStackOnDisplay(int stackId, - DisplayContent dc) { - return new StackWindowController(stackId, null, dc.getDisplayId(), - true /* onTop */, new Rect(), new Configuration(), sWm); + StackWindowController createStackControllerOnStackOnDisplay(int stackId, DisplayContent dc) { + final Configuration overrideConfig = new Configuration(); + overrideConfig.windowConfiguration.setWindowingMode( + getWindowingModeForStackId(stackId, false /* inSplitScreenMode */)); + final StackWindowController controller = new StackWindowController(stackId, null, + dc.getDisplayId(), true /* onTop */, new Rect(), sWm); + controller.onOverrideConfigurationChanged(overrideConfig); + return controller; } /** Creates a {@link Task} and adds it to the specified {@link TaskStack}. */ diff --git a/services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java b/services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java index 94a85eee29a7..011817e99714 100644 --- a/services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java +++ b/services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java @@ -30,9 +30,9 @@ public class TestJobActivity extends Activity { public static final String EXTRA_JOB_ID_KEY = "com.android.servicestests.apps.jobtestapp.extra.JOB_ID"; public static final String ACTION_START_JOB = - "com.android.servicestests.apps.jobtestapp.extra.START_JOB"; + "com.android.servicestests.apps.jobtestapp.action.START_JOB"; public static final String ACTION_CANCEL_JOBS = - "com.android.servicestests.apps.jobtestapp.extra.CANCEL_JOBS"; + "com.android.servicestests.apps.jobtestapp.action.CANCEL_JOBS"; public static final int JOB_INITIAL_BACKOFF = 10_000; public static final int JOB_MINIMUM_LATENCY = 5_000; diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java index ce0dcc3453ec..c657a1b4cc98 100644 --- a/services/usb/java/com/android/server/usb/UsbHostManager.java +++ b/services/usb/java/com/android/server/usb/UsbHostManager.java @@ -22,8 +22,10 @@ import android.content.Context; import android.hardware.usb.UsbConfiguration; import android.hardware.usb.UsbConstants; import android.hardware.usb.UsbDevice; +import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbEndpoint; import android.hardware.usb.UsbInterface; +import android.hardware.usb.UsbManager; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.text.TextUtils; @@ -32,8 +34,11 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IndentingPrintWriter; import com.android.server.usb.descriptors.UsbDescriptorParser; +import com.android.server.usb.descriptors.report.TextReportCanvas; +import com.android.server.usb.descriptors.tree.UsbDescriptorsTree; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; /** @@ -43,6 +48,8 @@ public class UsbHostManager { private static final String TAG = UsbHostManager.class.getSimpleName(); private static final boolean DEBUG = false; + private final Context mContext; + // contains all connected USB devices private final HashMap<String, UsbDevice> mDevices = new HashMap<>(); @@ -69,6 +76,8 @@ public class UsbHostManager { public UsbHostManager(Context context, UsbAlsaManager alsaManager, UsbSettingsManager settingsManager) { + mContext = context; + mHostBlacklist = context.getResources().getStringArray( com.android.internal.R.array.config_usbHostBlacklist); mUsbAlsaManager = alsaManager; @@ -265,8 +274,8 @@ public class UsbHostManager { if (parser.parseDevice(mNewDevice.getDeviceName())) { isInputHeadset = parser.isInputHeadset(); isOutputHeadset = parser.isOutputHeadset(); - Slog.i(TAG, "---- isHeadset[in:" + isInputHeadset - + " , out:" + isOutputHeadset + "]"); + Slog.i(TAG, "---- isHeadset[in: " + isInputHeadset + + " , out: " + isOutputHeadset + "]"); } mUsbAlsaManager.usbDeviceAdded(mNewDevice, isInputHeadset, isOutputHeadset); @@ -339,6 +348,33 @@ public class UsbHostManager { if (mUsbDeviceConnectionHandler != null) { pw.println("Default USB Host Connection handler: " + mUsbDeviceConnectionHandler); } + + Collection<UsbDevice> devices = mDevices.values(); + if (devices.size() != 0) { + pw.println("USB Peripheral Descriptors"); + for (UsbDevice device : devices) { + StringBuilder stringBuilder = new StringBuilder(); + + UsbDescriptorParser parser = new UsbDescriptorParser(); + if (parser.parseDevice(device.getDeviceName())) { + UsbDescriptorsTree descriptorTree = new UsbDescriptorsTree(); + descriptorTree.parse(parser); + + UsbManager usbManager = + (UsbManager) mContext.getSystemService(Context.USB_SERVICE); + UsbDeviceConnection connection = usbManager.openDevice(device); + + descriptorTree.report(new TextReportCanvas(connection, stringBuilder)); + connection.close(); + + stringBuilder.append("isHeadset[in: " + parser.isInputHeadset() + + " , out: " + parser.isOutputHeadset() + "]"); + } else { + stringBuilder.append("Error Parsing USB Descriptors"); + } + pw.println(stringBuilder.toString()); + } + } } } diff --git a/services/usb/java/com/android/server/usb/descriptors/ByteStream.java b/services/usb/java/com/android/server/usb/descriptors/ByteStream.java index d678931fd01a..1e823b63d5b2 100644 --- a/services/usb/java/com/android/server/usb/descriptors/ByteStream.java +++ b/services/usb/java/com/android/server/usb/descriptors/ByteStream.java @@ -15,7 +15,11 @@ */ package com.android.server.usb.descriptors; +// Framework builds and Android Studio builds use different imports for NonNull. +// This one for Framework builds import android.annotation.NonNull; +// this one in the AndroidStudio project +// import android.support.annotation.NonNull; /** * @hide @@ -23,7 +27,7 @@ import android.annotation.NonNull; * but with the capability to "back up" in situations where the parser discovers that a * UsbDescriptor has overrun its length. */ -public class ByteStream { +public final class ByteStream { private static final String TAG = "ByteStream"; /** The byte array being wrapped */ @@ -104,6 +108,20 @@ public class ByteStream { } /** + * @return the next byte from the stream and advances the stream and the read count. Note + * that this is an unsigned byte encoded in a Java int. + * @throws IndexOutOfBoundsException + */ + public int getUnsignedByte() { + if (available() > 0) { + mReadCount++; + return mBytes[mIndex++] & 0x000000FF; + } else { + throw new IndexOutOfBoundsException(); + } + } + + /** * Reads 2 bytes in *little endian format* from the stream and composes a 16-bit integer. * As we are storing the 2-byte value in a 4-byte integer, the upper 2 bytes are always * 0, essentially making the returned value *unsigned*. @@ -111,11 +129,11 @@ public class ByteStream { * next 2 bytes in the stream. * @throws IndexOutOfBoundsException */ - public int unpackUsbWord() { + public int unpackUsbShort() { if (available() >= 2) { - int b0 = getByte(); - int b1 = getByte(); - return ((b1 << 8) & 0x0000FF00) | (b0 & 0x000000FF); + int b0 = getUnsignedByte(); + int b1 = getUnsignedByte(); + return (b1 << 8) | b0; } else { throw new IndexOutOfBoundsException(); } @@ -131,16 +149,32 @@ public class ByteStream { */ public int unpackUsbTriple() { if (available() >= 3) { - int b0 = getByte(); - int b1 = getByte(); - int b2 = getByte(); - return ((b2 << 16) & 0x00FF0000) | ((b1 << 8) & 0x0000FF00) | (b0 & 0x000000FF); + int b0 = getUnsignedByte(); + int b1 = getUnsignedByte(); + int b2 = getUnsignedByte(); + return (b2 << 16) | (b1 << 8) | b0; } else { throw new IndexOutOfBoundsException(); } } /** + * Reads 4 bytes in *little endian format* from the stream and composes a 32-bit integer. + * @return The 32-bit integer encoded by the next 4 bytes in the stream. + * @throws IndexOutOfBoundsException + */ + public int unpackUsbInt() { + if (available() >= 4) { + int b0 = getUnsignedByte(); + int b1 = getUnsignedByte(); + int b2 = getUnsignedByte(); + int b3 = getUnsignedByte(); + return (b3 << 24) | (b2 << 16) | (b1 << 8) | b0; + } else { + throw new IndexOutOfBoundsException(); + } + } + /** * Advances the logical position in the stream. Affects the running count also. * @param numBytes The number of bytes to advance. * @throws IndexOutOfBoundsException diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACHeader.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ACHeader.java index e31438c58e06..a35b46318e23 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACHeader.java +++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ACHeader.java @@ -15,18 +15,16 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Interface Header. * see audio10.pdf section 4.3.2 */ -public class UsbACHeader extends UsbACInterface { - private static final String TAG = "ACHeader"; +public final class Usb10ACHeader extends UsbACHeaderInterface { + private static final String TAG = "Usb10ACHeader"; - private int mADCRelease; // 3:2 Audio Device Class Specification Release (BCD). - private int mTotalLength; // 5:2 Total number of bytes returned for the class-specific - // AudioControl interface descriptor. Includes the combined length - // of this descriptor header and all Unit and Terminal descriptors. private byte mNumInterfaces = 0; // 7:1 The number of AudioStreaming and MIDIStreaming // interfaces in the Audio Interface Collection to which this // AudioControl interface belongs: n @@ -34,16 +32,8 @@ public class UsbACHeader extends UsbACInterface { // numbers associate with this endpoint private byte mControls; // Vers 2.0 thing - public UsbACHeader(int length, byte type, byte subtype, byte subclass) { - super(length, type, subtype, subclass); - } - - public int getADCRelease() { - return mADCRelease; - } - - public int getTotalLength() { - return mTotalLength; + public Usb10ACHeader(int length, byte type, byte subtype, byte subclass, int spec) { + super(length, type, subtype, subclass, spec); } public byte getNumInterfaces() { @@ -60,9 +50,8 @@ public class UsbACHeader extends UsbACInterface { @Override public int parseRawDescriptors(ByteStream stream) { - mADCRelease = stream.unpackUsbWord(); - mTotalLength = stream.unpackUsbWord(); + mTotalLength = stream.unpackUsbShort(); if (mADCRelease >= 0x200) { mControls = stream.getByte(); } else { @@ -75,4 +64,30 @@ public class UsbACHeader extends UsbACInterface { return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + int numInterfaces = getNumInterfaces(); + StringBuilder sb = new StringBuilder(); + sb.append("" + numInterfaces + " Interfaces"); + if (numInterfaces > 0) { + sb.append(" ["); + byte[] interfaceNums = getInterfaceNums(); + if (interfaceNums != null) { + for (int index = 0; index < numInterfaces; index++) { + sb.append("" + interfaceNums[index]); + if (index < numInterfaces - 1) { + sb.append(" "); + } + } + } + sb.append("]"); + } + canvas.writeListItem(sb.toString()); + canvas.writeListItem("Controls: " + ReportCanvas.getHexString(getControls())); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACInputTerminal.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ACInputTerminal.java index 653a7de5457e..2363c4dd8009 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACInputTerminal.java +++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ACInputTerminal.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Input Terminal interface. * see audio10.pdf section 4.3.2.1 */ -public class UsbACInputTerminal extends UsbACTerminal { - private static final String TAG = "ACInputTerminal"; +public final class Usb10ACInputTerminal extends UsbACTerminal { + private static final String TAG = "Usb10ACInputTerminal"; private byte mNrChannels; // 7:1 1 Channel (0x01) // Number of logical output channels in the @@ -30,7 +32,7 @@ public class UsbACInputTerminal extends UsbACTerminal { private byte mChannelNames; // 10:1 Unused (0x00) private byte mTerminal; // 11:1 Unused (0x00) - public UsbACInputTerminal(int length, byte type, byte subtype, byte subclass) { + public Usb10ACInputTerminal(int length, byte type, byte subtype, byte subclass) { super(length, type, subtype, subclass); } @@ -55,10 +57,22 @@ public class UsbACInputTerminal extends UsbACTerminal { super.parseRawDescriptors(stream); mNrChannels = stream.getByte(); - mChannelConfig = stream.unpackUsbWord(); + mChannelConfig = stream.unpackUsbShort(); mChannelNames = stream.getByte(); mTerminal = stream.getByte(); return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Associated Terminal: " + + ReportCanvas.getHexString(getAssocTerminal())); + canvas.writeListItem("" + getNrChannels() + " Chans. Config: " + + ReportCanvas.getHexString(getChannelConfig())); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb10ACMixerUnit.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ACMixerUnit.java new file mode 100644 index 000000000000..d3486643ede2 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ACMixerUnit.java @@ -0,0 +1,108 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Mixer Interface. + * see audio10.pdf section 4.3.2.3 + */ +public final class Usb10ACMixerUnit extends UsbACMixerUnit { + private static final String TAG = "Usb10ACMixerUnit"; + + private int mChannelConfig; // Spatial location of output channels + private byte mChanNameID; // First channel name string descriptor ID + private byte[] mControls; // bitmasks of which controls are present for each channel + private byte mNameID; // string descriptor ID of mixer name + + public Usb10ACMixerUnit(int length, byte type, byte subtype, byte subClass) { + super(length, type, subtype, subClass); + } + + public int getChannelConfig() { + return mChannelConfig; + } + + public byte getChanNameID() { + return mChanNameID; + } + + public byte[] getControls() { + return mControls; + } + + public byte getNameID() { + return mNameID; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + super.parseRawDescriptors(stream); + + mChannelConfig = stream.unpackUsbShort(); + mChanNameID = stream.getByte(); + + int controlArraySize = calcControlArraySize(mNumInputs, mNumOutputs); + mControls = new byte[controlArraySize]; + for (int index = 0; index < controlArraySize; index++) { + mControls[index] = stream.getByte(); + } + + mNameID = stream.getByte(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.writeParagraph("Mixer Unit", false); + canvas.openList(); + + canvas.writeListItem("Unit ID: " + ReportCanvas.getHexString(getUnitID())); + byte numInputs = getNumInputs(); + byte[] inputIDs = getInputIDs(); + canvas.openListItem(); + canvas.write("Num Inputs: " + numInputs + " ["); + for (int input = 0; input < numInputs; input++) { + canvas.write("" + ReportCanvas.getHexString(inputIDs[input])); + if (input < numInputs - 1) { + canvas.write(" "); + } + } + canvas.write("]"); + canvas.closeListItem(); + + canvas.writeListItem("Num Outputs: " + getNumOutputs()); + canvas.writeListItem("Channel Config: " + ReportCanvas.getHexString(getChannelConfig())); + + byte[] controls = getControls(); + canvas.openListItem(); + canvas.write("Controls: " + controls.length + " ["); + for (int ctrl = 0; ctrl < controls.length; ctrl++) { + canvas.write("" + controls[ctrl]); + if (ctrl < controls.length - 1) { + canvas.write(" "); + } + } + canvas.write("]"); + canvas.closeListItem(); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACOutputTerminal.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ACOutputTerminal.java index f957e3dbe217..9f2f09ec146c 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACOutputTerminal.java +++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ACOutputTerminal.java @@ -15,18 +15,20 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Output Terminal Interface. * see audio10.pdf section 4.3.2.2 */ -public class UsbACOutputTerminal extends UsbACTerminal { - private static final String TAG = "ACOutputTerminal"; +public final class Usb10ACOutputTerminal extends UsbACTerminal { + private static final String TAG = "Usb10ACOutputTerminal"; private byte mSourceID; // 7:1 From Input Terminal. (0x01) private byte mTerminal; // 8:1 Unused. - public UsbACOutputTerminal(int length, byte type, byte subtype, byte subClass) { + public Usb10ACOutputTerminal(int length, byte type, byte subtype, byte subClass) { super(length, type, subtype, subClass); } @@ -46,4 +48,13 @@ public class UsbACOutputTerminal extends UsbACTerminal { mTerminal = stream.getByte(); return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Source ID: " + ReportCanvas.getHexString(getSourceID())); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbASFormatI.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatI.java index 347a6cffb525..1523bb528a03 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbASFormatI.java +++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatI.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Format I interface. * see Frmts10.pdf section 2.2 */ -public class UsbASFormatI extends UsbASFormat { - private static final String TAG = "ASFormatI"; +public final class Usb10ASFormatI extends UsbASFormat { + private static final String TAG = "Usb10ASFormatI"; private byte mNumChannels; // 4:1 private byte mSubframeSize; // 5:1 frame size in bytes @@ -31,7 +33,7 @@ public class UsbASFormatI extends UsbASFormat { // min & max rates otherwise mSamFreqType rates. // All 3-byte values. All rates in Hz - public UsbASFormatI(int length, byte type, byte subtype, byte formatType, byte subclass) { + public Usb10ASFormatI(int length, byte type, byte subtype, byte formatType, byte subclass) { super(length, type, subtype, formatType, subclass); } @@ -51,11 +53,24 @@ public class UsbASFormatI extends UsbASFormat { return mSampleFreqType; } + @Override public int[] getSampleRates() { return mSampleRates; } @Override + public int[] getBitDepths() { + int[] depths = {mBitResolution}; + return depths; + } + + @Override + public int[] getChannelCounts() { + int[] counts = {mNumChannels}; + return counts; + } + + @Override public int parseRawDescriptors(ByteStream stream) { mNumChannels = stream.getByte(); mSubframeSize = stream.getByte(); @@ -74,4 +89,28 @@ public class UsbASFormatI extends UsbASFormat { return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("" + getNumChannels() + " Channels."); + canvas.writeListItem("Subframe Size: " + getSubframeSize()); + canvas.writeListItem("Bit Resolution: " + getBitResolution()); + byte sampleFreqType = getSampleFreqType(); + int[] sampleRates = getSampleRates(); + canvas.writeListItem("Sample Freq Type: " + sampleFreqType); + canvas.openList(); + if (sampleFreqType == 0) { + canvas.writeListItem("min: " + sampleRates[0]); + canvas.writeListItem("max: " + sampleRates[1]); + } else { + for (int index = 0; index < sampleFreqType; index++) { + canvas.writeListItem("" + sampleRates[index]); + } + } + canvas.closeList(); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbASFormatII.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatII.java index abdc62145aa2..b1e7680ee1b9 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbASFormatII.java +++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatII.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Format II interface. * see Frmts10.pdf section 2.3 */ -public class UsbASFormatII extends UsbASFormat { - private static final String TAG = "ASFormatII"; +public final class Usb10ASFormatII extends UsbASFormat { + private static final String TAG = "Usb10ASFormatII"; private int mMaxBitRate; // 4:2 Indicates the maximum number of bits per second this // interface can handle. Expressed in kbits/s. @@ -36,7 +38,7 @@ public class UsbASFormatII extends UsbASFormat { // the min & max rates. otherwise mSamFreqType rates. // All 3-byte values. All rates in Hz - public UsbASFormatII(int length, byte type, byte subtype, byte formatType, byte subclass) { + public Usb10ASFormatII(int length, byte type, byte subtype, byte formatType, byte subclass) { super(length, type, subtype, formatType, subclass); } @@ -58,8 +60,8 @@ public class UsbASFormatII extends UsbASFormat { @Override public int parseRawDescriptors(ByteStream stream) { - mMaxBitRate = stream.unpackUsbWord(); - mSamplesPerFrame = stream.unpackUsbWord(); + mMaxBitRate = stream.unpackUsbShort(); + mSamplesPerFrame = stream.unpackUsbShort(); mSamFreqType = stream.getByte(); int numFreqs = mSamFreqType == 0 ? 2 : mSamFreqType; mSampleRates = new int[numFreqs]; @@ -69,4 +71,29 @@ public class UsbASFormatII extends UsbASFormat { return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Max Bit Rate: " + getMaxBitRate()); + canvas.writeListItem("Samples Per Frame: " + getMaxBitRate()); + byte sampleFreqType = getSamFreqType(); + int[] sampleRates = getSampleRates(); + canvas.writeListItem("Sample Freq Type: " + sampleFreqType); + canvas.openList(); + if (sampleFreqType == 0) { + canvas.writeListItem("min: " + sampleRates[0]); + canvas.writeListItem("max: " + sampleRates[1]); + } else { + for (int index = 0; index < sampleFreqType; index++) { + canvas.writeListItem("" + sampleRates[index]); + } + } + canvas.closeList(); + + canvas.closeList(); + } + } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbASGeneral.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ASGeneral.java index c4f42d318213..2d4f604ed1a1 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbASGeneral.java +++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ASGeneral.java @@ -15,13 +15,16 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.UsbStrings; + /** * @hide * An audio class-specific General interface. * see audio10.pdf section 4.5.2 */ -public class UsbASGeneral extends UsbACInterface { - private static final String TAG = "ACGeneral"; +public final class Usb10ASGeneral extends UsbACInterface { + private static final String TAG = "Usb10ASGeneral"; // audio10.pdf - section 4.5.2 private byte mTerminalLink; // 3:1 The Terminal ID of the Terminal to which the endpoint @@ -31,7 +34,7 @@ public class UsbASGeneral extends UsbACInterface { private int mFormatTag; // 5:2 The Audio Data Format that has to be used to communicate // with this interface. - public UsbASGeneral(int length, byte type, byte subtype, byte subclass) { + public Usb10ASGeneral(int length, byte type, byte subtype, byte subclass) { super(length, type, subtype, subclass); } @@ -51,8 +54,20 @@ public class UsbASGeneral extends UsbACInterface { public int parseRawDescriptors(ByteStream stream) { mTerminalLink = stream.getByte(); mDelay = stream.getByte(); - mFormatTag = stream.unpackUsbWord(); + mFormatTag = stream.unpackUsbShort(); return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Delay: " + mDelay); + canvas.writeListItem("Terminal Link: " + mTerminalLink); + canvas.writeListItem("Format: " + UsbStrings.getAudioFormatName(mFormatTag) + " - " + + ReportCanvas.getHexString(mFormatTag)); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ACHeader.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ACHeader.java new file mode 100644 index 000000000000..eefae3d51b3f --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ACHeader.java @@ -0,0 +1,62 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Header descriptor. + * see Audio20.pdf section 4.7.2 Class-Specific AC Interface Descriptor + */ +public final class Usb20ACHeader extends UsbACHeaderInterface { + private static final String TAG = "Usb20ACHeader"; + + private byte mCategory; // 5:1 Constant, indicating the primary use of this audio function. + // See audio20.pdf Appendix A.7, “Audio Function Category Codes.” + private byte mControls; // 8:1 See audio20.pdf Table 4-5. + + public Usb20ACHeader(int length, byte type, byte subtype, byte subclass, int spec) { + super(length, type, subtype, subclass, spec); + } + + public byte getCategory() { + return mCategory; + } + + public byte getControls() { + return mControls; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + mCategory = stream.getByte(); + mTotalLength = stream.unpackUsbShort(); + mControls = stream.getByte(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Category: " + ReportCanvas.getHexString(getCategory())); + canvas.writeListItem("Controls: " + ReportCanvas.getHexString(getControls())); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ACInputTerminal.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ACInputTerminal.java new file mode 100644 index 000000000000..3e2ac39c0aca --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ACInputTerminal.java @@ -0,0 +1,86 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Input Terminal interface. + * see Audio20.pdf section 3.13.2 Input Terminal + */ +public final class Usb20ACInputTerminal extends UsbACTerminal { + private static final String TAG = "Usb20ACInputTerminal"; + + // See Audio20.pdf - Table 4-9 + // Always 17 bytes + private byte mClkSourceID; // 7:1 - ID of the Clock Entity to which this Input + // Terminal is connected. + private byte mNumChannels; // 8:1 - Number of logical output channels in the + // Terminal’s output audio channel cluster. + private int mChanConfig; // 9:4 - Describes the spatial location of the + // logical channels. + private byte mChanNames; // 13:1 - Index of a string descriptor, describing the + // name of the first logical channel. + private int mControls; // 14:2 - Bitmask (see Audio20.pdf Table 4-9) + private byte mTerminalName; // 16:1 - Index of a string descriptor, describing the + // Input Terminal. + + public Usb20ACInputTerminal(int length, byte type, byte subtype, byte subclass) { + super(length, type, subtype, subclass); + } + + public byte getClkSourceID() { + return mClkSourceID; + } + + public byte getNumChannels() { + return mNumChannels; + } + + public int getChanConfig() { + return mChanConfig; + } + + public int getControls() { + return mControls; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + super.parseRawDescriptors(stream); + + mClkSourceID = stream.getByte(); + mNumChannels = stream.getByte(); + mChanConfig = stream.unpackUsbInt(); + mChanNames = stream.getByte(); + mControls = stream.unpackUsbShort(); + mTerminalName = stream.getByte(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Clock Source: " + getClkSourceID()); + canvas.writeListItem("" + getNumChannels() + " Channels. Config: " + + ReportCanvas.getHexString(getChanConfig())); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ACMixerUnit.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ACMixerUnit.java new file mode 100644 index 000000000000..1b267a67752b --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ACMixerUnit.java @@ -0,0 +1,56 @@ +/* + * 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.server.usb.descriptors; + +/** + * @hide + * An audio class-specific Mixer Unit interface. + * see Audio20.pdf section 4.7.2.6 Mixer Unit Descriptor + */ +public final class Usb20ACMixerUnit extends UsbACMixerUnit { + private static final String TAG = "Usb20ACMixerUnit"; + + private int mChanConfig; // 6+p:4 Describes the spatial location of the + // logical channels. + private byte mChanNames; // 10+p:1 Index of a string descriptor, describing the + // name of the first logical channel. + private byte[] mControls; // 11+p:N bitmasks of which controls are present for each channel + // for N, see UsbACMixerUnit.calcControlArraySize() + private byte mControlsMask; // 11+p+N:1 bitmasks of which controls are present for each channel + private byte mNameID; // 12+p+N:1 Index of a string descriptor, describing the + // Mixer Unit. + + public Usb20ACMixerUnit(int length, byte type, byte subtype, byte subClass) { + super(length, type, subtype, subClass); + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + super.parseRawDescriptors(stream); + + mChanConfig = stream.unpackUsbInt(); + mChanNames = stream.getByte(); + int controlArraySize = calcControlArraySize(mNumInputs, mNumOutputs); + mControls = new byte[controlArraySize]; + for (int index = 0; index < controlArraySize; index++) { + mControls[index] = stream.getByte(); + } + mControlsMask = stream.getByte(); + mNameID = stream.getByte(); + + return mLength; + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ACOutputTerminal.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ACOutputTerminal.java new file mode 100644 index 000000000000..67478aad8a59 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ACOutputTerminal.java @@ -0,0 +1,79 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Output Terminal interface. + * see Audio20.pdf section 3.13.3 Output Terminal + */ +public final class Usb20ACOutputTerminal extends UsbACTerminal { + private static final String TAG = "Usb20ACOutputTerminal"; + + // Audio20.pdf - section 4.7.2.5, Table 4-10 + // Always 12 bytes + private byte mSourceID; // 7:1 - ID of the Unit or Terminal to which this + // Terminal is connected. + private byte mClkSoureID; // 8:1 - ID of the Clock Entity to which this Output + // Terminal is connected. + private int mControls; // 9:2 - see Audio20.pdf Table 4-10 + private byte mTerminalID; // 11:1 - Index of a string descriptor, describing the + + public Usb20ACOutputTerminal(int length, byte type, byte subtype, byte subClass) { + super(length, type, subtype, subClass); + } + + public byte getSourceID() { + return mSourceID; + } + + public byte getClkSourceID() { + return mClkSoureID; + } + + public int getControls() { + return mControls; + } + + public byte getTerminalID() { + return mTerminalID; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + super.parseRawDescriptors(stream); + + mSourceID = stream.getByte(); + mClkSoureID = stream.getByte(); + mControls = stream.unpackUsbShort(); + mTerminalID = stream.getByte(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Clock Source ID: " + getClkSourceID()); + canvas.writeListItem("Controls: " + ReportCanvas.getHexString(getControls())); + canvas.writeListItem("Terminal Name ID: " + getTerminalID()); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatI.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatI.java new file mode 100644 index 000000000000..c03199619e74 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatI.java @@ -0,0 +1,69 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Format I interface. + * see Frmts20.pdf section 2.3.1.6 Type I Format Type Descriptor + */ +public final class Usb20ASFormatI extends UsbASFormat { + private static final String TAG = "Usb20ASFormatI"; + + // Frmts20.pdf Table 2-2: Type I Format Type Descriptor + private byte mSubSlotSize; // 4:1 The number of bytes occupied by one + // audio subslot. Can be 1, 2, 3 or 4. + private byte mBitResolution; // 5:1 The number of effectively used bits from + // the available bits in an audio subslot. + + public Usb20ASFormatI(int length, byte type, byte subtype, byte formatType, byte subclass) { + super(length, type, subtype, formatType, subclass); + } + + /** + * TBD + */ + public byte getSubSlotSize() { + return mSubSlotSize; + } + + /** + * TBD + */ + public byte getBitResolution() { + return mBitResolution; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + mSubSlotSize = stream.getByte(); + mBitResolution = stream.getByte(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Subslot Size: " + getSubSlotSize()); + canvas.writeListItem("Bit Resolution: " + getBitResolution()); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatII.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatII.java new file mode 100644 index 000000000000..dc44ff063964 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatII.java @@ -0,0 +1,72 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Format II interface. + * see Frmts20.pdf section 2.3.2.6 Type II Format Type Descriptor + */ +public final class Usb20ASFormatII extends UsbASFormat { + private static final String TAG = "Usb20ASFormatII"; + + // Frmts20.pdf Table 2-3: Type II Format Type Descriptor + private int mMaxBitRate; // 4:2 Indicates the maximum number of bits per + // second this interface can handle in kbits/s. + private int mSlotsPerFrame; // 6:2 Indicates the number of PCM audio slots + // contained in one encoded audio frame. + + /** + * TBD + */ + public Usb20ASFormatII(int length, byte type, byte subtype, byte formatType, byte subclass) { + super(length, type, subtype, formatType, subclass); + } + + /** + * TBD + */ + public int getmaxBitRate() { + return mMaxBitRate; + } + + /** + * TBD + */ + public int getSlotsPerFrame() { + return mSlotsPerFrame; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + mMaxBitRate = stream.unpackUsbShort(); + mSlotsPerFrame = stream.unpackUsbShort(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Max Bit Rate: " + getmaxBitRate()); + canvas.writeListItem("slots Per Frame: " + getSlotsPerFrame()); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIIEx.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIIEx.java new file mode 100644 index 000000000000..d7dfba396984 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIIEx.java @@ -0,0 +1,78 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Format II interface. + * see Frmts20.pdf section 2.4.2.1 Extended Type II Format Type Descriptor + */ +public final class Usb20ASFormatIIEx extends UsbASFormat { + private static final String TAG = "Usb20ASFormatIIEx"; + + // Frmts20.pdf Table 2-7: Extended Type II Format Type Descriptor + private int mMaxBitRate; // 4:2 Indicates the maximum number of bits per + // second this interface can handle in kbits/s + private int mSamplesPerFrame; // 6:2 Indicates the number of PCM audio + // samples contained in one encoded audio frame. + private byte mHeaderLength; // 8:1 Size of the Packet Header, in bytes. + private byte mSidebandProtocol; // 9:1 Constant, identifying the Side Band + // Protocol used for the Packet Header content. + + public Usb20ASFormatIIEx(int length, byte type, byte subtype, byte formatType, byte subclass) { + super(length, type, subtype, formatType, subclass); + } + + public int getMaxBitRate() { + return mMaxBitRate; + } + + public int getSamplesPerFrame() { + return mSamplesPerFrame; + } + + public byte getHeaderLength() { + return mHeaderLength; + } + + public byte getSidebandProtocol() { + return mSidebandProtocol; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + mMaxBitRate = stream.unpackUsbShort(); + mSamplesPerFrame = stream.unpackUsbShort(); + mHeaderLength = stream.getByte(); + mSidebandProtocol = stream.getByte(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Max Bit Rate: " + getMaxBitRate()); + canvas.writeListItem("Samples Per Frame: " + getSamplesPerFrame()); + canvas.writeListItem("Header Length: " + getHeaderLength()); + canvas.writeListItem("Sideband Protocol: " + getSidebandProtocol()); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIII.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIII.java new file mode 100644 index 000000000000..b44a216703f8 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIII.java @@ -0,0 +1,63 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Format III interface. + * see Frmts20.pdf section 2.3.1.6 2.3.3.1 Type III Format Type Descriptor + */ +public final class Usb20ASFormatIII extends UsbASFormat { + private static final String TAG = "Usb20ASFormatIII"; + + // frmts20.pdf Table 2-4: Type III Format Type Descriptor + private byte mSubslotSize; // 4:1 The number of bytes occupied by one + // audio subslot. Must be set to two. + private byte mBitResolution; // 5:1 The number of effectively used bits from + // the available bits in an audio subframe. + + public Usb20ASFormatIII(int length, byte type, byte subtype, byte formatType, byte subclass) { + super(length, type, subtype, formatType, subclass); + } + + public byte getSubslotSize() { + return mSubslotSize; + } + + public byte getBitResolution() { + return mBitResolution; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + mSubslotSize = stream.getByte(); + mBitResolution = stream.getByte(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Subslot Size: " + getSubslotSize()); + canvas.writeListItem("Bit Resolution: " + getBitResolution()); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASGeneral.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASGeneral.java new file mode 100644 index 000000000000..18d48a009098 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASGeneral.java @@ -0,0 +1,104 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * Audio20.pdf - 4.9.2 Class-Specific AS Interface Descriptor + * 16 bytes + */ +public final class Usb20ASGeneral extends UsbACInterface { + private static final String TAG = "Usb20ASGeneral"; + + // Audio20.pdf - Table 4-27 + private byte mTerminalLink; // 3:1 The Terminal ID of the Terminal to which + // this interface is connected. + private byte mControls; // 4:1 see audio20.pdf Table 4-27 + private byte mFormatType; // 5:1 Constant identifying the Format Type the + // AudioStreaming interface is using. + private int mFormats; // 6:4 The Audio Data Format(s) that can be + // used to communicate with this interface. + // See the USB Audio Data Formats + // document for further details. + private byte mNumChannels; // 10:1 Number of physical channels in the AS + // Interface audio channel cluster. + private int mChannelConfig; // 11:4 Describes the spatial location of the + // physical channels. + private byte mChannelNames; // 15:1 Index of a string descriptor, describing the + // name of the first physical channel. + + public Usb20ASGeneral(int length, byte type, byte subtype, byte subclass) { + super(length, type, subtype, subclass); + } + + public byte getTerminalLink() { + return mTerminalLink; + } + + public byte getControls() { + return mControls; + } + + public byte getFormatType() { + return mFormatType; + } + + public int getFormats() { + return mFormats; + } + + public byte getNumChannels() { + return mNumChannels; + } + + public int getChannelConfig() { + return mChannelConfig; + } + + public byte getChannelNames() { + return mChannelNames; + } + + @Override + public int parseRawDescriptors(ByteStream stream) { + + mTerminalLink = stream.getByte(); + mControls = stream.getByte(); + mFormatType = stream.getByte(); + mFormats = stream.unpackUsbInt(); + mNumChannels = stream.getByte(); + mChannelConfig = stream.unpackUsbInt(); + mChannelNames = stream.getByte(); + + return mLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Terminal Link: " + getTerminalLink()); + canvas.writeListItem("Controls: " + ReportCanvas.getHexString(getControls())); + canvas.writeListItem("Format Type: " + ReportCanvas.getHexString(getFormatType())); + canvas.writeListItem("Formats: " + ReportCanvas.getHexString(getFormats())); + canvas.writeListItem("Num Channels: " + getNumChannels()); + canvas.writeListItem("Channel Config: " + ReportCanvas.getHexString(getChannelConfig())); + canvas.writeListItem("Channel Names String ID: " + getChannelNames()); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java b/services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java index 96fcc6a0b8db..6e1ce07536c5 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java @@ -21,7 +21,7 @@ package com.android.server.usb.descriptors; * audio10.pdf section 4.4.2.1 */ public class UsbACAudioControlEndpoint extends UsbACEndpoint { - private static final String TAG = "ACAudioControlEndpoint"; + private static final String TAG = "UsbACAudioControlEndpoint"; private byte mAddress; // 2:1 The address of the endpoint on the USB device. // D7: Direction. 1 = IN endpoint @@ -64,7 +64,7 @@ public class UsbACAudioControlEndpoint extends UsbACEndpoint { mAddress = stream.getByte(); mAttribs = stream.getByte(); - mMaxPacketSize = stream.unpackUsbWord(); + mMaxPacketSize = stream.unpackUsbShort(); mInterval = stream.getByte(); return mLength; diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java b/services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java index d387883d3049..d35190298df6 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java @@ -21,7 +21,7 @@ package com.android.server.usb.descriptors; * see audio10.pdf section 3.7.2 */ public class UsbACAudioStreamEndpoint extends UsbACEndpoint { - private static final String TAG = "ACAudioStreamEndpoint"; + private static final String TAG = "UsbACAudioStreamEndpoint"; //TODO data fields... public UsbACAudioStreamEndpoint(int length, byte type, byte subclass) { diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java b/services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java index 223496ab016e..4a6839d943ff 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java @@ -23,7 +23,7 @@ import android.util.Log; * see audio10.pdf section 4.4.1.2 */ abstract class UsbACEndpoint extends UsbDescriptor { - private static final String TAG = "ACEndpoint"; + private static final String TAG = "UsbACEndpoint"; protected final byte mSubclass; // from the mSubclass member of the "enclosing" // Interface Descriptor, not the stream. @@ -50,7 +50,7 @@ abstract class UsbACEndpoint extends UsbDescriptor { } public static UsbDescriptor allocDescriptor(UsbDescriptorParser parser, - int length, byte type) { + int length, byte type) { UsbInterfaceDescriptor interfaceDesc = parser.getCurInterface(); byte subClass = interfaceDesc.getUsbSubclass(); switch (subClass) { diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java b/services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java index 739fe5503a1d..ab3903b402d9 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java @@ -20,8 +20,8 @@ package com.android.server.usb.descriptors; * An audio class-specific Feature Unit Interface * see audio10.pdf section 3.5.5 */ -public class UsbACFeatureUnit extends UsbACInterface { - private static final String TAG = "ACFeatureUnit"; +public final class UsbACFeatureUnit extends UsbACInterface { + private static final String TAG = "UsbACFeatureUnit"; // audio10.pdf section 4.3.2.5 public static final int CONTROL_MASK_MUTE = 0x0001; diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACHeaderInterface.java b/services/usb/java/com/android/server/usb/descriptors/UsbACHeaderInterface.java new file mode 100644 index 000000000000..01a355e2c6e4 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACHeaderInterface.java @@ -0,0 +1,56 @@ +/* + * 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.server.usb.descriptors; + +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * An audio class-specific Interface Header super class. + * see audio10.pdf section 4.3.2 & Audio20.pdf section 4.7.2 + */ +public abstract class UsbACHeaderInterface extends UsbACInterface { + private static final String TAG = "UsbACHeaderInterface"; + + protected int mADCRelease; // Audio Device Class Specification Release (BCD). + protected int mTotalLength; // Total number of bytes returned for the class-specific + // AudioControl interface descriptor. Includes the combined length + // of this descriptor header and all Unit and Terminal descriptors. + + public UsbACHeaderInterface( + int length, byte type, byte subtype, byte subclass, int adcRelease) { + super(length, type, subtype, subclass); + mADCRelease = adcRelease; + } + + public int getADCRelease() { + return mADCRelease; + } + + public int getTotalLength() { + return mTotalLength; + } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Release: " + ReportCanvas.getBCDString(getADCRelease())); + canvas.writeListItem("Total Length: " + getTotalLength()); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java b/services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java index 0ab7fccd2c3b..df6c53fa9f52 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java @@ -17,13 +17,16 @@ package com.android.server.usb.descriptors; import android.util.Log; +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.UsbStrings; + /** * @hide * An audio class-specific Interface. * see audio10.pdf section 4.3.2 */ public abstract class UsbACInterface extends UsbDescriptor { - private static final String TAG = "ACInterface"; + private static final String TAG = "UsbACInterface"; // Audio Control Subtypes public static final byte ACI_UNDEFINED = 0; @@ -35,6 +38,11 @@ public abstract class UsbACInterface extends UsbDescriptor { public static final byte ACI_FEATURE_UNIT = 6; public static final byte ACI_PROCESSING_UNIT = 7; public static final byte ACI_EXTENSION_UNIT = 8; + // Not handled yet + public static final byte ACI_CLOCK_SOURCE = 0x0A; + public static final byte ACI_CLOCK_SELECTOR = 0x0B; + public static final byte ACI_CLOCK_MULTIPLIER = 0x0C; + public static final byte ACI_SAMPLE_RATE_CONVERTER = 0x0D; // Audio Streaming Subtypes public static final byte ASI_UNDEFINED = 0; @@ -87,17 +95,39 @@ public abstract class UsbACInterface extends UsbDescriptor { return mSubclass; } - private static UsbDescriptor allocAudioControlDescriptor(ByteStream stream, - int length, byte type, byte subtype, byte subClass) { + private static UsbDescriptor allocAudioControlDescriptor(UsbDescriptorParser parser, + ByteStream stream, int length, byte type, byte subtype, byte subClass) { switch (subtype) { case ACI_HEADER: - return new UsbACHeader(length, type, subtype, subClass); + { + int acInterfaceSpec = stream.unpackUsbShort(); + parser.setACInterfaceSpec(acInterfaceSpec); + if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) { + return new Usb20ACHeader(length, type, subtype, subClass, acInterfaceSpec); + } else { + return new Usb10ACHeader(length, type, subtype, subClass, acInterfaceSpec); + } + } case ACI_INPUT_TERMINAL: - return new UsbACInputTerminal(length, type, subtype, subClass); + { + int acInterfaceSpec = parser.getACInterfaceSpec(); + if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) { + return new Usb20ACInputTerminal(length, type, subtype, subClass); + } else { + return new Usb10ACInputTerminal(length, type, subtype, subClass); + } + } case ACI_OUTPUT_TERMINAL: - return new UsbACOutputTerminal(length, type, subtype, subClass); + { + int acInterfaceSpec = parser.getACInterfaceSpec(); + if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) { + return new Usb20ACOutputTerminal(length, type, subtype, subClass); + } else { + return new Usb10ACOutputTerminal(length, type, subtype, subClass); + } + } case ACI_SELECTOR_UNIT: return new UsbACSelectorUnit(length, type, subtype, subClass); @@ -106,7 +136,14 @@ public abstract class UsbACInterface extends UsbDescriptor { return new UsbACFeatureUnit(length, type, subtype, subClass); case ACI_MIXER_UNIT: - return new UsbACMixerUnit(length, type, subtype, subClass); + { + int acInterfaceSpec = parser.getACInterfaceSpec(); + if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) { + return new Usb20ACMixerUnit(length, type, subtype, subClass); + } else { + return new Usb10ACMixerUnit(length, type, subtype, subClass); + } + } case ACI_PROCESSING_UNIT: case ACI_EXTENSION_UNIT: @@ -115,18 +152,24 @@ public abstract class UsbACInterface extends UsbDescriptor { default: Log.w(TAG, "Unknown Audio Class Interface subtype:0x" + Integer.toHexString(subtype)); - return null; + return new UsbACInterfaceUnparsed(length, type, subtype, subClass); } } - private static UsbDescriptor allocAudioStreamingDescriptor(ByteStream stream, - int length, byte type, byte subtype, byte subClass) { + private static UsbDescriptor allocAudioStreamingDescriptor(UsbDescriptorParser parser, + ByteStream stream, int length, byte type, byte subtype, byte subClass) { + //int spec = parser.getUsbSpec(); + int acInterfaceSpec = parser.getACInterfaceSpec(); switch (subtype) { case ASI_GENERAL: - return new UsbASGeneral(length, type, subtype, subClass); + if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) { + return new Usb20ASGeneral(length, type, subtype, subClass); + } else { + return new Usb10ASGeneral(length, type, subtype, subClass); + } case ASI_FORMAT_TYPE: - return UsbASFormat.allocDescriptor(stream, length, type, subtype, subClass); + return UsbASFormat.allocDescriptor(parser, stream, length, type, subtype, subClass); case ASI_FORMAT_SPECIFIC: case ASI_UNDEFINED: @@ -155,7 +198,6 @@ public abstract class UsbACInterface extends UsbDescriptor { // Fall through until we implement that descriptor case MSI_UNDEFINED: - // break; Fall through until we implement this descriptor default: Log.w(TAG, "Unknown MIDI Streaming Interface subtype:0x" + Integer.toHexString(subtype)); @@ -173,10 +215,12 @@ public abstract class UsbACInterface extends UsbDescriptor { byte subClass = interfaceDesc.getUsbSubclass(); switch (subClass) { case AUDIO_AUDIOCONTROL: - return allocAudioControlDescriptor(stream, length, type, subtype, subClass); + return allocAudioControlDescriptor( + parser, stream, length, type, subtype, subClass); case AUDIO_AUDIOSTREAMING: - return allocAudioStreamingDescriptor(stream, length, type, subtype, subClass); + return allocAudioStreamingDescriptor( + parser, stream, length, type, subtype, subClass); case AUDIO_MIDISTREAMING: return allocMidiStreamingDescriptor(length, type, subtype, subClass); @@ -187,4 +231,21 @@ public abstract class UsbACInterface extends UsbDescriptor { return null; } } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + byte subClass = getSubclass(); + String subClassName = UsbStrings.getACInterfaceSubclassName(subClass); + + byte subtype = getSubtype(); + String subTypeName = UsbStrings.getACControlInterfaceName(subtype); + + canvas.openList(); + canvas.writeListItem("Subclass: " + ReportCanvas.getHexString(subClass) + + " " + subClassName); + canvas.writeListItem("Subtype: " + ReportCanvas.getHexString(subtype) + " " + subTypeName); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACInterfaceUnparsed.java b/services/usb/java/com/android/server/usb/descriptors/UsbACInterfaceUnparsed.java new file mode 100644 index 000000000000..9e00a7976dfd --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACInterfaceUnparsed.java @@ -0,0 +1,28 @@ +/* + * 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.server.usb.descriptors; + +/** + * @hide + * A holder class for as yet unparsed audio-class interfaces. + */ +public final class UsbACInterfaceUnparsed extends UsbACInterface { + private static final String TAG = "UsbACInterfaceUnparsed"; + + public UsbACInterfaceUnparsed(int length, byte type, byte subtype, byte subClass) { + super(length, type, subtype, subClass); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java b/services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java index 9c072426cc49..9c314575ccc4 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Midi Endpoint. * see midi10.pdf section 6.2.2 */ -public class UsbACMidiEndpoint extends UsbACEndpoint { - private static final String TAG = "ACMidiEndpoint"; +public final class UsbACMidiEndpoint extends UsbACEndpoint { + private static final String TAG = "UsbACMidiEndpoint"; private byte mNumJacks; private byte[] mJackIds; @@ -49,4 +51,15 @@ public class UsbACMidiEndpoint extends UsbACEndpoint { } return mLength; } -} + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.writeHeader(3, "AC Midi Endpoint: " + ReportCanvas.getHexString(getType()) + + " Length: " + getLength()); + canvas.openList(); + canvas.writeListItem("" + getNumJacks() + " Jacks."); + canvas.closeList(); + } +}
\ No newline at end of file diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java b/services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java index 552b5ae308d6..88faed962a54 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java @@ -15,23 +15,14 @@ */ package com.android.server.usb.descriptors; -/** - * @hide - * An audio class-specific Mixer Interface. - * see audio10.pdf section 4.3.2.3 - */ public class UsbACMixerUnit extends UsbACInterface { - private static final String TAG = "ACMixerUnit"; + private static final String TAG = "UsbACMixerUnit"; - private byte mUnitID; // 3:1 - private byte mNumInputs; // 4:1 Number of Input Pins of this Unit. - private byte[] mInputIDs; // 5...:1 ID of the Unit or Terminal to which the Input Pins - // are connected. - private byte mNumOutputs; // The number of output channels - private int mChannelConfig; // Spacial location of output channels - private byte mChanNameID; // First channel name string descriptor ID - private byte[] mControls; // bitmasks of which controls are present for each channel - private byte mNameID; // string descriptor ID of mixer name + protected byte mUnitID; // 3:1 + protected byte mNumInputs; // 4:1 Number of Input Pins of this Unit. + protected byte[] mInputIDs; // 5...:1 ID of the Unit or Terminal to which the Input Pins + // are connected. + protected byte mNumOutputs; // The number of output channels public UsbACMixerUnit(int length, byte type, byte subtype, byte subClass) { super(length, type, subtype, subClass); @@ -53,20 +44,9 @@ public class UsbACMixerUnit extends UsbACInterface { return mNumOutputs; } - public int getChannelConfig() { - return mChannelConfig; - } - - public byte getChanNameID() { - return mChanNameID; - } - - public byte[] getControls() { - return mControls; - } - - public byte getNameID() { - return mNameID; + protected static int calcControlArraySize(int numInputs, int numOutputs) { + int totalChannels = numInputs * numOutputs; + return (totalChannels + 7) / 8; } @Override @@ -78,22 +58,6 @@ public class UsbACMixerUnit extends UsbACInterface { mInputIDs[input] = stream.getByte(); } mNumOutputs = stream.getByte(); - mChannelConfig = stream.unpackUsbWord(); - mChanNameID = stream.getByte(); - - int controlArraySize; - int totalChannels = mNumInputs * mNumOutputs; - if (totalChannels % 8 == 0) { - controlArraySize = totalChannels / 8; - } else { - controlArraySize = totalChannels / 8 + 1; - } - mControls = new byte[controlArraySize]; - for (int index = 0; index < controlArraySize; index++) { - mControls[index] = stream.getByte(); - } - - mNameID = stream.getByte(); return mLength; } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java b/services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java index b1f60bdcf6ed..b16bc575e806 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +// import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Selector Unit Interface. * see audio10.pdf section 4.3.2.4 */ -public class UsbACSelectorUnit extends UsbACInterface { - private static final String TAG = "ACSelectorUnit"; +public final class UsbACSelectorUnit extends UsbACInterface { + private static final String TAG = "UsbACSelectorUnit"; private byte mUnitID; // 3:1 Constant uniquely identifying the Unit within the audio function. // This value is used in all requests to address this Unit. @@ -62,4 +64,11 @@ public class UsbACSelectorUnit extends UsbACInterface { return mLength; } + +// @Override +// public void report(ReportCanvas canvas) { +// super.report(canvas); +// +// //TODO +// } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java b/services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java index ea80208ee3f3..2836508581d8 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java @@ -15,10 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.UsbStrings; + /** * @hide */ public abstract class UsbACTerminal extends UsbACInterface { + private static final String TAG = "UsbACTerminal"; + // Note that these fields are the same for both the // audio class-specific Output Terminal Interface.(audio10.pdf section 4.3.2.2) // and audio class-specific Input Terminal interface.(audio10.pdf section 4.3.2.1) @@ -46,9 +51,21 @@ public abstract class UsbACTerminal extends UsbACInterface { @Override public int parseRawDescriptors(ByteStream stream) { mTerminalID = stream.getByte(); - mTerminalType = stream.unpackUsbWord(); + mTerminalType = stream.unpackUsbShort(); mAssocTerminal = stream.getByte(); return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + int terminalType = getTerminalType(); + canvas.writeListItem("Type: " + ReportCanvas.getHexString(terminalType) + ": " + + UsbStrings.getTerminalName(terminalType)); + canvas.writeListItem("ID: " + ReportCanvas.getHexString(getTerminalID())); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java b/services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java index d7c84c6a0965..7a92f9e197ec 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java @@ -15,19 +15,30 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.UsbStrings; + /** * @hide * An audio class-specific Format Interface. * Subclasses: UsbACFormatI and UsbACFormatII. * see audio10.pdf section 4.5.3 & & Frmts10.pdf */ -public abstract class UsbASFormat extends UsbACInterface { - private static final String TAG = "ASFormat"; +public class UsbASFormat extends UsbACInterface { + private static final String TAG = "UsbASFormat"; private final byte mFormatType; // 3:1 FORMAT_TYPE_* - public static final byte FORMAT_TYPE_I = 1; - public static final byte FORMAT_TYPE_II = 2; + public static final byte FORMAT_TYPE_I = 1; + public static final byte FORMAT_TYPE_II = 2; + // these showed up in USB 2.0 + public static final byte FORMAT_TYPE_III = 3; + public static final byte FORMAT_TYPE_IV = 4; + + // "extended" formats + public static final byte EXT_FORMAT_TYPE_I = (byte) 0x81; + public static final byte EXT_FORMAT_TYPE_II = (byte) 0x82; + public static final byte EXT_FORMAT_TYPE_III = (byte) 0x83; public UsbASFormat(int length, byte type, byte subtype, byte formatType, byte mSubclass) { super(length, type, subtype, mSubclass); @@ -38,27 +49,59 @@ public abstract class UsbASFormat extends UsbACInterface { return mFormatType; } + public int[] getSampleRates() { + return null; + } + + public int[] getBitDepths() { + return null; + } + + public int[] getChannelCounts() { + return null; + } + /** * Allocates the audio-class format subtype associated with the format type read from the * stream. */ - public static UsbDescriptor allocDescriptor(ByteStream stream, int length, byte type, + public static UsbDescriptor allocDescriptor(UsbDescriptorParser parser, + ByteStream stream, int length, byte type, byte subtype, byte subclass) { byte formatType = stream.getByte(); - //TODO - // There is an issue parsing format descriptors on (some) USB 2.0 pro-audio interfaces - // Since we don't need this info for headset detection, just skip these descriptors - // for now to avoid the (low) possibility of an IndexOutOfBounds exception. + int acInterfaceSpec = parser.getACInterfaceSpec(); + switch (formatType) { -// case FORMAT_TYPE_I: -// return new UsbASFormatI(length, type, subtype, formatType, subclass); -// -// case FORMAT_TYPE_II: -// return new UsbASFormatII(length, type, subtype, formatType, subclass); + case FORMAT_TYPE_I: + if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) { + return new Usb20ASFormatI(length, type, subtype, formatType, subclass); + } else { + return new Usb10ASFormatI(length, type, subtype, formatType, subclass); + } + + case FORMAT_TYPE_II: + if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) { + return new Usb20ASFormatII(length, type, subtype, formatType, subclass); + } else { + return new Usb10ASFormatII(length, type, subtype, formatType, subclass); + } + + // USB 2.0 Exclusive Format Types + case FORMAT_TYPE_III: + return new Usb20ASFormatIII(length, type, subtype, formatType, subclass); + case FORMAT_TYPE_IV: + //TODO - implement this type. default: - return null; + return new UsbASFormat(length, type, subtype, formatType, subclass); } } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.writeParagraph(UsbStrings.getFormatName(getFormatType()), /*emphasis*/false); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java b/services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java index 185cee20b090..9710ac67870f 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java @@ -25,7 +25,7 @@ import com.android.server.usb.descriptors.report.UsbStrings; * A class that just walks the descriptors and does a hex dump of the contained values. * Usefull as a debugging tool. */ -public class UsbBinaryParser { +public final class UsbBinaryParser { private static final String TAG = "UsbBinaryParser"; private static final boolean LOGGING = false; @@ -33,7 +33,7 @@ public class UsbBinaryParser { // Log if (LOGGING) { - Log.i(TAG, "l:" + length + " t:" + Integer.toHexString(type) + " " + Log.i(TAG, "l: " + length + " t: " + Integer.toHexString(type) + " " + UsbStrings.getDescriptorName(type)); StringBuilder sb = new StringBuilder(); for (int index = 2; index < length; index++) { @@ -43,7 +43,7 @@ public class UsbBinaryParser { } else { // Screen Dump builder.append("<p>"); - builder.append("<b> l:" + length + builder.append("<b> l: " + length + " t:0x" + Integer.toHexString(type) + " " + UsbStrings.getDescriptorName(type) + "</b><br>"); for (int index = 2; index < length; index++) { diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java index 8ae6d0f1ee7e..75279c61c4f0 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An USB Config Descriptor. * see usb11.pdf section 9.6.2 */ -public class UsbConfigDescriptor extends UsbDescriptor { - private static final String TAG = "Config"; +public final class UsbConfigDescriptor extends UsbDescriptor { + private static final String TAG = "UsbConfigDescriptor"; private int mTotalLength; // 2:2 Total length in bytes of data returned private byte mNumInterfaces; // 4:1 Number of Interfaces @@ -35,6 +37,7 @@ public class UsbConfigDescriptor extends UsbDescriptor { UsbConfigDescriptor(int length, byte type) { super(length, type); + mHierarchyLevel = 2; } public int getTotalLength() { @@ -63,7 +66,7 @@ public class UsbConfigDescriptor extends UsbDescriptor { @Override public int parseRawDescriptors(ByteStream stream) { - mTotalLength = stream.unpackUsbWord(); + mTotalLength = stream.unpackUsbShort(); mNumInterfaces = stream.getByte(); mConfigValue = stream.getByte(); mConfigIndex = stream.getByte(); @@ -72,4 +75,15 @@ public class UsbConfigDescriptor extends UsbDescriptor { return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Config # " + getConfigValue()); + canvas.writeListItem(getNumInterfaces() + " Interfaces."); + canvas.writeListItem("Attributes: " + ReportCanvas.getHexString(getAttribs())); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java index 63b2d7f6aed7..8c7565b790d2 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java @@ -19,6 +19,10 @@ import android.hardware.usb.UsbConstants; import android.hardware.usb.UsbDeviceConnection; import android.util.Log; +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.Reporting; +import com.android.server.usb.descriptors.report.UsbStrings; + /* * Some notes about UsbDescriptor and its subclasses. * @@ -33,8 +37,10 @@ import android.util.Log; * @hide * Common superclass for all USB Descriptors. */ -public abstract class UsbDescriptor { - private static final String TAG = "Descriptor"; +public abstract class UsbDescriptor implements Reporting { + private static final String TAG = "UsbDescriptor"; + + protected int mHierarchyLevel; protected final int mLength; // 0:1 bLength Number Size of the Descriptor in Bytes (18 bytes) // we store this as an int because Java bytes are SIGNED. @@ -50,11 +56,15 @@ public abstract class UsbDescriptor { public static final int STATUS_PARSED_OK = 1; public static final int STATUS_PARSED_UNDERRUN = 2; public static final int STATUS_PARSED_OVERRUN = 3; + public static final int STATUS_PARSE_EXCEPTION = 4; + private int mStatus = STATUS_UNPARSED; private static String[] sStatusStrings = { "UNPARSED", "PARSED - OK", "PARSED - UNDERRUN", "PARSED - OVERRUN"}; + private int mOverUnderRunCount; + // Descriptor Type IDs public static final byte DESCRIPTORTYPE_DEVICE = 0x01; // 1 public static final byte DESCRIPTORTYPE_CONFIG = 0x02; // 2 @@ -147,6 +157,10 @@ public abstract class UsbDescriptor { mStatus = status; } + public int getOverUnderRunCount() { + return mOverUnderRunCount; + } + public String getStatusString() { return sStatusStrings[mStatus]; } @@ -165,14 +179,16 @@ public abstract class UsbDescriptor { // Too cold... stream.advance(mLength - bytesRead); mStatus = STATUS_PARSED_UNDERRUN; + mOverUnderRunCount = mLength - bytesRead; Log.w(TAG, "UNDERRUN t:0x" + Integer.toHexString(mType) - + " r:" + bytesRead + " < l:" + mLength); + + " r: " + bytesRead + " < l: " + mLength); } else if (bytesRead > mLength) { // Too hot... stream.reverse(bytesRead - mLength); mStatus = STATUS_PARSED_OVERRUN; + mOverUnderRunCount = bytesRead - mLength; Log.w(TAG, "OVERRRUN t:0x" + Integer.toHexString(mType) - + " r:" + bytesRead + " > l:" + mLength); + + " r: " + bytesRead + " > l: " + mLength); } else { // Just right! mStatus = STATUS_PARSED_OK; @@ -220,4 +236,43 @@ public abstract class UsbDescriptor { } return usbStr; } + + private void reportParseStatus(ReportCanvas canvas) { + int status = getStatus(); + switch (status) { + case UsbDescriptor.STATUS_PARSED_OK: + break; // no need to report + + case UsbDescriptor.STATUS_UNPARSED: + case UsbDescriptor.STATUS_PARSED_UNDERRUN: + case UsbDescriptor.STATUS_PARSED_OVERRUN: + canvas.writeParagraph("status: " + getStatusString() + + " [" + getOverUnderRunCount() + "]", true); + break; + } + } + + @Override + public void report(ReportCanvas canvas) { + String descTypeStr = UsbStrings.getDescriptorName(getType()); + String text = descTypeStr + ": " + ReportCanvas.getHexString(getType()) + + " Len: " + getLength(); + if (mHierarchyLevel != 0) { + canvas.writeHeader(mHierarchyLevel, text); + } else { + canvas.writeParagraph(text, false); + } + + if (getStatus() != STATUS_PARSED_OK) { + reportParseStatus(canvas); + } + } + + @Override + public void shortReport(ReportCanvas canvas) { + String descTypeStr = UsbStrings.getDescriptorName(getType()); + String text = descTypeStr + ": " + ReportCanvas.getHexString(getType()) + + " Len: " + getLength(); + canvas.writeParagraph(text, false); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java index d4a0ac4a0da3..ad7bde5c275e 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java @@ -23,8 +23,8 @@ import java.util.ArrayList; * @hide * Class for parsing a binary stream of USB Descriptors. */ -public class UsbDescriptorParser { - private static final String TAG = "DescriptorParser"; +public final class UsbDescriptorParser { + private static final String TAG = "UsbDescriptorParser"; // Descriptor Objects private ArrayList<UsbDescriptor> mDescriptors = new ArrayList<UsbDescriptor>(); @@ -32,9 +32,35 @@ public class UsbDescriptorParser { private UsbDeviceDescriptor mDeviceDescriptor; private UsbInterfaceDescriptor mCurInterfaceDescriptor; + // The AudioClass spec implemented by the AudioClass Interfaces + // This may well be different than the overall USB Spec. + // Obtained from the first AudioClass Header descriptor. + private int mACInterfacesSpec = UsbDeviceDescriptor.USBSPEC_1_0; + public UsbDescriptorParser() {} /** + * @return the USB Spec value associated with the Device descriptor for the + * descriptors stream being parsed. + * + * @throws IllegalArgumentException + */ + public int getUsbSpec() { + if (mDeviceDescriptor != null) { + return mDeviceDescriptor.getSpec(); + } else { + throw new IllegalArgumentException(); + } + } + + public void setACInterfaceSpec(int spec) { + mACInterfacesSpec = spec; + } + + public int getACInterfaceSpec() { + return mACInterfacesSpec; + } + /** * The probability (as returned by getHeadsetProbability() at which we conclude * the peripheral is a headset. */ @@ -44,7 +70,7 @@ public class UsbDescriptorParser { private UsbDescriptor allocDescriptor(ByteStream stream) { stream.resetReadCount(); - int length = (int) stream.getByte() & 0x000000FF; + int length = stream.getUnsignedByte(); byte type = stream.getByte(); UsbDescriptor descriptor = null; @@ -99,7 +125,7 @@ public class UsbDescriptorParser { if (descriptor == null) { // Unknown Descriptor - Log.i(TAG, "Unknown Descriptor len:" + length + " type:0x" + Log.i(TAG, "Unknown Descriptor len: " + length + " type:0x" + Integer.toHexString(type)); descriptor = new UsbUnknown(length, type); } @@ -135,14 +161,15 @@ public class UsbDescriptorParser { try { descriptor.parseRawDescriptors(stream); - // Its OK to add the invalid descriptor as the postParse() - // routine will mark it as invalid. - mDescriptors.add(descriptor); - // Clean up descriptor.postParse(stream); } catch (Exception ex) { Log.e(TAG, "Exception parsing USB descriptors.", ex); + + // Clean up + descriptor.setStatus(UsbDescriptor.STATUS_PARSE_EXCEPTION); + } finally { + mDescriptors.add(descriptor); } } } @@ -197,7 +224,7 @@ public class UsbDescriptorParser { list.add(descriptor); } } else { - Log.w(TAG, "Unrecognized Interface l:" + descriptor.getLength() + Log.w(TAG, "Unrecognized Interface l: " + descriptor.getLength() + " t:0x" + Integer.toHexString(descriptor.getType())); } } @@ -220,7 +247,7 @@ public class UsbDescriptorParser { list.add(descriptor); } } else { - Log.w(TAG, "Unrecognized Audio Interface l:" + descriptor.getLength() + Log.w(TAG, "Unrecognized Audio Interface l: " + descriptor.getLength() + " t:0x" + Integer.toHexString(descriptor.getType())); } } @@ -251,7 +278,7 @@ public class UsbDescriptorParser { return true; } } else { - Log.w(TAG, "Undefined Audio Class Interface l:" + descriptor.getLength() + Log.w(TAG, "Undefined Audio Class Interface l: " + descriptor.getLength() + " t:0x" + Integer.toHexString(descriptor.getType())); } } @@ -274,8 +301,8 @@ public class UsbDescriptorParser { acDescriptors = getACInterfaceDescriptors(UsbACInterface.ACI_INPUT_TERMINAL, UsbACInterface.AUDIO_AUDIOCONTROL); for (UsbDescriptor descriptor : acDescriptors) { - if (descriptor instanceof UsbACInputTerminal) { - UsbACInputTerminal inDescr = (UsbACInputTerminal) descriptor; + if (descriptor instanceof UsbACTerminal) { + UsbACTerminal inDescr = (UsbACTerminal) descriptor; if (inDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_IN_MIC || inDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_BIDIR_HEADSET || inDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_BIDIR_UNDEFINED @@ -284,7 +311,7 @@ public class UsbDescriptorParser { break; } } else { - Log.w(TAG, "Undefined Audio Input terminal l:" + descriptor.getLength() + Log.w(TAG, "Undefined Audio Input terminal l: " + descriptor.getLength() + " t:0x" + Integer.toHexString(descriptor.getType())); } } @@ -295,8 +322,8 @@ public class UsbDescriptorParser { getACInterfaceDescriptors(UsbACInterface.ACI_OUTPUT_TERMINAL, UsbACInterface.AUDIO_AUDIOCONTROL); for (UsbDescriptor descriptor : acDescriptors) { - if (descriptor instanceof UsbACOutputTerminal) { - UsbACOutputTerminal outDescr = (UsbACOutputTerminal) descriptor; + if (descriptor instanceof UsbACTerminal) { + UsbACTerminal outDescr = (UsbACTerminal) descriptor; if (outDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_OUT_SPEAKER || outDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_OUT_HEADPHONES @@ -305,7 +332,7 @@ public class UsbDescriptorParser { break; } } else { - Log.w(TAG, "Undefined Audio Output terminal l:" + descriptor.getLength() + Log.w(TAG, "Undefined Audio Output terminal l: " + descriptor.getLength() + " t:0x" + Integer.toHexString(descriptor.getType())); } } @@ -328,6 +355,8 @@ public class UsbDescriptorParser { * to count on the peripheral being a headset. */ public boolean isInputHeadset() { + // TEMP + Log.i(TAG, "---- isInputHeadset() prob:" + (getInputHeadsetProbability() * 100f) + "%"); return getInputHeadsetProbability() >= IN_HEADSET_TRIGGER; } @@ -348,8 +377,8 @@ public class UsbDescriptorParser { getACInterfaceDescriptors(UsbACInterface.ACI_OUTPUT_TERMINAL, UsbACInterface.AUDIO_AUDIOCONTROL); for (UsbDescriptor descriptor : acDescriptors) { - if (descriptor instanceof UsbACOutputTerminal) { - UsbACOutputTerminal outDescr = (UsbACOutputTerminal) descriptor; + if (descriptor instanceof UsbACTerminal) { + UsbACTerminal outDescr = (UsbACTerminal) descriptor; if (outDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_OUT_SPEAKER || outDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_OUT_HEADPHONES @@ -358,7 +387,7 @@ public class UsbDescriptorParser { break; } } else { - Log.w(TAG, "Undefined Audio Output terminal l:" + descriptor.getLength() + Log.w(TAG, "Undefined Audio Output terminal l: " + descriptor.getLength() + " t:0x" + Integer.toHexString(descriptor.getType())); } } @@ -381,6 +410,8 @@ public class UsbDescriptorParser { * to count on the peripheral being a headset. */ public boolean isOutputHeadset() { + // TEMP + Log.i(TAG, "---- isOutputHeadset() prob:" + (getOutputHeadsetProbability() * 100f) + "%"); return getOutputHeadsetProbability() >= OUT_HEADSET_TRIGGER; } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java index 90848caba852..d5cb89ea82e6 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java @@ -15,13 +15,20 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.UsbStrings; + /** * @hide * A USB Device Descriptor. * see usb11.pdf section 9.6.1 */ -/* public */ public class UsbDeviceDescriptor extends UsbDescriptor { - private static final String TAG = "Device"; +public final class UsbDeviceDescriptor extends UsbDescriptor { + private static final String TAG = "UsbDeviceDescriptor"; + + public static final int USBSPEC_1_0 = 0x0100; + public static final int USBSPEC_1_1 = 0x0110; + public static final int USBSPEC_2_0 = 0x0200; private int mSpec; // 2:2 bcdUSB 2 BCD USB Specification Number - BCD private byte mDevClass; // 4:1 class code @@ -39,6 +46,7 @@ package com.android.server.usb.descriptors; UsbDeviceDescriptor(int length, byte type) { super(length, type); + mHierarchyLevel = 1; } public int getSpec() { @@ -91,14 +99,14 @@ package com.android.server.usb.descriptors; @Override public int parseRawDescriptors(ByteStream stream) { - mSpec = stream.unpackUsbWord(); + mSpec = stream.unpackUsbShort(); mDevClass = stream.getByte(); mDevSubClass = stream.getByte(); mProtocol = stream.getByte(); mPacketSize = stream.getByte(); - mVendorID = stream.unpackUsbWord(); - mProductID = stream.unpackUsbWord(); - mDeviceRelease = stream.unpackUsbWord(); + mVendorID = stream.unpackUsbShort(); + mProductID = stream.unpackUsbShort(); + mDeviceRelease = stream.unpackUsbShort(); mMfgIndex = stream.getByte(); mProductIndex = stream.getByte(); mSerialNum = stream.getByte(); @@ -106,4 +114,35 @@ package com.android.server.usb.descriptors; return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + + int spec = getSpec(); + canvas.writeListItem("Spec: " + ReportCanvas.getBCDString(spec)); + + byte devClass = getDevClass(); + String classStr = UsbStrings.getClassName(devClass); + byte devSubClass = getDevSubClass(); + String subClasStr = UsbStrings.getClassName(devSubClass); + canvas.writeListItem("Class " + devClass + ": " + classStr + " Subclass" + + devSubClass + ": " + subClasStr); + canvas.writeListItem("Vendor ID: " + ReportCanvas.getHexString(getVendorID()) + + " Product ID: " + ReportCanvas.getHexString(getProductID()) + + " Product Release: " + ReportCanvas.getBCDString(getDeviceRelease())); + + byte mfgIndex = getMfgIndex(); + String manufacturer = + UsbDescriptor.getUsbDescriptorString(canvas.getConnection(), mfgIndex); + byte productIndex = getProductIndex(); + String product = + UsbDescriptor.getUsbDescriptorString(canvas.getConnection(), productIndex); + + canvas.writeListItem("Manufacturer " + mfgIndex + ": " + manufacturer + + " Product " + productIndex + ": " + product); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java index def670093e6e..6322fbe8b45b 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java @@ -15,36 +15,38 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * A Usb Endpoint Descriptor. * see usb11.pdf section 9.6.4 */ public class UsbEndpointDescriptor extends UsbDescriptor { - private static final String TAG = "EndPoint"; + private static final String TAG = "UsbEndpointDescriptor"; - public static final byte MASK_ENDPOINT_ADDRESS = 0b0001111; - public static final byte MASK_ENDPOINT_DIRECTION = (byte) 0b10000000; - public static final byte DIRECTION_OUTPUT = 0x00; - public static final byte DIRECTION_INPUT = (byte) 0x80; + public static final byte MASK_ENDPOINT_ADDRESS = 0b0001111; + public static final byte MASK_ENDPOINT_DIRECTION = (byte) 0b10000000; + public static final byte DIRECTION_OUTPUT = 0x00; + public static final byte DIRECTION_INPUT = (byte) 0x80; public static final byte MASK_ATTRIBS_TRANSTYPE = 0b00000011; - public static final byte TRANSTYPE_CONTROL = 0x00; - public static final byte TRANSTYPE_ISO = 0x01; - public static final byte TRANSTYPE_BULK = 0x02; - public static final byte TRANSTYPE_INTERRUPT = 0x03; - - public static final byte MASK_ATTRIBS_SYNCTYPE = 0b00001100; - public static final byte SYNCTYPE_NONE = 0b00000000; - public static final byte SYNCTYPE_ASYNC = 0b00000100; - public static final byte SYNCTYPE_ADAPTSYNC = 0b00001000; - public static final byte SYNCTYPE_RESERVED = 0b00001100; - - public static final byte MASK_ATTRIBS_USEAGE = 0b00110000; - public static final byte USEAGE_DATA = 0b00000000; - public static final byte USEAGE_FEEDBACK = 0b00010000; - public static final byte USEAGE_EXPLICIT = 0b00100000; - public static final byte USEAGE_RESERVED = 0b00110000; + public static final byte TRANSTYPE_CONTROL = 0x00; + public static final byte TRANSTYPE_ISO = 0x01; + public static final byte TRANSTYPE_BULK = 0x02; + public static final byte TRANSTYPE_INTERRUPT = 0x03; + + public static final byte MASK_ATTRIBS_SYNCTYPE = 0b00001100; + public static final byte SYNCTYPE_NONE = 0b00000000; + public static final byte SYNCTYPE_ASYNC = 0b00000100; + public static final byte SYNCTYPE_ADAPTSYNC = 0b00001000; + public static final byte SYNCTYPE_RESERVED = 0b00001100; + + public static final byte MASK_ATTRIBS_USEAGE = 0b00110000; + public static final byte USEAGE_DATA = 0b00000000; + public static final byte USEAGE_FEEDBACK = 0b00010000; + public static final byte USEAGE_EXPLICIT = 0b00100000; + public static final byte USEAGE_RESERVED = 0b00110000; private byte mEndpointAddress; // 2:1 Endpoint Address // Bits 0..3b Endpoint Number. @@ -76,6 +78,7 @@ public class UsbEndpointDescriptor extends UsbDescriptor { public UsbEndpointDescriptor(int length, byte type) { super(length, type); + mHierarchyLevel = 4; } public byte getEndpointAddress() { @@ -106,7 +109,7 @@ public class UsbEndpointDescriptor extends UsbDescriptor { public int parseRawDescriptors(ByteStream stream) { mEndpointAddress = stream.getByte(); mAttributes = stream.getByte(); - mPacketSize = stream.unpackUsbWord(); + mPacketSize = stream.unpackUsbShort(); mInterval = stream.getByte(); if (mLength == 9) { mRefresh = stream.getByte(); @@ -114,4 +117,76 @@ public class UsbEndpointDescriptor extends UsbDescriptor { } return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + + byte address = getEndpointAddress(); + canvas.writeListItem("Address: " + + ReportCanvas.getHexString(address & UsbEndpointDescriptor.MASK_ENDPOINT_ADDRESS) + + ((address & UsbEndpointDescriptor.MASK_ENDPOINT_DIRECTION) + == UsbEndpointDescriptor.DIRECTION_OUTPUT ? " [out]" : " [in]")); + + byte attributes = getAttributes(); + canvas.openListItem(); + canvas.write("Attributes: " + ReportCanvas.getHexString(attributes) + " "); + switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE) { + case UsbEndpointDescriptor.TRANSTYPE_CONTROL: + canvas.write("Control"); + break; + case UsbEndpointDescriptor.TRANSTYPE_ISO: + canvas.write("Iso"); + break; + case UsbEndpointDescriptor.TRANSTYPE_BULK: + canvas.write("Bulk"); + break; + case UsbEndpointDescriptor.TRANSTYPE_INTERRUPT: + canvas.write("Interrupt"); + break; + } + canvas.closeListItem(); + + // These flags are only relevant for ISO transfer type + if ((attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE) + == UsbEndpointDescriptor.TRANSTYPE_ISO) { + canvas.openListItem(); + canvas.write("Aync: "); + switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_SYNCTYPE) { + case UsbEndpointDescriptor.SYNCTYPE_NONE: + canvas.write("NONE"); + break; + case UsbEndpointDescriptor.SYNCTYPE_ASYNC: + canvas.write("ASYNC"); + break; + case UsbEndpointDescriptor.SYNCTYPE_ADAPTSYNC: + canvas.write("ADAPTIVE ASYNC"); + break; + } + canvas.closeListItem(); + + canvas.openListItem(); + canvas.write("Useage: "); + switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_USEAGE) { + case UsbEndpointDescriptor.USEAGE_DATA: + canvas.write("DATA"); + break; + case UsbEndpointDescriptor.USEAGE_FEEDBACK: + canvas.write("FEEDBACK"); + break; + case UsbEndpointDescriptor.USEAGE_EXPLICIT: + canvas.write("EXPLICIT FEEDBACK"); + break; + case UsbEndpointDescriptor.USEAGE_RESERVED: + canvas.write("RESERVED"); + break; + } + canvas.closeListItem(); + } + canvas.writeListItem("Package Size: " + getPacketSize()); + canvas.writeListItem("Interval: " + getInterval()); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java index 56c07ec9a071..b4cc87e096df 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * A USB HID (Human Interface Descriptor). * see HID1_11.pdf - 6.2.1 */ -public class UsbHIDDescriptor extends UsbDescriptor { - private static final String TAG = "HID"; +public final class UsbHIDDescriptor extends UsbDescriptor { + private static final String TAG = "UsbHIDDescriptor"; private int mRelease; // 2:2 the HID Class Specification release. private byte mCountryCode; // 4:1 country code of the localized hardware. @@ -35,6 +37,7 @@ public class UsbHIDDescriptor extends UsbDescriptor { public UsbHIDDescriptor(int length, byte type) { super(length, type); + mHierarchyLevel = 3; } public int getRelease() { @@ -59,12 +62,24 @@ public class UsbHIDDescriptor extends UsbDescriptor { @Override public int parseRawDescriptors(ByteStream stream) { - mRelease = stream.unpackUsbWord(); + mRelease = stream.unpackUsbShort(); mCountryCode = stream.getByte(); mNumDescriptors = stream.getByte(); mDescriptorType = stream.getByte(); - mDescriptorLen = stream.unpackUsbWord(); + mDescriptorLen = stream.unpackUsbShort(); return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.openList(); + canvas.writeListItem("Spec: " + ReportCanvas.getBCDString(getRelease())); + canvas.writeListItem("Type: " + ReportCanvas.getBCDString(getDescriptorType())); + canvas.writeListItem("" + getNumDescriptors() + " Descriptors Len: " + + getDescriptorLen()); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java b/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java index 4b18a01b1c8b..d680e543693a 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java @@ -15,14 +15,16 @@ */ package com.android.server.usb.descriptors; +// import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * A USB Interface Association Descriptor. * found this one here: http://www.usb.org/developers/docs/whitepapers/iadclasscode_r10.pdf * also: https://msdn.microsoft.com/en-us/library/windows/hardware/ff540054(v=vs.85).aspx */ -public class UsbInterfaceAssoc extends UsbDescriptor { - private static final String TAG = "InterfaceAssoc"; +public final class UsbInterfaceAssoc extends UsbDescriptor { + private static final String TAG = "UsbInterfaceAssoc"; private byte mFirstInterface; private byte mInterfaceCount; @@ -70,4 +72,11 @@ public class UsbInterfaceAssoc extends UsbDescriptor { return mLength; } + + // TODO - Report fields +// @Override +// public void report(ReportCanvas canvas) { +// super.report(canvas); +// +// } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java index 21b5e0cbaa1b..4eef6caf5a60 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java @@ -15,13 +15,16 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.UsbStrings; + /** * @hide * A common super-class for all USB Interface Descritor subtypes. * see usb11.pdf section 9.6.3 */ public class UsbInterfaceDescriptor extends UsbDescriptor { - private static final String TAG = "Interface"; + private static final String TAG = "UsbInterfaceDescriptor"; protected byte mInterfaceNumber; // 2:1 Number of Interface protected byte mAlternateSetting; // 3:1 Value used to select alternative setting @@ -33,6 +36,7 @@ public class UsbInterfaceDescriptor extends UsbDescriptor { UsbInterfaceDescriptor(int length, byte type) { super(length, type); + mHierarchyLevel = 3; } @Override @@ -75,4 +79,27 @@ public class UsbInterfaceDescriptor extends UsbDescriptor { public byte getDescrIndex() { return mDescrIndex; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + byte usbClass = getUsbClass(); + byte usbSubclass = getUsbSubclass(); + byte protocol = getProtocol(); + String className = UsbStrings.getClassName(usbClass); + String subclassName = ""; + if (usbClass == UsbDescriptor.CLASSID_AUDIO) { + subclassName = UsbStrings.getAudioSubclassName(usbSubclass); + } + + canvas.openList(); + canvas.writeListItem("Interface #" + getInterfaceNumber()); + canvas.writeListItem("Class: " + ReportCanvas.getHexString(usbClass) + ": " + className); + canvas.writeListItem("Subclass: " + + ReportCanvas.getHexString(usbSubclass) + ": " + subclassName); + canvas.writeListItem("Protocol: " + protocol + ": " + ReportCanvas.getHexString(protocol)); + canvas.writeListItem("Endpoints: " + getNumEndpoints()); + canvas.closeList(); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java index 4452b23cb6ae..85a3e6802ff7 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Midi Streaming Interface. * see midi10.pdf section 6.1.2.1 */ -public class UsbMSMidiHeader extends UsbACInterface { - private static final String TAG = "MSMidiHeader"; +public final class UsbMSMidiHeader extends UsbACInterface { + private static final String TAG = "UsbMSMidiHeader"; public UsbMSMidiHeader(int length, byte type, byte subtype, byte subclass) { super(length, type, subtype, subclass); @@ -33,4 +35,13 @@ public class UsbMSMidiHeader extends UsbACInterface { stream.advance(mLength - stream.getReadCount()); return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.writeHeader(3, "MS Midi Header: " + ReportCanvas.getHexString(getType()) + + " SubType: " + ReportCanvas.getHexString(getSubclass()) + + " Length: " + getLength()); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java index 2d33ba7727dd..1d5cbf2b5c99 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Midi Input Jack Interface. * see midi10.pdf section B.4.3 */ -public class UsbMSMidiInputJack extends UsbACInterface { - private static final String TAG = "MSMidiInputJack"; +public final class UsbMSMidiInputJack extends UsbACInterface { + private static final String TAG = "UsbMSMidiInputJack"; UsbMSMidiInputJack(int length, byte type, byte subtype, byte subclass) { super(length, type, subtype, subclass); @@ -33,4 +35,13 @@ public class UsbMSMidiInputJack extends UsbACInterface { stream.advance(mLength - stream.getReadCount()); return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.writeHeader(3, "MS Midi Input Jack: " + ReportCanvas.getHexString(getType()) + + " SubType: " + ReportCanvas.getHexString(getSubclass()) + + " Length: " + getLength()); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java index bd2dc11d57df..9f50240a94ca 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java @@ -15,13 +15,15 @@ */ package com.android.server.usb.descriptors; +import com.android.server.usb.descriptors.report.ReportCanvas; + /** * @hide * An audio class-specific Midi Output Jack Interface. * see midi10.pdf section B.4.4 */ -public class UsbMSMidiOutputJack extends UsbACInterface { - private static final String TAG = "MSMidiOutputJack"; +public final class UsbMSMidiOutputJack extends UsbACInterface { + private static final String TAG = "UsbMSMidiOutputJack"; public UsbMSMidiOutputJack(int length, byte type, byte subtype, byte subclass) { super(length, type, subtype, subclass); @@ -33,4 +35,13 @@ public class UsbMSMidiOutputJack extends UsbACInterface { stream.advance(mLength - stream.getReadCount()); return mLength; } + + @Override + public void report(ReportCanvas canvas) { + super.report(canvas); + + canvas.writeHeader(3, "MS Midi Output Jack: " + ReportCanvas.getHexString(getType()) + + " SubType: " + ReportCanvas.getHexString(getSubclass()) + + " Length: " + getLength()); + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java b/services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java index b5214625126a..9bd6cb942888 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java @@ -20,8 +20,8 @@ package com.android.server.usb.descriptors; * A class for decoding information in Terminal Descriptors. * see termt10.pdf */ -public class UsbTerminalTypes { - private static final String TAG = "TerminalTypes"; +public final class UsbTerminalTypes { + private static final String TAG = "UsbTerminalTypes"; // USB public static final int TERMINAL_USB_STREAMING = 0x0101; diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java b/services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java index a6fe8bba3508..6e6dccf00613 100644 --- a/services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java +++ b/services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java @@ -19,8 +19,8 @@ package com.android.server.usb.descriptors; * @hide * A holder for any unrecognized descriptor encountered in the descriptor stream. */ -public class UsbUnknown extends UsbDescriptor { - static final String TAG = "Unknown"; +public final class UsbUnknown extends UsbDescriptor { + static final String TAG = "UsbUnknown"; public UsbUnknown(int length, byte type) { super(length, type); diff --git a/services/usb/java/com/android/server/usb/descriptors/report/HTMLReportCanvas.java b/services/usb/java/com/android/server/usb/descriptors/report/HTMLReportCanvas.java new file mode 100644 index 000000000000..99ebccade735 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/report/HTMLReportCanvas.java @@ -0,0 +1,97 @@ +/* + * 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.server.usb.descriptors.report; + +import android.hardware.usb.UsbDeviceConnection; + +/** + * @hide + * A concrete implementation of ReportCanvas class which generates HTML. + */ +public final class HTMLReportCanvas extends ReportCanvas { + private static final String TAG = "HTMLReportCanvas"; + + private final StringBuilder mStringBuilder; + + /** + * Constructor. Connects HTML output to the provided StringBuilder. + * @param connection The USB connection object used to retrieve strings + * from the USB device. + * @param stringBuilder Generated output gets written into this object. + */ + public HTMLReportCanvas(UsbDeviceConnection connection, StringBuilder stringBuilder) { + super(connection); + + mStringBuilder = stringBuilder; + } + + @Override + public void write(String text) { + mStringBuilder.append(text); + } + + @Override + public void openHeader(int level) { + mStringBuilder.append("<h").append(level).append('>'); + } + + @Override + public void closeHeader(int level) { + mStringBuilder.append("</h").append(level).append('>'); + } + + // we can be cleverer (more clever?) with styles, but this will do for now. + @Override + public void openParagraph(boolean emphasis) { + if (emphasis) { + mStringBuilder.append("<p style=\"color:red\">"); + } else { + mStringBuilder.append("<p>"); + } + } + + @Override + public void closeParagraph() { + mStringBuilder.append("</p>"); + } + + @Override + public void writeParagraph(String text, boolean inRed) { + openParagraph(inRed); + mStringBuilder.append(text); + closeParagraph(); + } + + @Override + public void openList() { + mStringBuilder.append("<ul>"); + } + + @Override + public void closeList() { + mStringBuilder.append("</ul>"); + } + + @Override + public void openListItem() { + mStringBuilder.append("<li>"); + } + + @Override + public void closeListItem() { + mStringBuilder.append("</li>"); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java b/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java deleted file mode 100644 index c98789d880a0..000000000000 --- a/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java +++ /dev/null @@ -1,572 +0,0 @@ -/* - * 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.server.usb.descriptors.report; - -import android.hardware.usb.UsbDeviceConnection; - -import com.android.server.usb.descriptors.UsbACAudioControlEndpoint; -import com.android.server.usb.descriptors.UsbACAudioStreamEndpoint; -import com.android.server.usb.descriptors.UsbACFeatureUnit; -import com.android.server.usb.descriptors.UsbACHeader; -import com.android.server.usb.descriptors.UsbACInputTerminal; -import com.android.server.usb.descriptors.UsbACInterface; -import com.android.server.usb.descriptors.UsbACMidiEndpoint; -import com.android.server.usb.descriptors.UsbACMixerUnit; -import com.android.server.usb.descriptors.UsbACOutputTerminal; -import com.android.server.usb.descriptors.UsbACSelectorUnit; -import com.android.server.usb.descriptors.UsbACTerminal; -import com.android.server.usb.descriptors.UsbASFormat; -import com.android.server.usb.descriptors.UsbASFormatI; -import com.android.server.usb.descriptors.UsbASFormatII; -import com.android.server.usb.descriptors.UsbASGeneral; -import com.android.server.usb.descriptors.UsbConfigDescriptor; -import com.android.server.usb.descriptors.UsbDescriptor; -import com.android.server.usb.descriptors.UsbDeviceDescriptor; -import com.android.server.usb.descriptors.UsbEndpointDescriptor; -import com.android.server.usb.descriptors.UsbHIDDescriptor; -import com.android.server.usb.descriptors.UsbInterfaceAssoc; -import com.android.server.usb.descriptors.UsbInterfaceDescriptor; -import com.android.server.usb.descriptors.UsbMSMidiHeader; -import com.android.server.usb.descriptors.UsbMSMidiInputJack; -import com.android.server.usb.descriptors.UsbMSMidiOutputJack; -import com.android.server.usb.descriptors.UsbUnknown; - -/** - * Implements the Reporter inteface to provide HTML reporting for UsbDescriptor subclasses. - */ -public class HTMLReporter implements Reporter { - private final StringBuilder mStringBuilder; - private final UsbDeviceConnection mConnection; - - public HTMLReporter(StringBuilder stringBuilder, UsbDeviceConnection connection) { - mStringBuilder = stringBuilder; - mConnection = connection; - } - - /* - * HTML Helpers - */ - private void writeHeader(int level, String text) { - mStringBuilder - .append("<h").append(level).append('>') - .append(text) - .append("</h").append(level).append('>'); - } - - private void openParagraph() { - mStringBuilder.append("<p>"); - } - - private void closeParagraph() { - mStringBuilder.append("</p>"); - } - - private void writeParagraph(String text) { - openParagraph(); - mStringBuilder.append(text); - closeParagraph(); - } - - private void openList() { - mStringBuilder.append("<ul>"); - } - - private void closeList() { - mStringBuilder.append("</ul>"); - } - - private void openListItem() { - mStringBuilder.append("<li>"); - } - - private void closeListItem() { - mStringBuilder.append("</li>"); - } - - private void writeListItem(String text) { - openListItem(); - mStringBuilder.append(text); - closeListItem(); - } - - /* - * Data Formating Helpers - */ - private static String getHexString(byte value) { - return "0x" + Integer.toHexString(((int) value) & 0xFF).toUpperCase(); - } - - private static String getBCDString(int value) { - int major = value >> 8; - int minor = (value >> 4) & 0x0F; - int subminor = value & 0x0F; - - return "" + major + "." + minor + subminor; - } - - private static String getHexString(int value) { - int intValue = value & 0xFFFF; - return "0x" + Integer.toHexString(intValue).toUpperCase(); - } - - private void dumpHexArray(byte[] rawData, StringBuilder builder) { - if (rawData != null) { - // Assume the type and Length and perhaps sub-type have been displayed - openParagraph(); - for (int index = 0; index < rawData.length; index++) { - builder.append(getHexString(rawData[index]) + " "); - } - closeParagraph(); - } - } - - /** - * Decode ACTUAL UsbDescriptor sub classes and call type-specific report methods. - */ - @Override - public void report(UsbDescriptor descriptor) { - if (descriptor instanceof UsbDeviceDescriptor) { - tsReport((UsbDeviceDescriptor) descriptor); - } else if (descriptor instanceof UsbConfigDescriptor) { - tsReport((UsbConfigDescriptor) descriptor); - } else if (descriptor instanceof UsbInterfaceDescriptor) { - tsReport((UsbInterfaceDescriptor) descriptor); - } else if (descriptor instanceof UsbEndpointDescriptor) { - tsReport((UsbEndpointDescriptor) descriptor); - } else if (descriptor instanceof UsbHIDDescriptor) { - tsReport((UsbHIDDescriptor) descriptor); - } else if (descriptor instanceof UsbACAudioControlEndpoint) { - tsReport((UsbACAudioControlEndpoint) descriptor); - } else if (descriptor instanceof UsbACAudioStreamEndpoint) { - tsReport((UsbACAudioStreamEndpoint) descriptor); - } else if (descriptor instanceof UsbACHeader) { - tsReport((UsbACHeader) descriptor); - } else if (descriptor instanceof UsbACFeatureUnit) { - tsReport((UsbACFeatureUnit) descriptor); - } else if (descriptor instanceof UsbACInputTerminal) { - tsReport((UsbACInputTerminal) descriptor); - } else if (descriptor instanceof UsbACOutputTerminal) { - tsReport((UsbACOutputTerminal) descriptor); - } else if (descriptor instanceof UsbACMidiEndpoint) { - tsReport((UsbACMidiEndpoint) descriptor); - } else if (descriptor instanceof UsbACMixerUnit) { - tsReport((UsbACMixerUnit) descriptor); - } else if (descriptor instanceof UsbACSelectorUnit) { - tsReport((UsbACSelectorUnit) descriptor); - } else if (descriptor instanceof UsbASFormatI) { - tsReport((UsbASFormatI) descriptor); - } else if (descriptor instanceof UsbASFormatII) { - tsReport((UsbASFormatII) descriptor); - } else if (descriptor instanceof UsbASFormat) { - tsReport((UsbASFormat) descriptor); - } else if (descriptor instanceof UsbASGeneral) { - tsReport((UsbASGeneral) descriptor); - } else if (descriptor instanceof UsbInterfaceAssoc) { - tsReport((UsbInterfaceAssoc) descriptor); - } else if (descriptor instanceof UsbMSMidiHeader) { - tsReport((UsbMSMidiHeader) descriptor); - } else if (descriptor instanceof UsbMSMidiInputJack) { - tsReport((UsbMSMidiInputJack) descriptor); - } else if (descriptor instanceof UsbMSMidiOutputJack) { - tsReport((UsbMSMidiOutputJack) descriptor); - } else if (descriptor instanceof UsbUnknown) { - tsReport((UsbUnknown) descriptor); - } else if (descriptor instanceof UsbACInterface) { - tsReport((UsbACInterface) descriptor); - } else if (descriptor instanceof UsbDescriptor) { - tsReport((UsbDescriptor) descriptor); - } - } - - // - // Type-specific report() implementations - // - private void tsReport(UsbDescriptor descriptor) { - int length = descriptor.getLength(); - byte type = descriptor.getType(); - int status = descriptor.getStatus(); - - String descTypeStr = UsbStrings.getDescriptorName(type); - writeParagraph(descTypeStr + ":" + type + " l:" + length + " s:" + status); - } - - private void tsReport(UsbDeviceDescriptor descriptor) { - writeHeader(1, "Device len:" + descriptor.getLength()); - openList(); - - int spec = descriptor.getSpec(); - writeListItem("spec:" + getBCDString(spec)); - - byte devClass = descriptor.getDevClass(); - String classStr = UsbStrings.getClassName(devClass); - byte devSubClass = descriptor.getDevSubClass(); - String subClasStr = UsbStrings.getClassName(devSubClass); - writeListItem("class " + devClass + ":" + classStr + " subclass" - + devSubClass + ":" + subClasStr); - writeListItem("vendorID:" + descriptor.getVendorID() - + " prodID:" + descriptor.getProductID() - + " prodRel:" + getBCDString(descriptor.getDeviceRelease())); - - byte mfgIndex = descriptor.getMfgIndex(); - String manufacturer = UsbDescriptor.getUsbDescriptorString(mConnection, mfgIndex); - byte productIndex = descriptor.getProductIndex(); - String product = UsbDescriptor.getUsbDescriptorString(mConnection, productIndex); - - writeListItem("mfg " + mfgIndex + ":" + manufacturer - + " prod " + productIndex + ":" + product); - closeList(); - } - - private void tsReport(UsbConfigDescriptor descriptor) { - writeHeader(2, "Config #" + descriptor.getConfigValue() - + " len:" + descriptor.getLength()); - - openList(); - writeListItem(descriptor.getNumInterfaces() + " interfaces."); - writeListItem("attribs:" + getHexString(descriptor.getAttribs())); - closeList(); - } - - private void tsReport(UsbInterfaceDescriptor descriptor) { - byte usbClass = descriptor.getUsbClass(); - byte usbSubclass = descriptor.getUsbSubclass(); - String descr = UsbStrings.getDescriptorName(descriptor.getType()); - String className = UsbStrings.getClassName(usbClass); - String subclassName = ""; - if (usbClass == UsbDescriptor.CLASSID_AUDIO) { - subclassName = UsbStrings.getAudioSubclassName(usbSubclass); - } - - writeHeader(2, descr + " #" + descriptor.getInterfaceNumber() - + " len:" + descriptor.getLength()); - String descrStr = - UsbDescriptor.getUsbDescriptorString(mConnection, descriptor.getDescrIndex()); - if (descrStr.length() > 0) { - mStringBuilder.append("<br>" + descrStr); - } - openList(); - writeListItem("class " + getHexString(usbClass) + ":" + className - + " subclass " + getHexString(usbSubclass) + ":" + subclassName); - writeListItem("" + descriptor.getNumEndpoints() + " endpoints"); - closeList(); - } - - private void tsReport(UsbEndpointDescriptor descriptor) { - writeHeader(3, "Endpoint " + getHexString(descriptor.getType()) - + " len:" + descriptor.getLength()); - openList(); - - byte address = descriptor.getEndpointAddress(); - writeListItem("address:" - + getHexString(address & UsbEndpointDescriptor.MASK_ENDPOINT_ADDRESS) - + ((address & UsbEndpointDescriptor.MASK_ENDPOINT_DIRECTION) - == UsbEndpointDescriptor.DIRECTION_OUTPUT ? " [out]" : " [in]")); - - byte attributes = descriptor.getAttributes(); - openListItem(); - mStringBuilder.append("attribs:" + getHexString(attributes) + " "); - switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE) { - case UsbEndpointDescriptor.TRANSTYPE_CONTROL: - mStringBuilder.append("Control"); - break; - case UsbEndpointDescriptor.TRANSTYPE_ISO: - mStringBuilder.append("Iso"); - break; - case UsbEndpointDescriptor.TRANSTYPE_BULK: - mStringBuilder.append("Bulk"); - break; - case UsbEndpointDescriptor.TRANSTYPE_INTERRUPT: - mStringBuilder.append("Interrupt"); - break; - } - closeListItem(); - - // These flags are only relevant for ISO transfer type - if ((attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE) - == UsbEndpointDescriptor.TRANSTYPE_ISO) { - openListItem(); - mStringBuilder.append("sync:"); - switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_SYNCTYPE) { - case UsbEndpointDescriptor.SYNCTYPE_NONE: - mStringBuilder.append("NONE"); - break; - case UsbEndpointDescriptor.SYNCTYPE_ASYNC: - mStringBuilder.append("ASYNC"); - break; - case UsbEndpointDescriptor.SYNCTYPE_ADAPTSYNC: - mStringBuilder.append("ADAPTIVE ASYNC"); - break; - } - closeListItem(); - - openListItem(); - mStringBuilder.append("useage:"); - switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_USEAGE) { - case UsbEndpointDescriptor.USEAGE_DATA: - mStringBuilder.append("DATA"); - break; - case UsbEndpointDescriptor.USEAGE_FEEDBACK: - mStringBuilder.append("FEEDBACK"); - break; - case UsbEndpointDescriptor.USEAGE_EXPLICIT: - mStringBuilder.append("EXPLICIT FEEDBACK"); - break; - case UsbEndpointDescriptor.USEAGE_RESERVED: - mStringBuilder.append("RESERVED"); - break; - } - closeListItem(); - } - writeListItem("package size:" + descriptor.getPacketSize()); - writeListItem("interval:" + descriptor.getInterval()); - closeList(); - } - - private void tsReport(UsbHIDDescriptor descriptor) { - String descr = UsbStrings.getDescriptorName(descriptor.getType()); - writeHeader(2, descr + " len:" + descriptor.getLength()); - openList(); - writeListItem("spec:" + getBCDString(descriptor.getRelease())); - writeListItem("type:" + getBCDString(descriptor.getDescriptorType())); - writeListItem("descriptor.getNumDescriptors() descriptors len:" - + descriptor.getDescriptorLen()); - closeList(); - } - - private void tsReport(UsbACAudioControlEndpoint descriptor) { - writeHeader(3, "AC Audio Control Endpoint:" + getHexString(descriptor.getType()) - + " length:" + descriptor.getLength()); - } - - private void tsReport(UsbACAudioStreamEndpoint descriptor) { - writeHeader(3, "AC Audio Streaming Endpoint:" - + getHexString(descriptor.getType()) - + " length:" + descriptor.getLength()); - } - - private void tsReport(UsbACHeader descriptor) { - tsReport((UsbACInterface) descriptor); - - openList(); - writeListItem("spec:" + getBCDString(descriptor.getADCRelease())); - int numInterfaces = descriptor.getNumInterfaces(); - writeListItem("" + numInterfaces + " interfaces"); - if (numInterfaces > 0) { - openListItem(); - mStringBuilder.append("["); - byte[] interfaceNums = descriptor.getInterfaceNums(); - if (numInterfaces != 0 && interfaceNums != null) { - for (int index = 0; index < numInterfaces; index++) { - mStringBuilder.append("" + interfaceNums[index]); - if (index < numInterfaces - 1) { - mStringBuilder.append(" "); - } - } - } - mStringBuilder.append("]"); - closeListItem(); - } - writeListItem("controls:" + getHexString(descriptor.getControls())); - closeList(); - } - - private void tsReport(UsbACFeatureUnit descriptor) { - tsReport((UsbACInterface) descriptor); - } - - private void tsReport(UsbACInterface descriptor) { - String subClassName = - descriptor.getSubclass() == UsbDescriptor.AUDIO_AUDIOCONTROL - ? "AC Control" - : "AC Streaming"; - byte subtype = descriptor.getSubtype(); - String subTypeStr = UsbStrings.getACControlInterfaceName(subtype); - writeHeader(4, subClassName + " - " + getHexString(subtype) - + ":" + subTypeStr + " len:" + descriptor.getLength()); - } - - private void tsReport(UsbACTerminal descriptor) { - tsReport((UsbACInterface) descriptor); - } - - private void tsReport(UsbACInputTerminal descriptor) { - tsReport((UsbACTerminal) descriptor); - - openList(); - writeListItem("ID:" + getHexString(descriptor.getTerminalID())); - int terminalType = descriptor.getTerminalType(); - writeListItem("Type:<b>" + getHexString(terminalType) + ":" - + UsbStrings.getTerminalName(terminalType) + "</b>"); - writeListItem("AssocTerminal:" + getHexString(descriptor.getAssocTerminal())); - writeListItem("" + descriptor.getNrChannels() + " chans. config:" - + getHexString(descriptor.getChannelConfig())); - closeList(); - } - - private void tsReport(UsbACOutputTerminal descriptor) { - tsReport((UsbACTerminal) descriptor); - - openList(); - writeListItem("ID:" + getHexString(descriptor.getTerminalID())); - int terminalType = descriptor.getTerminalType(); - writeListItem("Type:<b>" + getHexString(terminalType) + ":" - + UsbStrings.getTerminalName(terminalType) + "</b>"); - writeListItem("AssocTerminal:" + getHexString(descriptor.getAssocTerminal())); - writeListItem("Source:" + getHexString(descriptor.getSourceID())); - closeList(); - } - - private void tsReport(UsbACMidiEndpoint descriptor) { - writeHeader(3, "AC Midi Endpoint:" + getHexString(descriptor.getType()) - + " length:" + descriptor.getLength()); - openList(); - writeListItem("" + descriptor.getNumJacks() + " jacks."); - closeList(); - } - - private void tsReport(UsbACMixerUnit descriptor) { - tsReport((UsbACInterface) descriptor); - openList(); - - writeListItem("Unit ID:" + getHexString(descriptor.getUnitID())); - byte numInputs = descriptor.getNumInputs(); - byte[] inputIDs = descriptor.getInputIDs(); - openListItem(); - mStringBuilder.append("Num Inputs:" + numInputs + " ["); - for (int input = 0; input < numInputs; input++) { - mStringBuilder.append("" + getHexString(inputIDs[input])); - if (input < numInputs - 1) { - mStringBuilder.append(" "); - } - } - mStringBuilder.append("]"); - closeListItem(); - - writeListItem("Num Outputs:" + descriptor.getNumOutputs()); - writeListItem("Chan Config:" + getHexString(descriptor.getChannelConfig())); - - byte[] controls = descriptor.getControls(); - openListItem(); - mStringBuilder.append("controls:" + controls.length + " ["); - for (int ctrl = 0; ctrl < controls.length; ctrl++) { - mStringBuilder.append("" + controls[ctrl]); - if (ctrl < controls.length - 1) { - mStringBuilder.append(" "); - } - } - mStringBuilder.append("]"); - closeListItem(); - closeList(); - // byte mChanNameID; // First channel name string descriptor ID - // byte mNameID; // string descriptor ID of mixer name - } - - private void tsReport(UsbACSelectorUnit descriptor) { - tsReport((UsbACInterface) descriptor); - } - - private void tsReport(UsbASFormat descriptor) { - writeHeader(4, "AC Streaming Format " - + (descriptor.getFormatType() == UsbASFormat.FORMAT_TYPE_I ? "I" : "II") - + " - " + getHexString(descriptor.getSubtype()) + ":" - + " len:" + descriptor.getLength()); - } - - private void tsReport(UsbASFormatI descriptor) { - tsReport((UsbASFormat) descriptor); - openList(); - writeListItem("chans:" + descriptor.getNumChannels()); - writeListItem("subframe size:" + descriptor.getSubframeSize()); - writeListItem("bit resolution:" + descriptor.getBitResolution()); - byte sampleFreqType = descriptor.getSampleFreqType(); - int[] sampleRates = descriptor.getSampleRates(); - writeListItem("sample freq type:" + sampleFreqType); - if (sampleFreqType == 0) { - openList(); - writeListItem("min:" + sampleRates[0]); - writeListItem("max:" + sampleRates[1]); - closeList(); - } else { - openList(); - for (int index = 0; index < sampleFreqType; index++) { - writeListItem("" + sampleRates[index]); - } - closeList(); - } - closeList(); - } - - private void tsReport(UsbASFormatII descriptor) { - tsReport((UsbASFormat) descriptor); - openList(); - writeListItem("max bit rate:" + descriptor.getMaxBitRate()); - writeListItem("samples per frame:" + descriptor.getMaxBitRate()); - byte sampleFreqType = descriptor.getSamFreqType(); - int[] sampleRates = descriptor.getSampleRates(); - writeListItem("sample freq type:" + sampleFreqType); - if (sampleFreqType == 0) { - openList(); - writeListItem("min:" + sampleRates[0]); - writeListItem("max:" + sampleRates[1]); - closeList(); - } else { - openList(); - for (int index = 0; index < sampleFreqType; index++) { - writeListItem("" + sampleRates[index]); - } - closeList(); - } - - closeList(); - } - - private void tsReport(UsbASGeneral descriptor) { - tsReport((UsbACInterface) descriptor); - openList(); - int formatTag = descriptor.getFormatTag(); - writeListItem("fmt:" + UsbStrings.getAudioFormatName(formatTag) + " - " - + getHexString(formatTag)); - closeList(); - } - - private void tsReport(UsbInterfaceAssoc descriptor) { - tsReport((UsbDescriptor) descriptor); - } - - private void tsReport(UsbMSMidiHeader descriptor) { - writeHeader(3, "MS Midi Header:" + getHexString(descriptor.getType()) - + " subType:" + getHexString(descriptor.getSubclass()) - + " length:" + descriptor.getSubclass()); - } - - private void tsReport(UsbMSMidiInputJack descriptor) { - writeHeader(3, "MS Midi Input Jack:" + getHexString(descriptor.getType()) - + " subType:" + getHexString(descriptor.getSubclass()) - + " length:" + descriptor.getSubclass()); - } - - private void tsReport(UsbMSMidiOutputJack descriptor) { - writeHeader(3, "MS Midi Output Jack:" + getHexString(descriptor.getType()) - + " subType:" + getHexString(descriptor.getSubclass()) - + " length:" + descriptor.getSubclass()); - } - - private void tsReport(UsbUnknown descriptor) { - writeParagraph("<i><b>Unknown Descriptor " + getHexString(descriptor.getType()) - + " len:" + descriptor.getLength() + "</b></i>"); - dumpHexArray(descriptor.getRawData(), mStringBuilder); - } -} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java b/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java new file mode 100644 index 000000000000..9e0adf55d87b --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java @@ -0,0 +1,174 @@ +/* + * 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.server.usb.descriptors.report; + +import android.hardware.usb.UsbDeviceConnection; + +/** + * @hide + * Defines a class for generating report data in a variety of potential formats. + */ +public abstract class ReportCanvas { + private static final String TAG = "ReportCanvas"; + + private final UsbDeviceConnection mConnection; + + /** + * Constructor. + * @param connection The USB connection object used to retrieve strings + * from the USB device. + */ + public ReportCanvas(UsbDeviceConnection connection) { + mConnection = connection; + } + + /** + * @returns the UsbDeviceConnection member (mConnection). + */ + public UsbDeviceConnection getConnection() { + return mConnection; + } + + /** + * Writes a plain string to the output. + */ + public abstract void write(String text); + + /** + * Opens a "header" formatted section in the output. + * @param level Specifies the logical level of the header. + */ + public abstract void openHeader(int level); + + /** + * Closes a "header" formatted section in the output. + * @param level Specifies the logical level of the header. + */ + public abstract void closeHeader(int level); + + /** + * Writes a "header" formatted string to the output. + * @param level Specifies the logical level of the header. + * @param text Specifies the text to display in the header. + */ + public void writeHeader(int level, String text) { + openHeader(level); + write(text); + closeHeader(level); + } + + /** + * Opens a paragraph construct in the output. + * @param emphasis Specifies whether the text in the paragraph should + * be displayed with "emphasis" formatting. + */ + public abstract void openParagraph(boolean emphasis); + + /** + * Closes a paragraph construct in the output. + */ + public abstract void closeParagraph(); + + /** + * Writes a paragraph construct to the output. + * @param text The text to display with "paragraph" formatting. + * @param emphasis Specifies whether the text in the paragraph should + * be displayed with "emphasis" formatting. + */ + public abstract void writeParagraph(String text, boolean emphasis); + + /** + * Opens a "list" formatted section in the output. + */ + public abstract void openList(); + + /** + * Closes a "list" formatted section in the output. + */ + public abstract void closeList(); + + /** + * Opens a "list item" formatted section in the output. + */ + public abstract void openListItem(); + + /** + * Closes a "list item" formatted section in the output. + */ + public abstract void closeListItem(); + + /** + * Writes a "list item" formatted section in the output. + * @param text Specifies the text of the list item. + */ + public void writeListItem(String text) { + openListItem(); + write(text); + closeListItem(); + } + + /* + * Data Formating Helpers + */ + /** + * Generates a hex representation of the specified byte value. + * @param value The value to format. + */ + //TODO Look into renaming the "getHexString()" functions to be more + // representative of the types they handle. + public static String getHexString(byte value) { + return "0x" + Integer.toHexString(((int) value) & 0xFF).toUpperCase(); + } + + /** + * Generates a string representing a USB Binary-Coded Decimal value. + * @param valueBCD The value to format. + */ + public static String getBCDString(int valueBCD) { + int major = (valueBCD >> 8) & 0x0F; + int minor = (valueBCD >> 4) & 0x0F; + int subminor = valueBCD & 0x0F; + + return "" + major + "." + minor + subminor; + } + + /** + * Generates a hex representation of the specified 16-bit integer value. + * @param value The value to format. + */ + //TODO Look into renaming the "getHexString()" functions to be more + // representative of the types they handle. + public static String getHexString(int value) { + int intValue = value & 0xFFFF; + return "0x" + Integer.toHexString(intValue).toUpperCase(); + } + + /** + * Writes out the specified byte array to the provided StringBuilder. + * @param rawData The byte values. + * @param builder The StringBuilder to write text into. + */ + public void dumpHexArray(byte[] rawData, StringBuilder builder) { + if (rawData != null) { + // Assume the type and Length and perhaps sub-type have been displayed + openParagraph(false); + for (int index = 0; index < rawData.length; index++) { + builder.append(getHexString(rawData[index]) + " "); + } + closeParagraph(); + } + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java b/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java deleted file mode 100644 index 2944c10796f6..000000000000 --- a/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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.server.usb.descriptors.report; - -import com.android.server.usb.descriptors.UsbDescriptor; - -/** - * Declares the Reporter interface to provide HTML reporting for UsbDescriptor (sub)classes. - * - * NOTE: It is the responsibility of the implementor of this interface to correctly - * interpret/decode the SPECIFIC UsbDescriptor subclass (perhaps with 'instanceof') that is - * passed and handle that in the appropriate manner. This appears to be a - * not very object-oriented approach, and that is true. This approach DOES however move the - * complexity and 'plumbing' of reporting into the Reporter implementation and avoids needing - * a (trivial) type-specific call to 'report()' in each UsbDescriptor (sub)class, instead - * having just one in the top-level UsbDescriptor class. It also removes the need to add new - * type-specific 'report()' methods to be added to Reporter interface whenever a - * new UsbDescriptor subclass is defined. This seems like a pretty good trade-off. - * - * See HTMLReporter.java in this package for an example of type decoding. - */ -public interface Reporter { - /** - * Generate report for this UsbDescriptor descriptor - */ - void report(UsbDescriptor descriptor); -} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java b/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java index c13111b3e81c..be7c12e4a521 100644 --- a/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java +++ b/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java @@ -16,12 +16,16 @@ package com.android.server.usb.descriptors.report; /** - * Declares the interface for classes that provide reporting functionality. - * (This is the double-indirection aspect of the "Visitor" pattern. + * @hide */ public interface Reporting { /** - * Declares the report method that UsbDescriptor subclasses call. + * TBD */ - void report(Reporter reporter); + void report(ReportCanvas canvas); + + /** + * TBD + */ + void shortReport(ReportCanvas canvas); } diff --git a/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java b/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java new file mode 100644 index 000000000000..a43569d40a67 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java @@ -0,0 +1,106 @@ +/* + * 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.server.usb.descriptors.report; + +import android.hardware.usb.UsbDeviceConnection; + +/** + * @hide + * A concrete implementation of ReportCanvas class which generates "Plain Text" output. + */ +public final class TextReportCanvas extends ReportCanvas { + private static final String TAG = "TextReportCanvas"; + + private final StringBuilder mStringBuilder; + private int mListIndent; + private static final int LIST_INDENT_AMNT = 2; + + /** + * Constructor. Connects plain-text output to the provided StringBuilder. + * @param connection The USB connection object used to retrieve strings + * from the USB device. + * @param stringBuilder Generated output gets written into this object. + */ + public TextReportCanvas(UsbDeviceConnection connection, StringBuilder stringBuilder) { + super(connection); + + mStringBuilder = stringBuilder; + } + + private void writeListIndent() { + for (int space = 0; space < mListIndent; space++) { + mStringBuilder.append(" "); + } + } + + @Override + public void write(String text) { + mStringBuilder.append(text); + } + + @Override + public void openHeader(int level) { + writeListIndent(); + mStringBuilder.append("["); + } + + @Override + public void closeHeader(int level) { + mStringBuilder.append("]\n"); + } + + @Override + public void openParagraph(boolean emphasis) { + writeListIndent(); + } + + @Override + public void closeParagraph() { + mStringBuilder.append("\n"); + } + + @Override + public void writeParagraph(String text, boolean inRed) { + openParagraph(inRed); + if (inRed) { + mStringBuilder.append("*" + text + "*"); + } else { + mStringBuilder.append(text); + } + closeParagraph(); + } + + @Override + public void openList() { + mListIndent += LIST_INDENT_AMNT; + } + + @Override + public void closeList() { + mListIndent -= LIST_INDENT_AMNT; + } + + @Override + public void openListItem() { + writeListIndent(); + mStringBuilder.append("- "); + } + + @Override + public void closeListItem() { + mStringBuilder.append("\n"); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java b/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java index 0461150abd27..64ecebc29db6 100644 --- a/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java +++ b/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java @@ -16,6 +16,7 @@ package com.android.server.usb.descriptors.report; import com.android.server.usb.descriptors.UsbACInterface; +import com.android.server.usb.descriptors.UsbASFormat; import com.android.server.usb.descriptors.UsbDescriptor; import com.android.server.usb.descriptors.UsbTerminalTypes; @@ -25,7 +26,7 @@ import java.util.HashMap; * @hide * A class to provide human-readable strings for various USB constants. */ -public class UsbStrings { +public final class UsbStrings { private static final String TAG = "UsbStrings"; private static HashMap<Byte, String> sDescriptorNames; @@ -35,6 +36,11 @@ public class UsbStrings { private static HashMap<Byte, String> sAudioSubclassNames; private static HashMap<Integer, String> sAudioEncodingNames; private static HashMap<Integer, String> sTerminalNames; + private static HashMap<Integer, String> sFormatNames; + + static { + allocUsbStrings(); + } private static void initDescriptorNames() { sDescriptorNames = new HashMap<Byte, String>(); @@ -70,6 +76,11 @@ public class UsbStrings { sACControlInterfaceNames.put(UsbACInterface.ACI_FEATURE_UNIT, "Feature Unit"); sACControlInterfaceNames.put(UsbACInterface.ACI_PROCESSING_UNIT, "Processing Unit"); sACControlInterfaceNames.put(UsbACInterface.ACI_EXTENSION_UNIT, "Extension Unit"); + sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_SOURCE, "Clock Source"); + sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_SELECTOR, "Clock Selector"); + sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_MULTIPLIER, "Clock Multiplier"); + sACControlInterfaceNames.put(UsbACInterface.ACI_SAMPLE_RATE_CONVERTER, + "Sample Rate Converter"); } private static void initACStreamingInterfaceNames() { @@ -213,10 +224,33 @@ public class UsbStrings { ? name : "Unknown Terminal Type 0x" + Integer.toHexString(terminalType); } + + private static void initFormatNames() { + sFormatNames = new HashMap<Integer, String>(); + + sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_I, "FORMAT_TYPE_I"); + sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_II, "FORMAT_TYPE_II"); + sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_III, "FORMAT_TYPE_III"); + sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_IV, "FORMAT_TYPE_IV"); + sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_I, "EXT_FORMAT_TYPE_I"); + sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_II, "EXT_FORMAT_TYPE_II"); + sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_III, "EXT_FORMAT_TYPE_III"); + } + + /** + * Retrieves the name for the specified format (encoding) type ID. + */ + public static String getFormatName(int format) { + String name = sFormatNames.get(format); + return name != null + ? name + : "Unknown Format Type 0x" + Integer.toHexString(format); + } + /** * Initializes string tables. */ - public static void allocUsbStrings() { + private static void allocUsbStrings() { initDescriptorNames(); initACControlInterfaceNames(); initACStreamingInterfaceNames(); @@ -224,19 +258,7 @@ public class UsbStrings { initAudioSubclassNames(); initAudioEncodingNames(); initTerminalNames(); - } - - /** - * Initializes string tables. - */ - public static void releaseUsbStrings() { - sDescriptorNames = null; - sACControlInterfaceNames = null; - sACStreamingInterfaceNames = null; - sClassNames = null; - sAudioSubclassNames = null; - sAudioEncodingNames = null; - sTerminalNames = null; + initFormatNames(); } /** @@ -309,4 +331,11 @@ public class UsbStrings { : "Unknown Format (encoding) ID [0x" + Integer.toHexString(formatID) + ":" + formatID + "]"; } + + /** + * Retrieves the name for the specified USB audio interface subclass ID. + */ + public static String getACInterfaceSubclassName(byte subClassID) { + return subClassID == UsbDescriptor.AUDIO_AUDIOCONTROL ? "AC Control" : "AC Streaming"; + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java new file mode 100644 index 000000000000..6dbf415ce7f9 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java @@ -0,0 +1,46 @@ +/* + * 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.server.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbACInterface; +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * A tree node containing some sort-of Audio Class Descriptor. + */ +public final class UsbDescriptorsACInterfaceNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsACInterfaceNode"; + + private final UsbACInterface mACInterface; + + /** + * Constructor. + * @param acInterface The Audio Class Inteface object wrapped by this tree node. + */ + public UsbDescriptorsACInterfaceNode(UsbACInterface acInterface) { + mACInterface = acInterface; + } + + @Override + public void report(ReportCanvas canvas) { + canvas.writeListItem("AC Interface type: 0x" + + Integer.toHexString(mACInterface.getSubtype())); + canvas.openList(); + mACInterface.report(canvas); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java new file mode 100644 index 000000000000..64f9496ae7c8 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java @@ -0,0 +1,63 @@ +/* + * 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.server.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbConfigDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +import java.util.ArrayList; + +/** + * @hide + * Represents a configuration in the descriptors tree. + */ +public final class UsbDescriptorsConfigNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsConfigNode"; + + private final UsbConfigDescriptor mConfigDescriptor; + + private final ArrayList<UsbDescriptorsInterfaceNode> mInterfaceNodes = new ArrayList<>(); + + /** + * Constructor. + * @param configDescriptor The Config Descriptor object wrapped by this tree node. + */ + public UsbDescriptorsConfigNode(UsbConfigDescriptor configDescriptor) { + mConfigDescriptor = configDescriptor; + } + + /** + * Adds the inteface node logical contained in this configuration. + * @param interfaceNode The inteface treenode to assocate with this configuration. + */ + public void addInterfaceNode(UsbDescriptorsInterfaceNode interfaceNode) { + mInterfaceNodes.add(interfaceNode); + } + + @Override + public void report(ReportCanvas canvas) { + mConfigDescriptor.report(canvas); + + canvas.openList(); + + // Interfaces + for (UsbDescriptorsInterfaceNode node : mInterfaceNodes) { + node.report(canvas); + } + + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java new file mode 100644 index 000000000000..898a06ecdafc --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java @@ -0,0 +1,56 @@ +/* + * 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.server.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbDeviceDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +import java.util.ArrayList; + +/** + * @hide + * A class to contain THE device descriptor at the root of the tree. + */ +public final class UsbDescriptorsDeviceNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsDeviceNode"; + + private final UsbDeviceDescriptor mDeviceDescriptor; + + private final ArrayList<UsbDescriptorsConfigNode> mConfigNodes = new ArrayList<>(); + + /** + * Constructor. + * @param deviceDescriptor The Device Descriptor object wrapped by this tree node. + */ + public UsbDescriptorsDeviceNode(UsbDeviceDescriptor deviceDescriptor) { + mDeviceDescriptor = deviceDescriptor; + } + + /** + * Adds a Configuration node to the assocated device node. + */ + public void addConfigDescriptorNode(UsbDescriptorsConfigNode configNode) { + mConfigNodes.add(configNode); + } + + @Override + public void report(ReportCanvas canvas) { + mDeviceDescriptor.report(canvas); + for (UsbDescriptorsConfigNode node : mConfigNodes) { + node.report(canvas); + } + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java new file mode 100644 index 000000000000..72864172147e --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java @@ -0,0 +1,42 @@ +/* + * 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.server.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbEndpointDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * Represents an endpoint in the descriptors tree. + */ +public final class UsbDescriptorsEndpointNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsEndpointNode"; + + private final UsbEndpointDescriptor mEndpointDescriptor; + + /** + * Constructor. + * @param endpointDescriptor The Device Descriptor object wrapped by this tree node. + */ + public UsbDescriptorsEndpointNode(UsbEndpointDescriptor endpointDescriptor) { + mEndpointDescriptor = endpointDescriptor; + } + + @Override + public void report(ReportCanvas canvas) { + mEndpointDescriptor.report(canvas); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java new file mode 100644 index 000000000000..d49d88db9882 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java @@ -0,0 +1,83 @@ +/* + * 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.server.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbInterfaceDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +import java.util.ArrayList; + +/** + * @hide + * Represents an interface in the descriptors tree. + */ +public final class UsbDescriptorsInterfaceNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsInterfaceNode"; + + private final UsbInterfaceDescriptor mInterfaceDescriptor; + + private final ArrayList<UsbDescriptorsEndpointNode> mEndpointNodes = new ArrayList<>(); + private final ArrayList<UsbDescriptorsACInterfaceNode> mACInterfaceNodes = new ArrayList<>(); + + /** + * Constructor. + * @param interfaceDescriptor The Interface Descriptor object wrapped by this tree node. + */ + public UsbDescriptorsInterfaceNode(UsbInterfaceDescriptor interfaceDescriptor) { + mInterfaceDescriptor = interfaceDescriptor; + } + + /** + * Adds an endpoint descriptor as a child of this interface node. + * @param endpointNode The endpoint descriptor node to add to this interface node. + */ + public void addEndpointNode(UsbDescriptorsEndpointNode endpointNode) { + mEndpointNodes.add(endpointNode); + } + + /** + * Adds an Audio-class interface descriptor as a child of this interface node. + * @param acInterfaceNode The audio-class descriptor node to add to this interface node. + */ + public void addACInterfaceNode(UsbDescriptorsACInterfaceNode acInterfaceNode) { + mACInterfaceNodes.add(acInterfaceNode); + } + + @Override + public void report(ReportCanvas canvas) { + mInterfaceDescriptor.report(canvas); + + // Audio Class Interfaces + if (mACInterfaceNodes.size() > 0) { + canvas.writeParagraph("Audio Class Interfaces", false); + canvas.openList(); + for (UsbDescriptorsACInterfaceNode node : mACInterfaceNodes) { + node.report(canvas); + } + canvas.closeList(); + } + + // Endpoints + if (mEndpointNodes.size() > 0) { + canvas.writeParagraph("Endpoints", false); + canvas.openList(); + for (UsbDescriptorsEndpointNode node : mEndpointNodes) { + node.report(canvas); + } + canvas.closeList(); + } + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java new file mode 100644 index 000000000000..1aa30fa94f42 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java @@ -0,0 +1,145 @@ +/* + * 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.server.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbACInterface; +import com.android.server.usb.descriptors.UsbConfigDescriptor; +import com.android.server.usb.descriptors.UsbDescriptor; +import com.android.server.usb.descriptors.UsbDescriptorParser; +import com.android.server.usb.descriptors.UsbDeviceDescriptor; +import com.android.server.usb.descriptors.UsbEndpointDescriptor; +import com.android.server.usb.descriptors.UsbInterfaceDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +import java.util.ArrayList; + +/* + * The general layout of the tree looks like this, though no guarentee about + * ordering of descriptors beyond the Device -> Config -> Interface. + * + * Device Descriptor + * +- Config Descriptor + * +- Interface Descriptor + * | +- Audio Class Interface + * | +- Audio Class Interface + * | +- Audio Class Interface + * | +- Endpoint Descriptor + * | +- Endpoint Descriptor + * +- Interface Descriptor + * +- Endpoint Descriptor + */ +/** + * @hide + * + * A class which builds a tree representation from the results of a (linear) + * parse of USB descriptors. + * + * @see {@link com.android.server.usb.descriptors.UsbDescriptorsParser UsbDescriptorsParser} + */ +public final class UsbDescriptorsTree { + private static final String TAG = "UsbDescriptorsTree"; + + private UsbDescriptorsDeviceNode mDeviceNode; + private UsbDescriptorsConfigNode mConfigNode; // being parsed + private UsbDescriptorsInterfaceNode mInterfaceNode; // being parsed + + /** + * Adds THE device descriptor as the root of the tree. + */ + private void addDeviceDescriptor(UsbDeviceDescriptor deviceDescriptor) { + mDeviceNode = new UsbDescriptorsDeviceNode(deviceDescriptor); + } + + /** + * Adds A config descriptor to the tree. + */ + private void addConfigDescriptor(UsbConfigDescriptor configDescriptor) { + mConfigNode = new UsbDescriptorsConfigNode(configDescriptor); + mDeviceNode.addConfigDescriptorNode(mConfigNode); + } + + /** + * Adds AN interface descriptor to the current configuration in the tree. + */ + private void addInterfaceDescriptor(UsbInterfaceDescriptor interfaceDescriptor) { + mInterfaceNode = new UsbDescriptorsInterfaceNode(interfaceDescriptor); + mConfigNode.addInterfaceNode(mInterfaceNode); + } + + /** + * Adds an endpoint descriptor to the current interface in the tree. + */ + private void addEndpointDescriptor(UsbEndpointDescriptor endpointDescriptor) { + mInterfaceNode.addEndpointNode(new UsbDescriptorsEndpointNode(endpointDescriptor)); + } + + /** + * Adds an audio-class interface descriptor to the current interface in the tree. + */ + private void addACInterface(UsbACInterface acInterface) { + mInterfaceNode.addACInterfaceNode(new UsbDescriptorsACInterfaceNode(acInterface)); + } + + /** + * Parses the linear descriptor list contained in the parser argument, into a tree + * representation corresponding to the logical structure of the USB descriptors. + */ + public void parse(UsbDescriptorParser parser) { + + ArrayList<UsbDescriptor> descriptors = parser.getDescriptors(); + + for (int descrIndex = 0; descrIndex < descriptors.size(); descrIndex++) { + UsbDescriptor descriptor = descriptors.get(descrIndex); + switch (descriptor.getType()) { + // + // Basic Descriptors + // + case UsbDescriptor.DESCRIPTORTYPE_DEVICE: + addDeviceDescriptor((UsbDeviceDescriptor) descriptor); + break; + + case UsbDescriptor.DESCRIPTORTYPE_CONFIG: + addConfigDescriptor((UsbConfigDescriptor) descriptor); + break; + + case UsbDescriptor.DESCRIPTORTYPE_INTERFACE: + addInterfaceDescriptor((UsbInterfaceDescriptor) descriptor); + break; + + case UsbDescriptor.DESCRIPTORTYPE_ENDPOINT: + addEndpointDescriptor((UsbEndpointDescriptor) descriptor); + break; + + // + // Audio Class Descriptors + // + case UsbDescriptor.DESCRIPTORTYPE_AUDIO_INTERFACE: + addACInterface((UsbACInterface) descriptor); + break; + + case UsbDescriptor.DESCRIPTORTYPE_AUDIO_ENDPOINT: + break; + } + } + } + + /** + * Generate a report of the descriptors tree. + */ + public void report(ReportCanvas canvas) { + mDeviceNode.report(canvas); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java new file mode 100644 index 000000000000..aca3cd907372 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java @@ -0,0 +1,41 @@ +/* + * 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.server.usb.descriptors.tree; + +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.Reporting; + +/** + * @hide + * A shared super class for UsbDescriptor tree nodes. + */ +public class UsbDescriptorsTreeNode implements Reporting { + private static final String TAG = "UsbDescriptorsTreeNode"; + + /** + * Implements generate a comprehehensive report of descriptor. + */ + @Override + public void report(ReportCanvas canvas) { + } + + /** + * Implements generate an abreviated report of descriptor. + */ + @Override + public void shortReport(ReportCanvas canvas) { + } +} diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 4ffacfd7056a..1569ac32128b 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -183,7 +183,7 @@ public class VoiceInteractionManagerService extends SystemService { private final boolean mEnableService; VoiceInteractionManagerServiceStub() { - mEnableService = shouldEnableService(mContext.getResources()); + mEnableService = shouldEnableService(mContext); } // TODO: VI Make sure the caller is the current user or profile @@ -348,10 +348,15 @@ public class VoiceInteractionManagerService extends SystemService { } } - private boolean shouldEnableService(Resources res) { - // VoiceInteractionService should not be enabled on low ram devices unless it has the config flag. - return !ActivityManager.isLowRamDeviceStatic() || - getForceVoiceInteractionServicePackage(res) != null; + private boolean shouldEnableService(Context context) { + // VoiceInteractionService should not be enabled on any low RAM devices + // or devices that have not declared the recognition feature, unless the + // device's configuration has explicitly set the config flag for a fixed + // voice interaction service. + return (!ActivityManager.isLowRamDeviceStatic() + && context.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_VOICE_RECOGNIZERS)) || + getForceVoiceInteractionServicePackage(context.getResources()) != null; } private String getForceVoiceInteractionServicePackage(Resources res) { diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java index 3788cf331600..b040a6324dbb 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java @@ -20,6 +20,7 @@ import static android.app.ActivityManager.START_ASSISTANT_HIDDEN_SESSION; import static android.app.ActivityManager.START_ASSISTANT_NOT_ACTIVE_SESSION; import static android.app.ActivityManager.START_VOICE_HIDDEN_SESSION; import static android.app.ActivityManager.START_VOICE_NOT_ACTIVE_SESSION; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; import android.app.ActivityManager; import android.app.ActivityManager.StackId; @@ -222,8 +223,8 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne } intent = new Intent(intent); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - ActivityOptions options = ActivityOptions.makeBasic(); - options.setLaunchStackId(StackId.ASSISTANT_STACK_ID); + final ActivityOptions options = ActivityOptions.makeBasic(); + options.setLaunchActivityType(ACTIVITY_TYPE_ASSISTANT); return mAm.startAssistantActivity(mComponent.getPackageName(), callingPid, callingUid, intent, resolvedType, options.toBundle(), mUser); } catch (RemoteException e) { |