| Index: chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProviderTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProviderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProviderTest.java
|
| index 4f7f6a64d623fd0a90cebc6e614ada11031f69d0..1f74618c31dd97a123da7b730c5e83d0b40808d7 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProviderTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProviderTest.java
|
| @@ -9,6 +9,7 @@ import android.app.Instrumentation;
|
| import android.app.Instrumentation.ActivityMonitor;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| +import android.content.SharedPreferences;
|
| import android.support.test.InstrumentationRegistry;
|
| import android.support.test.filters.SmallTest;
|
| import android.util.Pair;
|
| @@ -185,4 +186,34 @@ public class SearchWidgetProviderTest {
|
| intent, SearchWidgetProvider.EXTRA_START_VOICE_SEARCH, false);
|
| Assert.assertEquals(clickTarget == R.id.microphone_icon, microphoneState);
|
| }
|
| +
|
| + @Test
|
| + @SmallTest
|
| + public void testCrashAbsorption() {
|
| + Runnable crashingRunnable = new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + throw new RuntimeException();
|
| + }
|
| + };
|
| +
|
| + SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
| + Assert.assertEquals(0, SearchWidgetProvider.getNumConsecutiveCrashes(prefs));
|
| +
|
| + // The first few crashes should be silently absorbed.
|
| + SearchWidgetProvider.run(crashingRunnable);
|
| + Assert.assertEquals(1, SearchWidgetProvider.getNumConsecutiveCrashes(prefs));
|
| + SearchWidgetProvider.run(crashingRunnable);
|
| + Assert.assertEquals(2, SearchWidgetProvider.getNumConsecutiveCrashes(prefs));
|
| +
|
| + // The crash should be thrown after hitting the crash limit, which is 3.
|
| + boolean exceptionWasThrown = false;
|
| + try {
|
| + SearchWidgetProvider.run(crashingRunnable);
|
| + } catch (Exception e) {
|
| + exceptionWasThrown = true;
|
| + }
|
| + Assert.assertEquals(3, SearchWidgetProvider.getNumConsecutiveCrashes(prefs));
|
| + Assert.assertTrue(exceptionWasThrown);
|
| + }
|
| }
|
|
|