diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java index 5081453754ab4e..67c89d2882ad69 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java @@ -95,9 +95,12 @@ public void bookmarkModelChanged() { clearHighlight(); mDelegate.notifyStateChange(BookmarkItemsAdapter.this); - if (mDelegate.getCurrentState() == BookmarkUIState.STATE_SEARCHING - && !TextUtils.equals(mSearchText, EMPTY_QUERY)) { - search(mSearchText); + if (mDelegate.getCurrentState() == BookmarkUIState.STATE_SEARCHING) { + if (!TextUtils.equals(mSearchText, EMPTY_QUERY)) { + search(mSearchText); + } else { + mDelegate.closeSearchUI(); + } } } }; diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java index ef7cdb66293b81..ddf26e34e39dcb 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java @@ -1120,6 +1120,36 @@ public void testReadingListDeletion() throws Exception { CriteriaHelper.pollUiThread(() -> mBookmarkModel.getReadingListItem(mTestUrlA) == null); } + @Test + @SmallTest + @Features.EnableFeatures({ChromeFeatureList.READ_LATER}) + public void testSearchReadingList_Deletion() throws Exception { + addReadingListBookmark(TEST_PAGE_TITLE_GOOGLE, mTestUrlA); + BookmarkPromoHeader.forcePromoStateForTests(PromoState.PROMO_NONE); + openBookmarkManager(); + CriteriaHelper.pollUiThread(() -> mBookmarkModel.getReadingListItem(mTestUrlA) != null); + + // Open the "Reading list" folder. + TestThreadUtils.runOnUiThreadBlocking( + () -> mManager.openFolder(mBookmarkModel.getRootFolderId())); + onView(withText("Reading list")).perform(click()); + RecyclerViewTestUtils.waitForStableRecyclerView(mItemsContainer); + + // Enter search UI, but don't enter any search key word. + BookmarkManager manager = getBookmarkManager(); + TestThreadUtils.runOnUiThreadBlocking(manager::openSearchUI); + Assert.assertEquals("Wrong state, should be searching", BookmarkUIState.STATE_SEARCHING, + manager.getCurrentState()); + RecyclerViewTestUtils.waitForStableRecyclerView(mItemsContainer); + + // Delete the reading list page in search state. + View readingListItem = mItemsContainer.findViewHolderForAdapterPosition(0).itemView; + View more = readingListItem.findViewById(R.id.more); + TestThreadUtils.runOnUiThreadBlocking(more::callOnClick); + onView(withText("Delete")).check(matches(isDisplayed())).perform(click()); + CriteriaHelper.pollUiThread(() -> mBookmarkModel.getReadingListItem(mTestUrlA) == null); + } + @Test @SmallTest @Features.EnableFeatures({ChromeFeatureList.READ_LATER})