| Index: chrome/browser/extensions/extension_crash_recovery_browsertest.cc
|
| ===================================================================
|
| --- chrome/browser/extensions/extension_crash_recovery_browsertest.cc (revision 113069)
|
| +++ chrome/browser/extensions/extension_crash_recovery_browsertest.cc (working copy)
|
| @@ -62,10 +62,12 @@
|
| return balloons.size();
|
| }
|
|
|
| - void CrashExtension(std::string extension_id) {
|
| + void CrashExtension(size_t index) {
|
| + ASSERT_LT(index, GetExtensionService()->extensions()->size());
|
| const Extension* extension =
|
| - GetExtensionService()->extensions()->GetByID(extension_id);
|
| + GetExtensionService()->extensions()->at(index);
|
| ASSERT_TRUE(extension);
|
| + std::string extension_id(extension->id());
|
| ExtensionHost* extension_host = GetExtensionProcessManager()->
|
| GetBackgroundHostForExtension(extension_id);
|
| ASSERT_TRUE(extension_host);
|
| @@ -79,36 +81,43 @@
|
| GetBackgroundHostForExtension(extension_id));
|
| }
|
|
|
| - void CheckExtensionConsistency(std::string extension_id) {
|
| + void CheckExtensionConsistency(size_t index) {
|
| + ASSERT_LT(index, GetExtensionService()->extensions()->size());
|
| const Extension* extension =
|
| - GetExtensionService()->extensions()->GetByID(extension_id);
|
| + GetExtensionService()->extensions()->at(index);
|
| 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 Extension* extension = LoadExtension(
|
| - test_data_dir_.AppendASCII("common").AppendASCII("background_page"));
|
| + 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();
|
| ASSERT_TRUE(extension);
|
| first_extension_id_ = extension->id();
|
| - CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| }
|
|
|
| void LoadSecondExtension() {
|
| - const Extension* extension = LoadExtension(
|
| - test_data_dir_.AppendASCII("install").AppendASCII("install"));
|
| + int offset = GetExtensionService()->extensions()->size();
|
| + ASSERT_TRUE(LoadExtension(
|
| + test_data_dir_.AppendASCII("install").AppendASCII("install")));
|
| + const Extension* extension =
|
| + GetExtensionService()->extensions()->at(offset);
|
| ASSERT_TRUE(extension);
|
| second_extension_id_ = extension->id();
|
| - CheckExtensionConsistency(second_extension_id_);
|
| + CheckExtensionConsistency(offset);
|
| }
|
|
|
| std::string first_extension_id_;
|
| @@ -120,14 +129,14 @@
|
| const size_t crash_size_before =
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| 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(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| ASSERT_EQ(crash_size_before,
|
| GetExtensionService()->terminated_extensions()->size());
|
| }
|
| @@ -137,7 +146,7 @@
|
| const size_t crash_size_before =
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
|
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| @@ -147,7 +156,7 @@
|
| ReloadExtension(first_extension_id_);
|
|
|
| SCOPED_TRACE("after reloading");
|
| - CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| ASSERT_EQ(crash_size_before,
|
| GetExtensionService()->terminated_extensions()->size());
|
| }
|
| @@ -155,13 +164,13 @@
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, ReloadIndependently) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| ReloadExtension(first_extension_id_);
|
|
|
| SCOPED_TRACE("after reloading");
|
| - CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
|
|
| TabContents* current_tab = browser()->GetSelectedTabContents();
|
| ASSERT_TRUE(current_tab);
|
| @@ -175,7 +184,7 @@
|
| ReloadIndependentlyChangeTabs) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| TabContents* original_tab = browser()->GetSelectedTabContents();
|
| @@ -192,7 +201,7 @@
|
| ReloadExtension(first_extension_id_);
|
|
|
| SCOPED_TRACE("after reloading");
|
| - CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
|
|
| // The balloon should automatically hide after the extension is successfully
|
| // reloaded.
|
| @@ -203,7 +212,7 @@
|
| ReloadIndependentlyNavigatePage) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| TabContents* current_tab = browser()->GetSelectedTabContents();
|
| @@ -219,7 +228,7 @@
|
| ReloadExtension(first_extension_id_);
|
|
|
| SCOPED_TRACE("after reloading");
|
| - CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
|
|
| // The balloon should automatically hide after the extension is successfully
|
| // reloaded.
|
| @@ -240,7 +249,7 @@
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, MAYBE_ShutdownWhileCrashed) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| }
|
|
|
| @@ -248,26 +257,26 @@
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| AcceptNotification(0);
|
|
|
| SCOPED_TRACE("after clicking the balloon");
|
| - CheckExtensionConsistency(first_extension_id_);
|
| - CheckExtensionConsistency(second_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(size_before + 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, TwoExtensionsCrashSecond) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(second_extension_id_);
|
| + CrashExtension(size_before + 1);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| AcceptNotification(0);
|
|
|
| SCOPED_TRACE("after clicking the balloon");
|
| - CheckExtensionConsistency(first_extension_id_);
|
| - CheckExtensionConsistency(second_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(size_before + 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| @@ -277,11 +286,11 @@
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| GetExtensionService()->terminated_extensions()->size());
|
| - CrashExtension(second_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 2,
|
| GetExtensionService()->terminated_extensions()->size());
|
| @@ -289,37 +298,37 @@
|
| {
|
| SCOPED_TRACE("first balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| }
|
|
|
| {
|
| SCOPED_TRACE("second balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(first_extension_id_);
|
| - CheckExtensionConsistency(second_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(size_before + 1);
|
| }
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest, TwoExtensionsOneByOne) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| LoadSecondExtension();
|
| - CrashExtension(second_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| {
|
| SCOPED_TRACE("first balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| }
|
|
|
| {
|
| SCOPED_TRACE("second balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(first_extension_id_);
|
| - CheckExtensionConsistency(second_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(size_before + 1);
|
| }
|
| }
|
|
|
| @@ -339,10 +348,10 @@
|
| MAYBE_TwoExtensionsShutdownWhileCrashed) {
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| LoadSecondExtension();
|
| - CrashExtension(second_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
| }
|
|
|
| @@ -351,9 +360,9 @@
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| - CrashExtension(second_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| // Accept notification 1 before canceling notification 0.
|
| @@ -364,7 +373,9 @@
|
|
|
| SCOPED_TRACE("balloons done");
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| - CheckExtensionConsistency(second_extension_id_);
|
| + EXPECT_EQ(second_extension_id_,
|
| + GetExtensionService()->extensions()->at(size_before)->id());
|
| + CheckExtensionConsistency(size_before);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
|
| @@ -372,9 +383,9 @@
|
| const size_t size_before = GetExtensionService()->extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| - CrashExtension(second_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before, GetExtensionService()->extensions()->size());
|
|
|
| {
|
| @@ -386,14 +397,14 @@
|
| ReloadExtension(first_extension_id_);
|
| // One of the balloons should hide after the extension is reloaded.
|
| ASSERT_EQ(1U, CountBalloons());
|
| - CheckExtensionConsistency(first_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| }
|
|
|
| {
|
| SCOPED_TRACE("second: balloon");
|
| AcceptNotification(0);
|
| - CheckExtensionConsistency(first_extension_id_);
|
| - CheckExtensionConsistency(second_extension_id_);
|
| + CheckExtensionConsistency(size_before);
|
| + CheckExtensionConsistency(size_before + 1);
|
| }
|
| }
|
|
|
| @@ -403,7 +414,7 @@
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| GetExtensionService()->terminated_extensions()->size());
|
| @@ -432,7 +443,7 @@
|
| GetExtensionService()->terminated_extensions()->size();
|
| LoadTestExtension();
|
| LoadSecondExtension();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
| ASSERT_EQ(size_before + 1, GetExtensionService()->extensions()->size());
|
| ASSERT_EQ(crash_size_before + 1,
|
| GetExtensionService()->terminated_extensions()->size());
|
| @@ -460,7 +471,7 @@
|
| GURL("chrome-extension://" + first_extension_id_ + "/background.html"));
|
|
|
| const int tabs_before = tab_strip->count();
|
| - CrashExtension(first_extension_id_);
|
| + CrashExtension(size_before);
|
|
|
| // Tab should still be open, and extension should be crashed.
|
| EXPECT_EQ(tabs_before, tab_strip->count());
|
| @@ -477,8 +488,6 @@
|
| 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());
|
| }
|
|
|
| Property changes on: chrome/browser/extensions/extension_crash_recovery_browsertest.cc
|
| ___________________________________________________________________
|
| Added: svn:mergeinfo
|
|
|
|
|