Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93425cab authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 8045491 from 8db70a36 to sc-v2-release

Change-Id: Ic3f3d86b60ca69027102c1feaffa6200a3a00dcb
parents 23111082 8db70a36
Loading
Loading
Loading
Loading
+58 −50
Original line number Diff line number Diff line
@@ -199,6 +199,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
        // if any link in the chain is finished, remove the chain. Then, find any other chains that
        // contain this op/package/uid/tag combination, and remove them, as well.
        // TODO ntmyren: be smarter about this
        synchronized(mAttributionChains) {
            mAttributionChains.remove(attributionChainId);
            int numChains = mAttributionChains.size();
            ArrayList<Integer> toRemove = new ArrayList<>();
@@ -216,6 +217,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
            }
            mAttributionChains.removeAll(toRemove);
        }
    }

    @Override
    public void onOpStarted(int op, int uid, String packageName, String attributionTag,
@@ -234,9 +236,11 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
            // If this is not a successful start, or it is not a chain, or it is untrusted, return
            return;
        }
        synchronized(mAttributionChains) {
            addLinkToChainIfNotPresent(AppOpsManager.opToPublicName(op), packageName, uid,
                    attributionTag, attributionFlags, attributionChainId);
        }
    }

    private void addLinkToChainIfNotPresent(String op, String packageName, int uid,
            String attributionTag, int attributionFlags, int attributionChainId) {
@@ -310,7 +314,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
            String permGroup = usedPermGroups.get(permGroupNum);

            ArrayMap<OpUsage, CharSequence> usagesWithLabels =
                    getUniqueUsagesWithLabels(rawUsages.get(permGroup));
                    getUniqueUsagesWithLabels(permGroup, rawUsages.get(permGroup));

            if (permGroup.equals(OPSTR_PHONE_CALL_MICROPHONE)) {
                isPhone = true;
@@ -431,7 +435,8 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
        return ListFormatter.getInstance().format(labels);
    }

    private ArrayMap<OpUsage, CharSequence> getUniqueUsagesWithLabels(List<OpUsage> usages) {
    private ArrayMap<OpUsage, CharSequence> getUniqueUsagesWithLabels(String permGroup,
            List<OpUsage> usages) {
        ArrayMap<OpUsage, CharSequence> usagesAndLabels = new ArrayMap<>();

        if (usages == null || usages.isEmpty()) {
@@ -466,7 +471,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
            // If this usage has a proxy, but is not a proxy, it is the end of a chain.
            // TODO remove once camera converted
            if (!proxies.containsKey(usageAttr) && usage.proxy != null
                    && !usage.op.equals(OPSTR_RECORD_AUDIO)) {
                    && !MICROPHONE.equals(permGroup)) {
                proxyLabels.put(usage, new ArrayList<>());
                proxyPackages.add(usage.getPackageIdHash());
            }
@@ -538,12 +543,13 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis

            // TODO ntmyren: remove this proxy logic once camera is converted to AttributionSource
            // For now: don't add mic proxy usages
            if (!start.op.equals(OPSTR_RECORD_AUDIO)) {
            if (!MICROPHONE.equals(permGroup)) {
                usagesAndLabels.put(start,
                        proxyLabelList.isEmpty() ? null : formatLabelList(proxyLabelList));
            }
        }

        synchronized (mAttributionChains) {
            for (int i = 0; i < mAttributionChains.size(); i++) {
                List<AccessChainLink> usageList = mAttributionChains.valueAt(i);
                int lastVisible = usageList.size() - 1;
@@ -551,7 +557,8 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
                // if the list is empty or incomplete, do not show it.
                if (usageList.isEmpty() || !usageList.get(lastVisible).isEnd()
                        || !usageList.get(0).isStart()
                    || !usageList.get(lastVisible).usage.op.equals(OPSTR_RECORD_AUDIO)) {
                        || !permGroup.equals(getGroupForOp(usageList.get(0).usage.op))
                        || !MICROPHONE.equals(permGroup)) {
                    continue;
                }

@@ -581,6 +588,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
                }
                usagesAndLabels.put(start.usage, proxyLabel);
            }
        }

        for (int packageHash : mostRecentUsages.keySet()) {
            if (!proxyPackages.contains(packageHash)) {
+7 −2
Original line number Diff line number Diff line
@@ -367,6 +367,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
            float splitRatio, RemoteAnimationAdapter adapter) {
        // Init divider first to make divider leash for remote animation target.
        setDividerVisibility(true /* visible */);
        // Set false to avoid record new bounds with old task still on top;
        mShouldUpdateRecents = false;
        final WindowContainerTransaction wct = new WindowContainerTransaction();
        final WindowContainerTransaction evictWct = new WindowContainerTransaction();
        prepareEvictChildTasks(SPLIT_POSITION_TOP_OR_LEFT, evictWct);
@@ -393,6 +395,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
                            @Override
                            public void onAnimationFinished() throws RemoteException {
                                mIsDividerRemoteAnimating = false;
                                mShouldUpdateRecents = true;
                                mSyncQueue.queue(evictWct);
                                mSyncQueue.runInSync(t -> applyDividerVisibility(t));
                                finishedCallback.onAnimationFinished();
@@ -416,6 +419,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
            @Override
            public void onAnimationCancelled() {
                mIsDividerRemoteAnimating = false;
                mShouldUpdateRecents = true;
                mSyncQueue.queue(evictWct);
                mSyncQueue.runInSync(t -> applyDividerVisibility(t));
                try {
@@ -782,7 +786,9 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
            mLogger.logSideStageAppChange(getSideStagePosition(), mSideStage.getTopChildTaskUid(),
                    mSplitLayout.isLandscape());
        }
        if (present && visible) {
            updateRecentTasksSplitPair();
        }

        for (int i = mListeners.size() - 1; i >= 0; --i) {
            mListeners.get(i).onTaskStageChanged(taskId, stage, visible);
@@ -798,7 +804,6 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        if (!mShouldUpdateRecents) {
            return;
        }

        mRecentTasks.ifPresent(recentTasks -> {
            Rect topLeftBounds = mSplitLayout.getBounds1();
            Rect bottomRightBounds = mSplitLayout.getBounds2();
+5 −0
Original line number Diff line number Diff line
@@ -100,6 +100,9 @@ public class StageTaskUnfoldController implements UnfoldListener, OnInsetsChange
     * @param leash surface leash for the appeared task
     */
    public void onTaskAppeared(ActivityManager.RunningTaskInfo taskInfo, SurfaceControl leash) {
        // Only handle child task surface here.
        if (!taskInfo.hasParentTask()) return;

        AnimationContext context = new AnimationContext(leash);
        mAnimationContextByTaskId.put(taskInfo.taskId, context);
    }
@@ -109,6 +112,8 @@ public class StageTaskUnfoldController implements UnfoldListener, OnInsetsChange
     * @param taskInfo info for the vanished task
     */
    public void onTaskVanished(ActivityManager.RunningTaskInfo taskInfo) {
        if (!taskInfo.hasParentTask()) return;

        AnimationContext context = mAnimationContextByTaskId.get(taskInfo.taskId);
        if (context != null) {
            final SurfaceControl.Transaction transaction = mTransactionPool.acquire();
+3 −3
Original line number Diff line number Diff line
@@ -298,7 +298,7 @@ void ASurfaceTransaction_setOnComplete(ASurfaceTransaction* aSurfaceTransaction,

        auto& aSurfaceControlStats = aSurfaceTransactionStats.aSurfaceControlStats;

        for (const auto& [surfaceControl, latchTime, acquireTime, presentFence, previousReleaseFence, transformHint, frameEvents] : surfaceControlStats) {
        for (const auto& [surfaceControl, latchTime, acquireTime, presentFence, previousReleaseFence, transformHint, frameEvents, ignore] : surfaceControlStats) {
            ASurfaceControl* aSurfaceControl = reinterpret_cast<ASurfaceControl*>(surfaceControl.get());
            aSurfaceControlStats[aSurfaceControl].acquireTime = acquireTime;
            aSurfaceControlStats[aSurfaceControl].previousReleaseFence = previousReleaseFence;
@@ -650,7 +650,7 @@ void ASurfaceTransaction_setOnCommit(ASurfaceTransaction* aSurfaceTransaction, v
                for (const auto&
                             [surfaceControl, latchTime, acquireTime, presentFence,
                              previousReleaseFence, transformHint,
                              frameEvents] : surfaceControlStats) {
                              frameEvents, ignore] : surfaceControlStats) {
                    ASurfaceControl* aSurfaceControl =
                            reinterpret_cast<ASurfaceControl*>(surfaceControl.get());
                    aSurfaceControlStats[aSurfaceControl].acquireTime = acquireTime;
+3 −2
Original line number Diff line number Diff line
@@ -645,7 +645,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
        if (biometricSourceType.equals(BiometricSourceType.FINGERPRINT)
                && mUpdateMonitor.isUdfpsSupported()
                && mNumConsecutiveFpFailures >= FP_ATTEMPTS_BEFORE_SHOW_BOUNCER) {
            mKeyguardViewController.showBouncer(true);
            startWakeAndUnlock(MODE_SHOW_BOUNCER);
            UI_EVENT_LOGGER.log(BiometricUiEvent.BIOMETRIC_BOUNCER_SHOWN);
            mNumConsecutiveFpFailures = 0;
        }
@@ -668,7 +668,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
                && mUpdateMonitor.isUdfpsSupported()
                && (mStatusBarStateController.getState() == StatusBarState.SHADE
                    || mStatusBarStateController.getState() == StatusBarState.SHADE_LOCKED)) {
            mKeyguardViewController.showBouncer(true);
            startWakeAndUnlock(MODE_SHOW_BOUNCER);
            UI_EVENT_LOGGER.log(BiometricUiEvent.BIOMETRIC_BOUNCER_SHOWN);
        }
        cleanup();
    }
Loading