Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3608)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionTestCaseBase.java

Issue 2829023002: Fix cancelling permission requests on Android when the PermissionRequestManager is enabled (Closed)
Patch Set: rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionTestCaseBase.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionTestCaseBase.java b/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionTestCaseBase.java
index 063c362bbd4200c9de65d01841fe9c71068680a9..c26db784f3ed13363f9071050b20a21bcaaa1e06 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionTestCaseBase.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionTestCaseBase.java
@@ -136,6 +136,39 @@ public class PermissionTestCaseBase extends ChromeActivityTestCaseBase<ChromeAct
super.tearDown();
}
+ protected void setUpUrl(final String url) throws InterruptedException {
+ final String test_url = mTestServer.getURL(url);
+ loadUrl(test_url);
+ }
+
+ /**
+ * Checks permission status via the navigator.permissions.query API
+ */
+ protected void checkPermissionStatus(final String permission, final String expected)
+ throws Exception {
+ final CallbackHelper callbackHelper = new CallbackHelper();
+ EmptyTabObserver updateWaiter = new EmptyTabObserver() {
+ @Override
+ public void onTitleUpdated(Tab tab) {
+ String title = getActivity().getActivityTab().getTitle();
+ String prefix = permission + " status: ";
+ if (!title.startsWith(prefix)) return;
+ String actual = title.substring(prefix.length());
+ assertEquals(expected, actual);
+ callbackHelper.notifyCalled();
+ }
+ };
+
+ Tab tab = getActivity().getActivityTab();
+ tab.addObserver(updateWaiter);
+ runJavaScriptCodeInCurrentTab("navigator.permissions.query({ name: '" + permission
+ + "' }).then(({state}) => { window.document.title = '" + permission
+ + " status: ' + state; });");
+ callbackHelper.waitForCallback(0);
+ tab.removeObserver(updateWaiter);
+ runJavaScriptCodeInCurrentTab("window.document.title = 'banana';");
+ }
+
/**
* Simulates clicking a button on an AlertDialog.
*/
@@ -148,6 +181,13 @@ public class PermissionTestCaseBase extends ChromeActivityTestCaseBase<ChromeAct
});
}
+ /**
+ * Waits for an infobar to have been added since to the last call to this function.
+ */
+ protected void waitForInfoBar() throws Exception {
+ mListener.addInfoBarAnimationFinished("InfoBar not added.");
+ }
+
/**
* Runs a permission prompt test that grants the permission and expects the page title to be
* updated in response.
@@ -165,8 +205,7 @@ public class PermissionTestCaseBase extends ChromeActivityTestCaseBase<ChromeAct
protected void runAllowTest(PermissionUpdateWaiter updateWaiter, final String url,
String javascript, int nUpdates, boolean withGesture, boolean isDialog,
boolean hasSwitch, boolean toggleSwitch) throws Exception {
- final String test_url = mTestServer.getURL(url);
- loadUrl(test_url);
+ setUpUrl(url);
if (withGesture) {
runJavaScriptCodeInCurrentTab("functionToRun = '" + javascript + "'");
@@ -178,21 +217,20 @@ public class PermissionTestCaseBase extends ChromeActivityTestCaseBase<ChromeAct
if (isDialog) {
DialogShownCriteria criteria = new DialogShownCriteria("Dialog not shown");
CriteriaHelper.pollUiThread(criteria);
- replyToDialogAndWaitForUpdates(
- updateWaiter, criteria.getDialog(), nUpdates, true, hasSwitch, toggleSwitch);
+ replyToDialog(criteria.getDialog(), true, hasSwitch, toggleSwitch);
} else {
- replyToInfoBarAndWaitForUpdates(updateWaiter, nUpdates, true, hasSwitch, toggleSwitch);
+ waitForInfoBar();
+ replyToInfoBar(true, hasSwitch, toggleSwitch);
}
+ updateWaiter.waitForNumUpdates(nUpdates);
}
/**
* Replies to an infobar permission prompt, optionally checking for the presence of a
- * persistence switch and toggling it. Waits for a provided number of updates to the page title
- * in response.
+ * persistence switch and toggling it.
*/
- private void replyToInfoBarAndWaitForUpdates(PermissionUpdateWaiter updateWaiter, int nUpdates,
- boolean allow, boolean hasSwitch, boolean toggleSwitch) throws Exception {
- mListener.addInfoBarAnimationFinished("InfoBar not added.");
+ protected void replyToInfoBar(boolean allow, boolean hasSwitch, boolean toggleSwitch)
+ throws Exception {
InfoBar infobar = getInfoBars().get(0);
assertNotNull(infobar);
@@ -207,16 +245,13 @@ public class PermissionTestCaseBase extends ChromeActivityTestCaseBase<ChromeAct
} else {
assertTrue("Block button wasn't found", InfoBarUtil.clickSecondaryButton(infobar));
}
- updateWaiter.waitForNumUpdates(nUpdates);
}
/**
* Replies to a dialog permission prompt, optionally checking for the presence of a
- * persistence switch and toggling it. Waits for a provided number of updates to the page title
- * in response.
+ * persistence switch and toggling it.
*/
- private void replyToDialogAndWaitForUpdates(PermissionUpdateWaiter updateWaiter,
- AlertDialog dialog, int nUpdates, boolean allow, boolean hasSwitch,
+ private void replyToDialog(AlertDialog dialog, boolean allow, boolean hasSwitch,
boolean toggleSwitch) throws Exception {
if (hasSwitch) {
SwitchCompat persistSwitch =
@@ -229,7 +264,6 @@ public class PermissionTestCaseBase extends ChromeActivityTestCaseBase<ChromeAct
} else {
clickButton(dialog, DialogInterface.BUTTON_NEGATIVE);
}
- updateWaiter.waitForNumUpdates(nUpdates);
}
private void checkAndToggleSwitch(final SwitchCompat persistSwitch, boolean toggleSwitch) {

Powered by Google App Engine
This is Rietveld 408576698