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

Unified Diff: chrome/browser/extensions/extension_install_dialog.cc

Issue 8488012: Fix for management API related to escalated permissions disabled extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased again Created 9 years, 1 month 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/extension_install_dialog.cc
diff --git a/chrome/browser/extensions/extension_install_dialog.cc b/chrome/browser/extensions/extension_install_dialog.cc
index 150200d462a21b2ed529af21a3502cbc6e14b6d3..dad6d26c9f9facaa8794fe5d26a4f4e73b26989a 100644
--- a/chrome/browser/extensions/extension_install_dialog.cc
+++ b/chrome/browser/extensions/extension_install_dialog.cc
@@ -4,12 +4,16 @@
#include "chrome/browser/extensions/extension_install_dialog.h"
+#include "base/bind.h"
#include "base/file_path.h"
+#include "base/message_loop.h"
#include "base/memory/scoped_ptr.h"
#include "base/values.h"
#include "chrome/common/extensions/extension.h"
-// A flag used for SetExtensionInstallDialogForManifestAutoConfirmForTests
+namespace {
+
+// A flag used for SetExtensionInstallDialogAutoConfirmForTests
enum AutoConfirmForTest {
DO_NOT_SKIP = 0,
PROCEED,
@@ -17,6 +21,37 @@ enum AutoConfirmForTest {
};
AutoConfirmForTest auto_confirm_for_tests = DO_NOT_SKIP;
+void AutoConfirmTask(ExtensionInstallUI::Delegate* delegate, bool proceed) {
+ if (proceed)
+ delegate->InstallUIProceed();
+ else
+ delegate->InstallUIAbort(true);
+}
+
+void DoAutoConfirm(ExtensionInstallUI::Delegate* delegate) {
+ bool proceed = (auto_confirm_for_tests == PROCEED);
+ // We use PostTask instead of calling the delegate directly here, because in
+ // the real implementations it's highly likely the message loop will be
+ // pumping a few times before the user clicks accept or cancel.
+ MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(&AutoConfirmTask, delegate, proceed));
+}
+
+} // namespace
+
+void ShowExtensionInstallDialog(Profile* profile,
+ ExtensionInstallUI::Delegate* delegate,
+ const Extension* extension,
+ SkBitmap* icon,
+ const ExtensionInstallUI::Prompt& prompt) {
+ if (auto_confirm_for_tests != DO_NOT_SKIP) {
+ DoAutoConfirm(delegate);
+ return;
+ }
+ ShowExtensionInstallDialogImpl(profile, delegate, extension, icon, prompt);
+}
+
bool ShowExtensionInstallDialogForManifest(
Profile *profile,
ExtensionInstallUI::Delegate* delegate,
@@ -59,10 +94,7 @@ bool ShowExtensionInstallDialogForManifest(
// In tests, we may have setup to proceed or abort without putting up the real
// confirmation dialog.
if (auto_confirm_for_tests != DO_NOT_SKIP) {
- if (auto_confirm_for_tests == PROCEED)
- delegate->InstallUIProceed();
- else
- delegate->InstallUIAbort(true);
+ DoAutoConfirm(delegate);
return true;
}
@@ -78,7 +110,7 @@ bool ShowExtensionInstallDialogForManifest(
return true;
}
-void SetExtensionInstallDialogForManifestAutoConfirmForTests(
+void SetExtensionInstallDialogAutoConfirmForTests(
bool should_proceed) {
auto_confirm_for_tests = should_proceed ? PROCEED : ABORT;
}
« no previous file with comments | « chrome/browser/extensions/extension_install_dialog.h ('k') | chrome/browser/extensions/extension_management_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698