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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeTest.java

Issue 2877253002: Convert Notification Tests to JUnit4 (Closed)
Patch Set: address comments 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/notifications/NotificationPlatformBridgeTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeTest.java
index 23eaa284346547787507a1843e8b77cb8ae9841f..e58e1bc9ea277fe1253c86f9cb68bdf411d502b4 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeTest.java
@@ -17,9 +17,16 @@ import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.support.test.InstrumentationRegistry;
import android.support.test.filters.LargeTest;
import android.support.test.filters.MediumTest;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.SuppressFBWarnings;
import org.chromium.base.test.util.CommandLineFlags;
@@ -28,6 +35,7 @@ import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.MinAndroidSdkLevel;
import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.engagement.SiteEngagementService;
import org.chromium.chrome.browser.infobar.InfoBar;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
@@ -35,6 +43,8 @@ import org.chromium.chrome.browser.preferences.website.ContentSetting;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.widget.RoundedIconGenerator;
+import org.chromium.chrome.test.ChromeActivityTestRule;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.InfoBarUtil;
import org.chromium.chrome.test.util.browser.TabTitleObserver;
import org.chromium.chrome.test.util.browser.notifications.MockNotificationManagerProxy.NotificationEntry;
@@ -53,26 +63,35 @@ import java.util.concurrent.TimeoutException;
*
* Web Notifications are only supported on Android JellyBean and beyond.
*/
-public class NotificationPlatformBridgeTest extends NotificationTestBase {
+@RunWith(ChromeJUnit4ClassRunner.class)
+@CommandLineFlags.Add({
+ ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
+ // Preconnect causes issues with the single-threaded Java test server.
+ ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG,
+})
+public class NotificationPlatformBridgeTest {
+ @Rule
+ public NotificationTestRule mNotificationTestRule = new NotificationTestRule();
+
private static final String NOTIFICATION_TEST_PAGE =
"/chrome/test/data/notifications/android_test.html";
private static final int TITLE_UPDATE_TIMEOUT_SECONDS = (int) scaleTimeout(5);
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
SiteEngagementService.setParamValuesForTesting();
- loadUrl(getTestServer().getURL(NOTIFICATION_TEST_PAGE));
+ mNotificationTestRule.loadUrl(
+ mNotificationTestRule.getTestServer().getURL(NOTIFICATION_TEST_PAGE));
}
private void waitForTitle(String expectedTitle) throws InterruptedException {
- Tab tab = getActivity().getActivityTab();
+ Tab tab = mNotificationTestRule.getActivity().getActivityTab();
TabTitleObserver titleObserver = new TabTitleObserver(tab, expectedTitle);
try {
titleObserver.waitForTitleUpdate(TITLE_UPDATE_TIMEOUT_SECONDS);
} catch (TimeoutException e) {
// The title is not as expected, this assertion neatly logs what the difference is.
- assertEquals(expectedTitle, tab.getTitle());
+ Assert.assertEquals(expectedTitle, tab.getTitle());
}
}
@@ -80,11 +99,11 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
CriteriaHelper.pollUiThread(new Criteria() {
@Override
public boolean isSatisfied() {
- return !getInfoBars().isEmpty();
+ return !mNotificationTestRule.getInfoBars().isEmpty();
}
});
- List<InfoBar> infoBars = getInfoBars();
- assertEquals(1, infoBars.size());
+ List<InfoBar> infoBars = mNotificationTestRule.getInfoBars();
+ Assert.assertEquals(1, infoBars.size());
return infoBars.get(0);
}
@@ -92,17 +111,18 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
CriteriaHelper.pollUiThread(new Criteria() {
@Override
public boolean isSatisfied() {
- return getInfoBars().isEmpty();
+ return mNotificationTestRule.getInfoBars().isEmpty();
}
});
- assertEquals(0, getInfoBars().size());
+ Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
}
private void checkThatShowNotificationIsDenied() throws Exception {
- runJavaScriptCodeInCurrentTab("showNotification('MyNotification', {})");
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab(
+ "showNotification('MyNotification', {})");
waitForTitle("TypeError: No notification permission has been granted for this origin.");
// Ideally we'd wait a little here, but it's hard to wait for things that shouldn't happen.
- assertTrue(getNotificationEntries().isEmpty());
+ Assert.assertTrue(mNotificationTestRule.getNotificationEntries().isEmpty());
}
private double getEngagementScoreBlocking() {
@@ -111,7 +131,7 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
@Override
public Double call() throws Exception {
return SiteEngagementService.getForProfile(Profile.getLastUsedProfile())
- .getScore(getOrigin());
+ .getScore(mNotificationTestRule.getOrigin());
}
});
} catch (ExecutionException ex) {
@@ -127,50 +147,59 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
//@LargeTest
//@Feature({"Browser", "Notifications"})
// crbug.com/707528
+ @Test
@DisabledTest
public void testPermissionDenied() throws Exception {
// Notifications permission should initially be prompt, and showing should fail.
- assertEquals("\"default\"", runJavaScriptCodeInCurrentTab("Notification.permission"));
+ Assert.assertEquals("\"default\"",
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab("Notification.permission"));
checkThatShowNotificationIsDenied();
// Notification.requestPermission() should show the notifications infobar.
- assertEquals(0, getInfoBars().size());
- runJavaScriptCodeInCurrentTab("Notification.requestPermission(sendToTest)");
+ Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab(
+ "Notification.requestPermission(sendToTest)");
InfoBar infoBar = getInfobarBlocking();
// Dismissing the infobar should pass prompt to the requestPermission callback.
- assertTrue(InfoBarUtil.clickCloseButton(infoBar));
+ Assert.assertTrue(InfoBarUtil.clickCloseButton(infoBar));
waitForInfobarToClose();
waitForTitle("default"); // See https://crbug.com/434547.
// Notifications permission should still be prompt.
- assertEquals("\"default\"", runJavaScriptCodeInCurrentTab("Notification.permission"));
+ Assert.assertEquals("\"default\"",
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab("Notification.permission"));
checkThatShowNotificationIsDenied();
// Notification.requestPermission() should show the notifications infobar again.
- runJavaScriptCodeInCurrentTab("Notification.requestPermission(sendToTest)");
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab(
+ "Notification.requestPermission(sendToTest)");
infoBar = getInfobarBlocking();
// Denying the infobar should pass denied to the requestPermission callback.
- assertTrue(InfoBarUtil.clickSecondaryButton(infoBar));
+ Assert.assertTrue(InfoBarUtil.clickSecondaryButton(infoBar));
waitForInfobarToClose();
waitForTitle("denied");
// This should have caused notifications permission to become denied.
- assertEquals("\"denied\"", runJavaScriptCodeInCurrentTab("Notification.permission"));
+ Assert.assertEquals("\"denied\"",
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab("Notification.permission"));
checkThatShowNotificationIsDenied();
// Reload page to ensure the block is persisted.
- loadUrl(getTestServer().getURL(NOTIFICATION_TEST_PAGE));
+ mNotificationTestRule.loadUrl(
+ mNotificationTestRule.getTestServer().getURL(NOTIFICATION_TEST_PAGE));
// Notification.requestPermission() should immediately pass denied to the callback without
// showing an infobar.
- runJavaScriptCodeInCurrentTab("Notification.requestPermission(sendToTest)");
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab(
+ "Notification.requestPermission(sendToTest)");
waitForTitle("denied");
- assertEquals(0, getInfoBars().size());
+ Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
// Notifications permission should still be denied.
- assertEquals("\"denied\"", runJavaScriptCodeInCurrentTab("Notification.permission"));
+ Assert.assertEquals("\"denied\"",
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab("Notification.permission"));
checkThatShowNotificationIsDenied();
}
@@ -180,109 +209,119 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
//@MediumTest
//@Feature({"Browser", "Notifications"})
// crbug.com/707528
+ @Test
@DisabledTest
public void testPermissionGranted() throws Exception {
// Notifications permission should initially be prompt, and showing should fail.
- assertEquals("\"default\"", runJavaScriptCodeInCurrentTab("Notification.permission"));
+ Assert.assertEquals("\"default\"",
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab("Notification.permission"));
checkThatShowNotificationIsDenied();
// Notification.requestPermission() should show the notifications infobar.
- assertEquals(0, getInfoBars().size());
- runJavaScriptCodeInCurrentTab("Notification.requestPermission(sendToTest)");
+ Assert.assertEquals(0, mNotificationTestRule.getInfoBars().size());
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab(
+ "Notification.requestPermission(sendToTest)");
InfoBar infoBar = getInfobarBlocking();
// Accepting the infobar should pass granted to the requestPermission callback.
- assertTrue(InfoBarUtil.clickPrimaryButton(infoBar));
+ Assert.assertTrue(InfoBarUtil.clickPrimaryButton(infoBar));
waitForInfobarToClose();
waitForTitle("granted");
// Reload page to ensure the grant is persisted.
- loadUrl(getTestServer().getURL(NOTIFICATION_TEST_PAGE));
+ mNotificationTestRule.loadUrl(
+ mNotificationTestRule.getTestServer().getURL(NOTIFICATION_TEST_PAGE));
// Notifications permission should now be granted, and showing should succeed.
- assertEquals("\"granted\"", runJavaScriptCodeInCurrentTab("Notification.permission"));
- showAndGetNotification("MyNotification", "{}");
+ Assert.assertEquals("\"granted\"",
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab("Notification.permission"));
+ mNotificationTestRule.showAndGetNotification("MyNotification", "{}");
}
/**
* Verifies that the intended default properties of a notification will indeed be set on the
* Notification object that will be send to Android.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
@RetryOnFailure
public void testDefaultNotificationProperties() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Context context = getInstrumentation().getTargetContext();
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
- Notification notification = showAndGetNotification("MyNotification", "{ body: 'Hello' }");
- String expectedOrigin =
- UrlFormatter.formatUrlForSecurityDisplay(getOrigin(), false /* showScheme */);
+ Notification notification =
+ mNotificationTestRule.showAndGetNotification("MyNotification", "{ body: 'Hello' }");
+ String expectedOrigin = UrlFormatter.formatUrlForSecurityDisplay(
+ mNotificationTestRule.getOrigin(), false /* showScheme */);
// Validate the contents of the notification.
- assertEquals("MyNotification", NotificationTestUtil.getExtraTitle(notification));
- assertEquals("Hello", NotificationTestUtil.getExtraText(notification));
- assertEquals(expectedOrigin, NotificationTestUtil.getExtraSubText(notification));
+ Assert.assertEquals("MyNotification", NotificationTestUtil.getExtraTitle(notification));
+ Assert.assertEquals("Hello", NotificationTestUtil.getExtraText(notification));
+ Assert.assertEquals(expectedOrigin, NotificationTestUtil.getExtraSubText(notification));
// Verify that the ticker text contains the notification's title and body.
String tickerText = notification.tickerText.toString();
- assertTrue(tickerText.contains("MyNotification"));
- assertTrue(tickerText.contains("Hello"));
+ Assert.assertTrue(tickerText.contains("MyNotification"));
+ Assert.assertTrue(tickerText.contains("Hello"));
// On L+, verify the public version of the notification contains the notification's origin,
// and that the body text has been replaced.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- assertNotNull(notification.publicVersion);
- assertEquals(context.getString(R.string.notification_hidden_text),
+ Assert.assertNotNull(notification.publicVersion);
+ Assert.assertEquals(context.getString(R.string.notification_hidden_text),
NotificationTestUtil.getExtraText(notification.publicVersion));
}
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
// On N+, origin should be set as the subtext of the public notification.
- assertEquals(expectedOrigin,
+ Assert.assertEquals(expectedOrigin,
NotificationTestUtil.getExtraSubText(notification.publicVersion));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// On L/M, origin should be the title of the public notification.
- assertEquals(
+ Assert.assertEquals(
expectedOrigin, NotificationTestUtil.getExtraTitle(notification.publicVersion));
}
// Verify that the notification's timestamp is set in the past 60 seconds. This number has
// no significance, but needs to be high enough to not cause flakiness as it's set by the
// renderer process on notification creation.
- assertTrue(Math.abs(System.currentTimeMillis() - notification.when) < 60 * 1000);
+ Assert.assertTrue(Math.abs(System.currentTimeMillis() - notification.when) < 60 * 1000);
- assertNotNull(NotificationTestUtil.getLargeIconFromNotification(context, notification));
+ Assert.assertNotNull(
+ NotificationTestUtil.getLargeIconFromNotification(context, notification));
// Validate the notification's behavior.
- assertEquals(Notification.DEFAULT_ALL, notification.defaults);
- assertEquals(Notification.PRIORITY_DEFAULT, notification.priority);
+ Assert.assertEquals(Notification.DEFAULT_ALL, notification.defaults);
+ Assert.assertEquals(Notification.PRIORITY_DEFAULT, notification.priority);
}
/**
* Verifies that specifying a notification action with type: 'text' results in a notification
* with a remote input on the action.
*/
+ @Test
@CommandLineFlags.Add("enable-experimental-web-platform-features")
@MinAndroidSdkLevel(Build.VERSION_CODES.KITKAT_WATCH)
@TargetApi(Build.VERSION_CODES.KITKAT_WATCH) // RemoteInputs were only added in KITKAT_WATCH.
@MediumTest
@Feature({"Browser", "Notifications"})
public void testShowNotificationWithTextAction() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Notification notification = showAndGetNotification("MyNotification", "{ "
+ Notification notification = mNotificationTestRule.showAndGetNotification("MyNotification",
+ "{ "
+ " actions: [{action: 'myAction', title: 'reply', type: 'text',"
+ " placeholder: 'hi' }]}");
// The specified action should be present, as well as a default settings action.
- assertEquals(2, notification.actions.length);
+ Assert.assertEquals(2, notification.actions.length);
Notification.Action action = notification.actions[0];
- assertEquals("reply", action.title);
- assertNotNull(notification.actions[0].getRemoteInputs());
- assertEquals(1, action.getRemoteInputs().length);
- assertEquals("hi", action.getRemoteInputs()[0].getLabel());
+ Assert.assertEquals("reply", action.title);
+ Assert.assertNotNull(notification.actions[0].getRemoteInputs());
+ Assert.assertEquals(1, action.getRemoteInputs().length);
+ Assert.assertEquals("hi", action.getRemoteInputs()[0].getLabel());
}
/**
@@ -291,35 +330,37 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* notificationclick event on the service worker. Verifies that site engagement is incremented
* appropriately.
*/
+ @Test
@CommandLineFlags.Add("enable-experimental-web-platform-features")
@MinAndroidSdkLevel(Build.VERSION_CODES.KITKAT_WATCH)
@TargetApi(Build.VERSION_CODES.KITKAT_WATCH) // RemoteInputs were only added in KITKAT_WATCH.
@MediumTest
@Feature({"Browser", "Notifications"})
public void testReplyToNotification() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Context context = getInstrumentation().getTargetContext();
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
// +5 engagement from notification permission and +0.5 from navigating to the test page.
- assertEquals(5.5, getEngagementScoreBlocking());
- Notification notification = showAndGetNotification("MyNotification", "{ "
+ Assert.assertEquals(5.5, getEngagementScoreBlocking(), 0);
+ Notification notification = mNotificationTestRule.showAndGetNotification("MyNotification",
+ "{ "
+ " actions: [{action: 'myAction', title: 'reply', type: 'text'}],"
+ " data: 'ACTION_REPLY'}");
// Check the action is present with a remote input attached.
Notification.Action action = notification.actions[0];
- assertEquals("reply", action.title);
+ Assert.assertEquals("reply", action.title);
RemoteInput[] remoteInputs = action.getRemoteInputs();
- assertNotNull(remoteInputs);
+ Assert.assertNotNull(remoteInputs);
// Set a reply using the action's remote input key and send it on the intent.
- sendIntentWithRemoteInput(context, action.actionIntent, remoteInputs,
+ Helper.sendIntentWithRemoteInput(context, action.actionIntent, remoteInputs,
remoteInputs[0].getResultKey(), "My Reply" /* reply */);
// Check reply was received by the service worker (see android_test_worker.js).
// Expect +1 engagement from interacting with the notification.
waitForTitle("reply: My Reply");
- assertEquals(6.5, getEngagementScoreBlocking());
+ Assert.assertEquals(6.5, getEngagementScoreBlocking(), 0);
}
/**
@@ -328,48 +369,57 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* subsequent notificationclick event on the service worker. Verifies that site engagement is
* incremented appropriately.
*/
+ @Test
@CommandLineFlags.Add("enable-experimental-web-platform-features")
@MinAndroidSdkLevel(Build.VERSION_CODES.KITKAT_WATCH)
@TargetApi(Build.VERSION_CODES.KITKAT_WATCH) // RemoteInputs added in KITKAT_WATCH.
@MediumTest
@Feature({"Browser", "Notifications"})
public void testReplyToNotificationWithEmptyReply() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Context context = getInstrumentation().getTargetContext();
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
// +5 engagement from notification permission and +0.5 from navigating to the test page.
- assertEquals(5.5, getEngagementScoreBlocking());
- Notification notification = showAndGetNotification("MyNotification", "{ "
+ Assert.assertEquals(5.5, getEngagementScoreBlocking(), 0);
+ Notification notification = mNotificationTestRule.showAndGetNotification("MyNotification",
+ "{ "
+ " actions: [{action: 'myAction', title: 'reply', type: 'text'}],"
+ " data: 'ACTION_REPLY'}");
// Check the action is present with a remote input attached.
Notification.Action action = notification.actions[0];
- assertEquals("reply", action.title);
+ Assert.assertEquals("reply", action.title);
RemoteInput[] remoteInputs = action.getRemoteInputs();
- assertNotNull(remoteInputs);
+ Assert.assertNotNull(remoteInputs);
// Set a reply using the action's remote input key and send it on the intent.
- sendIntentWithRemoteInput(context, action.actionIntent, remoteInputs,
+ Helper.sendIntentWithRemoteInput(context, action.actionIntent, remoteInputs,
remoteInputs[0].getResultKey(), "" /* reply */);
// Check empty reply was received by the service worker (see android_test_worker.js).
// Expect +1 engagement from interacting with the notification.
waitForTitle("reply:");
- assertEquals(6.5, getEngagementScoreBlocking());
+ Assert.assertEquals(6.5, getEngagementScoreBlocking(), 0);
}
- @TargetApi(Build.VERSION_CODES.KITKAT_WATCH) // RemoteInputs added in KITKAT_WATCH.
- private static void sendIntentWithRemoteInput(Context context, PendingIntent pendingIntent,
- RemoteInput[] remoteInputs, String resultKey, String reply)
- throws PendingIntent.CanceledException {
- Bundle results = new Bundle();
- results.putString(resultKey, reply);
- Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- RemoteInput.addResultsToIntent(remoteInputs, fillInIntent, results);
-
- // Send the pending intent filled in with the additional information from the new intent.
- pendingIntent.send(context, 0 /* code */, fillInIntent);
+ //TODO(yolandyan): remove this after supporting SdkSuppress annotation
+ //Currently JUnit4 reflection would look for all test methods in a Test class, and
+ //this test uses RemoteInput as input, this would cause NoClassDefFoundError
+ //in lower than L devices
+ private static class Helper {
+ @TargetApi(Build.VERSION_CODES.KITKAT_WATCH) // RemoteInputs added in KITKAT_WATCH.
+ private static void sendIntentWithRemoteInput(Context context, PendingIntent pendingIntent,
+ RemoteInput[] remoteInputs, String resultKey, String reply)
+ throws PendingIntent.CanceledException {
+ Bundle results = new Bundle();
+ results.putString(resultKey, reply);
+ Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ RemoteInput.addResultsToIntent(remoteInputs, fillInIntent, results);
+
+ // Send the pending intent filled in with the additional information from the new
+ // intent.
+ pendingIntent.send(context, 0 /* code */, fillInIntent);
+ }
}
/**
@@ -378,60 +428,65 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* subsequent notificationclick event on the service worker. Verifies that site engagement is
* incremented appropriately.
*/
+ @Test
@TargetApi(Build.VERSION_CODES.KITKAT) // Notification.Action.actionIntent added in Android K.
@CommandLineFlags.Add("enable-experimental-web-platform-features")
@MediumTest
@Feature({"Browser", "Notifications"})
public void testReplyToNotificationWithNoRemoteInput() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
// +5 engagement from notification permission and +0.5 from navigating to the test page.
- assertEquals(5.5, getEngagementScoreBlocking());
- Notification notification = showAndGetNotification("MyNotification", "{ "
+ Assert.assertEquals(5.5, getEngagementScoreBlocking(), 0);
+ Notification notification = mNotificationTestRule.showAndGetNotification("MyNotification",
+ "{ "
+ " actions: [{action: 'myAction', title: 'reply', type: 'text'}],"
+ " data: 'ACTION_REPLY'}");
- assertEquals("reply", notification.actions[0].title);
+ Assert.assertEquals("reply", notification.actions[0].title);
notification.actions[0].actionIntent.send();
// Check reply was received by the service worker (see android_test_worker.js).
// Expect +1 engagement from interacting with the notification.
waitForTitle("reply: null");
- assertEquals(6.5, getEngagementScoreBlocking());
+ Assert.assertEquals(6.5, getEngagementScoreBlocking(), 0);
}
/**
* Verifies that the ONLY_ALERT_ONCE flag is not set when renotify is true.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
public void testNotificationRenotifyProperty() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Notification notification =
- showAndGetNotification("MyNotification", "{ tag: 'myTag', renotify: true }");
+ Notification notification = mNotificationTestRule.showAndGetNotification(
+ "MyNotification", "{ tag: 'myTag', renotify: true }");
- assertEquals(0, notification.flags & Notification.FLAG_ONLY_ALERT_ONCE);
+ Assert.assertEquals(0, notification.flags & Notification.FLAG_ONLY_ALERT_ONCE);
}
/**
* Verifies that notifications created with the "silent" flag do not inherit system defaults
* in regards to their sound, vibration and light indicators.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
public void testNotificationSilentProperty() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Notification notification = showAndGetNotification("MyNotification", "{ silent: true }");
+ Notification notification =
+ mNotificationTestRule.showAndGetNotification("MyNotification", "{ silent: true }");
// Zero indicates that no defaults should be inherited from the system.
- assertEquals(0, notification.defaults);
+ Assert.assertEquals(0, notification.defaults);
}
private void verifyVibrationNotRequestedWhenDisabledInPrefs(String notificationOptions)
throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
// Disable notification vibration in preferences.
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@@ -441,21 +496,23 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
}
});
- Notification notification = showAndGetNotification("MyNotification", notificationOptions);
+ Notification notification =
+ mNotificationTestRule.showAndGetNotification("MyNotification", notificationOptions);
// Vibration should not be in the defaults.
- assertEquals(
+ Assert.assertEquals(
Notification.DEFAULT_ALL & ~Notification.DEFAULT_VIBRATE, notification.defaults);
// There should be a custom no-op vibration pattern.
- assertEquals(1, notification.vibrate.length);
- assertEquals(0L, notification.vibrate[0]);
+ Assert.assertEquals(1, notification.vibrate.length);
+ Assert.assertEquals(0L, notification.vibrate[0]);
}
/**
* Verifies that when notification vibration is disabled in preferences and no custom pattern is
* specified, no vibration is requested from the framework.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
@RetryOnFailure
@@ -467,6 +524,7 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* Verifies that when notification vibration is disabled in preferences and a custom pattern is
* specified, no vibration is requested from the framework.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
@RetryOnFailure
@@ -478,29 +536,31 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* Verifies that by default the notification vibration preference is enabled, and a custom
* pattern is passed along.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
public void testNotificationVibrateCustomPattern() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
// By default, vibration is enabled in notifications.
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
- assertTrue(PrefServiceBridge.getInstance().isNotificationsVibrateEnabled());
+ Assert.assertTrue(PrefServiceBridge.getInstance().isNotificationsVibrateEnabled());
}
});
- Notification notification = showAndGetNotification("MyNotification", "{ vibrate: 42 }");
+ Notification notification =
+ mNotificationTestRule.showAndGetNotification("MyNotification", "{ vibrate: 42 }");
// Vibration should not be in the defaults, a custom pattern was provided.
- assertEquals(
+ Assert.assertEquals(
Notification.DEFAULT_ALL & ~Notification.DEFAULT_VIBRATE, notification.defaults);
// The custom pattern should have been passed along.
- assertEquals(2, notification.vibrate.length);
- assertEquals(0L, notification.vibrate[0]);
- assertEquals(42L, notification.vibrate[1]);
+ Assert.assertEquals(2, notification.vibrate.length);
+ Assert.assertEquals(0L, notification.vibrate[0]);
+ Assert.assertEquals(42L, notification.vibrate[1]);
}
/**
@@ -509,49 +569,50 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* If the test target is L or below, verifies the small icon (and public small icon on L) is
* the expected chrome logo.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
public void testShowNotificationWithBadge() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Notification notification =
- showAndGetNotification("MyNotification", "{badge: 'badge.png'}");
+ Notification notification = mNotificationTestRule.showAndGetNotification(
+ "MyNotification", "{badge: 'badge.png'}");
- assertEquals("MyNotification", NotificationTestUtil.getExtraTitle(notification));
+ Assert.assertEquals("MyNotification", NotificationTestUtil.getExtraTitle(notification));
- Context context = getInstrumentation().getTargetContext();
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
Bitmap smallIcon = NotificationTestUtil.getSmallIconFromNotification(context, notification);
- assertNotNull(smallIcon);
+ Assert.assertNotNull(smallIcon);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Custom badges are only supported on M+.
// 1. Check the notification badge.
- URL badgeUrl =
- new URL(getTestServer().getURL("/chrome/test/data/notifications/badge.png"));
+ URL badgeUrl = new URL(mNotificationTestRule.getTestServer().getURL(
+ "/chrome/test/data/notifications/badge.png"));
Bitmap bitmap = BitmapFactory.decodeStream(badgeUrl.openStream());
Bitmap expected = bitmap.copy(bitmap.getConfig(), true);
NotificationBuilderBase.applyWhiteOverlayToBitmap(expected);
- assertTrue(expected.sameAs(smallIcon));
+ Assert.assertTrue(expected.sameAs(smallIcon));
// 2. Check the public notification badge.
- assertNotNull(notification.publicVersion);
+ Assert.assertNotNull(notification.publicVersion);
Bitmap publicSmallIcon = NotificationTestUtil.getSmallIconFromNotification(
context, notification.publicVersion);
- assertNotNull(publicSmallIcon);
- assertEquals(expected.getWidth(), publicSmallIcon.getWidth());
- assertEquals(expected.getHeight(), publicSmallIcon.getHeight());
- assertTrue(expected.sameAs(publicSmallIcon));
+ Assert.assertNotNull(publicSmallIcon);
+ Assert.assertEquals(expected.getWidth(), publicSmallIcon.getWidth());
+ Assert.assertEquals(expected.getHeight(), publicSmallIcon.getHeight());
+ Assert.assertTrue(expected.sameAs(publicSmallIcon));
} else {
Bitmap expected =
BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_chrome);
- assertTrue(expected.sameAs(smallIcon));
+ Assert.assertTrue(expected.sameAs(smallIcon));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Public versions of notifications are only supported on L+.
- assertNotNull(notification.publicVersion);
+ Assert.assertNotNull(notification.publicVersion);
Bitmap publicSmallIcon = NotificationTestUtil.getSmallIconFromNotification(
context, notification.publicVersion);
- assertTrue(expected.sameAs(publicSmallIcon));
+ Assert.assertTrue(expected.sameAs(publicSmallIcon));
}
}
}
@@ -560,20 +621,22 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* Verifies that notifications which specify an icon will have that icon fetched, converted into
* a Bitmap and included as the large icon in the notification.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
@RetryOnFailure
public void testShowNotificationWithIcon() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Notification notification = showAndGetNotification("MyNotification", "{icon: 'red.png'}");
+ Notification notification =
+ mNotificationTestRule.showAndGetNotification("MyNotification", "{icon: 'red.png'}");
- assertEquals("MyNotification", NotificationTestUtil.getExtraTitle(notification));
+ Assert.assertEquals("MyNotification", NotificationTestUtil.getExtraTitle(notification));
- Context context = getInstrumentation().getTargetContext();
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
Bitmap largeIcon = NotificationTestUtil.getLargeIconFromNotification(context, notification);
- assertNotNull(largeIcon);
- assertEquals(Color.RED, largeIcon.getPixel(0, 0));
+ Assert.assertNotNull(largeIcon);
+ Assert.assertEquals(Color.RED, largeIcon.getPixel(0, 0));
}
/**
@@ -581,31 +644,34 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* icon based on their origin. The size of these icons are dependent on the resolution of the
* device the test is being ran on, so we create it again in order to compare.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Notifications"})
@RetryOnFailure
public void testShowNotificationWithoutIcon() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- Notification notification = showAndGetNotification("NoIconNotification", "{}");
+ Notification notification =
+ mNotificationTestRule.showAndGetNotification("NoIconNotification", "{}");
- assertEquals("NoIconNotification", NotificationTestUtil.getExtraTitle(notification));
+ Assert.assertEquals("NoIconNotification", NotificationTestUtil.getExtraTitle(notification));
- Context context = getInstrumentation().getTargetContext();
- assertNotNull(NotificationTestUtil.getLargeIconFromNotification(context, notification));
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ Assert.assertNotNull(
+ NotificationTestUtil.getLargeIconFromNotification(context, notification));
NotificationPlatformBridge notificationBridge =
NotificationPlatformBridge.getInstanceForTests();
- assertNotNull(notificationBridge);
+ Assert.assertNotNull(notificationBridge);
// Create a second rounded icon for the test's origin, and compare its dimensions against
// those of the icon associated to the notification itself.
RoundedIconGenerator generator =
NotificationBuilderBase.createIconGenerator(context.getResources());
- Bitmap generatedIcon = generator.generateIconForUrl(getOrigin());
- assertNotNull(generatedIcon);
- assertTrue(generatedIcon.sameAs(
+ Bitmap generatedIcon = generator.generateIconForUrl(mNotificationTestRule.getOrigin());
+ Assert.assertNotNull(generatedIcon);
+ Assert.assertTrue(generatedIcon.sameAs(
NotificationTestUtil.getLargeIconFromNotification(context, notification)));
}
@@ -614,26 +680,28 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* start up the associated Service Worker, where the JavaScript code will close the notification
* by calling event.notification.close().
*/
+ @Test
@LargeTest
@Feature({"Browser", "Notifications"})
@RetryOnFailure
public void testNotificationContentIntentClosesNotification() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
// +5 engagement from notification permission and +0.5 from navigating to the test page.
- assertEquals(5.5, getEngagementScoreBlocking());
+ Assert.assertEquals(5.5, getEngagementScoreBlocking(), 0);
- Notification notification = showAndGetNotification("MyNotification", "{}");
+ Notification notification =
+ mNotificationTestRule.showAndGetNotification("MyNotification", "{}");
// Sending the PendingIntent resembles activating the notification.
- assertNotNull(notification.contentIntent);
+ Assert.assertNotNull(notification.contentIntent);
notification.contentIntent.send();
// The Service Worker will close the notification upon receiving the notificationclick
// event. This will eventually bubble up to a call to cancel() in the NotificationManager.
// Expect +1 engagement from interacting with the notification.
- waitForNotificationManagerMutation();
- assertTrue(getNotificationEntries().isEmpty());
- assertEquals(6.5, getEngagementScoreBlocking());
+ mNotificationTestRule.waitForNotificationManagerMutation();
+ Assert.assertTrue(mNotificationTestRule.getNotificationEntries().isEmpty());
+ Assert.assertEquals(6.5, getEngagementScoreBlocking(), 0);
}
/**
@@ -641,31 +709,33 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* start up the associated Service Worker, where the JavaScript code will create a new tab for
* displaying the notification's event to the user.
*/
+ @Test
@LargeTest
@Feature({"Browser", "Notifications"})
@RetryOnFailure
public void testNotificationContentIntentCreatesTab() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
- assertEquals("Expected the notification test page to be the sole tab in the current model",
- 1, getActivity().getCurrentTabModel().getCount());
+ Assert.assertEquals(
+ "Expected the notification test page to be the sole tab in the current model", 1,
+ mNotificationTestRule.getActivity().getCurrentTabModel().getCount());
- Notification notification =
- showAndGetNotification("MyNotification", "{ data: 'ACTION_CREATE_TAB' }");
+ Notification notification = mNotificationTestRule.showAndGetNotification(
+ "MyNotification", "{ data: 'ACTION_CREATE_TAB' }");
// Sending the PendingIntent resembles activating the notification.
- assertNotNull(notification.contentIntent);
+ Assert.assertNotNull(notification.contentIntent);
notification.contentIntent.send();
// The Service Worker, upon receiving the notificationclick event, will create a new tab
// after which it closes the notification.
- waitForNotificationManagerMutation();
- assertTrue(getNotificationEntries().isEmpty());
+ mNotificationTestRule.waitForNotificationManagerMutation();
+ Assert.assertTrue(mNotificationTestRule.getNotificationEntries().isEmpty());
CriteriaHelper.pollInstrumentationThread(new Criteria("Expected a new tab to be created") {
@Override
public boolean isSatisfied() {
- return 2 == getActivity().getCurrentTabModel().getCount();
+ return 2 == mNotificationTestRule.getActivity().getCurrentTabModel().getCount();
}
});
}
@@ -674,99 +744,104 @@ public class NotificationPlatformBridgeTest extends NotificationTestBase {
* Verifies that creating a notification with an associated "tag" will cause any previous
* notification with the same tag to be dismissed prior to being shown.
*/
+ @Test
@SuppressFBWarnings("DLS_DEAD_LOCAL_STORE")
@MediumTest
@Feature({"Browser", "Notifications"})
public void testNotificationTagReplacement() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
// +5 engagement from notification permission and +0.5 from navigating to the test page.
- assertEquals(5.5, getEngagementScoreBlocking());
+ Assert.assertEquals(5.5, getEngagementScoreBlocking(), 0);
- runJavaScriptCodeInCurrentTab("showNotification('MyNotification', {tag: 'myTag'});");
- waitForNotificationManagerMutation();
- List<NotificationEntry> notifications = getNotificationEntries();
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab(
+ "showNotification('MyNotification', {tag: 'myTag'});");
+ mNotificationTestRule.waitForNotificationManagerMutation();
+ List<NotificationEntry> notifications = mNotificationTestRule.getNotificationEntries();
String tag = notifications.get(0).tag;
int id = notifications.get(0).id;
- runJavaScriptCodeInCurrentTab("showNotification('SecondNotification', {tag: 'myTag'});");
- waitForNotificationManagerMutation();
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab(
+ "showNotification('SecondNotification', {tag: 'myTag'});");
+ mNotificationTestRule.waitForNotificationManagerMutation();
// Verify that the notification was successfully replaced.
- notifications = getNotificationEntries();
- assertEquals(1, notifications.size());
- assertEquals("SecondNotification",
+ notifications = mNotificationTestRule.getNotificationEntries();
+ Assert.assertEquals(1, notifications.size());
+ Assert.assertEquals("SecondNotification",
NotificationTestUtil.getExtraTitle(notifications.get(0).notification));
// Verify that for replaced notifications their tag was the same.
- assertEquals(tag, notifications.get(0).tag);
+ Assert.assertEquals(tag, notifications.get(0).tag);
// Verify that as always, the same integer is used, also for replaced notifications.
- assertEquals(id, notifications.get(0).id);
- assertEquals(NotificationPlatformBridge.PLATFORM_ID, notifications.get(0).id);
+ Assert.assertEquals(id, notifications.get(0).id);
+ Assert.assertEquals(NotificationPlatformBridge.PLATFORM_ID, notifications.get(0).id);
// Engagement should not have changed since we didn't interact.
- assertEquals(5.5, getEngagementScoreBlocking());
+ Assert.assertEquals(5.5, getEngagementScoreBlocking(), 0);
}
/**
* Verifies that multiple notifications without a tag can be opened and closed without
* affecting eachother.
*/
+ @Test
@LargeTest
@Feature({"Browser", "Notifications"})
public void testShowAndCloseMultipleNotifications() throws Exception {
- setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
+ mNotificationTestRule.setNotificationContentSettingForCurrentOrigin(ContentSetting.ALLOW);
// +5 engagement from notification permission and +0.5 from navigating to the test page.
- assertEquals(5.5, getEngagementScoreBlocking());
+ Assert.assertEquals(5.5, getEngagementScoreBlocking(), 0);
// Open the first notification and verify it is displayed.
- runJavaScriptCodeInCurrentTab("showNotification('One');");
- waitForNotificationManagerMutation();
- List<NotificationEntry> notifications = getNotificationEntries();
- assertEquals(1, notifications.size());
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab("showNotification('One');");
+ mNotificationTestRule.waitForNotificationManagerMutation();
+ List<NotificationEntry> notifications = mNotificationTestRule.getNotificationEntries();
+ Assert.assertEquals(1, notifications.size());
Notification notificationOne = notifications.get(0).notification;
- assertEquals("One", NotificationTestUtil.getExtraTitle(notificationOne));
+ Assert.assertEquals("One", NotificationTestUtil.getExtraTitle(notificationOne));
// Open the second notification and verify it is displayed.
- runJavaScriptCodeInCurrentTab("showNotification('Two');");
- waitForNotificationManagerMutation();
- notifications = getNotificationEntries();
- assertEquals(2, notifications.size());
+ mNotificationTestRule.runJavaScriptCodeInCurrentTab("showNotification('Two');");
+ mNotificationTestRule.waitForNotificationManagerMutation();
+ notifications = mNotificationTestRule.getNotificationEntries();
+ Assert.assertEquals(2, notifications.size());
Notification notificationTwo = notifications.get(1).notification;
- assertEquals("Two", NotificationTestUtil.getExtraTitle(notificationTwo));
+ Assert.assertEquals("Two", NotificationTestUtil.getExtraTitle(notificationTwo));
// The same integer id is always used as it is not needed for uniqueness, we rely on the tag
// for uniqueness when the replacement behavior is not needed.
- assertEquals(NotificationPlatformBridge.PLATFORM_ID, notifications.get(0).id);
- assertEquals(NotificationPlatformBridge.PLATFORM_ID, notifications.get(1).id);
+ Assert.assertEquals(NotificationPlatformBridge.PLATFORM_ID, notifications.get(0).id);
+ Assert.assertEquals(NotificationPlatformBridge.PLATFORM_ID, notifications.get(1).id);
// As these notifications were not meant to replace eachother, they must not have the same
// tag internally.
- assertFalse(notifications.get(0).tag.equals(notifications.get(1).tag));
+ Assert.assertFalse(notifications.get(0).tag.equals(notifications.get(1).tag));
// Verify that the PendingIntent for content and delete is different for each notification.
- assertFalse(notificationOne.contentIntent.equals(notificationTwo.contentIntent));
- assertFalse(notificationOne.deleteIntent.equals(notificationTwo.deleteIntent));
+ Assert.assertFalse(notificationOne.contentIntent.equals(notificationTwo.contentIntent));
+ Assert.assertFalse(notificationOne.deleteIntent.equals(notificationTwo.deleteIntent));
// Close the first notification and verify that only the second remains.
// Sending the content intent resembles touching the notification. In response tho this the
// notificationclick event is fired. The test service worker will close the notification
// upon receiving the event.
notificationOne.contentIntent.send();
- waitForNotificationManagerMutation();
- notifications = getNotificationEntries();
- assertEquals(1, notifications.size());
- assertEquals("Two", NotificationTestUtil.getExtraTitle(notifications.get(0).notification));
+ mNotificationTestRule.waitForNotificationManagerMutation();
+ notifications = mNotificationTestRule.getNotificationEntries();
+ Assert.assertEquals(1, notifications.size());
+ Assert.assertEquals(
+ "Two", NotificationTestUtil.getExtraTitle(notifications.get(0).notification));
// Expect +1 engagement from interacting with the notification.
- assertEquals(6.5, getEngagementScoreBlocking());
+ Assert.assertEquals(6.5, getEngagementScoreBlocking(), 0);
// Close the last notification and verify that none remain.
notifications.get(0).notification.contentIntent.send();
- waitForNotificationManagerMutation();
- assertTrue(getNotificationEntries().isEmpty());
+ mNotificationTestRule.waitForNotificationManagerMutation();
+ Assert.assertTrue(mNotificationTestRule.getNotificationEntries().isEmpty());
// Expect +1 engagement from interacting with the notification.
- assertEquals(7.5, getEngagementScoreBlocking());
+ Assert.assertEquals(7.5, getEngagementScoreBlocking(), 0);
}
}

Powered by Google App Engine
This is Rietveld 408576698