| Index: content/browser/frame_host/render_frame_host_impl.cc
|
| diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
|
| index eb459ede4b43bf2b77a7e3ef1ca8367f4166d185..b758ab26eda5a8831f11d0d639d6a21b77906b69 100644
|
| --- a/content/browser/frame_host/render_frame_host_impl.cc
|
| +++ b/content/browser/frame_host/render_frame_host_impl.cc
|
| @@ -90,7 +90,6 @@ class DesktopNotificationDelegateImpl : public DesktopNotificationDelegate {
|
|
|
| rfh->Send(new DesktopNotificationMsg_PostError(
|
| rfh->GetRoutingID(), notification_id_));
|
| - delete this;
|
| }
|
|
|
| virtual void NotificationClosed(bool by_user) OVERRIDE {
|
| @@ -103,7 +102,6 @@ class DesktopNotificationDelegateImpl : public DesktopNotificationDelegate {
|
| rfh->GetRoutingID(), notification_id_, by_user));
|
| static_cast<RenderFrameHostImpl*>(rfh)->NotificationClosed(
|
| notification_id_);
|
| - delete this;
|
| }
|
|
|
| virtual void NotificationClick() OVERRIDE {
|
| @@ -833,10 +831,14 @@ void RenderFrameHostImpl::OnRequestDesktopNotificationPermission(
|
| void RenderFrameHostImpl::OnShowDesktopNotification(
|
| int notification_id,
|
| const ShowDesktopNotificationHostMsgParams& params) {
|
| + scoped_ptr<DesktopNotificationDelegateImpl> delegate(
|
| + new DesktopNotificationDelegateImpl(this, notification_id));
|
| +
|
| base::Closure cancel_callback;
|
| GetContentClient()->browser()->ShowDesktopNotification(
|
| - params, this,
|
| - new DesktopNotificationDelegateImpl(this, notification_id),
|
| + params,
|
| + this,
|
| + delegate.PassAs<DesktopNotificationDelegate>(),
|
| &cancel_callback);
|
| cancel_notification_callbacks_[notification_id] = cancel_callback;
|
| }
|
|
|