Commit 2fd16e61 authored by Theresa Wellington's avatar Theresa Wellington Committed by Commit Bot

Add validation for app menu bookmark item

Add a test that validates presentation of the app menu bookmark item
based on whether the current page is bookmarked.

BUG=1065043

Change-Id: I882b7e55f1f5df7a977f5135702d9c9d029d9362
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2128528
Commit-Queue: Theresa  <twellington@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#754776}
parent 064e5986
...@@ -17,6 +17,7 @@ import android.view.View; ...@@ -17,6 +17,7 @@ import android.view.View;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.content.res.AppCompatResources;
import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.graphics.drawable.DrawableCompat;
...@@ -65,6 +66,8 @@ import java.util.List; ...@@ -65,6 +66,8 @@ import java.util.List;
* items based on activity state. * items based on activity state.
*/ */
public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate { public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate {
private static Boolean sItemBookmarkedForTesting;
protected MenuItem mReloadMenuItem; protected MenuItem mReloadMenuItem;
protected final Context mContext; protected final Context mContext;
...@@ -490,7 +493,10 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate ...@@ -490,7 +493,10 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
bookmarkMenuItem.setEnabled(mBookmarkBridge.isEditBookmarksEnabled()); bookmarkMenuItem.setEnabled(mBookmarkBridge.isEditBookmarksEnabled());
} }
if (BookmarkBridge.hasBookmarkIdForTab(currentTab)) { boolean isBookmarked = sItemBookmarkedForTesting != null
? sItemBookmarkedForTesting
: BookmarkBridge.hasBookmarkIdForTab(currentTab);
if (isBookmarked) {
bookmarkMenuItem.setIcon(R.drawable.btn_star_filled); bookmarkMenuItem.setIcon(R.drawable.btn_star_filled);
bookmarkMenuItem.setChecked(true); bookmarkMenuItem.setChecked(true);
bookmarkMenuItem.setTitleCondensed(mContext.getString(R.string.edit_bookmark)); bookmarkMenuItem.setTitleCondensed(mContext.getString(R.string.edit_bookmark));
...@@ -536,4 +542,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate ...@@ -536,4 +542,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
? mContext.getString(R.string.menu_request_desktop_site_on) ? mContext.getString(R.string.menu_request_desktop_site_on)
: mContext.getString(R.string.menu_request_desktop_site_off)); : mContext.getString(R.string.menu_request_desktop_site_off));
} }
@VisibleForTesting
static void setPageBookmarkedForTesting(Boolean bookmarked) {
sItemBookmarkedForTesting = bookmarked;
}
} }
...@@ -27,6 +27,7 @@ import org.chromium.base.test.util.Feature; ...@@ -27,6 +27,7 @@ import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.Restriction; import org.chromium.base.test.util.Restriction;
import org.chromium.base.test.util.RetryOnFailure; import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.base.test.util.UrlUtils; import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver; import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
...@@ -35,6 +36,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuHandler; ...@@ -35,6 +36,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuHandler;
import org.chromium.chrome.browser.ui.appmenu.AppMenuTestSupport; import org.chromium.chrome.browser.ui.appmenu.AppMenuTestSupport;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.ChromeRenderTestRule;
import org.chromium.chrome.test.util.ChromeTabUtils; import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.content_public.browser.UiThreadTaskTraits; import org.chromium.content_public.browser.UiThreadTaskTraits;
import org.chromium.content_public.browser.test.util.Criteria; import org.chromium.content_public.browser.test.util.Criteria;
...@@ -42,6 +44,7 @@ import org.chromium.content_public.browser.test.util.CriteriaHelper; ...@@ -42,6 +44,7 @@ import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.ui.test.util.UiRestriction; import org.chromium.ui.test.util.UiRestriction;
import java.io.IOException;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
/** /**
...@@ -53,6 +56,8 @@ import java.util.concurrent.TimeoutException; ...@@ -53,6 +56,8 @@ import java.util.concurrent.TimeoutException;
public class TabbedAppMenuTest { public class TabbedAppMenuTest {
@Rule @Rule
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
@Rule
public ChromeRenderTestRule mRenderTestRule = new ChromeRenderTestRule();
private static final String TEST_URL = UrlUtils.encodeHtmlDataUri("<html>foo</html>"); private static final String TEST_URL = UrlUtils.encodeHtmlDataUri("<html>foo</html>");
...@@ -223,6 +228,35 @@ public class TabbedAppMenuTest { ...@@ -223,6 +228,35 @@ public class TabbedAppMenuTest {
Assert.assertFalse("App menu shouldn't be showing.", mAppMenuHandler.isAppMenuShowing()); Assert.assertFalse("App menu shouldn't be showing.", mAppMenuHandler.isAppMenuShowing());
} }
@Test
@SmallTest
@Feature({"Browser", "Main", "Bookmark", "RenderTest"})
public void testBookmarkMenuItem() throws IOException {
MenuItem bookmarkStar =
AppMenuTestSupport.getMenu(mActivityTestRule.getAppMenuCoordinator())
.findItem(R.id.bookmark_this_page_id);
Assert.assertFalse("Bookmark item should not be checked.", bookmarkStar.isChecked());
Assert.assertEquals("Incorrect content description.",
mActivityTestRule.getActivity().getString(R.string.menu_bookmark),
bookmarkStar.getTitleCondensed());
mRenderTestRule.render(getListView().getChildAt(0), "icon_row");
TestThreadUtils.runOnUiThreadBlocking(() -> mAppMenuHandler.hideAppMenu());
AppMenuPropertiesDelegateImpl.setPageBookmarkedForTesting(true);
showAppMenuAndAssertMenuShown();
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
bookmarkStar = AppMenuTestSupport.getMenu(mActivityTestRule.getAppMenuCoordinator())
.findItem(R.id.bookmark_this_page_id);
Assert.assertTrue("Bookmark item should be checked.", bookmarkStar.isChecked());
Assert.assertEquals("Incorrect content description for bookmarked page.",
mActivityTestRule.getActivity().getString(R.string.edit_bookmark),
bookmarkStar.getTitleCondensed());
mRenderTestRule.render(getListView().getChildAt(0), "icon_row_page_bookmarked");
AppMenuPropertiesDelegateImpl.setPageBookmarkedForTesting(null);
}
private void showAppMenuAndAssertMenuShown() { private void showAppMenuAndAssertMenuShown() {
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT,
() ()
......
0b0fd89740557b45cef420c4a7eb38af723a925a
\ No newline at end of file
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