summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorJaikumar Ganesh <jaikumar@google.com>2011-06-21 13:24:46 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-06-21 13:24:46 -0700
commit9e5d0de9a333683533a021e9733e824cac666d18 (patch)
treeacc84d931b1d9159890ab40615a76d86902a8620 /core/jni
parent6f1a8edcc00db40a8ad300e15a23f7f1de298c3b (diff)
parentb38fa2a0ac2bde56504929de6a3dd61ac723958e (diff)
downloadframeworks_base-9e5d0de9a333683533a021e9733e824cac666d18.zip
frameworks_base-9e5d0de9a333683533a021e9733e824cac666d18.tar.gz
frameworks_base-9e5d0de9a333683533a021e9733e824cac666d18.tar.bz2
am b38fa2a0: Merge "DO NOT MERGE Incoming Bluetooth Connection requests - dialog." into gingerbread
* commit 'b38fa2a0ac2bde56504929de6a3dd61ac723958e': DO NOT MERGE Incoming Bluetooth Connection requests - dialog.
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_server_BluetoothEventLoop.cpp28
-rw-r--r--core/jni/android_server_BluetoothService.cpp30
2 files changed, 35 insertions, 23 deletions
diff --git a/core/jni/android_server_BluetoothEventLoop.cpp b/core/jni/android_server_BluetoothEventLoop.cpp
index de003df..73dfdbe 100644
--- a/core/jni/android_server_BluetoothEventLoop.cpp
+++ b/core/jni/android_server_BluetoothEventLoop.cpp
@@ -106,7 +106,7 @@ static void classInitNative(JNIEnv* env, jclass clazz) {
"(Ljava/lang/String;Z)V");
method_onAgentAuthorize = env->GetMethodID(clazz, "onAgentAuthorize",
- "(Ljava/lang/String;Ljava/lang/String;)Z");
+ "(Ljava/lang/String;Ljava/lang/String;I)V");
method_onAgentOutOfBandDataAvailable = env->GetMethodID(clazz, "onAgentOutOfBandDataAvailable",
"(Ljava/lang/String;)Z");
method_onAgentCancel = env->GetMethodID(clazz, "onAgentCancel", "()V");
@@ -917,29 +917,11 @@ DBusHandlerResult agent_event_filter(DBusConnection *conn,
LOGV("... object_path = %s", object_path);
LOGV("... uuid = %s", uuid);
- bool auth_granted =
- env->CallBooleanMethod(nat->me, method_onAgentAuthorize,
- env->NewStringUTF(object_path), env->NewStringUTF(uuid));
+ dbus_message_ref(msg); // increment refcount because we pass to java
+ env->CallBooleanMethod(nat->me, method_onAgentAuthorize,
+ env->NewStringUTF(object_path), env->NewStringUTF(uuid),
+ int(msg));
- // reply
- if (auth_granted) {
- DBusMessage *reply = dbus_message_new_method_return(msg);
- if (!reply) {
- LOGE("%s: Cannot create message reply\n", __FUNCTION__);
- goto failure;
- }
- dbus_connection_send(nat->conn, reply, NULL);
- dbus_message_unref(reply);
- } else {
- DBusMessage *reply = dbus_message_new_error(msg,
- "org.bluez.Error.Rejected", "Authorization rejected");
- if (!reply) {
- LOGE("%s: Cannot create message reply\n", __FUNCTION__);
- goto failure;
- }
- dbus_connection_send(nat->conn, reply, NULL);
- dbus_message_unref(reply);
- }
goto success;
} else if (dbus_message_is_method_call(msg,
"org.bluez.Agent", "OutOfBandAvailable")) {
diff --git a/core/jni/android_server_BluetoothService.cpp b/core/jni/android_server_BluetoothService.cpp
index daa59a6..be2e5f3 100644
--- a/core/jni/android_server_BluetoothService.cpp
+++ b/core/jni/android_server_BluetoothService.cpp
@@ -599,6 +599,35 @@ static jboolean setRemoteOutOfBandDataNative(JNIEnv *env, jobject object, jstrin
return JNI_FALSE;
}
+static jboolean setAuthorizationNative(JNIEnv *env, jobject object, jstring address,
+ jboolean val, int nativeData) {
+#ifdef HAVE_BLUETOOTH
+ LOGV(__FUNCTION__);
+ native_data_t *nat = get_native_data(env, object);
+ if (nat) {
+ DBusMessage *msg = (DBusMessage *)nativeData;
+ DBusMessage *reply;
+ if (val) {
+ reply = dbus_message_new_method_return(msg);
+ } else {
+ reply = dbus_message_new_error(msg,
+ "org.bluez.Error.Rejected", "Authorization rejected");
+ }
+ if (!reply) {
+ LOGE("%s: Cannot create message reply D-Bus\n", __FUNCTION__);
+ dbus_message_unref(msg);
+ return JNI_FALSE;
+ }
+
+ dbus_connection_send(nat->conn, reply, NULL);
+ dbus_message_unref(msg);
+ dbus_message_unref(reply);
+ return JNI_TRUE;
+ }
+#endif
+ return JNI_FALSE;
+}
+
static jboolean setPinNative(JNIEnv *env, jobject object, jstring address,
jstring pin, int nativeData) {
#ifdef HAVE_BLUETOOTH
@@ -1029,6 +1058,7 @@ static JNINativeMethod sMethods[] = {
(void *)setPairingConfirmationNative},
{"setPasskeyNative", "(Ljava/lang/String;II)Z", (void *)setPasskeyNative},
{"setRemoteOutOfBandDataNative", "(Ljava/lang/String;[B[BI)Z", (void *)setRemoteOutOfBandDataNative},
+ {"setAuthorizationNative", "(Ljava/lang/String;ZI)Z", (void *)setAuthorizationNative},
{"setPinNative", "(Ljava/lang/String;Ljava/lang/String;I)Z", (void *)setPinNative},
{"cancelPairingUserInputNative", "(Ljava/lang/String;I)Z",
(void *)cancelPairingUserInputNative},