Loading libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/AppToWebUtils.kt +18 −3 Original line number Diff line number Diff line Loading @@ -20,10 +20,11 @@ package com.android.wm.shell.apptoweb import android.content.Context import android.content.Intent import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.pm.PackageManager import android.net.Uri private val browserIntent = Intent() private val GenericBrowserIntent = Intent() .setAction(Intent.ACTION_VIEW) .addCategory(Intent.CATEGORY_BROWSABLE) .setData(Uri.parse("http:")) Loading @@ -32,9 +33,9 @@ private val browserIntent = Intent() * Returns a boolean indicating whether a given package is a browser app. */ fun isBrowserApp(context: Context, packageName: String, userId: Int): Boolean { browserIntent.setPackage(packageName) GenericBrowserIntent.setPackage(packageName) val list = context.packageManager.queryIntentActivitiesAsUser( browserIntent, PackageManager.MATCH_ALL, userId GenericBrowserIntent, PackageManager.MATCH_ALL, userId ) list.forEach { Loading @@ -44,3 +45,17 @@ fun isBrowserApp(context: Context, packageName: String, userId: Int): Boolean { } return false } /** * Returns intent if there is a browser application available to handle the uri. Otherwise, returns * null. */ fun getBrowserIntent(uri: Uri, packageManager: PackageManager): Intent? { val intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER) .setData(uri) .addFlags(FLAG_ACTIVITY_NEW_TASK) // If there is no browser application available to handle intent, return null val component = intent.resolveActivity(packageManager) ?: return null intent.setComponent(component) return intent } No newline at end of file libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +5 −12 Original line number Diff line number Diff line Loading @@ -22,9 +22,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.CATEGORY_APP_BROWSER; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.view.InputDevice.SOURCE_TOUCHSCREEN; import static android.view.MotionEvent.ACTION_CANCEL; import static android.view.MotionEvent.ACTION_HOVER_ENTER; Loading Loading @@ -58,7 +55,6 @@ import android.graphics.PointF; import android.graphics.Rect; import android.graphics.Region; import android.hardware.input.InputManager; import android.net.Uri; import android.os.Handler; import android.os.IBinder; import android.os.Looper; Loading Loading @@ -560,20 +556,17 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { decoration.closeMaximizeMenu(); } private void onOpenInBrowser(int taskId, @NonNull Uri uri) { private void onOpenInBrowser(int taskId, @NonNull Intent intent) { final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(taskId); if (decoration == null) { return; } openInBrowser(uri, decoration.getUser()); openInBrowser(intent, decoration.getUser()); decoration.closeHandleMenu(); decoration.closeMaximizeMenu(); } private void openInBrowser(Uri uri, @NonNull UserHandle userHandle) { final Intent intent = Intent.makeMainSelectorActivity(ACTION_MAIN, CATEGORY_APP_BROWSER) .setData(uri) .addFlags(FLAG_ACTIVITY_NEW_TASK); private void openInBrowser(@NonNull Intent intent, @NonNull UserHandle userHandle) { mContext.startActivityAsUser(intent, userHandle); } Loading Loading @@ -1472,8 +1465,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { onToSplitScreen(taskInfo.taskId); return Unit.INSTANCE; }); windowDecoration.setOpenInBrowserClickListener((uri) -> { onOpenInBrowser(taskInfo.taskId, uri); windowDecoration.setOpenInBrowserClickListener((intent) -> { onOpenInBrowser(taskInfo.taskId, intent); }); windowDecoration.setOnNewWindowClickListener(() -> { onNewWindow(taskInfo.taskId); Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +17 −9 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import android.app.WindowConfiguration.WindowingMode; import android.app.assist.AssistContent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; Loading Loading @@ -166,7 +167,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin private CapturedLink mCapturedLink; private Uri mGenericLink; private Uri mWebUri; private Consumer<Uri> mOpenInBrowserClickListener; private Consumer<Intent> mOpenInBrowserClickListener; private ExclusionRegionListener mExclusionRegionListener; Loading Loading @@ -335,7 +336,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin mDragPositioningCallback = dragPositioningCallback; } void setOpenInBrowserClickListener(Consumer<Uri> listener) { void setOpenInBrowserClickListener(Consumer<Intent> listener) { mOpenInBrowserClickListener = listener; } Loading Loading @@ -518,21 +519,28 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } @Nullable private Uri getBrowserLink() { private Intent getBrowserLink() { // Do not show browser link in browser applications final ComponentName baseActivity = mTaskInfo.baseActivity; if (baseActivity != null && AppToWebUtils.isBrowserApp(mContext, baseActivity.getPackageName(), mUserContext.getUserId())) { return null; } final Uri browserLink; // If the captured link is available and has not expired, return the captured link. // Otherwise, return the generic link which is set to null if a generic link is unavailable. if (mCapturedLink != null && !mCapturedLink.mExpired) { return mCapturedLink.mUri; browserLink = mCapturedLink.mUri; } else if (mWebUri != null) { return mWebUri; browserLink = mWebUri; } else { browserLink = mGenericLink; } return mGenericLink; if (browserLink == null) return null; return AppToWebUtils.getBrowserIntent(browserLink, mContext.getPackageManager()); } UserHandle getUser() { Loading Loading @@ -1049,7 +1057,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } /** * Determine the highest y coordinate of a freeform task. Used for restricting drag inputs. * Determine the highest y coordinate of a freeform task. Used for restricting drag inputs.fmdra */ private int determineMaxY(int requiredEmptySpace, Rect stableBounds) { return stableBounds.bottom - requiredEmptySpace; Loading Loading @@ -1172,8 +1180,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin /* onToSplitScreenClickListener= */ mOnToSplitscreenClickListener, /* onNewWindowClickListener= */ mOnNewWindowClickListener, /* onManageWindowsClickListener= */ mOnManageWindowsClickListener, /* openInBrowserClickListener= */ (uri) -> { mOpenInBrowserClickListener.accept(uri); /* openInBrowserClickListener= */ (intent) -> { mOpenInBrowserClickListener.accept(intent); onCapturedLinkExpired(); return Unit.INSTANCE; }, Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt +9 −9 Original line number Diff line number Diff line Loading @@ -20,13 +20,13 @@ import android.annotation.DimenRes import android.annotation.SuppressLint import android.app.ActivityManager.RunningTaskInfo import android.content.Context import android.content.Intent import android.content.res.ColorStateList import android.content.res.Resources import android.graphics.Bitmap import android.graphics.Point import android.graphics.PointF import android.graphics.Rect import android.net.Uri import android.view.LayoutInflater import android.view.MotionEvent import android.view.MotionEvent.ACTION_OUTSIDE Loading Loading @@ -70,7 +70,7 @@ class HandleMenu( private val shouldShowWindowingPill: Boolean, private val shouldShowNewWindowButton: Boolean, private val shouldShowManageWindowsButton: Boolean, private val openInBrowserLink: Uri?, private val openInBrowserIntent: Intent?, private val captionWidth: Int, private val captionHeight: Int, captionX: Int Loading Loading @@ -107,7 +107,7 @@ class HandleMenu( private val globalMenuPosition: Point = Point() private val shouldShowBrowserPill: Boolean get() = openInBrowserLink != null get() = openInBrowserIntent != null init { updateHandleMenuPillPositions(captionX) Loading @@ -119,7 +119,7 @@ class HandleMenu( onToSplitScreenClickListener: () -> Unit, onNewWindowClickListener: () -> Unit, onManageWindowsClickListener: () -> Unit, openInBrowserClickListener: (Uri) -> Unit, openInBrowserClickListener: (Intent) -> Unit, onCloseMenuClickListener: () -> Unit, onOutsideTouchListener: () -> Unit, ) { Loading Loading @@ -152,7 +152,7 @@ class HandleMenu( onToSplitScreenClickListener: () -> Unit, onNewWindowClickListener: () -> Unit, onManageWindowsClickListener: () -> Unit, openInBrowserClickListener: (Uri) -> Unit, openInBrowserClickListener: (Intent) -> Unit, onCloseMenuClickListener: () -> Unit, onOutsideTouchListener: () -> Unit ) { Loading @@ -172,7 +172,7 @@ class HandleMenu( this.onNewWindowClickListener = onNewWindowClickListener this.onManageWindowsClickListener = onManageWindowsClickListener this.onOpenInBrowserClickListener = { openInBrowserClickListener.invoke(openInBrowserLink!!) openInBrowserClickListener.invoke(openInBrowserIntent!!) } this.onCloseMenuClickListener = onCloseMenuClickListener this.onOutsideTouchListener = onOutsideTouchListener Loading Loading @@ -661,7 +661,7 @@ interface HandleMenuFactory { shouldShowWindowingPill: Boolean, shouldShowNewWindowButton: Boolean, shouldShowManageWindowsButton: Boolean, openInBrowserLink: Uri?, openInBrowserIntent: Intent?, captionWidth: Int, captionHeight: Int, captionX: Int Loading @@ -680,7 +680,7 @@ object DefaultHandleMenuFactory : HandleMenuFactory { shouldShowWindowingPill: Boolean, shouldShowNewWindowButton: Boolean, shouldShowManageWindowsButton: Boolean, openInBrowserLink: Uri?, openInBrowserIntent: Intent?, captionWidth: Int, captionHeight: Int, captionX: Int Loading @@ -695,7 +695,7 @@ object DefaultHandleMenuFactory : HandleMenuFactory { shouldShowWindowingPill, shouldShowNewWindowButton, shouldShowManageWindowsButton, openInBrowserLink, openInBrowserIntent, captionWidth, captionHeight, captionX Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +10 −10 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.app.WindowConfiguration.WindowingMode import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.Intent.ACTION_MAIN import android.content.pm.ActivityInfo import android.graphics.Rect import android.hardware.display.DisplayManager Loading Loading @@ -930,13 +931,13 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { @Test fun testDecor_onClickToOpenBrowser_closeMenus() { val openInBrowserListenerCaptor = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Uri>> as ArgumentCaptor<Consumer<Intent>> val decor = createOpenTaskDecoration( windowingMode = WINDOWING_MODE_FULLSCREEN, onOpenInBrowserClickListener = openInBrowserListenerCaptor ) openInBrowserListenerCaptor.value.accept(Uri.EMPTY) openInBrowserListenerCaptor.value.accept(Intent()) verify(decor).closeHandleMenu() verify(decor).closeMaximizeMenu() Loading @@ -946,20 +947,19 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { fun testDecor_onClickToOpenBrowser_opensBrowser() { doNothing().whenever(spyContext).startActivity(any()) val uri = Uri.parse("https://www.google.com") val intent = Intent(ACTION_MAIN, uri) val openInBrowserListenerCaptor = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Uri>> as ArgumentCaptor<Consumer<Intent>> createOpenTaskDecoration( windowingMode = WINDOWING_MODE_FULLSCREEN, onOpenInBrowserClickListener = openInBrowserListenerCaptor ) openInBrowserListenerCaptor.value.accept(uri) openInBrowserListenerCaptor.value.accept(intent) verify(spyContext).startActivityAsUser(argThat { intent -> intent.data == uri && ((intent.flags and Intent.FLAG_ACTIVITY_NEW_TASK) != 0) && intent.categories.contains(Intent.CATEGORY_LAUNCHER) && intent.action == Intent.ACTION_MAIN uri.equals(intent.data) && intent.action == ACTION_MAIN }, eq(mockUserHandle)) } Loading Loading @@ -1233,8 +1233,8 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { forClass(Function0::class.java) as ArgumentCaptor<Function0<Unit>>, onToSplitScreenClickListenerCaptor: ArgumentCaptor<Function0<Unit>> = forClass(Function0::class.java) as ArgumentCaptor<Function0<Unit>>, onOpenInBrowserClickListener: ArgumentCaptor<Consumer<Uri>> = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Uri>>, onOpenInBrowserClickListener: ArgumentCaptor<Consumer<Intent>> = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Intent>>, onCaptionButtonClickListener: ArgumentCaptor<View.OnClickListener> = forClass(View.OnClickListener::class.java) as ArgumentCaptor<View.OnClickListener>, onCaptionButtonTouchListener: ArgumentCaptor<View.OnTouchListener> = Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/AppToWebUtils.kt +18 −3 Original line number Diff line number Diff line Loading @@ -20,10 +20,11 @@ package com.android.wm.shell.apptoweb import android.content.Context import android.content.Intent import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.pm.PackageManager import android.net.Uri private val browserIntent = Intent() private val GenericBrowserIntent = Intent() .setAction(Intent.ACTION_VIEW) .addCategory(Intent.CATEGORY_BROWSABLE) .setData(Uri.parse("http:")) Loading @@ -32,9 +33,9 @@ private val browserIntent = Intent() * Returns a boolean indicating whether a given package is a browser app. */ fun isBrowserApp(context: Context, packageName: String, userId: Int): Boolean { browserIntent.setPackage(packageName) GenericBrowserIntent.setPackage(packageName) val list = context.packageManager.queryIntentActivitiesAsUser( browserIntent, PackageManager.MATCH_ALL, userId GenericBrowserIntent, PackageManager.MATCH_ALL, userId ) list.forEach { Loading @@ -44,3 +45,17 @@ fun isBrowserApp(context: Context, packageName: String, userId: Int): Boolean { } return false } /** * Returns intent if there is a browser application available to handle the uri. Otherwise, returns * null. */ fun getBrowserIntent(uri: Uri, packageManager: PackageManager): Intent? { val intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER) .setData(uri) .addFlags(FLAG_ACTIVITY_NEW_TASK) // If there is no browser application available to handle intent, return null val component = intent.resolveActivity(packageManager) ?: return null intent.setComponent(component) return intent } No newline at end of file
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +5 −12 Original line number Diff line number Diff line Loading @@ -22,9 +22,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.CATEGORY_APP_BROWSER; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.view.InputDevice.SOURCE_TOUCHSCREEN; import static android.view.MotionEvent.ACTION_CANCEL; import static android.view.MotionEvent.ACTION_HOVER_ENTER; Loading Loading @@ -58,7 +55,6 @@ import android.graphics.PointF; import android.graphics.Rect; import android.graphics.Region; import android.hardware.input.InputManager; import android.net.Uri; import android.os.Handler; import android.os.IBinder; import android.os.Looper; Loading Loading @@ -560,20 +556,17 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { decoration.closeMaximizeMenu(); } private void onOpenInBrowser(int taskId, @NonNull Uri uri) { private void onOpenInBrowser(int taskId, @NonNull Intent intent) { final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(taskId); if (decoration == null) { return; } openInBrowser(uri, decoration.getUser()); openInBrowser(intent, decoration.getUser()); decoration.closeHandleMenu(); decoration.closeMaximizeMenu(); } private void openInBrowser(Uri uri, @NonNull UserHandle userHandle) { final Intent intent = Intent.makeMainSelectorActivity(ACTION_MAIN, CATEGORY_APP_BROWSER) .setData(uri) .addFlags(FLAG_ACTIVITY_NEW_TASK); private void openInBrowser(@NonNull Intent intent, @NonNull UserHandle userHandle) { mContext.startActivityAsUser(intent, userHandle); } Loading Loading @@ -1472,8 +1465,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { onToSplitScreen(taskInfo.taskId); return Unit.INSTANCE; }); windowDecoration.setOpenInBrowserClickListener((uri) -> { onOpenInBrowser(taskInfo.taskId, uri); windowDecoration.setOpenInBrowserClickListener((intent) -> { onOpenInBrowser(taskInfo.taskId, intent); }); windowDecoration.setOnNewWindowClickListener(() -> { onNewWindow(taskInfo.taskId); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +17 −9 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import android.app.WindowConfiguration.WindowingMode; import android.app.assist.AssistContent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; Loading Loading @@ -166,7 +167,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin private CapturedLink mCapturedLink; private Uri mGenericLink; private Uri mWebUri; private Consumer<Uri> mOpenInBrowserClickListener; private Consumer<Intent> mOpenInBrowserClickListener; private ExclusionRegionListener mExclusionRegionListener; Loading Loading @@ -335,7 +336,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin mDragPositioningCallback = dragPositioningCallback; } void setOpenInBrowserClickListener(Consumer<Uri> listener) { void setOpenInBrowserClickListener(Consumer<Intent> listener) { mOpenInBrowserClickListener = listener; } Loading Loading @@ -518,21 +519,28 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } @Nullable private Uri getBrowserLink() { private Intent getBrowserLink() { // Do not show browser link in browser applications final ComponentName baseActivity = mTaskInfo.baseActivity; if (baseActivity != null && AppToWebUtils.isBrowserApp(mContext, baseActivity.getPackageName(), mUserContext.getUserId())) { return null; } final Uri browserLink; // If the captured link is available and has not expired, return the captured link. // Otherwise, return the generic link which is set to null if a generic link is unavailable. if (mCapturedLink != null && !mCapturedLink.mExpired) { return mCapturedLink.mUri; browserLink = mCapturedLink.mUri; } else if (mWebUri != null) { return mWebUri; browserLink = mWebUri; } else { browserLink = mGenericLink; } return mGenericLink; if (browserLink == null) return null; return AppToWebUtils.getBrowserIntent(browserLink, mContext.getPackageManager()); } UserHandle getUser() { Loading Loading @@ -1049,7 +1057,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } /** * Determine the highest y coordinate of a freeform task. Used for restricting drag inputs. * Determine the highest y coordinate of a freeform task. Used for restricting drag inputs.fmdra */ private int determineMaxY(int requiredEmptySpace, Rect stableBounds) { return stableBounds.bottom - requiredEmptySpace; Loading Loading @@ -1172,8 +1180,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin /* onToSplitScreenClickListener= */ mOnToSplitscreenClickListener, /* onNewWindowClickListener= */ mOnNewWindowClickListener, /* onManageWindowsClickListener= */ mOnManageWindowsClickListener, /* openInBrowserClickListener= */ (uri) -> { mOpenInBrowserClickListener.accept(uri); /* openInBrowserClickListener= */ (intent) -> { mOpenInBrowserClickListener.accept(intent); onCapturedLinkExpired(); return Unit.INSTANCE; }, Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt +9 −9 Original line number Diff line number Diff line Loading @@ -20,13 +20,13 @@ import android.annotation.DimenRes import android.annotation.SuppressLint import android.app.ActivityManager.RunningTaskInfo import android.content.Context import android.content.Intent import android.content.res.ColorStateList import android.content.res.Resources import android.graphics.Bitmap import android.graphics.Point import android.graphics.PointF import android.graphics.Rect import android.net.Uri import android.view.LayoutInflater import android.view.MotionEvent import android.view.MotionEvent.ACTION_OUTSIDE Loading Loading @@ -70,7 +70,7 @@ class HandleMenu( private val shouldShowWindowingPill: Boolean, private val shouldShowNewWindowButton: Boolean, private val shouldShowManageWindowsButton: Boolean, private val openInBrowserLink: Uri?, private val openInBrowserIntent: Intent?, private val captionWidth: Int, private val captionHeight: Int, captionX: Int Loading Loading @@ -107,7 +107,7 @@ class HandleMenu( private val globalMenuPosition: Point = Point() private val shouldShowBrowserPill: Boolean get() = openInBrowserLink != null get() = openInBrowserIntent != null init { updateHandleMenuPillPositions(captionX) Loading @@ -119,7 +119,7 @@ class HandleMenu( onToSplitScreenClickListener: () -> Unit, onNewWindowClickListener: () -> Unit, onManageWindowsClickListener: () -> Unit, openInBrowserClickListener: (Uri) -> Unit, openInBrowserClickListener: (Intent) -> Unit, onCloseMenuClickListener: () -> Unit, onOutsideTouchListener: () -> Unit, ) { Loading Loading @@ -152,7 +152,7 @@ class HandleMenu( onToSplitScreenClickListener: () -> Unit, onNewWindowClickListener: () -> Unit, onManageWindowsClickListener: () -> Unit, openInBrowserClickListener: (Uri) -> Unit, openInBrowserClickListener: (Intent) -> Unit, onCloseMenuClickListener: () -> Unit, onOutsideTouchListener: () -> Unit ) { Loading @@ -172,7 +172,7 @@ class HandleMenu( this.onNewWindowClickListener = onNewWindowClickListener this.onManageWindowsClickListener = onManageWindowsClickListener this.onOpenInBrowserClickListener = { openInBrowserClickListener.invoke(openInBrowserLink!!) openInBrowserClickListener.invoke(openInBrowserIntent!!) } this.onCloseMenuClickListener = onCloseMenuClickListener this.onOutsideTouchListener = onOutsideTouchListener Loading Loading @@ -661,7 +661,7 @@ interface HandleMenuFactory { shouldShowWindowingPill: Boolean, shouldShowNewWindowButton: Boolean, shouldShowManageWindowsButton: Boolean, openInBrowserLink: Uri?, openInBrowserIntent: Intent?, captionWidth: Int, captionHeight: Int, captionX: Int Loading @@ -680,7 +680,7 @@ object DefaultHandleMenuFactory : HandleMenuFactory { shouldShowWindowingPill: Boolean, shouldShowNewWindowButton: Boolean, shouldShowManageWindowsButton: Boolean, openInBrowserLink: Uri?, openInBrowserIntent: Intent?, captionWidth: Int, captionHeight: Int, captionX: Int Loading @@ -695,7 +695,7 @@ object DefaultHandleMenuFactory : HandleMenuFactory { shouldShowWindowingPill, shouldShowNewWindowButton, shouldShowManageWindowsButton, openInBrowserLink, openInBrowserIntent, captionWidth, captionHeight, captionX Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +10 −10 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.app.WindowConfiguration.WindowingMode import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.Intent.ACTION_MAIN import android.content.pm.ActivityInfo import android.graphics.Rect import android.hardware.display.DisplayManager Loading Loading @@ -930,13 +931,13 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { @Test fun testDecor_onClickToOpenBrowser_closeMenus() { val openInBrowserListenerCaptor = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Uri>> as ArgumentCaptor<Consumer<Intent>> val decor = createOpenTaskDecoration( windowingMode = WINDOWING_MODE_FULLSCREEN, onOpenInBrowserClickListener = openInBrowserListenerCaptor ) openInBrowserListenerCaptor.value.accept(Uri.EMPTY) openInBrowserListenerCaptor.value.accept(Intent()) verify(decor).closeHandleMenu() verify(decor).closeMaximizeMenu() Loading @@ -946,20 +947,19 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { fun testDecor_onClickToOpenBrowser_opensBrowser() { doNothing().whenever(spyContext).startActivity(any()) val uri = Uri.parse("https://www.google.com") val intent = Intent(ACTION_MAIN, uri) val openInBrowserListenerCaptor = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Uri>> as ArgumentCaptor<Consumer<Intent>> createOpenTaskDecoration( windowingMode = WINDOWING_MODE_FULLSCREEN, onOpenInBrowserClickListener = openInBrowserListenerCaptor ) openInBrowserListenerCaptor.value.accept(uri) openInBrowserListenerCaptor.value.accept(intent) verify(spyContext).startActivityAsUser(argThat { intent -> intent.data == uri && ((intent.flags and Intent.FLAG_ACTIVITY_NEW_TASK) != 0) && intent.categories.contains(Intent.CATEGORY_LAUNCHER) && intent.action == Intent.ACTION_MAIN uri.equals(intent.data) && intent.action == ACTION_MAIN }, eq(mockUserHandle)) } Loading Loading @@ -1233,8 +1233,8 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { forClass(Function0::class.java) as ArgumentCaptor<Function0<Unit>>, onToSplitScreenClickListenerCaptor: ArgumentCaptor<Function0<Unit>> = forClass(Function0::class.java) as ArgumentCaptor<Function0<Unit>>, onOpenInBrowserClickListener: ArgumentCaptor<Consumer<Uri>> = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Uri>>, onOpenInBrowserClickListener: ArgumentCaptor<Consumer<Intent>> = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Intent>>, onCaptionButtonClickListener: ArgumentCaptor<View.OnClickListener> = forClass(View.OnClickListener::class.java) as ArgumentCaptor<View.OnClickListener>, onCaptionButtonTouchListener: ArgumentCaptor<View.OnTouchListener> = Loading