Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: extensions/browser/api/bluetooth/bluetooth_event_router.cc

Issue 1083163002: Expose SetDiscoveryFilter from BluetoothEventRouter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/api/bluetooth/bluetooth_event_router.cc
diff --git a/extensions/browser/api/bluetooth/bluetooth_event_router.cc b/extensions/browser/api/bluetooth/bluetooth_event_router.cc
index 1064d0bdad177dc91b4e3dac3d5cd8f34e6a9b1b..4c962781d96a70c65b99da14ee52270a3a65590e 100644
--- a/extensions/browser/api/bluetooth/bluetooth_event_router.cc
+++ b/extensions/browser/api/bluetooth/bluetooth_event_router.cc
@@ -90,12 +90,22 @@ void BluetoothEventRouter::StartDiscoverySession(
error_callback.Run();
return;
}
- adapter->StartDiscoverySession(
- base::Bind(&BluetoothEventRouter::OnStartDiscoverySession,
- weak_ptr_factory_.GetWeakPtr(),
- extension_id,
- callback),
- error_callback);
+
armansito 2015/04/16 19:13:54 Add comments explaining what's going on here.
jpawlowski1 2015/04/16 19:36:27 Done.
+ PreSetFilterMap::iterator pre_set_iter =
+ pre_set_filter_map_.find(extension_id);
+ if (pre_set_iter != pre_set_filter_map_.end()) {
+ adapter->StartDiscoverySessionWithFilter(
+ scoped_ptr<device::BluetoothDiscoveryFilter>(pre_set_iter->second),
+ base::Bind(&BluetoothEventRouter::OnStartDiscoverySession,
+ weak_ptr_factory_.GetWeakPtr(), extension_id, callback),
+ error_callback);
+ pre_set_filter_map_.erase(pre_set_iter);
armansito 2015/04/16 19:13:55 Do an early return and drop 'else'.
jpawlowski1 2015/04/16 19:36:27 Done.
+ } else {
+ adapter->StartDiscoverySession(
+ base::Bind(&BluetoothEventRouter::OnStartDiscoverySession,
+ weak_ptr_factory_.GetWeakPtr(), extension_id, callback),
+ error_callback);
+ }
}
void BluetoothEventRouter::StopDiscoverySession(
@@ -118,6 +128,32 @@ void BluetoothEventRouter::StopDiscoverySession(
session->Stop(callback, error_callback);
}
+void BluetoothEventRouter::SetDiscoveryFilter(
+ scoped_ptr<device::BluetoothDiscoveryFilter> discovery_filter,
+ device::BluetoothAdapter* adapter,
+ const std::string& extension_id,
+ const base::Closure& callback,
+ const base::Closure& error_callback) {
+ VLOG(1) << __func__;
armansito 2015/04/16 19:13:54 Prefer DVLOG
jpawlowski1 2015/04/16 19:36:27 Done.
+ if (adapter != adapter_.get()) {
+ error_callback.Run();
+ return;
+ }
+
+ DiscoverySessionMap::iterator iter =
+ discovery_session_map_.find(extension_id);
+ if (iter == discovery_session_map_.end() || !iter->second->IsActive()) {
+ VLOG(1) << "No active discovery session exists for extension.";
armansito 2015/04/16 19:13:55 This may be interpreted incorrectly as an error ca
armansito 2015/04/16 19:13:55 DVLOG
jpawlowski1 2015/04/16 19:36:27 Done.
jpawlowski1 2015/04/16 19:36:27 Done.
+ pre_set_filter_map_[extension_id] = discovery_filter.release();
+ callback.Run();
+ return;
+ }
+
+ // extension is already running discovery, update it's discovery filter
+ iter->second->SetDiscoveryFilter(discovery_filter.Pass(), callback,
+ error_callback);
+}
+
BluetoothApiPairingDelegate* BluetoothEventRouter::GetPairingDelegate(
const std::string& extension_id) {
return ContainsKey(pairing_delegate_map_, extension_id)
@@ -312,6 +348,13 @@ void BluetoothEventRouter::CleanUpForExtension(
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
RemovePairingDelegate(extension_id);
+ PreSetFilterMap::iterator pre_set_iter =
+ pre_set_filter_map_.find(extension_id);
+ if (pre_set_iter != pre_set_filter_map_.end()) {
+ delete pre_set_iter->second;
+ pre_set_filter_map_.erase(pre_set_iter);
+ }
+
// Remove any discovery session initiated by the extension.
DiscoverySessionMap::iterator session_iter =
discovery_session_map_.find(extension_id);
@@ -322,6 +365,12 @@ void BluetoothEventRouter::CleanUpForExtension(
}
void BluetoothEventRouter::CleanUpAllExtensions() {
+ for (PreSetFilterMap::iterator it = pre_set_filter_map_.begin();
+ it != pre_set_filter_map_.end(); it++) {
armansito 2015/04/16 19:13:54 for (auto& it : pre_set_filter_map_)
jpawlowski1 2015/04/16 19:36:27 Done.
+ delete it->second;
+ }
+ pre_set_filter_map_.clear();
+
for (DiscoverySessionMap::iterator it = discovery_session_map_.begin();
it != discovery_session_map_.end();
++it) {
@@ -347,6 +396,11 @@ void BluetoothEventRouter::OnStartDiscoverySession(
callback.Run();
}
+void BluetoothEventRouter::OnSetDiscoveryFilter(const std::string& extension_id,
+ const base::Closure& callback) {
armansito 2015/04/16 19:13:55 DVLOG success?
jpawlowski1 2015/04/16 19:36:27 Done.
+ callback.Run();
+}
+
void BluetoothEventRouter::Observe(
int type,
const content::NotificationSource& source,

Powered by Google App Engine
This is Rietveld 408576698