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

Commit 37b78dcd authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Careful process validation for unaware providers." into nyc-dev...

Merge "Merge "Careful process validation for unaware providers." into nyc-dev am: 678dba73" into nyc-mr1-dev
parents e351f281 27deabaf
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -10170,6 +10170,7 @@ public final class ActivityManagerService extends ActivityManagerNative
            int N = providers.size();
            app.pubProviders.ensureCapacity(N + app.pubProviders.size());
            for (int i=0; i<N; i++) {
                // TODO: keep logic in sync with installEncryptionUnawareProviders
                ProviderInfo cpi =
                    (ProviderInfo)providers.get(i);
                boolean singleton = isSingleton(cpi.processName, cpi.applicationInfo,
@@ -11150,12 +11151,18 @@ public final class ActivityManagerService extends ActivityManagerNative
                            final PackageInfo pkgInfo = AppGlobals.getPackageManager()
                                    .getPackageInfo(pkgName, matchFlags, userId);
                            if (pkgInfo != null && !ArrayUtils.isEmpty(pkgInfo.providers)) {
                                for (ProviderInfo provInfo : pkgInfo.providers) {
                                    if (Objects.equals(provInfo.processName, app.processName)) {
                                        Log.v(TAG, "Installing " + provInfo);
                                        app.thread.scheduleInstallProvider(provInfo);
                                for (ProviderInfo pi : pkgInfo.providers) {
                                    // TODO: keep in sync with generateApplicationProvidersLocked
                                    final boolean processMatch = Objects.equals(pi.processName,
                                            app.processName) || pi.multiprocess;
                                    final boolean userMatch = isSingleton(pi.processName,
                                            pi.applicationInfo, pi.name, pi.flags)
                                                    ? (app.userId == UserHandle.USER_SYSTEM) : true;
                                    if (processMatch && userMatch) {
                                        Log.v(TAG, "Installing " + pi);
                                        app.thread.scheduleInstallProvider(pi);
                                    } else {
                                        Log.v(TAG, "Skipping " + provInfo);
                                        Log.v(TAG, "Skipping " + pi);
                                    }
                                }
                            }