| Index: chrome/browser/extensions/extension_crash_recovery_browsertest.cc
|
| diff --git a/chrome/browser/extensions/extension_crash_recovery_browsertest.cc b/chrome/browser/extensions/extension_crash_recovery_browsertest.cc
|
| index bca31e4c01085be964ad7e85c4fd59a932d8de7c..88efba238df005b385f8002dbceb508d1a759efd 100644
|
| --- a/chrome/browser/extensions/extension_crash_recovery_browsertest.cc
|
| +++ b/chrome/browser/extensions/extension_crash_recovery_browsertest.cc
|
| @@ -62,12 +62,10 @@ class ExtensionCrashRecoveryTest : public ExtensionBrowserTest {
|
| return balloons.size();
|
| }
|
|
|
| - void CrashExtension(size_t index) {
|
| - ASSERT_LT(index, GetExtensionService()->extensions()->size());
|
| + void CrashExtension(std::string extension_id) {
|
| const Extension* extension =
|
| - GetExtensionService()->extensions()->at(index);
|
| + GetExtensionService()->extensions()->GetByID(extension_id);
|
| ASSERT_TRUE(extension);
|
| - std::string extension_id(extension->id());
|
| ExtensionHost* extension_host = GetExtensionProcessManager()->
|
| GetBackgroundHostForExtension(extension_id);
|
| ASSERT_TRUE(extension_host);
|
| @@ -81,43 +79,36 @@ class ExtensionCrashRecoveryTest : public ExtensionBrowserTest {
|
| GetBackgroundHostForExtension(extension_id));
|
| }
|
|
|
| - void CheckExtensionConsistency(size_t index) {
|
| - ASSERT_LT(index, GetExtensionService()->extensions()->size());
|
| + void CheckExtensionConsistency(std::string extension_id) {
|
| const Extension* extension =
|
| - GetExtensionService()->extensions()->at(index);
|
| + GetExtensionService()->extensions()->GetByID(extension_id);
|
| ASSERT_TRUE(extension);
|
| ExtensionHost* extension_host = GetExtensionProcessManager()->
|
| - GetBackgroundHostForExtension(extension->id());
|
| + GetBackgroundHostForExtension(extension_id);
|
| ASSERT_TRUE(extension_host);
|
| ASSERT_TRUE(GetExtensionProcessManager()->HasExtensionHost(extension_host));
|
| ASSERT_TRUE(extension_host->IsRenderViewLive());
|
| extensions::ProcessMap* process_map =
|
| browser()->profile()->GetExtensionService()->process_map();
|
| ASSERT_TRUE(process_map->Contains(
|
| - extension->id(), extension_host->render_view_host()->process()->
|
| - GetID()));
|
| + extension_id, extension_host->render_view_host()->process()->GetID()));
|
| }
|
|
|
| void LoadTestExtension() {
|
| ExtensionBrowserTest::SetUpInProcessBrowserTestFixture();
|
| - const size_t size_before = GetExtensionService()->extensions()->size();
|
| - ASSERT_TRUE(LoadExtension(
|
| - test_data_dir_.AppendASCII("common").AppendASCII("background_page")));
|
| - const Extension* extension = GetExtensionService()->extensions()->back();
|
| + const Extension* extension = LoadExtension(
|
| + test_data_dir_.AppendASCII("common").AppendASCII("background_page"));
|
| ASSERT_TRUE(extension);
|
| first_extension_id_ = extension->id();
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| }
|
|
|
| void LoadSecondExtension() {
|
| - int offset = GetExtensionService()->extensions()->size();
|
| - ASSERT_TRUE(LoadExtension(
|
| - test_data_dir_.AppendASCII("install").AppendASCII("install")));
|
| - const Extension* extension =
|
| - GetExtensionService()->extensions()->at(offset);
|
| + const Extension* extension = LoadExtension(
|
| + test_data_dir_.AppendASCII("install").AppendASCII("install"));
|
| ASSERT_TRUE(extension);
|
| second_extension_id_ = extension->id();
|
| - CheckExtensionConsistency(offset);
|
| + CheckExtensionConsistency(second_extension_id_);
|
| }
|
|
|
| std::string first_extension_id_;
|
| @@ -129,14 +120,14 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, Basic) {
|
| const size_t crash_size_before =
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| GetExtensionService()->terminated_extensions()->size());
|
| AcceptNotification(0);
|
|
|
| SCOPED_TRACE("after clicking the balloon");
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| ASSERT_EQ(crash_size_before,
|
| GetExtensionService()->terminated_extensions()->size());
|
| }
|
| @@ -146,7 +137,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, CloseAndReload) {
|
| const size_t crash_size_before =
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
|
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| @@ -156,7 +147,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, CloseAndReload) {
|
| ReloadExtension(first_extension_id_);
|
|
|
| SCOPED_TRACE("after reloading");
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| ASSERT_EQ(crash_size_before,
|
| GetExtensionService()->terminated_extensions()->size());
|
| }
|
| @@ -164,13 +155,13 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, CloseAndReload) {
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, ReloadIndependently) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| ReloadExtension(first_extension_id_);
|
|
|
| SCOPED_TRACE("after reloading");
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
|
|
| TabContents* current_tab = browser()->GetSelectedTabContents();
|
| ASSERT_TRUE(current_tab);
|
| @@ -184,7 +175,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| ReloadIndependentlyChangeTabs) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| TabContents* original_tab = browser()->GetSelectedTabContents();
|
| @@ -201,7 +192,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| ReloadExtension(first_extension_id_);
|
|
|
| SCOPED_TRACE("after reloading");
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
|
|
| // The balloon should automatically hide after the extension is successfully
|
| // reloaded.
|
| @@ -212,7 +203,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| ReloadIndependentlyNavigatePage) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| TabContents* current_tab = browser()->GetSelectedTabContents();
|
| @@ -228,7 +219,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| ReloadExtension(first_extension_id_);
|
|
|
| SCOPED_TRACE("after reloading");
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
|
|
| // The balloon should automatically hide after the extension is successfully
|
| // reloaded.
|
| @@ -249,7 +240,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, MAYBE_ShutdownWhileCrashed) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| }
|
|
|
| @@ -257,26 +248,26 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, TwoExtensionsCrashFirst) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| AcceptNotification(0);
|
|
|
| SCOPED_TRACE("after clicking the balloon");
|
| - CheckExtensionConsistency(size_before);
|
| - CheckExtensionConsistency(size_before + 1);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(second_extension_id_);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, TwoExtensionsCrashSecond) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(size_before + 1);
|
| + CrashExtension(second_extension_id_);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| AcceptNotification(0);
|
|
|
| SCOPED_TRACE("after clicking the balloon");
|
| - CheckExtensionConsistency(size_before);
|
| - CheckExtensionConsistency(size_before + 1);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(second_extension_id_);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| @@ -286,11 +277,11 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| GetExtensionService()->terminated_extensions()->size());
|
| - CrashExtension(size_before);
|
| + CrashExtension(second_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 2,
|
| GetExtensionService()->terminated_extensions()->size());
|
| @@ -298,37 +289,37 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| {
|
| SCOPED_TRACE("first balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| }
|
|
|
| {
|
| SCOPED_TRACE("second balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(size_before);
|
| - CheckExtensionConsistency(size_before + 1);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(second_extension_id_);
|
| }
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, TwoExtensionsOneByOne) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| LoadSecondExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(second_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| {
|
| SCOPED_TRACE("first balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| }
|
|
|
| {
|
| SCOPED_TRACE("second balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(size_before);
|
| - CheckExtensionConsistency(size_before + 1);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(second_extension_id_);
|
| }
|
| }
|
|
|
| @@ -348,10 +339,10 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| MAYBE_TwoExtensionsShutdownWhileCrashed) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| LoadSecondExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(second_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| }
|
|
|
| @@ -366,9 +357,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| - CrashExtension(size_before);
|
| + CrashExtension(second_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| CancelNotification(0);
|
| @@ -378,7 +369,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
|
|
| SCOPED_TRACE("balloons done");
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(second_extension_id_);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| @@ -386,9 +377,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| - CrashExtension(size_before);
|
| + CrashExtension(second_extension_id_);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| {
|
| @@ -400,14 +391,14 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| ReloadExtension(first_extension_id_);
|
| // One of the balloons should hide after the extension is reloaded.
|
| ASSERT_EQ(1U, CountBalloons());
|
| - CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| }
|
|
|
| {
|
| SCOPED_TRACE("second: balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(size_before);
|
| - CheckExtensionConsistency(size_before + 1);
|
| + CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(second_extension_id_);
|
| }
|
| }
|
|
|
| @@ -417,7 +408,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, CrashAndUninstall) {
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| GetExtensionService()->terminated_extensions()->size());
|
| @@ -446,7 +437,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, MAYBE_CrashAndUnloadAll) {
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| GetExtensionService()->terminated_extensions()->size());
|
| @@ -474,7 +465,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| GURL("chrome-extension://" + first_extension_id_ + "/background.html"));
|
|
|
| const int tabs_before = tab_strip->count();
|
| - CrashExtension(size_before);
|
| + CrashExtension(first_extension_id_);
|
|
|
| // Tab should still be open, and extension should be crashed.
|
| EXPECT_EQ(tabs_before, tab_strip->count());
|
| @@ -491,6 +482,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| observer.Wait();
|
| }
|
| // Extension should now be loaded.
|
| + SCOPED_TRACE("after reloading the tab");
|
| + CheckExtensionConsistency(first_extension_id_);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(0U, CountBalloons());
|
| }
|
|
|