Index: content/renderer/notification_permission_dispatcher.cc |
diff --git a/content/renderer/notification_permission_dispatcher.cc b/content/renderer/notification_permission_dispatcher.cc |
index 90eef27cf7787f650bbbe87a4e7910ba8acad42a..13f0ca3b23713bc20ee15fe027369a3e8066c024 100644 |
--- a/content/renderer/notification_permission_dispatcher.cc |
+++ b/content/renderer/notification_permission_dispatcher.cc |
@@ -12,38 +12,38 @@ |
#include "third_party/WebKit/public/web/WebUserGestureIndicator.h" |
#include "third_party/WebKit/public/web/modules/notifications/WebNotificationPermissionCallback.h" |
+using blink::WebNotificationPermissionCallback; |
+ |
namespace content { |
NotificationPermissionDispatcher::NotificationPermissionDispatcher( |
- RenderFrame* render_frame) : RenderFrameObserver(render_frame) { |
-} |
+ RenderFrame* render_frame) |
+ : RenderFrameObserver(render_frame) {} |
-NotificationPermissionDispatcher::~NotificationPermissionDispatcher() { |
-} |
+NotificationPermissionDispatcher::~NotificationPermissionDispatcher() {} |
void NotificationPermissionDispatcher::RequestPermission( |
const blink::WebSecurityOrigin& origin, |
- blink::WebNotificationPermissionCallback* callback) { |
+ WebNotificationPermissionCallback* callback) { |
if (!permission_service_.get()) { |
render_frame()->GetServiceRegistry()->ConnectToRemoteService( |
mojo::GetProxy(&permission_service_)); |
} |
- int request_id = pending_requests_.Add(callback); |
+ scoped_ptr<WebNotificationPermissionCallback> owned_callback(callback); |
+ // base::Unretained is safe here because the Mojo channel, with associated |
+ // callbacks, will be deleted before the "this" instance is deleted. |
permission_service_->RequestPermission( |
- PERMISSION_NAME_NOTIFICATIONS, |
- origin.toString().utf8(), |
+ PERMISSION_NAME_NOTIFICATIONS, origin.toString().utf8(), |
blink::WebUserGestureIndicator::isProcessingUserGesture(), |
base::Bind(&NotificationPermissionDispatcher::OnPermissionRequestComplete, |
- base::Unretained(this), |
- request_id)); |
+ base::Unretained(this), base::Passed(owned_callback.Pass()))); |
} |
void NotificationPermissionDispatcher::OnPermissionRequestComplete( |
- int request_id, PermissionStatus status) { |
- blink::WebNotificationPermissionCallback* callback = |
- pending_requests_.Lookup(request_id); |
+ scoped_ptr<WebNotificationPermissionCallback> callback, |
+ PermissionStatus status) { |
DCHECK(callback); |
blink::WebNotificationPermission permission = |
@@ -61,7 +61,6 @@ void NotificationPermissionDispatcher::OnPermissionRequestComplete( |
} |
callback->permissionRequestComplete(permission); |
- pending_requests_.Remove(request_id); |
} |
} // namespace content |