Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a6910f1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Plumb attribution tag to Sensor Service" into sc-dev

parents f1dd8a9e 340882c6
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -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());
    }
    }
@@ -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;
        }
        }
+4 −3
Original line number Original line Diff line number Diff line
@@ -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.");
+1 −1
Original line number Original line Diff line number Diff line
@@ -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,
+2 −1
Original line number Original line Diff line number Diff line
@@ -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);
+5 −4
Original line number Original line Diff line number Diff line
@@ -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);
@@ -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