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

Commit 278a8b0c authored by Joy Babafemi's avatar Joy Babafemi Committed by Roshan Pius
Browse files

DO NOT MERGE: Persist UWB State in AOSP stack.

(Cherry-picked from sc-qpr branch)

Test: Manual
Bug: 191608501
Bug: 212462949
Change-Id: Ib3ff55ab509b5794e2ed0aa0b3a805a6baee8246
parent 272775d3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ public class UwbServiceImplTest {
        MockitoAnnotations.initMocks(this);
        when(mUwbInjector.getVendorService()).thenReturn(mVendorService);
        when(mUwbInjector.checkUwbRangingPermissionForDataDelivery(any(), any())).thenReturn(true);
        when(mUwbInjector.isPersistedUwbStateEnabled()).thenReturn(true);
        when(mVendorService.asBinder()).thenReturn(mVendorServiceBinder);
        mUwbServiceImpl = new UwbServiceImpl(mContext, mUwbInjector);
    }
+15 −0
Original line number Diff line number Diff line
@@ -21,10 +21,13 @@ import static android.content.PermissionChecker.PERMISSION_GRANTED;

import android.annotation.NonNull;
import android.content.AttributionSource;
import android.content.ContentResolver;
import android.content.Context;
import android.content.PermissionChecker;
import android.os.IBinder;
import android.os.ServiceManager;
import android.provider.Settings;
import android.uwb.AdapterState;
import android.uwb.IUwbAdapter;


@@ -80,4 +83,16 @@ public class UwbInjector {
                mContext, UWB_RANGING, -1, attributionSource, message);
        return permissionCheckResult == PERMISSION_GRANTED;
    }

    /** Returns true if UWB state saved in Settings is enabled. */
    public boolean isPersistedUwbStateEnabled() {
        final ContentResolver cr = mContext.getContentResolver();
        try {
            return Settings.Global.getInt(cr, Settings.Global.UWB_ENABLED)
                    == AdapterState.STATE_ENABLED_ACTIVE;
        } catch (Settings.SettingNotFoundException e) {
            Settings.Global.putInt(cr, Settings.Global.UWB_ENABLED, AdapterState.STATE_DISABLED);
            return false;
        }
    }
}
+13 −1
Original line number Diff line number Diff line
@@ -18,13 +18,16 @@ package com.android.server.uwb;

import android.annotation.NonNull;
import android.content.AttributionSource;
import android.content.ContentResolver;
import android.content.Context;
import android.os.Binder;
import android.os.IBinder;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.provider.Settings;
import android.util.ArrayMap;
import android.util.Log;
import android.uwb.AdapterState;
import android.uwb.IUwbAdapter;
import android.uwb.IUwbAdapterStateCallbacks;
import android.uwb.IUwbRangingCallbacks;
@@ -225,13 +228,15 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec
        mVendorUwbAdapter = null;
    }

    private synchronized IUwbAdapter getVendorUwbAdapter() throws IllegalStateException {
    private synchronized IUwbAdapter getVendorUwbAdapter()
            throws IllegalStateException, RemoteException {
        if (mVendorUwbAdapter != null) return mVendorUwbAdapter;
        mVendorUwbAdapter = mUwbInjector.getVendorService();
        if (mVendorUwbAdapter == null) {
            throw new IllegalStateException("No vendor service found!");
        }
        Log.i(TAG, "Retrieved vendor service");
        mVendorUwbAdapter.setEnabled(mUwbInjector.isPersistedUwbStateEnabled());
        linkToVendorServiceDeath();
        return mVendorUwbAdapter;
    }
@@ -320,6 +325,13 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec

    @Override
    public synchronized void setEnabled(boolean enabled) throws RemoteException {
        persistUwbState(enabled);
        getVendorUwbAdapter().setEnabled(enabled);
    }

    private void persistUwbState(boolean enabled) {
        final ContentResolver cr = mContext.getContentResolver();
        int state = enabled ? AdapterState.STATE_ENABLED_ACTIVE : AdapterState.STATE_DISABLED;
        Settings.Global.putInt(cr, Settings.Global.UWB_ENABLED, state);
    }
}