[AIM] Add test for allowed selection count.
(cherry picked from commit 211ef526545f917b88de745eea37bfc3f5cc9fd5)
Bug: 466384816, 467056896
Change-Id: I707b923e3961002122c6e75270df109056bdf085
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7232935
Reviewed-by: Tomasz Wiszkowski <ender@google.com>
Commit-Queue: Sky Malice <skym@chromium.org>
Auto-Submit: Sky Malice <skym@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1554838}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7239827
Commit-Queue: Tomasz Wiszkowski <ender@google.com>
Auto-Submit: Tomasz Wiszkowski <ender@google.com>
Reviewed-by: Sky Malice <skym@chromium.org>
Cr-Commit-Position: refs/branch-heads/7559@{#540}
Cr-Branched-From: 223dfbac1c7542a06b422390d954afe5b560b607-refs/heads/main@{#1552494}
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxMediator.java
index a21242d..3291b20 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxMediator.java
@@ -361,7 +361,8 @@
void onTabPickerClicked() {
mPopup.dismiss();
FuseboxMetrics.notifyAttachmentButtonUsed(FuseboxAttachmentButtonType.TAB_PICKER);
- if (mModelList.getRemainingAttachments() < 1) {
+ int remainingAttachments = mModelList.getRemainingAttachments();
+ if (remainingAttachments < 1) {
warnForMaxAttachments();
return;
}
@@ -376,7 +377,7 @@
return;
}
- int maxAllowedTabs = preselectedTabIds.size() + mModelList.getRemainingAttachments();
+ int maxAllowedTabs = preselectedTabIds.size() + remainingAttachments;
intent.putExtra(EXTRA_ALLOWED_SELECTION_COUNT, maxAllowedTabs);
mWindowAndroid.showCancelableIntent(
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxMediatorUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxMediatorUnitTest.java
index be8dee8..3f270a7 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxMediatorUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxMediatorUnitTest.java
@@ -835,42 +835,57 @@
}
@Test
- public void onTabPickerClicked_launchesTabPickerActivity() throws ClassNotFoundException {
- mMediator.onTabPickerClicked();
+ public void onTabPickerClicked_launchesTabPickerActivity() {
+ mModel.get(FuseboxProperties.POPUP_TAB_PICKER_CLICKED).run();
- // Verify popup is dismissed
verify(mPopup).dismiss();
-
- // Verify intent is shown
verify(mWindowAndroid).showCancelableIntent(mIntentCaptor.capture(), any(), any());
Intent intent = mIntentCaptor.getValue();
-
assertEquals(
FuseboxMediator.CHROME_ITEM_PICKER_ACTIVITY_CLASS,
intent.getComponent().getClassName());
assertNotNull(intent.getIntegerArrayListExtra(FuseboxMediator.EXTRA_PRESELECTED_TAB_IDS));
+ assertEquals(
+ FuseboxAttachmentModelList.MAX_ATTACHMENTS,
+ intent.getIntExtra(FuseboxMediator.EXTRA_ALLOWED_SELECTION_COUNT, -1));
}
@Test
- public void onTabPickerClicked_sendsPreselectedTabIds() throws ClassNotFoundException {
- // Setup tabs and add them as attachments
- Tab tab1 = mockTab(101, true);
- Tab tab2 = mockTab(102, false);
+ public void onTabPickerClicked_sendsPreselectedTabIds() {
+ Tab tab1 = mockTab(101, /* webContentsReady= */ true);
+ Tab tab2 = mockTab(102, /* webContentsReady= */ false);
addTabAttachment(tab1);
addTabAttachment(tab2);
- mMediator.onTabPickerClicked();
+ mModel.get(FuseboxProperties.POPUP_TAB_PICKER_CLICKED).run();
- // Capture the intent and verify its extras
verify(mWindowAndroid).showCancelableIntent(mIntentCaptor.capture(), any(), any());
Intent intent = mIntentCaptor.getValue();
ArrayList<Integer> preselectedIds =
intent.getIntegerArrayListExtra(FuseboxMediator.EXTRA_PRESELECTED_TAB_IDS);
-
assertNotNull(preselectedIds);
assertEquals(2, preselectedIds.size());
- assertTrue(preselectedIds.contains(101));
- assertTrue(preselectedIds.contains(102));
+ assertTrue(preselectedIds.contains(tab1.getId()));
+ assertTrue(preselectedIds.contains(tab2.getId()));
+ assertEquals(
+ FuseboxAttachmentModelList.MAX_ATTACHMENTS,
+ intent.getIntExtra(FuseboxMediator.EXTRA_ALLOWED_SELECTION_COUNT, -1));
+ }
+
+ @Test
+ public void onTabPickerClicked_sendsAllowedSelectionCount() {
+ addTabAttachment(mockTab(101, /* webContentsReady= */ true));
+ addAttachment("title1", "token1", FuseboxAttachmentType.ATTACHMENT_IMAGE);
+ addAttachment("title2", "token2", FuseboxAttachmentType.ATTACHMENT_FILE);
+
+ mModel.get(FuseboxProperties.POPUP_TAB_PICKER_CLICKED).run();
+
+ verify(mWindowAndroid).showCancelableIntent(mIntentCaptor.capture(), any(), any());
+ Intent intent = mIntentCaptor.getValue();
+ int allowedSelectionCount =
+ intent.getIntExtra(FuseboxMediator.EXTRA_ALLOWED_SELECTION_COUNT, -1);
+ // The image and file attachments should count against the max, the tab should not.
+ assertEquals(FuseboxAttachmentModelList.MAX_ATTACHMENTS - 2, allowedSelectionCount);
}
@Test
@@ -881,10 +896,10 @@
assertEquals(FuseboxAttachmentModelList.MAX_ATTACHMENTS, mAttachments.size());
- mockTab(101, true);
- mockTab(102, false);
- mockTab(103, true);
- mockTab(104, false);
+ mockTab(101, /* webContentsReady= */ true);
+ mockTab(102, /* webContentsReady= */ false);
+ mockTab(103, /* webContentsReady= */ true);
+ mockTab(104, /* webContentsReady= */ false);
Set<Integer> newlySelectedIds = new HashSet<>();
newlySelectedIds.add(102);
newlySelectedIds.add(103);
@@ -905,8 +920,8 @@
@Test
public void testOnTabPickerResult_modelListNotEmpty_activatesAiMode() {
- mockTab(101, true);
- mockTab(102, false);
+ mockTab(101, /* webContentsReady= */ true);
+ mockTab(102, /* webContentsReady= */ false);
ArrayList<Integer> selectedTabIds = new ArrayList<>(Arrays.asList(101, 102));
Intent resultIntent = createTabPickerResultIntent(selectedTabIds);