am 8acdb911: Merge "Add support for GPS privacy lock. DO NOT MERGE" into froyo

Merge commit '8acdb911f4b9c38d1cafd3ab464d6bec54564c84' into froyo-plus-aosp

* commit '8acdb911f4b9c38d1cafd3ab464d6bec54564c84':
  Add support for GPS privacy lock.  DO NOT MERGE
This commit is contained in:
Mike Lockwood
2010-03-30 17:32:24 -07:00
committed by Android Git Automerger

View File

@@ -41,6 +41,7 @@ static jmethodID method_reportNiNotification;
static const GpsInterface* sGpsInterface = NULL; static const GpsInterface* sGpsInterface = NULL;
static const GpsXtraInterface* sGpsXtraInterface = NULL; static const GpsXtraInterface* sGpsXtraInterface = NULL;
static const AGpsInterface* sAGpsInterface = NULL; static const AGpsInterface* sAGpsInterface = NULL;
static const GpsPrivacyInterface* sGpsPrivacyInterface = NULL;
static const GpsNiInterface* sGpsNiInterface = NULL; static const GpsNiInterface* sGpsNiInterface = NULL;
static const GpsDebugInterface* sGpsDebugInterface = NULL; static const GpsDebugInterface* sGpsDebugInterface = NULL;
@@ -223,9 +224,15 @@ static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject o
sAGpsInterface->init(&sAGpsCallbacks); sAGpsInterface->init(&sAGpsCallbacks);
if (!sGpsNiInterface) if (!sGpsNiInterface)
sGpsNiInterface = (const GpsNiInterface*)sGpsInterface->get_extension(GPS_NI_INTERFACE); sGpsNiInterface = (const GpsNiInterface*)sGpsInterface->get_extension(GPS_NI_INTERFACE);
if (sGpsNiInterface) if (sGpsNiInterface)
sGpsNiInterface->init(&sGpsNiCallbacks); sGpsNiInterface->init(&sGpsNiCallbacks);
// Clear privacy lock while enabled
if (!sGpsPrivacyInterface)
sGpsPrivacyInterface = (const GpsPrivacyInterface*)sGpsInterface->get_extension(GPS_PRIVACY_INTERFACE);
if (sGpsPrivacyInterface)
sGpsPrivacyInterface->set_privacy_lock(0);
if (!sGpsDebugInterface) if (!sGpsDebugInterface)
sGpsDebugInterface = (const GpsDebugInterface*)sGpsInterface->get_extension(GPS_DEBUG_INTERFACE); sGpsDebugInterface = (const GpsDebugInterface*)sGpsInterface->get_extension(GPS_DEBUG_INTERFACE);
@@ -235,6 +242,12 @@ static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject o
static void android_location_GpsLocationProvider_disable(JNIEnv* env, jobject obj) static void android_location_GpsLocationProvider_disable(JNIEnv* env, jobject obj)
{ {
// Enable privacy lock while disabled
if (!sGpsPrivacyInterface)
sGpsPrivacyInterface = (const GpsPrivacyInterface*)sGpsInterface->get_extension(GPS_PRIVACY_INTERFACE);
if (sGpsPrivacyInterface)
sGpsPrivacyInterface->set_privacy_lock(1);
pthread_mutex_lock(&sEventMutex); pthread_mutex_lock(&sEventMutex);
sPendingCallbacks |= kDisableRequest; sPendingCallbacks |= kDisableRequest;
pthread_cond_signal(&sEventCond); pthread_cond_signal(&sEventCond);
@@ -476,12 +489,10 @@ static void android_location_GpsLocationProvider_set_agps_server(JNIEnv* env, jo
static void android_location_GpsLocationProvider_send_ni_response(JNIEnv* env, jobject obj, static void android_location_GpsLocationProvider_send_ni_response(JNIEnv* env, jobject obj,
jint notifId, jint response) jint notifId, jint response)
{ {
if (!sGpsNiInterface) { if (!sGpsNiInterface)
sGpsNiInterface = (const GpsNiInterface*)sGpsInterface->get_extension(GPS_NI_INTERFACE); sGpsNiInterface = (const GpsNiInterface*)sGpsInterface->get_extension(GPS_NI_INTERFACE);
} if (sGpsNiInterface)
if (sGpsNiInterface) {
sGpsNiInterface->respond(notifId, response); sGpsNiInterface->respond(notifId, response);
}
} }
static jstring android_location_GpsLocationProvider_get_internal_state(JNIEnv* env, jobject obj) static jstring android_location_GpsLocationProvider_get_internal_state(JNIEnv* env, jobject obj)