Bluetooth: Don't attempt a pairing for devices not supporting it.
[chromium-blink-merge.git] / content / renderer / active_notification_tracker.cc
blob11e16c2de2163d696e3d096c5704b9c96d707ec1
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/renderer/active_notification_tracker.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop.h"
9 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNotification.h"
10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNotificationPermissionCallback.h"
12 using WebKit::WebNotification;
13 using WebKit::WebNotificationPermissionCallback;
15 namespace content {
17 ActiveNotificationTracker::ActiveNotificationTracker() {}
19 ActiveNotificationTracker::~ActiveNotificationTracker() {}
21 bool ActiveNotificationTracker::GetId(
22 const WebNotification& notification, int& id) {
23 ReverseTable::iterator iter = reverse_notification_table_.find(notification);
24 if (iter == reverse_notification_table_.end())
25 return false;
26 id = iter->second;
27 return true;
30 bool ActiveNotificationTracker::GetNotification(
31 int id, WebNotification* notification) {
32 WebNotification* lookup = notification_table_.Lookup(id);
33 if (!lookup)
34 return false;
36 *notification = *lookup;
37 return true;
40 int ActiveNotificationTracker::RegisterNotification(
41 const WebKit::WebNotification& proxy) {
42 if (reverse_notification_table_.find(proxy)
43 != reverse_notification_table_.end()) {
44 return reverse_notification_table_[proxy];
45 } else {
46 WebNotification* notification = new WebNotification(proxy);
47 int id = notification_table_.Add(notification);
48 reverse_notification_table_[proxy] = id;
49 return id;
53 void ActiveNotificationTracker::UnregisterNotification(int id) {
54 // We want to free the notification after removing it from the table.
55 scoped_ptr<WebNotification> notification(notification_table_.Lookup(id));
56 notification_table_.Remove(id);
57 DCHECK(notification.get());
58 if (notification)
59 reverse_notification_table_.erase(*notification);
62 void ActiveNotificationTracker::Clear() {
63 while (!reverse_notification_table_.empty()) {
64 ReverseTable::iterator iter = reverse_notification_table_.begin();
65 UnregisterNotification((*iter).second);
69 void ActiveNotificationTracker::DetachAll() {
70 ReverseTable::iterator iter;
71 for (iter = reverse_notification_table_.begin();
72 iter != reverse_notification_table_.end();
73 ++iter) {
74 WebNotification notification(iter->first);
75 notification.detachPresenter();
79 WebNotificationPermissionCallback* ActiveNotificationTracker::GetCallback(
80 int id) {
81 return callback_table_.Lookup(id);
84 int ActiveNotificationTracker::RegisterPermissionRequest(
85 WebNotificationPermissionCallback* callback) {
86 return callback_table_.Add(callback);
89 void ActiveNotificationTracker::OnPermissionRequestComplete(int id) {
90 callback_table_.Remove(id);
93 } // namespace content