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

Commit 6a193b5d authored by Stanislav Zholnin's avatar Stanislav Zholnin
Browse files

Do not hold AppOpsService lock while calling DeviceConfig

Fix: 187095462
Test: locally tested
Change-Id: I8916ee89cc9862368c11b7648c67d27441fef3d8
parent 0f314d68
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -150,17 +150,20 @@ final class DiscreteRegistry {
    }

    void systemReady() {
        synchronized (mOnDiskLock) {
            mDiscreteAccessDir = new File(new File(Environment.getDataSystemDirectory(), "appops"),
                    "discrete");
            createDiscreteAccessDirLocked();
            mDiscreteOps = new DiscreteOps();
        }
        DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_PRIVACY,
                AsyncTask.THREAD_POOL_EXECUTOR, (DeviceConfig.Properties p) -> {
                    setDiscreteHistoryParameters(p);
                });
        setDiscreteHistoryParameters(DeviceConfig.getProperties(DeviceConfig.NAMESPACE_PRIVACY));
        synchronized (mOnDiskLock) {
            synchronized (mInMemoryLock) {
                mDiscreteAccessDir = new File(
                        new File(Environment.getDataSystemDirectory(), "appops"),
                        "discrete");
                createDiscreteAccessDirLocked();
                mDiscreteOps = new DiscreteOps();
            }
        }
    }

    private void setDiscreteHistoryParameters(DeviceConfig.Properties p) {
+1 −1
Original line number Diff line number Diff line
@@ -246,10 +246,10 @@ final class HistoricalRegistry {
                                    + " by which to push history on next write");
                        }
                    }
                    mDiscreteRegistry.systemReady();
                }
            }
        }
        mDiscreteRegistry.systemReady();
    }

    private boolean isPersistenceInitializedMLocked() {