Index: chrome/browser/extensions/api/management/management_api.cc |
diff --git a/chrome/browser/extensions/api/management/management_api.cc b/chrome/browser/extensions/api/management/management_api.cc |
index 6c3489ad6b46fa35fa2ce9048b30207ff25ce41a..1a7cade5e53a24368b556b30d7b3e30473737a5c 100644 |
--- a/chrome/browser/extensions/api/management/management_api.cc |
+++ b/chrome/browser/extensions/api/management/management_api.cc |
@@ -606,9 +606,18 @@ bool ManagementUninstallFunction::RunImpl() { |
management::Uninstall::Params::Create(*args_)); |
EXTENSION_FUNCTION_VALIDATE(params.get()); |
- bool show_confirm_dialog = false; |
- if (params->options.get() && params->options->show_confirm_dialog.get()) |
- show_confirm_dialog = *params->options->show_confirm_dialog; |
+ bool show_confirm_dialog = true; |
+ // By default confirmation dialog isn't shown when uninstalling self, but this |
+ // can be overridden with showConfirmDialog. |
+ if (extension_ && params->id == extension_->id()) { |
not at google - send to devlin
2014/01/16 01:13:41
If you're worried about |extension_| being valid t
meacer
2014/01/16 01:59:19
Done.
|
+ show_confirm_dialog = false; |
+ if (params->options.get() && params->options->show_confirm_dialog.get()) |
+ show_confirm_dialog = *params->options->show_confirm_dialog; |
not at google - send to devlin
2014/01/16 01:13:41
nit: can you do the above 3 lines in a single expr
meacer
2014/01/16 01:59:19
Can't think of a better way that won't be confusin
not at google - send to devlin
2014/01/16 05:07:39
It could be like (inside the is-self check)
show_
meacer
2014/01/16 18:59:39
Makes sense.
|
+ } |
+ if (show_confirm_dialog && !user_gesture()) { |
+ error_ = keys::kGestureNeededForUninstallError; |
+ return false; |
+ } |
return Uninstall(params->id, show_confirm_dialog); |
} |