Index: chrome/browser/extensions/extension_browsertests_misc.cc |
=================================================================== |
--- chrome/browser/extensions/extension_browsertests_misc.cc (revision 47523) |
+++ chrome/browser/extensions/extension_browsertests_misc.cc (working copy) |
@@ -274,6 +274,37 @@ |
ASSERT_TRUE(WaitForPageActionCountChangeTo(0)); |
} |
+// Tests that we can load page actions in the Omnibox. |
+IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionRefreshCrash) { |
+ ExtensionsService* service = browser()->profile()->GetExtensionsService(); |
+ |
+ size_t size_before = service->extensions()->size(); |
+ |
+ FilePath base_path = test_data_dir_.AppendASCII("browsertest") |
+ .AppendASCII("crash_44415"); |
+ // Load extension A. |
+ ASSERT_TRUE(LoadExtension(base_path.AppendASCII("ExtA"))); |
+ ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ Extension* extensionA = service->extensions()->at(size_before); |
+ |
+ // Load extension B. |
+ ASSERT_TRUE(LoadExtension(base_path.AppendASCII("ExtB"))); |
+ ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(2)); |
+ ASSERT_EQ(size_before + 2, service->extensions()->size()); |
+ Extension* extensionB = service->extensions()->at(size_before + 1); |
+ |
+ ReloadExtension(extensionA->id()); |
+ // ExtensionA has changed, so refetch it. |
+ ASSERT_EQ(size_before + 2, service->extensions()->size()); |
+ extensionA = service->extensions()->at(size_before + 1); |
+ |
+ ReloadExtension(extensionB->id()); |
+ |
+ // This is where it would crash, before http://crbug.com/44415 was fixed. |
+ ReloadExtension(extensionA->id()); |
+} |
+ |
// Makes sure that the RSS detects RSS feed links, even when rel tag contains |
// more than just "alternate". |
IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, RSSMultiRelLink) { |