Index: chrome/android/javatests/src/org/chromium/chrome/browser/TabTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/TabTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/TabTest.java |
index 512c639a4bf94d146ad0592542d5ad94bbe53589..22e8b3c2c09d9bf15de27d427c49b1335cb30468 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/TabTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/TabTest.java |
@@ -6,7 +6,9 @@ package org.chromium.chrome.browser; |
import android.test.suitebuilder.annotation.SmallTest; |
+import org.chromium.base.ThreadUtils; |
import org.chromium.base.test.util.Feature; |
+import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType; |
import org.chromium.chrome.shell.ChromeShellTestBase; |
import org.chromium.content.browser.test.util.CallbackHelper; |
@@ -48,4 +50,51 @@ public class TabTest extends ChromeShellTestBase { |
mOnTitleUpdatedHelper.waitForCallback(currentCallCount); |
assertEquals("title does not update", newTitle, mTab.getTitle()); |
} |
+ |
+ @SmallTest |
+ @Feature({"Tab"}) |
+ public void testTabRestoredIfKilledWhileActivityStopped() { |
+ launchChromeShellWithBlankPage(); |
+ final Tab tab = getActivity().getActiveTab(); |
+ |
+ // Ensure the tab is showing before stopping the activity. |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ tab.show(TabSelectionType.FROM_NEW); |
+ } |
+ }); |
+ |
+ assertFalse(tab.needsReload()); |
+ assertFalse(tab.isHidden()); |
+ assertFalse(tab.isShowingSadTab()); |
+ |
+ // Stop the activity and simulate a killed renderer. |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ getInstrumentation().callActivityOnPause(getActivity()); |
+ getInstrumentation().callActivityOnStop(getActivity()); |
+ tab.simulateRendererKilledForTesting(false); |
+ } |
+ }); |
+ |
+ assertTrue(tab.needsReload()); |
+ assertFalse(tab.isHidden()); |
+ assertFalse(tab.isShowingSadTab()); |
+ |
+ // Resume the activity. |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ getInstrumentation().callActivityOnStart(getActivity()); |
+ getInstrumentation().callActivityOnResume(getActivity()); |
+ } |
+ }); |
+ |
+ // The tab should be restored and visible. |
+ assertFalse(tab.isHidden()); |
+ assertFalse(tab.needsReload()); |
+ assertFalse(tab.isShowingSadTab()); |
+ } |
} |