Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Unified Diff: chrome/browser/extensions/api/management/management_api_browsertest.cc

Issue 10832237: Allow chrome.management.setEnabled() to re-enable crashed extensions. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
}

Powered by Google App Engine
This is Rietveld 408576698