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

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

Issue 2899973002: Hide modal permission prompts on Android upon tab navigation/destruction (Closed)
Patch Set: fix test (permission request from js goes through mojo so need to poll) 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/PermissionNavigationTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionNavigationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionNavigationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe0168b218d375b0c36744f4e4f11f5f4ce08712
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionNavigationTest.java
@@ -0,0 +1,73 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.permissions;
+
+import android.support.test.filters.MediumTest;
+
+import org.junit.Assert;
+
+import org.chromium.base.test.util.CallbackHelper;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.RetryOnFailure;
+import org.chromium.chrome.browser.tab.EmptyTabObserver;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.content.browser.test.util.Criteria;
+import org.chromium.content.browser.test.util.CriteriaHelper;
+
+/**
+ * Test suite for interaction between permissions requests and navigation.
+ */
+@RetryOnFailure
+public class PermissionNavigationTest extends PermissionTestCaseBase {
+ private static final String TEST_FILE = "/content/test/data/android/permission_navigation.html";
+
+ public PermissionNavigationTest() {}
+
+ /**
+ * Check that modal permission prompts and queued permission requests are removed upon
+ * navigation.
+ *
+ * @throws Exception
+ */
+ @MediumTest
+ @Feature({"Permissions"})
+ @CommandLineFlags.Add({NO_GESTURE_FEATURE, FORCE_FIELDTRIAL, FORCE_FIELDTRIAL_PARAMS})
+ public void testNavigationDismissesModalPermissionPrompt() throws Exception {
+ setUpUrl(TEST_FILE);
+ runJavaScriptCodeInCurrentTab("requestGeolocationPermission()");
+ DialogShownCriteria criteriaShown = new DialogShownCriteria("Dialog not shown", true);
+ CriteriaHelper.pollUiThread(criteriaShown);
+ Assert.assertEquals(0, PermissionDialogController.getInstance().getQueueLengthForTesting());
+
+ runJavaScriptCodeInCurrentTab("requestNotificationPermission()");
+ CriteriaHelper.pollInstrumentationThread(new Criteria("Request not queued") {
+ @Override
+ public boolean isSatisfied() {
+ return PermissionDialogController.getInstance().getQueueLengthForTesting() == 1;
+ }
+ });
+
+ runJavaScriptCodeInCurrentTab("navigate()");
+
+ Tab tab = getActivity().getActivityTab();
+ final CallbackHelper callbackHelper = new CallbackHelper();
+ EmptyTabObserver navigationWaiter = new EmptyTabObserver() {
+ @Override
+ public void onDidFinishNavigation(Tab tab, String url, boolean isInMainFrame,
+ boolean isErrorPage, boolean hasCommitted, boolean isSameDocument,
+ boolean isFragmentNavigation, Integer pageTransition, int errorCode,
+ int httpStatusCode) {
+ callbackHelper.notifyCalled();
+ }
+ };
+ tab.addObserver(navigationWaiter);
+ callbackHelper.waitForCallback(0);
+ tab.removeObserver(navigationWaiter);
+
+ DialogShownCriteria criteriaNotShown = new DialogShownCriteria("Dialog shown", false);
+ CriteriaHelper.pollUiThread(criteriaNotShown);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698