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

Commit bce04d71 authored by Brian Stack's avatar Brian Stack
Browse files

Improve Sensor Service's dumpsys when restricted

Update the sensor service dumpsys to include restricted as a possible
operating mode for individual Sensor Event Connections. Do not print
sensors as active if all Sensor Event Connections requesting the
sensor are restricted.

Bug: 129007172
Test: Verified sensors only requested by restricted connections are
      not displayed as active in 'dumpsys sensorservice'
Test: Verified sensors that are part of a white listed sensor
      connection are displayed in 'dumpsys sensorservice' when Sensor
      Service is in restricted mode.
Test: Verified sensor event connections that are not white listed are
      marked as RESTRICTED when sensor service is in restricted mode
      and return to NORMAL when sensor service is returned to normal
      mode.
Change-Id: I3b12d6f802dbaddf682fa76af7fda5f9c3e5e870
parent 3d694145
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -359,7 +359,7 @@ std::string SensorDevice::dump() const {
    for (const auto & s : mSensorList) {
        int32_t handle = s.handle;
        const Info& info = mActivationCount.valueFor(handle);
        if (info.batchParams.isEmpty()) continue;
        if (info.numActiveClients() == 0) continue;

        result.appendFormat("0x%08x) active-count = %zu; ", handle, info.batchParams.size());

@@ -730,6 +730,15 @@ bool SensorDevice::isClientDisabledLocked(void* ident) {
    return mDisabledClients.indexOf(ident) >= 0;
}

bool SensorDevice::isSensorActive(int handle) const {
    Mutex::Autolock _l(mLock);
    ssize_t activationIndex = mActivationCount.indexOfKey(handle);
    if (activationIndex < 0) {
        return false;
    }
    return mActivationCount.valueAt(activationIndex).numActiveClients() > 0;
}

void SensorDevice::enableAllSensors() {
    if (mSensors == nullptr) return;
    Mutex::Autolock _l(mLock);
+2 −0
Original line number Diff line number Diff line
@@ -120,6 +120,8 @@ public:
        return mReconnecting;
    }

    bool isSensorActive(int handle) const;

    // Dumpable
    virtual std::string dump() const;
private:
+8 −1
Original line number Diff line number Diff line
@@ -78,7 +78,14 @@ void SensorService::SensorEventConnection::resetWakeLockRefCount() {

void SensorService::SensorEventConnection::dump(String8& result) {
    Mutex::Autolock _l(mConnectionLock);
    result.appendFormat("\tOperating Mode: %s\n",mDataInjectionMode ? "DATA_INJECTION" : "NORMAL");
    result.appendFormat("\tOperating Mode: ");
    if (!mService->isWhiteListedPackage(getPackageName())) {
        result.append("RESTRICTED\n");
    } else if (mDataInjectionMode) {
        result.append("DATA_INJECTION\n");
    } else {
        result.append("NORMAL\n");
    }
    result.appendFormat("\t %s | WakeLockRefCount %d | uid %d | cache size %d | "
            "max cache size %d\n", mPackageName.string(), mWakeLockRefCount, mUid, mCacheSize,
            mMaxCacheSize);
+7 −4
Original line number Diff line number Diff line
@@ -441,13 +441,16 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) {
            }

            result.append("Active sensors:\n");
            SensorDevice& dev = SensorDevice::getInstance();
            for (size_t i=0 ; i<mActiveSensors.size() ; i++) {
                int handle = mActiveSensors.keyAt(i);
                if (dev.isSensorActive(handle)) {
                    result.appendFormat("%s (handle=0x%08x, connections=%zu)\n",
                            getSensorName(handle).string(),
                            handle,
                            mActiveSensors.valueAt(i)->getNumConnections());
                }
            }

            result.appendFormat("Socket Buffer size = %zd events\n",
                                mSocketBufferSize/sizeof(sensors_event_t));