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

Commit b6a486bf authored by James Mattis's avatar James Mattis
Browse files

Applying OEM network pref to all users

Updating handleSetOemNetworkPreference so that the given policy is
applied to all users on the device. Additionally, remove uids for all
users/apps so that stale uids don't stay present after rematch. Finally,
small cleanup on how we deal with remote exceptions.

Bug: 181581017
Bug: 176494815
Test: atest FrameworksNetTests
atest NetworkStackTests
atest FrameworksNetIntegrationTests
atest NetworkStackIntegrationTests
atest CtsNetTestCasesLatestSdk

Change-Id: I214717ee0c78cfe8322e551c2c2e9dc01c0242b2
parent 45d586c6
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -5038,10 +5038,16 @@ public class ConnectivityService extends IConnectivityManager.Stub

    private void onUserAdded(UserHandle user) {
        mPermissionMonitor.onUserAdded(user);
        if (mOemNetworkPreferences.getNetworkPreferences().size() > 0) {
            handleSetOemNetworkPreference(mOemNetworkPreferences, null);
        }
    }

    private void onUserRemoved(UserHandle user) {
        mPermissionMonitor.onUserRemoved(user);
        if (mOemNetworkPreferences.getNetworkPreferences().size() > 0) {
            handleSetOemNetworkPreference(mOemNetworkPreferences, null);
        }
    }

    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@@ -9065,7 +9071,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
            try {
                listener.onComplete();
            } catch (RemoteException e) {
                loge("handleMessage.EVENT_SET_OEM_NETWORK_PREFERENCE failed", e);
                loge("Can't send onComplete in handleSetOemNetworkPreference", e);
            }
        }
    }
@@ -9184,6 +9190,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
                @NonNull final OemNetworkPreferences preference) {
            final SparseArray<Set<Integer>> uids = new SparseArray<>();
            final PackageManager pm = mContext.getPackageManager();
            final List<UserHandle> users =
                    mContext.getSystemService(UserManager.class).getUserHandles(true);
            if (null == users || users.size() == 0) {
                if (VDBG || DDBG) {
                    log("No users currently available for setting the OEM network preference.");
                }
                return uids;
            }
            for (final Map.Entry<String, Integer> entry :
                    preference.getNetworkPreferences().entrySet()) {
                @OemNetworkPreferences.OemNetworkPreference final int pref = entry.getValue();
@@ -9192,7 +9206,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
                    if (!uids.contains(pref)) {
                        uids.put(pref, new ArraySet<>());
                    }
                    uids.get(pref).add(uid);
                    for (final UserHandle ui : users) {
                        // Add the rules for all users as this policy is device wide.
                        uids.get(pref).add(UserHandle.getUid(ui, uid));
                    }
                } catch (PackageManager.NameNotFoundException e) {
                    // Although this may seem like an error scenario, it is ok that uninstalled
                    // packages are sent on a network preference as the system will watch for
+189 −27

File changed.

Preview size limit exceeded, changes collapsed.