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

Commit 13bc6d43 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11915075 from 4ef5df71 to 24Q4-release

Change-Id: Ie09d9ecca69a7809e292abe9d29d736c494360dd
parents 15e1e49d 4ef5df71
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
[Builtin Hooks]
clang_format = true
bpfmt = true
ktfmt = true

[Builtin Hooks Options]
# Only turn on clang-format check for the following subfolders.
@@ -17,6 +18,7 @@ clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp
               tests/
               tools/
bpfmt = -d
ktfmt = --kotlinlang-style --include-dirs=services/permission,packages/SystemUI

[Hook Scripts]
checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
@@ -25,9 +27,10 @@ hidden_api_txt_checksorted_hook = ${REPO_ROOT}/tools/platform-compat/hiddenapi/c

hidden_api_txt_exclude_hook = ${REPO_ROOT}/frameworks/base/tools/hiddenapi/exclude.sh ${PREUPLOAD_COMMIT} ${REPO_ROOT}

ktfmt_hook = ${REPO_ROOT}/external/ktfmt/ktfmt.py --check -i ${REPO_ROOT}/frameworks/base/ktfmt_includes.txt ${PREUPLOAD_FILES}

ktlint_hook = ${REPO_ROOT}/prebuilts/ktlint/ktlint.py --no-verify-format -f ${PREUPLOAD_FILES}

# This flag check hook runs only for "packages/SystemUI" subdirectory. If you want to include this check for other subdirectories, please modify flag_check.py.
flag_hook = ${REPO_ROOT}/frameworks/base/packages/SystemUI/flag_check.py --msg=${PREUPLOAD_COMMIT_MESSAGE} --files=${PREUPLOAD_FILES} --project=${REPO_PATH}

[Tool Paths]
ktfmt = ${REPO_ROOT}/prebuilts/build-tools/common/framework/ktfmt.jar
+7 −3
Original line number Diff line number Diff line
@@ -619,6 +619,7 @@ public class DeviceIdleController extends SystemService
     * List of end times for app-IDs that are temporarily marked as being allowed to access
     * the network and acquire wakelocks. Times are in milliseconds.
     */
    @GuardedBy("this")
    private final SparseArray<Pair<MutableLong, String>> mTempWhitelistAppIdEndTimes
            = new SparseArray<>();

@@ -5010,7 +5011,9 @@ public class DeviceIdleController extends SystemService
                if (!DumpUtils.checkDumpPermission(getContext(), TAG, pw)) {
                    return -1;
                }
                dumpTempWhitelistSchedule(pw, false);
                synchronized (this) {
                    dumpTempWhitelistScheduleLocked(pw, false);
                }
            }
        } else if ("except-idle-whitelist".equals(cmd)) {
            getContext().enforceCallingOrSelfPermission(
@@ -5294,7 +5297,7 @@ public class DeviceIdleController extends SystemService
                    pw.println();
                }
            }
            dumpTempWhitelistSchedule(pw, true);
            dumpTempWhitelistScheduleLocked(pw, true);

            size = mTempWhitelistAppIdArray != null ? mTempWhitelistAppIdArray.length : 0;
            if (size > 0) {
@@ -5422,7 +5425,8 @@ public class DeviceIdleController extends SystemService
        }
    }

    void dumpTempWhitelistSchedule(PrintWriter pw, boolean printTitle) {
    @GuardedBy("this")
    void dumpTempWhitelistScheduleLocked(PrintWriter pw, boolean printTitle) {
        final int size = mTempWhitelistAppIdEndTimes.size();
        if (size > 0) {
            String prefix = "";
+4 −1
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ public final class IdleController extends RestrictingController implements Idlen
    private static final String TAG = "JobScheduler.IdleController";
    // Policy: we decide that we're "idle" if the device has been unused /
    // screen off or dreaming or wireless charging dock idle for at least this long
    @GuardedBy("mLock")
    final ArraySet<JobStatus> mTrackedTasks = new ArraySet<>();
    IdlenessTracker mIdleTracker;
    private final FlexibilityController mFlexibilityController;
@@ -118,9 +119,11 @@ public final class IdleController extends RestrictingController implements Idlen
            for (int i = mTrackedTasks.size()-1; i >= 0; i--) {
                mTrackedTasks.valueAt(i).setIdleConstraintSatisfied(nowElapsed, isIdle);
            }
        }
            if (!mTrackedTasks.isEmpty()) {
                mStateChangedListener.onControllerStateChanged(mTrackedTasks);
            }
        }
    }

    /**
     * Idle state tracking, and messaging with the task manager when
+1 −0
Original line number Diff line number Diff line
@@ -14435,6 +14435,7 @@ package android.telephony {
    method @NonNull public android.telephony.CarrierRestrictionRules build();
    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllCarriersAllowed();
    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllowedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
    method @FlaggedApi("com.android.internal.telephony.flags.set_carrier_restriction_status") @NonNull public android.telephony.CarrierRestrictionRules.Builder setCarrierRestrictionStatus(int);
    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setDefaultCarrierRestriction(int);
    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setExcludedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setMultiSimPolicy(int);
+97 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.accessibilityservice;

import static android.accessibilityservice.AccessibilityServiceInfo.CAPABILITY_CAN_CONTROL_MAGNIFICATION;
import static android.accessibilityservice.MagnificationConfig.MAGNIFICATION_MODE_FULLSCREEN;
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;

@@ -69,6 +70,8 @@ import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import android.view.accessibility.AccessibilityWindowInfo;
import android.view.inputmethod.EditorInfo;

import androidx.annotation.GuardedBy;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.inputmethod.CancellationGroup;
import com.android.internal.inputmethod.IAccessibilityInputMethodSession;
@@ -640,6 +643,8 @@ public abstract class AccessibilityService extends Service {
        /** The detected gesture information for different displays */
        boolean onGesture(AccessibilityGestureEvent gestureInfo);
        boolean onKeyEvent(KeyEvent event);
        /** Magnification SystemUI connection changed callbacks */
        void onMagnificationSystemUIConnectionChanged(boolean connected);
        /** Magnification changed callbacks for different displays */
        void onMagnificationChanged(int displayId, @NonNull Region region,
                MagnificationConfig config);
@@ -790,7 +795,6 @@ public abstract class AccessibilityService extends Service {
    public static final String KEY_ACCESSIBILITY_SCREENSHOT_TIMESTAMP =
            "screenshot_timestamp";


    /**
     * Annotations for result codes of attaching accessibility overlays.
     *
@@ -837,6 +841,13 @@ public abstract class AccessibilityService extends Service {

    private WindowManager mWindowManager;

    @GuardedBy("mLock")
    private boolean mServiceConnected;
    @GuardedBy("mLock")
    private boolean mMagnificationSystemUIConnected;
    @GuardedBy("mLock")
    private boolean mServiceConnectedNotified;

    /** List of magnification controllers, mapping from displayId -> MagnificationController. */
    private final SparseArray<MagnificationController> mMagnificationControllers =
            new SparseArray<>(0);
@@ -886,11 +897,14 @@ public abstract class AccessibilityService extends Service {
            for (int i = 0; i < mMagnificationControllers.size(); i++) {
                mMagnificationControllers.valueAt(i).onServiceConnectedLocked();
            }
            checkIsMagnificationSystemUIConnectedAlready();
            final AccessibilityServiceInfo info = getServiceInfo();
            if (info != null) {
                updateInputMethod(info);
                mMotionEventSources = info.getMotionEventSources();
            }
            mServiceConnected = true;
            mServiceConnectedNotified = false;
        }
        if (mSoftKeyboardController != null) {
            mSoftKeyboardController.onServiceConnected();
@@ -898,8 +912,58 @@ public abstract class AccessibilityService extends Service {

        // The client gets to handle service connection last, after we've set
        // up any state upon which their code may rely.
        if (android.view.accessibility.Flags
                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
            notifyOnServiceConnectedIfReady();
        } else {
            onServiceConnected();
        }
    }

    private void notifyOnServiceConnectedIfReady() {
        synchronized (mLock) {
            if (mServiceConnectedNotified) {
                return;
            }
            boolean canControlMagnification;
            final AccessibilityServiceInfo info = getServiceInfo();
            if (info != null) {
                int flagMask = CAPABILITY_CAN_CONTROL_MAGNIFICATION;
                canControlMagnification = (info.getCapabilities() & flagMask) == flagMask;
            } else {
                canControlMagnification = false;
            }
            boolean ready = canControlMagnification
                    ? (mServiceConnected && mMagnificationSystemUIConnected)
                    : mServiceConnected;
            if (ready) {
                getMainExecutor().execute(() -> onServiceConnected());
                mServiceConnectedNotified = true;
            }
        }
    }

    @GuardedBy("mLock")
    private void checkIsMagnificationSystemUIConnectedAlready() {
        if (!android.view.accessibility.Flags
                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
            return;
        }
        if (mMagnificationSystemUIConnected) {
            return;
        }
        final IAccessibilityServiceConnection connection =
                AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId);
        if (connection != null) {
            try {
                boolean connected = connection.isMagnificationSystemUIConnected();
                mMagnificationSystemUIConnected = connected;
            } catch (RemoteException re) {
                Log.w(LOG_TAG, "Failed to check magnification system ui connection", re);
                re.rethrowFromSystemServer();
            }
        }
    }

    private void updateInputMethod(AccessibilityServiceInfo info) {
        if (info != null) {
@@ -1360,6 +1424,22 @@ public abstract class AccessibilityService extends Service {
        }
    }

    private void onMagnificationSystemUIConnectionChanged(boolean connected) {
        if (!android.view.accessibility.Flags
                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
            return;
        }

        synchronized (mLock) {
            boolean changed = (mMagnificationSystemUIConnected != connected);
            mMagnificationSystemUIConnected = connected;

            if (changed) {
                notifyOnServiceConnectedIfReady();
            }
        }
    }

    private void onMagnificationChanged(int displayId, @NonNull Region region,
            MagnificationConfig config) {
        MagnificationController controller;
@@ -2822,6 +2902,11 @@ public abstract class AccessibilityService extends Service {
                return AccessibilityService.this.onKeyEvent(event);
            }

            @Override
            public void onMagnificationSystemUIConnectionChanged(boolean connected) {
                AccessibilityService.this.onMagnificationSystemUIConnectionChanged(connected);
            }

            @Override
            public void onMagnificationChanged(int displayId, @NonNull Region region,
                    MagnificationConfig config) {
@@ -3032,6 +3117,16 @@ public abstract class AccessibilityService extends Service {
            });
        }

        @Override
        public void onMagnificationSystemUIConnectionChanged(boolean connected) {
            mExecutor.execute(() -> {
                if (mConnectionId != AccessibilityInteractionClient.NO_ID) {
                    mCallback.onMagnificationSystemUIConnectionChanged(connected);
                }
                return;
            });
        }

        /** Magnification changed callbacks for different displays */
        public void onMagnificationChanged(int displayId, @NonNull Region region,
                MagnificationConfig config) {
Loading