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,
bool customization_mode);
virtual ~PermissionsBubbleDelegateView();
void ResetOwner();
void Close();
void SizeToContents();
// BubbleDelegateView:
......@@ -192,8 +192,9 @@ PermissionsBubbleDelegateView::~PermissionsBubbleDelegateView() {
owner_->Closing();
}
void PermissionsBubbleDelegateView::ResetOwner() {
void PermissionsBubbleDelegateView::Close() {
owner_ = NULL;
GetWidget()->Close();
}
bool PermissionsBubbleDelegateView::ShouldShowCloseButton() const {
......@@ -242,7 +243,10 @@ PermissionBubbleViewViews::PermissionBubbleViewViews(views::View* anchor_view)
delegate_(NULL),
bubble_delegate_(NULL) {}
PermissionBubbleViewViews::~PermissionBubbleViewViews() {}
PermissionBubbleViewViews::~PermissionBubbleViewViews() {
if (delegate_)
delegate_->SetView(NULL);
}
void PermissionBubbleViewViews::SetDelegate(Delegate* delegate) {
delegate_ = delegate;
......@@ -252,10 +256,8 @@ void PermissionBubbleViewViews::Show(
const std::vector<PermissionBubbleRequest*>& requests,
const std::vector<bool>& values,
bool customization_mode) {
if (bubble_delegate_ != NULL) {
bubble_delegate_->ResetOwner();
bubble_delegate_->StartFade(false);
}
if (bubble_delegate_ != NULL)
bubble_delegate_->Close();
PermissionsBubbleDelegateView* bubble_delegate =
new PermissionsBubbleDelegateView(anchor_view_, this,
......@@ -269,8 +271,8 @@ void PermissionBubbleViewViews::Show(
void PermissionBubbleViewViews::Hide() {
if (bubble_delegate_) {
bubble_delegate_->ResetOwner();
bubble_delegate_->StartFade(false);
bubble_delegate_->Close();
bubble_delegate_ = NULL;
}
}
......
......@@ -44,7 +44,7 @@ class PermissionBubbleManager
// Set the active view for the permission bubble. If this is NULL, it
// means the permission bubble is no longer showing.
virtual void SetView(PermissionBubbleView* view);
virtual void SetView(PermissionBubbleView* view) OVERRIDE;
protected:
// Sets the coalesce time interval to |interval_ms|. For testing only.
......
......@@ -25,6 +25,7 @@ class PermissionBubbleView {
virtual void Accept() = 0;
virtual void Deny() = 0;
virtual void Closing() = 0;
virtual void SetView(PermissionBubbleView* view) = 0;
};
// 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