Chromium Code Reviews| Index: chrome/browser/permissions/permission_update_infobar_delegate_android.cc |
| diff --git a/chrome/browser/permissions/permission_update_infobar_delegate_android.cc b/chrome/browser/permissions/permission_update_infobar_delegate_android.cc |
| index 35ad88576f527f697753a71afb472fefb1a99b1c..680c48121c42f6ec46e45925a846dba842c05b91 100644 |
| --- a/chrome/browser/permissions/permission_update_infobar_delegate_android.cc |
| +++ b/chrome/browser/permissions/permission_update_infobar_delegate_android.cc |
| @@ -76,7 +76,10 @@ bool PermissionUpdateInfoBarDelegate::RegisterPermissionUpdateInfoBarDelegate( |
| void PermissionUpdateInfoBarDelegate::OnPermissionResult( |
| JNIEnv* env, jobject obj, jboolean all_permissions_granted) { |
| - callback_.Run(all_permissions_granted); |
| + PermissionUpdatedCallback cb = callback_; |
|
Guido Urdaneta
2015/09/23 13:32:14
Can you use base::ResetAndReturn() here?
Ted C
2015/09/23 19:45:34
Neat! Done
Peter Kasting
2016/09/21 21:33:44
This change got referenced in another review I was
Peter Kasting
2016/09/21 21:37:08
To be clear: I understand why you want to reset th
|
| + callback_.Reset(); |
| + cb.Run(all_permissions_granted); |
| + |
| infobar()->RemoveSelf(); |
| } |
| @@ -106,6 +109,9 @@ PermissionUpdateInfoBarDelegate::PermissionUpdateInfoBarDelegate( |
| PermissionUpdateInfoBarDelegate::~PermissionUpdateInfoBarDelegate() { |
| Java_PermissionUpdateInfoBarDelegate_onNativeDestroyed( |
| base::android::AttachCurrentThread(), java_delegate_.obj()); |
| + |
| + if (!callback_.is_null()) |
| + callback_.Run(false); |
| } |
| int PermissionUpdateInfoBarDelegate::GetIconId() const { |
| @@ -167,6 +173,15 @@ bool PermissionUpdateInfoBarDelegate::Accept() { |
| } |
| bool PermissionUpdateInfoBarDelegate::Cancel() { |
| - callback_.Run(false); |
| + PermissionUpdatedCallback cb = callback_; |
|
Guido Urdaneta
2015/09/23 13:32:14
base::ResetAndReturn()
|
| + callback_.Reset(); |
| + cb.Run(false); |
| + |
| return true; |
| } |
| + |
| +void PermissionUpdateInfoBarDelegate::InfoBarDismissed() { |
| + PermissionUpdatedCallback cb = callback_; |
| + callback_.Reset(); |
| + cb.Run(false); |
| +} |