Commit f7b56034 authored by gbillock@chromium.org's avatar gbillock@chromium.org

[WebsiteSettings] Set view to null on manager to ensure no stale access.

R=leng@chromium.org, markusheintz@chromium.org
BUG=343234

Review URL: https://codereview.chromium.org/162713003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251392 0039d316-1c4b-4281-b951-d872f2087c98
parent 361aacb3
...@@ -43,7 +43,7 @@ class PermissionsBubbleDelegateView : public views::BubbleDelegateView, ...@@ -43,7 +43,7 @@ class PermissionsBubbleDelegateView : public views::BubbleDelegateView,
bool customization_mode); bool customization_mode);
virtual ~PermissionsBubbleDelegateView(); virtual ~PermissionsBubbleDelegateView();
void ResetOwner(); void Close();
void SizeToContents(); void SizeToContents();
// BubbleDelegateView: // BubbleDelegateView:
...@@ -192,8 +192,9 @@ PermissionsBubbleDelegateView::~PermissionsBubbleDelegateView() { ...@@ -192,8 +192,9 @@ PermissionsBubbleDelegateView::~PermissionsBubbleDelegateView() {
owner_->Closing(); owner_->Closing();
} }
void PermissionsBubbleDelegateView::ResetOwner() { void PermissionsBubbleDelegateView::Close() {
owner_ = NULL; owner_ = NULL;
GetWidget()->Close();
} }
bool PermissionsBubbleDelegateView::ShouldShowCloseButton() const { bool PermissionsBubbleDelegateView::ShouldShowCloseButton() const {
...@@ -242,7 +243,10 @@ PermissionBubbleViewViews::PermissionBubbleViewViews(views::View* anchor_view) ...@@ -242,7 +243,10 @@ PermissionBubbleViewViews::PermissionBubbleViewViews(views::View* anchor_view)
delegate_(NULL), delegate_(NULL),
bubble_delegate_(NULL) {} bubble_delegate_(NULL) {}
PermissionBubbleViewViews::~PermissionBubbleViewViews() {} PermissionBubbleViewViews::~PermissionBubbleViewViews() {
if (delegate_)
delegate_->SetView(NULL);
}
void PermissionBubbleViewViews::SetDelegate(Delegate* delegate) { void PermissionBubbleViewViews::SetDelegate(Delegate* delegate) {
delegate_ = delegate; delegate_ = delegate;
...@@ -252,10 +256,8 @@ void PermissionBubbleViewViews::Show( ...@@ -252,10 +256,8 @@ void PermissionBubbleViewViews::Show(
const std::vector<PermissionBubbleRequest*>& requests, const std::vector<PermissionBubbleRequest*>& requests,
const std::vector<bool>& values, const std::vector<bool>& values,
bool customization_mode) { bool customization_mode) {
if (bubble_delegate_ != NULL) { if (bubble_delegate_ != NULL)
bubble_delegate_->ResetOwner(); bubble_delegate_->Close();
bubble_delegate_->StartFade(false);
}
PermissionsBubbleDelegateView* bubble_delegate = PermissionsBubbleDelegateView* bubble_delegate =
new PermissionsBubbleDelegateView(anchor_view_, this, new PermissionsBubbleDelegateView(anchor_view_, this,
...@@ -269,8 +271,8 @@ void PermissionBubbleViewViews::Show( ...@@ -269,8 +271,8 @@ void PermissionBubbleViewViews::Show(
void PermissionBubbleViewViews::Hide() { void PermissionBubbleViewViews::Hide() {
if (bubble_delegate_) { if (bubble_delegate_) {
bubble_delegate_->ResetOwner(); bubble_delegate_->Close();
bubble_delegate_->StartFade(false); bubble_delegate_ = NULL;
} }
} }
......
...@@ -44,7 +44,7 @@ class PermissionBubbleManager ...@@ -44,7 +44,7 @@ class PermissionBubbleManager
// Set the active view for the permission bubble. If this is NULL, it // Set the active view for the permission bubble. If this is NULL, it
// means the permission bubble is no longer showing. // means the permission bubble is no longer showing.
virtual void SetView(PermissionBubbleView* view); virtual void SetView(PermissionBubbleView* view) OVERRIDE;
protected: protected:
// Sets the coalesce time interval to |interval_ms|. For testing only. // Sets the coalesce time interval to |interval_ms|. For testing only.
......
...@@ -25,6 +25,7 @@ class PermissionBubbleView { ...@@ -25,6 +25,7 @@ class PermissionBubbleView {
virtual void Accept() = 0; virtual void Accept() = 0;
virtual void Deny() = 0; virtual void Deny() = 0;
virtual void Closing() = 0; virtual void Closing() = 0;
virtual void SetView(PermissionBubbleView* view) = 0;
}; };
// Sets the delegate which will receive UI events forwarded from the bubble. // Sets the delegate which will receive UI events forwarded from the bubble.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment