Chromium Code Reviews| Index: chrome/browser/extensions/api/management/management_api_browsertest.cc |
| diff --git a/chrome/browser/extensions/api/management/management_api_browsertest.cc b/chrome/browser/extensions/api/management/management_api_browsertest.cc |
| index 6fe71a03c4fb957c6d73e5ba509b6ab5dcec0c1c..ab9c03373383cfccdfc24da6e1ce44a0d0fd7757 100644 |
| --- a/chrome/browser/extensions/api/management/management_api_browsertest.cc |
| +++ b/chrome/browser/extensions/api/management/management_api_browsertest.cc |
| @@ -11,6 +11,7 @@ |
| #include "chrome/browser/extensions/api/management/management_api_constants.h" |
| #include "chrome/browser/extensions/extension_browsertest.h" |
| #include "chrome/browser/extensions/extension_function_test_utils.h" |
| +#include "chrome/browser/extensions/extension_host.h" |
| #include "chrome/browser/extensions/extension_install_dialog.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/extensions/extension_test_message_listener.h" |
| @@ -18,6 +19,10 @@ |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/common/chrome_notification_types.h" |
| #include "chrome/common/chrome_switches.h" |
| +#include "chrome/common/extensions/extension.h" |
| +#include "content/public/browser/render_process_host.h" |
| +#include "content/public/browser/render_view_host.h" |
| +#include "content/public/common/result_codes.h" |
| namespace keys = extension_management_api_constants; |
| namespace util = extension_function_test_utils; |
| @@ -161,6 +166,22 @@ class ExtensionManagementApiEscalationTest : public ExtensionBrowserTest { |
| } |
| } |
| + bool CrashEnabledExtension(const std::string& extension_id) { |
| + const extensions::Extension* extension = browser()->profile()-> |
| + GetExtensionService()->GetExtensionById(extension_id, false); |
| + if (!extension) |
| + return false; |
| + extensions::ExtensionHost* extension_host = browser()->profile()-> |
| + GetExtensionProcessManager()->GetBackgroundHostForExtension( |
| + extension_id); |
| + if (!extension_host) |
| + return false; |
| + base::KillProcess( |
| + extension_host->render_view_host()->GetProcess()->GetHandle(), |
| + content::RESULT_CODE_KILLED, false); |
| + return WaitForExtensionCrash(extension_id); |
| + } |
| + |
| private: |
| ScopedTempDir scoped_temp_dir_; |
| }; |
| @@ -199,4 +220,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementApiEscalationTest, |
| CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| switches::kAppsGalleryInstallAutoConfirmForTests, "accept"); |
| ReEnable(true, ""); |
| + |
| + // Crash the extension and confirm re-enabling works. |
| + ASSERT_TRUE(CrashEnabledExtension(kId)); |
| + ReEnable(true, ""); |
|
asargent_no_longer_on_chrome
2012/08/10 20:26:21
can you also add a test here that calls SetEnabled
mitchellwrosen
2012/08/10 23:15:27
Ya. The expected behavior is that the extension is
|
| } |