diff options
12 files changed, 176 insertions, 106 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 0e833bdba1e1..22af517900d2 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -581,7 +581,7 @@ package android.accessibilityservice { package android.accounts { public class AccountManager { - method @FlaggedApi("android.app.admin.flags.split_create_managed_profile_enabled") @NonNull @RequiresPermission(anyOf={android.Manifest.permission.COPY_ACCOUNTS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public android.accounts.AccountManagerFuture<java.lang.Boolean> copyAccountToUser(@NonNull android.accounts.Account, @NonNull android.os.UserHandle, @NonNull android.os.UserHandle, @Nullable android.accounts.AccountManagerCallback<java.lang.Boolean>, @Nullable android.os.Handler); + method @FlaggedApi("android.app.admin.flags.split_create_managed_profile_enabled") @NonNull @RequiresPermission(anyOf={android.Manifest.permission.COPY_ACCOUNTS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public android.accounts.AccountManagerFuture<java.lang.Boolean> copyAccountToUser(@NonNull android.accounts.Account, @NonNull android.os.UserHandle, @NonNull android.os.UserHandle, @Nullable android.os.Handler, @Nullable android.accounts.AccountManagerCallback<java.lang.Boolean>); method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.accounts.AccountManagerFuture<android.os.Bundle> finishSessionAsUser(android.os.Bundle, android.app.Activity, android.os.UserHandle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler); } diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 72450999993d..ddc1ae29f6df 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -30,7 +30,6 @@ import android.annotation.RequiresPermission; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.Size; -import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.UserHandleAware; @@ -2019,23 +2018,22 @@ public class AccountManager { * @param account the account to copy * @param fromUser the user to copy the account from * @param toUser the target user - * @param callback Callback to invoke when the request completes, - * null for no callback * @param handler {@link Handler} identifying the callback thread, * null for the main thread + * @param callback Callback to invoke when the request completes, + * null for no callback * @return An {@link AccountManagerFuture} which resolves to a Boolean indicated whether it * succeeded. * @hide */ - @SuppressLint("SamShouldBeLast") @NonNull @SystemApi @RequiresPermission(anyOf = {COPY_ACCOUNTS, INTERACT_ACROSS_USERS_FULL}) @FlaggedApi(FLAG_SPLIT_CREATE_MANAGED_PROFILE_ENABLED) public AccountManagerFuture<Boolean> copyAccountToUser( @NonNull final Account account, @NonNull final UserHandle fromUser, - @NonNull final UserHandle toUser, @Nullable AccountManagerCallback<Boolean> callback, - @Nullable Handler handler) { + @NonNull final UserHandle toUser, @Nullable Handler handler, + @Nullable AccountManagerCallback<Boolean> callback) { if (account == null) throw new IllegalArgumentException("account is null"); if (toUser == null || fromUser == null) { throw new IllegalArgumentException("fromUser and toUser cannot be null"); diff --git a/packages/CompanionDeviceManager/res/layout/activity_confirmation.xml b/packages/CompanionDeviceManager/res/layout/activity_confirmation.xml index afece5fac0fb..40a786ed560b 100644 --- a/packages/CompanionDeviceManager/res/layout/activity_confirmation.xml +++ b/packages/CompanionDeviceManager/res/layout/activity_confirmation.xml @@ -81,7 +81,9 @@ <androidx.recyclerview.widget.RecyclerView android:id="@+id/device_list" android:layout_width="match_parent" - android:layout_height="200dp" + android:layout_height="wrap_content" + app:layout_constraintHeight_max="220dp" + app:layout_constraintHeight_min="200dp" android:scrollbars="vertical" android:visibility="gone" /> diff --git a/packages/SettingsLib/Graph/Android.bp b/packages/SettingsLib/Graph/Android.bp index 163b689d800b..0114ac5b1426 100644 --- a/packages/SettingsLib/Graph/Android.bp +++ b/packages/SettingsLib/Graph/Android.bp @@ -21,6 +21,7 @@ android_library { "androidx.annotation_annotation", "androidx.fragment_fragment", "androidx.preference_preference", + "statslog-settingslib", ], kotlincflags: ["-Xjvm-default=all"], } @@ -35,3 +36,18 @@ java_library { sdk_version: "core_current", static_libs: ["libprotobuf-java-lite"], } + +genrule { + name: "statslog-settingslib-java-gen", + tools: ["stats-log-api-gen"], + cmd: "$(location stats-log-api-gen) --java $(out) --module settings" + + " --javaPackage com.android.settingslib.graph.instrumentation --javaClass SettingslibStatsLog", + out: ["com/android/settingslib/graph/instrumentation/SettingslibStatsLog.java"], +} + +java_library { + name: "statslog-settingslib", + srcs: [ + ":statslog-settingslib-java-gen", + ], +} diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/ExtApiMetricsLogger.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/ExtApiMetricsLogger.kt new file mode 100644 index 000000000000..639f46cd90f3 --- /dev/null +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/ExtApiMetricsLogger.kt @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2024 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.settingslib.graph + +import com.android.settingslib.graph.instrumentation.SettingslibStatsLog + +interface ExtApiMetricsLogger { + fun logReadPreference(caller: String?, preferenceCoordinate: PreferenceCoordinate, result: Int) + fun logWritePreference(caller: String?, preferenceCoordinate: PreferenceCoordinate, result: Int) + fun logGetPreferenceMetadata(caller: String?, result: Int) +} + +object MetricsLogger : ExtApiMetricsLogger { + override fun logReadPreference(caller: String?, preferenceCoordinate: PreferenceCoordinate, result: Int) { + if (caller == null) return + SettingslibStatsLog.write( + SettingslibStatsLog.SETTINGS_EXTAPI_REPORTED, + caller, + preferenceCoordinate.loggingId(), + SettingslibStatsLog.SETTINGS_EXT_API_REPORTED__TYPE__ACTION_READ, + result, + 0, + ) + } + + override fun logWritePreference(caller: String?, preferenceCoordinate: PreferenceCoordinate, result: Int) { + if (caller == null) return + SettingslibStatsLog.write( + SettingslibStatsLog.SETTINGS_EXTAPI_REPORTED, + caller, + preferenceCoordinate.loggingId(), + SettingslibStatsLog.SETTINGS_EXT_API_REPORTED__TYPE__ACTION_WRITE, + result, + 0, + ) + } + + override fun logGetPreferenceMetadata(caller: String?, result: Int) { + if (caller == null) return + SettingslibStatsLog.write( + SettingslibStatsLog.SETTINGS_EXTAPI_REPORTED, + caller, + null, + SettingslibStatsLog.SETTINGS_EXT_API_REPORTED__TYPE__ACTION_GET_METADATA, + result, + 0, + ) + } +} + +fun PreferenceCoordinate.loggingId() = "$screenKey/$key" diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/GetPreferenceGraphApiHandler.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/GetPreferenceGraphApiHandler.kt index 51813a1c9aab..c6e6c465f25f 100644 --- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/GetPreferenceGraphApiHandler.kt +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/GetPreferenceGraphApiHandler.kt @@ -18,6 +18,7 @@ package com.android.settingslib.graph import android.app.Application import android.os.Bundle +import com.android.settingslib.graph.instrumentation.SettingslibStatsLog import com.android.settingslib.graph.proto.PreferenceGraphProto import com.android.settingslib.ipc.ApiHandler import com.android.settingslib.ipc.MessageCodec @@ -42,6 +43,10 @@ abstract class GetPreferenceGraphApiHandler( callingUid: Int, request: GetPreferenceGraphRequest, ): PreferenceGraphProto { + MetricsLogger.logGetPreferenceMetadata( + application.packageManager.getNameForUid(callingUid), + SettingslibStatsLog.SETTINGS_EXT_API_REPORTED__RESULT__RESULT_OK + ) val builder = PreferenceGraphBuilder.of(application, callingPid, callingUid, request) if (request.screenKeys.isEmpty()) { PreferenceScreenRegistry.preferenceScreenMetadataFactories.forEachKeyAsync { diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGetterApi.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGetterApi.kt index 2fac54557bef..85c5c9d8415c 100644 --- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGetterApi.kt +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGetterApi.kt @@ -18,6 +18,7 @@ package com.android.settingslib.graph import android.app.Application import androidx.annotation.IntDef +import com.android.settingslib.graph.instrumentation.SettingslibStatsLog import com.android.settingslib.graph.proto.PreferenceProto import com.android.settingslib.ipc.ApiDescriptor import com.android.settingslib.ipc.ApiHandler @@ -97,6 +98,7 @@ class PreferenceGetterApiHandler( val errors = mutableMapOf<PreferenceCoordinate, Int>() val preferences = mutableMapOf<PreferenceCoordinate, PreferenceProto>() val flags = request.flags + val callerPackage = application.packageManager.getNameForUid(callingUid) for ((screenKey, coordinates) in request.preferences.groupBy { it.screenKey }) { val screenMetadata = PreferenceScreenRegistry.create(application, screenKey) if (screenMetadata == null) { @@ -116,6 +118,12 @@ class PreferenceGetterApiHandler( val node = nodes[coordinate.key] if (node == null) { errors[coordinate] = PreferenceGetterErrorCode.NOT_FOUND + MetricsLogger.logReadPreference( + callerPackage, + coordinate, + SettingslibStatsLog + .SETTINGS_EXT_API_REPORTED__RESULT__RESULT_FAILURE_UNAVAILABLE, + ) continue } val metadata = node.metadata @@ -131,11 +139,29 @@ class PreferenceGetterApiHandler( ) if (flags == PreferenceGetterFlags.VALUE && !preferenceProto.hasValue()) { errors[coordinate] = PreferenceGetterErrorCode.DISALLOW + MetricsLogger.logReadPreference( + callerPackage, + coordinate, + SettingslibStatsLog + .SETTINGS_EXT_API_REPORTED__RESULT__RESULT_FAILURE_DISALLOW, + ) } else { preferences[coordinate] = preferenceProto + MetricsLogger.logReadPreference( + callerPackage, + coordinate, + SettingslibStatsLog + .SETTINGS_EXT_API_REPORTED__RESULT__RESULT_OK, + ) } } catch (e: Exception) { errors[coordinate] = PreferenceGetterErrorCode.INTERNAL_ERROR + MetricsLogger.logReadPreference( + callerPackage, + coordinate, + SettingslibStatsLog + .SETTINGS_EXT_API_REPORTED__RESULT__RESULT_FAILURE_INTERNAL_ERROR, + ) } } } diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt index 3c870acf2291..84b875b548fc 100644 --- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt @@ -20,6 +20,7 @@ import android.app.Application import android.content.Context import android.os.Bundle import androidx.annotation.IntDef +import com.android.settingslib.graph.instrumentation.SettingslibStatsLog import com.android.settingslib.graph.proto.PreferenceValueProto import com.android.settingslib.ipc.ApiDescriptor import com.android.settingslib.ipc.ApiHandler @@ -115,15 +116,45 @@ class PreferenceSetterApiHandler( PreferenceScreenRegistry.create(application, request.screenKey) ?: return PreferenceSetterResult.UNSUPPORTED val key = request.key - val metadata = - screenMetadata.getPreferenceHierarchy(application).find(key) - ?: return PreferenceSetterResult.UNSUPPORTED - if (metadata !is PersistentPreference<*>) return PreferenceSetterResult.UNSUPPORTED - if (!metadata.isEnabled(application)) return PreferenceSetterResult.DISABLED + val callerPackage = application.packageManager.getNameForUid(callingUid) + val preferenceCoordinate = with(request) { + PreferenceCoordinate(screenKey = screenKey, key = key) + } + val metadata = screenMetadata.getPreferenceHierarchy(application).find(key) + if (metadata == null || metadata !is PersistentPreference<*>) { + MetricsLogger.logWritePreference( + callerPackage, + preferenceCoordinate, + SettingslibStatsLog + .SETTINGS_EXT_API_REPORTED__RESULT__RESULT_FAILURE_UNSUPPORTED, + ) + return PreferenceSetterResult.UNSUPPORTED + } + if (!metadata.isEnabled(application)) { + MetricsLogger.logWritePreference( + callerPackage, + preferenceCoordinate, + SettingslibStatsLog + .SETTINGS_EXT_API_REPORTED__RESULT__RESULT_FAILURE_DISABLED, + ) + return PreferenceSetterResult.DISABLED + } if (metadata is PreferenceRestrictionProvider && metadata.isRestricted(application)) { + MetricsLogger.logWritePreference( + callerPackage, + preferenceCoordinate, + SettingslibStatsLog + .SETTINGS_EXT_API_REPORTED__RESULT__RESULT_FAILURE_RESTRICTED, + ) return PreferenceSetterResult.RESTRICTED } if (metadata is PreferenceAvailabilityProvider && !metadata.isAvailable(application)) { + MetricsLogger.logWritePreference( + callerPackage, + preferenceCoordinate, + SettingslibStatsLog + .SETTINGS_EXT_API_REPORTED__RESULT__RESULT_FAILURE_UNAVAILABLE, + ) return PreferenceSetterResult.UNAVAILABLE } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 2627895b8c63..e69a7414dd76 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -21907,7 +21907,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { accountToMigrate, sourceUser, targetUser, - /* callback= */ null, /* handler= */ null) + /* handler= */ null, /* callback= */ null) .getResult(60 * 3, TimeUnit.SECONDS); if (copySucceeded) { logCopyAccountStatus(COPY_ACCOUNT_SUCCEEDED, callerPackage); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index c9cbe0fa08c5..6fad82b26808 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -210,7 +210,7 @@ public class ActivityRecordTests extends WindowTestsBase { } private TestStartingWindowOrganizer registerTestStartingWindowOrganizer() { - return new TestStartingWindowOrganizer(mAtm); + return new TestStartingWindowOrganizer(mAtm, mDisplayContent); } @Test diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java index ea925c019b77..4854f0d948b4 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java @@ -88,7 +88,7 @@ public class DisplayPolicyTests extends WindowTestsBase { } private WindowState createDreamWindow() { - final WindowState win = createDreamWindow(null, TYPE_BASE_APPLICATION, "dream"); + final WindowState win = createDreamWindow("dream", TYPE_BASE_APPLICATION); final WindowManager.LayoutParams attrs = win.mAttrs; attrs.width = MATCH_PARENT; attrs.height = MATCH_PARENT; diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java index ce0d91264063..37d2a7511d98 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java @@ -478,7 +478,7 @@ public class WindowTestsBase extends SystemServiceTestsBase { } private WindowState createCommonWindow(WindowState parent, int type, String name) { - final WindowState win = createWindow(parent, type, name); + final WindowState win = newWindowBuilder(name, type).setParent(parent).build(); // Prevent common windows from been IME targets. win.mAttrs.flags |= FLAG_NOT_FOCUSABLE; return win; @@ -502,7 +502,8 @@ public class WindowTestsBase extends SystemServiceTestsBase { } WindowState createNavBarWithProvidedInsets(DisplayContent dc) { - final WindowState navbar = createWindow(null, TYPE_NAVIGATION_BAR, dc, "navbar"); + final WindowState navbar = newWindowBuilder("navbar", TYPE_NAVIGATION_BAR).setDisplay( + dc).build(); final Binder owner = new Binder(); navbar.mAttrs.providedInsets = new InsetsFrameProvider[] { new InsetsFrameProvider(owner, 0, WindowInsets.Type.navigationBars()) @@ -513,7 +514,8 @@ public class WindowTestsBase extends SystemServiceTestsBase { } WindowState createStatusBarWithProvidedInsets(DisplayContent dc) { - final WindowState statusBar = createWindow(null, TYPE_STATUS_BAR, dc, "statusBar"); + final WindowState statusBar = newWindowBuilder("statusBar", TYPE_STATUS_BAR).setDisplay( + dc).build(); final Binder owner = new Binder(); statusBar.mAttrs.providedInsets = new InsetsFrameProvider[] { new InsetsFrameProvider(owner, 0, WindowInsets.Type.statusBars()) @@ -575,92 +577,13 @@ public class WindowTestsBase extends SystemServiceTestsBase { WindowState createAppWindow(Task task, int type, String name) { final ActivityRecord activity = createNonAttachedActivityRecord(task.getDisplayContent()); task.addChild(activity, 0); - return createWindow(null, type, activity, name); + return newWindowBuilder(name, type).setWindowToken(activity).build(); } - WindowState createDreamWindow(WindowState parent, int type, String name) { + WindowState createDreamWindow(String name, int type) { final WindowToken token = createWindowToken( mDisplayContent, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_DREAM, type); - return createWindow(parent, type, token, name); - } - - // TODO: Move these calls to a builder? - WindowState createWindow(WindowState parent, int type, String name) { - return (parent == null) - ? createWindow(parent, type, mDisplayContent, name) - : createWindow(parent, type, parent.mToken, name); - } - - WindowState createWindow(WindowState parent, int type, String name, int ownerId) { - return (parent == null) - ? createWindow(parent, type, mDisplayContent, name, ownerId) - : createWindow(parent, type, parent.mToken, name, ownerId); - } - - WindowState createWindow(WindowState parent, int windowingMode, int activityType, - int type, DisplayContent dc, String name) { - final WindowToken token = createWindowToken(dc, windowingMode, activityType, type); - return createWindow(parent, type, token, name); - } - - WindowState createWindow(WindowState parent, int type, DisplayContent dc, String name) { - return createWindow( - parent, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, type, dc, name); - } - - WindowState createWindow(WindowState parent, int type, DisplayContent dc, String name, - int ownerId) { - final WindowToken token = createWindowToken( - dc, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, type); - return createWindow(parent, type, token, name, ownerId); - } - - WindowState createWindow(WindowState parent, int type, DisplayContent dc, String name, - boolean ownerCanAddInternalSystemWindow) { - final WindowToken token = createWindowToken( - dc, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, type); - return createWindow(parent, type, token, name, 0 /* ownerId */, - ownerCanAddInternalSystemWindow); - } - - WindowState createWindow(WindowState parent, int type, WindowToken token, String name) { - return createWindow(parent, type, token, name, 0 /* ownerId */, - false /* ownerCanAddInternalSystemWindow */); - } - - WindowState createWindow(WindowState parent, int type, WindowToken token, String name, - int ownerId) { - return createWindow(parent, type, token, name, ownerId, - false /* ownerCanAddInternalSystemWindow */); - } - - WindowState createWindow(WindowState parent, int type, WindowToken token, String name, - int ownerId, boolean ownerCanAddInternalSystemWindow) { - return createWindow(parent, type, token, name, ownerId, ownerCanAddInternalSystemWindow, - mIWindow); - } - - WindowState createWindow(WindowState parent, int type, WindowToken token, String name, - int ownerId, boolean ownerCanAddInternalSystemWindow, IWindow iwindow) { - return createWindow(parent, type, token, name, ownerId, UserHandle.getUserId(ownerId), - ownerCanAddInternalSystemWindow, mWm, getTestSession(token), iwindow); - } - - static WindowState createWindow(WindowState parent, int type, WindowToken token, - String name, int ownerId, int userId, boolean ownerCanAddInternalSystemWindow, - WindowManagerService service, Session session, IWindow iWindow) { - SystemServicesTestRule.checkHoldsLock(service.mGlobalLock); - - final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(type); - attrs.setTitle(name); - attrs.packageName = "test"; - - final WindowState w = new WindowState(service, session, iWindow, token, parent, - OP_NONE, attrs, VISIBLE, ownerId, userId, ownerCanAddInternalSystemWindow); - // TODO: Probably better to make this call in the WindowState ctor to avoid errors with - // adding it to the token... - token.addWindow(w); - return w; + return newWindowBuilder(name, type).setWindowToken(token).build(); } static void makeWindowVisible(WindowState... windows) { @@ -1920,11 +1843,14 @@ public class WindowTestsBase extends SystemServiceTestsBase { private final WindowManagerService mWMService; private final SparseArray<IBinder> mTaskAppMap = new SparseArray<>(); private final HashMap<IBinder, WindowState> mAppWindowMap = new HashMap<>(); + private final DisplayContent mDisplayContent; - TestStartingWindowOrganizer(ActivityTaskManagerService service) { + TestStartingWindowOrganizer(ActivityTaskManagerService service, + DisplayContent displayContent) { mAtm = service; mWMService = mAtm.mWindowManager; mAtm.mTaskOrganizerController.registerTaskOrganizer(this); + mDisplayContent = displayContent; } @Override @@ -1933,10 +1859,11 @@ public class WindowTestsBase extends SystemServiceTestsBase { final ActivityRecord activity = ActivityRecord.forTokenLocked(info.appToken); IWindow iWindow = mock(IWindow.class); doReturn(mock(IBinder.class)).when(iWindow).asBinder(); - final WindowState window = WindowTestsBase.createWindow(null, - TYPE_APPLICATION_STARTING, activity, - "Starting window", 0 /* ownerId */, 0 /* userId*/, - false /* internalWindows */, mWMService, createTestSession(mAtm), iWindow); + // WindowToken is already passed, windowTokenCreator is not needed here. + final WindowState window = new WindowTestsBase.WindowStateBuilder("Starting window", + TYPE_APPLICATION_STARTING, mWMService, mDisplayContent, iWindow, + (unused) -> createTestSession(mAtm), + null /* windowTokenCreator */).setWindowToken(activity).build(); activity.mStartingWindow = window; mAppWindowMap.put(info.appToken, window); mTaskAppMap.put(info.taskInfo.taskId, info.appToken); |