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

Unified Diff: chrome/browser/extensions/api/bluetooth/bluetooth_api_socket.cc

Issue 278663002: Implement chrome.bluetoothSocket.listenUsing*() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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: chrome/browser/extensions/api/bluetooth/bluetooth_api_socket.cc
diff --git a/chrome/browser/extensions/api/bluetooth/bluetooth_api_socket.cc b/chrome/browser/extensions/api/bluetooth/bluetooth_api_socket.cc
index b33c635d8313fcdb304a43746ad8fa436d49e21f..f549354bd4db2d7517646df6d5b1f2bb8dfb74df 100644
--- a/chrome/browser/extensions/api/bluetooth/bluetooth_api_socket.cc
+++ b/chrome/browser/extensions/api/bluetooth/bluetooth_api_socket.cc
@@ -10,6 +10,7 @@
namespace {
const char kSocketNotConnectedError[] = "Socket not connected";
+const char kSocketNotListeningError[] = "Socket not listening";
} // namespace
@@ -73,15 +74,30 @@ void BluetoothApiSocket::AdoptConnectedSocket(
connected_ = true;
}
-void BluetoothApiSocket::Disconnect(const base::Closure& success_callback) {
+void BluetoothApiSocket::AdoptListeningSocket(
+ scoped_refptr<device::BluetoothSocket> socket,
+ const device::BluetoothUUID& uuid) {
DCHECK(content::BrowserThread::CurrentlyOn(kThreadId));
- if (!socket_.get() || !IsConnected()) {
- success_callback.Run();
+ if (socket_.get())
+ socket_->Close();
+
+ socket_ = socket;
+ device_address_ = "";
+ uuid_ = uuid;
+ connected_ = false;
+}
+
+void BluetoothApiSocket::Disconnect(const base::Closure& callback) {
+ DCHECK(content::BrowserThread::CurrentlyOn(kThreadId));
+
+ if (!socket_.get()) {
+ callback.Run();
return;
}
- socket_->Disconnect(success_callback);
+ connected_ = false;
+ socket_->Disconnect(callback);
}
bool BluetoothApiSocket::IsPersistent() const {
@@ -153,7 +169,29 @@ void BluetoothApiSocket::OnSocketSendError(
const std::string& message) {
DCHECK(content::BrowserThread::CurrentlyOn(kThreadId));
error_callback.Run(BluetoothApiSocket::kSystemError, message);
+}
+void BluetoothApiSocket::Accept(
+ const AcceptCompletionCallback& success_callback,
+ const ErrorCompletionCallback& error_callback) {
+ DCHECK(content::BrowserThread::CurrentlyOn(kThreadId));
+
+ if (!socket_.get() || IsConnected()) {
+ error_callback.Run(BluetoothApiSocket::kNotListening,
+ kSocketNotListeningError);
+ return;
+ }
+
+ socket_->Accept(success_callback,
+ base::Bind(&OnSocketAcceptError, error_callback));
+}
+
+// static
+void BluetoothApiSocket::OnSocketAcceptError(
+ const ErrorCompletionCallback& error_callback,
+ const std::string& message) {
+ DCHECK(content::BrowserThread::CurrentlyOn(kThreadId));
+ error_callback.Run(BluetoothApiSocket::kSystemError, message);
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698