Commit 0ad7047a authored by Xing Liu's avatar Xing Liu Committed by Chromium LUCI CQ

Read later: Open reading list page in CCT.

Open reading list page in CCT.

Bug: 1158610
Change-Id: I9bf94d348cb722136512c52071141ee3f27b5c79
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2591707Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Xing Liu <xingliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#836907}
parent edde2dda
......@@ -15,6 +15,7 @@ import android.text.TextUtils;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.browser.customtabs.CustomTabsIntent;
import org.chromium.base.BuildInfo;
import org.chromium.base.Callback;
......@@ -26,9 +27,12 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.LaunchIntentDispatcher;
import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
import org.chromium.chrome.browser.bookmarks.bottomsheet.BookmarkBottomSheetCoordinator;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider.CustomTabsUiType;
import org.chromium.chrome.browser.customtabs.CustomTabIntentDataProvider;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.flags.CachedFeatureFlags;
......@@ -382,9 +386,10 @@ public class BookmarkUtils {
if (bookmarkItem.getId().getType() == BookmarkType.READING_LIST
&& !bookmarkItem.isFolder()) {
model.setReadStatusForReadingList(bookmarkItem.getUrl(), true);
openUrlInCustomTab(context, bookmarkItem.getUrl());
} else {
openUrl(context, bookmarkItem.getUrl(), openBookmarkComponentName);
}
openUrl(context, bookmarkItem.getUrl(), openBookmarkComponentName);
return true;
}
......@@ -430,6 +435,25 @@ public class BookmarkUtils {
IntentHandler.startActivityForTrustedIntent(intent);
}
private static void openUrlInCustomTab(Context context, String url) {
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
builder.setShowTitle(true);
builder.setShareState(CustomTabsIntent.SHARE_STATE_ON);
CustomTabsIntent customTabIntent = builder.build();
customTabIntent.intent.setData(Uri.parse(url));
Intent intent = LaunchIntentDispatcher.createCustomTabActivityIntent(
context, customTabIntent.intent);
intent.setPackage(context.getPackageName());
intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
intent.putExtra(CustomTabIntentDataProvider.EXTRA_UI_TYPE, CustomTabsUiType.READ_LATER);
intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB,
Profile.getLastUsedRegularProfile().isOffTheRecord());
IntentHandler.addTrustedIntentExtras(intent);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
IntentHandler.startActivityForTrustedIntent(intent);
}
/**
* Closes the {@link BookmarkActivity} on Phone. Does nothing on tablet.
*/
......
......@@ -46,6 +46,7 @@ public abstract class BrowserServicesIntentDataProvider {
int READER_MODE = 3;
int MINIMAL_UI_WEBAPP = 4;
int OFFLINE_PAGE = 5;
int READ_LATER = 6;
}
// The type of Disclosure for TWAs to use.
......
......@@ -61,6 +61,7 @@ import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
import org.chromium.chrome.browser.bookmarks.BookmarkPromoHeader.PromoState;
import org.chromium.chrome.browser.customtabs.CustomTabActivity;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.night_mode.ChromeNightModeTestUtils;
......@@ -1105,6 +1106,34 @@ public class BookmarkTest {
CriteriaHelper.pollUiThread(() -> mBookmarkModel.getReadingListItem(TEST_URL_A) == null);
}
@Test
@SmallTest
@Features.EnableFeatures({ChromeFeatureList.READ_LATER})
public void testReadingListOpenInCCT() throws Exception {
addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, TEST_URL_A);
BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE);
openBookmarkManager();
CriteriaHelper.pollUiThread(() -> mBookmarkModel.getReadingListItem(TEST_URL_A) != null);
// Open the "Reading list" folder.
TestThreadUtils.runOnUiThreadBlocking(
() -> mManager.openFolder(mBookmarkModel.getRootFolderId()));
onView(withText("Reading list")).perform(click());
RecyclerViewTestUtils.waitForStableRecyclerView(mItemsContainer);
View readingListRow = mItemsContainer.findViewHolderForAdapterPosition(1).itemView;
Assert.assertEquals("The 2nd view should be reading list.", BookmarkType.READING_LIST,
getIdByPosition(1).getType());
// Click a reading list item, the page should be opened in a CCT.
CustomTabActivity activity = ApplicationTestUtils.waitForActivityWithClass(
CustomTabActivity.class, Stage.CREATED, () -> { readingListRow.performClick(); });
CriteriaHelper.pollUiThread(() -> activity.getActivityTab() != null);
TestThreadUtils.runOnUiThreadBlocking(() -> {
Assert.assertTrue(activity.getActivityTab().getUrl().getSpec().startsWith(TEST_URL_A));
});
activity.finish();
}
@Test
@MediumTest
public void testMoveUpMenuItem() throws Exception {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment