Loading libs/sensor/ISensorServer.cpp +4 −2 Original line number Original line Diff line number Diff line Loading @@ -91,13 +91,14 @@ public: } } virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, int mode, const String16& opPackageName) int mode, const String16& opPackageName, const String16& attributionTag) { { Parcel data, reply; Parcel data, reply; data.writeInterfaceToken(ISensorServer::getInterfaceDescriptor()); data.writeInterfaceToken(ISensorServer::getInterfaceDescriptor()); data.writeString8(packageName); data.writeString8(packageName); data.writeInt32(mode); data.writeInt32(mode); data.writeString16(opPackageName); data.writeString16(opPackageName); data.writeString16(attributionTag); remote()->transact(CREATE_SENSOR_EVENT_CONNECTION, data, &reply); remote()->transact(CREATE_SENSOR_EVENT_CONNECTION, data, &reply); return interface_cast<ISensorEventConnection>(reply.readStrongBinder()); return interface_cast<ISensorEventConnection>(reply.readStrongBinder()); } } Loading Loading @@ -170,8 +171,9 @@ status_t BnSensorServer::onTransact( String8 packageName = data.readString8(); String8 packageName = data.readString8(); int32_t mode = data.readInt32(); int32_t mode = data.readInt32(); const String16& opPackageName = data.readString16(); const String16& opPackageName = data.readString16(); const String16& attributionTag = data.readString16(); sp<ISensorEventConnection> connection(createSensorEventConnection(packageName, mode, sp<ISensorEventConnection> connection(createSensorEventConnection(packageName, mode, opPackageName)); opPackageName, attributionTag)); reply->writeStrongBinder(IInterface::asBinder(connection)); reply->writeStrongBinder(IInterface::asBinder(connection)); return NO_ERROR; return NO_ERROR; } } Loading libs/sensor/SensorManager.cpp +4 −3 Original line number Original line Diff line number Diff line Loading @@ -225,13 +225,14 @@ Sensor const* SensorManager::getDefaultSensor(int type) return nullptr; return nullptr; } } sp<SensorEventQueue> SensorManager::createEventQueue(String8 packageName, int mode) { sp<SensorEventQueue> SensorManager::createEventQueue( String8 packageName, int mode, String16 attributionTag) { sp<SensorEventQueue> queue; sp<SensorEventQueue> queue; Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock); while (assertStateLocked() == NO_ERROR) { while (assertStateLocked() == NO_ERROR) { sp<ISensorEventConnection> connection = sp<ISensorEventConnection> connection = mSensorServer->createSensorEventConnection( mSensorServer->createSensorEventConnection(packageName, mode, mOpPackageName); packageName, mode, mOpPackageName, attributionTag); if (connection == nullptr) { if (connection == nullptr) { // SensorService just died or the app doesn't have required permissions. // SensorService just died or the app doesn't have required permissions. ALOGE("createEventQueue: connection is NULL."); ALOGE("createEventQueue: connection is NULL."); Loading libs/sensor/include/sensor/ISensorServer.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -45,7 +45,7 @@ public: virtual Vector<Sensor> getDynamicSensorList(const String16& opPackageName) = 0; virtual Vector<Sensor> getDynamicSensorList(const String16& opPackageName) = 0; virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, int mode, const String16& opPackageName) = 0; int mode, const String16& opPackageName, const String16& attributionTag) = 0; virtual int32_t isDataInjectionEnabled() = 0; virtual int32_t isDataInjectionEnabled() = 0; virtual sp<ISensorEventConnection> createSensorDirectConnection(const String16& opPackageName, virtual sp<ISensorEventConnection> createSensorDirectConnection(const String16& opPackageName, Loading libs/sensor/include/sensor/SensorManager.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -59,7 +59,8 @@ public: ssize_t getSensorList(Sensor const* const** list); ssize_t getSensorList(Sensor const* const** list); ssize_t getDynamicSensorList(Vector<Sensor>& list); ssize_t getDynamicSensorList(Vector<Sensor>& list); Sensor const* getDefaultSensor(int type); Sensor const* getDefaultSensor(int type); sp<SensorEventQueue> createEventQueue(String8 packageName = String8(""), int mode = 0); sp<SensorEventQueue> createEventQueue( String8 packageName = String8(""), int mode = 0, String16 attributionTag = String16("")); bool isDataInjectionEnabled(); bool isDataInjectionEnabled(); int createDirectChannel(size_t size, int channelType, const native_handle_t *channelData); int createDirectChannel(size_t size, int channelType, const native_handle_t *channelData); void destroyDirectChannel(int channelNativeHandle); void destroyDirectChannel(int channelNativeHandle); Loading services/sensorservice/SensorEventConnection.cpp +5 −4 Original line number Original line Diff line number Diff line Loading @@ -38,12 +38,12 @@ constexpr int kTargetSdkUnknown = 0; SensorService::SensorEventConnection::SensorEventConnection( SensorService::SensorEventConnection::SensorEventConnection( const sp<SensorService>& service, uid_t uid, String8 packageName, bool isDataInjectionMode, const sp<SensorService>& service, uid_t uid, String8 packageName, bool isDataInjectionMode, const String16& opPackageName) const String16& opPackageName, const String16& attributionTag) : mService(service), mUid(uid), mWakeLockRefCount(0), mHasLooperCallbacks(false), : mService(service), mUid(uid), mWakeLockRefCount(0), mHasLooperCallbacks(false), mDead(false), mDataInjectionMode(isDataInjectionMode), mEventCache(nullptr), mDead(false), mDataInjectionMode(isDataInjectionMode), mEventCache(nullptr), mCacheSize(0), mMaxCacheSize(0), mTimeOfLastEventDrop(0), mEventsDropped(0), mCacheSize(0), mMaxCacheSize(0), mTimeOfLastEventDrop(0), mEventsDropped(0), mPackageName(packageName), mOpPackageName(opPackageName), mTargetSdk(kTargetSdkUnknown), mPackageName(packageName), mOpPackageName(opPackageName), mAttributionTag(attributionTag), mDestroyed(false) { mTargetSdk(kTargetSdkUnknown), mDestroyed(false) { mIsRateCappedBasedOnPermission = mService->isRateCappedBasedOnPermission(mOpPackageName); mIsRateCappedBasedOnPermission = mService->isRateCappedBasedOnPermission(mOpPackageName); mUserId = multiuser_get_user_id(mUid); mUserId = multiuser_get_user_id(mUid); mChannel = new BitTube(mService->mSocketBufferSize); mChannel = new BitTube(mService->mSocketBufferSize); Loading Loading @@ -493,7 +493,8 @@ bool SensorService::SensorEventConnection::noteOpIfRequired(const sensors_event_ noteMsg.append(String16(mService->getSensorStringType(sensorHandle))); noteMsg.append(String16(mService->getSensorStringType(sensorHandle))); noteMsg.append(String16(")")); noteMsg.append(String16(")")); int32_t appOpMode = mService->sAppOpsManager.noteOp(iter->second, mUid, int32_t appOpMode = mService->sAppOpsManager.noteOp(iter->second, mUid, mOpPackageName, {}, noteMsg); mOpPackageName, mAttributionTag, noteMsg); success = (appOpMode == AppOpsManager::MODE_ALLOWED); success = (appOpMode == AppOpsManager::MODE_ALLOWED); } } } } Loading Loading
libs/sensor/ISensorServer.cpp +4 −2 Original line number Original line Diff line number Diff line Loading @@ -91,13 +91,14 @@ public: } } virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, int mode, const String16& opPackageName) int mode, const String16& opPackageName, const String16& attributionTag) { { Parcel data, reply; Parcel data, reply; data.writeInterfaceToken(ISensorServer::getInterfaceDescriptor()); data.writeInterfaceToken(ISensorServer::getInterfaceDescriptor()); data.writeString8(packageName); data.writeString8(packageName); data.writeInt32(mode); data.writeInt32(mode); data.writeString16(opPackageName); data.writeString16(opPackageName); data.writeString16(attributionTag); remote()->transact(CREATE_SENSOR_EVENT_CONNECTION, data, &reply); remote()->transact(CREATE_SENSOR_EVENT_CONNECTION, data, &reply); return interface_cast<ISensorEventConnection>(reply.readStrongBinder()); return interface_cast<ISensorEventConnection>(reply.readStrongBinder()); } } Loading Loading @@ -170,8 +171,9 @@ status_t BnSensorServer::onTransact( String8 packageName = data.readString8(); String8 packageName = data.readString8(); int32_t mode = data.readInt32(); int32_t mode = data.readInt32(); const String16& opPackageName = data.readString16(); const String16& opPackageName = data.readString16(); const String16& attributionTag = data.readString16(); sp<ISensorEventConnection> connection(createSensorEventConnection(packageName, mode, sp<ISensorEventConnection> connection(createSensorEventConnection(packageName, mode, opPackageName)); opPackageName, attributionTag)); reply->writeStrongBinder(IInterface::asBinder(connection)); reply->writeStrongBinder(IInterface::asBinder(connection)); return NO_ERROR; return NO_ERROR; } } Loading
libs/sensor/SensorManager.cpp +4 −3 Original line number Original line Diff line number Diff line Loading @@ -225,13 +225,14 @@ Sensor const* SensorManager::getDefaultSensor(int type) return nullptr; return nullptr; } } sp<SensorEventQueue> SensorManager::createEventQueue(String8 packageName, int mode) { sp<SensorEventQueue> SensorManager::createEventQueue( String8 packageName, int mode, String16 attributionTag) { sp<SensorEventQueue> queue; sp<SensorEventQueue> queue; Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock); while (assertStateLocked() == NO_ERROR) { while (assertStateLocked() == NO_ERROR) { sp<ISensorEventConnection> connection = sp<ISensorEventConnection> connection = mSensorServer->createSensorEventConnection( mSensorServer->createSensorEventConnection(packageName, mode, mOpPackageName); packageName, mode, mOpPackageName, attributionTag); if (connection == nullptr) { if (connection == nullptr) { // SensorService just died or the app doesn't have required permissions. // SensorService just died or the app doesn't have required permissions. ALOGE("createEventQueue: connection is NULL."); ALOGE("createEventQueue: connection is NULL."); Loading
libs/sensor/include/sensor/ISensorServer.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -45,7 +45,7 @@ public: virtual Vector<Sensor> getDynamicSensorList(const String16& opPackageName) = 0; virtual Vector<Sensor> getDynamicSensorList(const String16& opPackageName) = 0; virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, int mode, const String16& opPackageName) = 0; int mode, const String16& opPackageName, const String16& attributionTag) = 0; virtual int32_t isDataInjectionEnabled() = 0; virtual int32_t isDataInjectionEnabled() = 0; virtual sp<ISensorEventConnection> createSensorDirectConnection(const String16& opPackageName, virtual sp<ISensorEventConnection> createSensorDirectConnection(const String16& opPackageName, Loading
libs/sensor/include/sensor/SensorManager.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -59,7 +59,8 @@ public: ssize_t getSensorList(Sensor const* const** list); ssize_t getSensorList(Sensor const* const** list); ssize_t getDynamicSensorList(Vector<Sensor>& list); ssize_t getDynamicSensorList(Vector<Sensor>& list); Sensor const* getDefaultSensor(int type); Sensor const* getDefaultSensor(int type); sp<SensorEventQueue> createEventQueue(String8 packageName = String8(""), int mode = 0); sp<SensorEventQueue> createEventQueue( String8 packageName = String8(""), int mode = 0, String16 attributionTag = String16("")); bool isDataInjectionEnabled(); bool isDataInjectionEnabled(); int createDirectChannel(size_t size, int channelType, const native_handle_t *channelData); int createDirectChannel(size_t size, int channelType, const native_handle_t *channelData); void destroyDirectChannel(int channelNativeHandle); void destroyDirectChannel(int channelNativeHandle); Loading
services/sensorservice/SensorEventConnection.cpp +5 −4 Original line number Original line Diff line number Diff line Loading @@ -38,12 +38,12 @@ constexpr int kTargetSdkUnknown = 0; SensorService::SensorEventConnection::SensorEventConnection( SensorService::SensorEventConnection::SensorEventConnection( const sp<SensorService>& service, uid_t uid, String8 packageName, bool isDataInjectionMode, const sp<SensorService>& service, uid_t uid, String8 packageName, bool isDataInjectionMode, const String16& opPackageName) const String16& opPackageName, const String16& attributionTag) : mService(service), mUid(uid), mWakeLockRefCount(0), mHasLooperCallbacks(false), : mService(service), mUid(uid), mWakeLockRefCount(0), mHasLooperCallbacks(false), mDead(false), mDataInjectionMode(isDataInjectionMode), mEventCache(nullptr), mDead(false), mDataInjectionMode(isDataInjectionMode), mEventCache(nullptr), mCacheSize(0), mMaxCacheSize(0), mTimeOfLastEventDrop(0), mEventsDropped(0), mCacheSize(0), mMaxCacheSize(0), mTimeOfLastEventDrop(0), mEventsDropped(0), mPackageName(packageName), mOpPackageName(opPackageName), mTargetSdk(kTargetSdkUnknown), mPackageName(packageName), mOpPackageName(opPackageName), mAttributionTag(attributionTag), mDestroyed(false) { mTargetSdk(kTargetSdkUnknown), mDestroyed(false) { mIsRateCappedBasedOnPermission = mService->isRateCappedBasedOnPermission(mOpPackageName); mIsRateCappedBasedOnPermission = mService->isRateCappedBasedOnPermission(mOpPackageName); mUserId = multiuser_get_user_id(mUid); mUserId = multiuser_get_user_id(mUid); mChannel = new BitTube(mService->mSocketBufferSize); mChannel = new BitTube(mService->mSocketBufferSize); Loading Loading @@ -493,7 +493,8 @@ bool SensorService::SensorEventConnection::noteOpIfRequired(const sensors_event_ noteMsg.append(String16(mService->getSensorStringType(sensorHandle))); noteMsg.append(String16(mService->getSensorStringType(sensorHandle))); noteMsg.append(String16(")")); noteMsg.append(String16(")")); int32_t appOpMode = mService->sAppOpsManager.noteOp(iter->second, mUid, int32_t appOpMode = mService->sAppOpsManager.noteOp(iter->second, mUid, mOpPackageName, {}, noteMsg); mOpPackageName, mAttributionTag, noteMsg); success = (appOpMode == AppOpsManager::MODE_ALLOWED); success = (appOpMode == AppOpsManager::MODE_ALLOWED); } } } } Loading