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

Commit 1281f39f authored by Neil Fuller's avatar Neil Fuller
Browse files

Be more explicit about users

Be more explicit about users executing processes in the time
zone updates code.The code was already running everything as the
system user but now that's more explicit / by design.

To service unit tests:
make -j30 FrameworksServicesTests
adb install -r -g "${ANDROID_PRODUCT_OUT}/data/app/FrameworksServicesTests/FrameworksServicesTests.apk"
adb shell am instrument -e package com.android.server.timezone -w com.android.frameworks.servicestests \
  "com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner"

Bug: 64111659
Test: Unit tests: See above
Test: Manual testing installing updates as secondary device user
Test: PTS: run pts -m PtsTimeZoneTestCases
Change-Id: Idb754f3e1aa3830ba1ada8ef5740f9f7340f03d5
parent 8c85e5ff
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -83,8 +83,7 @@ public final class RulesUpdaterContract {
        Intent intent = createUpdaterIntent(updaterAppPackageName);
        intent.putExtra(EXTRA_CHECK_TOKEN, checkTokenBytes);
        context.sendBroadcastAsUser(
                intent,
                UserHandle.of(UserHandle.myUserId()),
                intent, UserHandle.SYSTEM,
                RulesUpdaterContract.UPDATE_TIME_ZONE_RULES_PERMISSION);
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.PatternMatcher;
import android.os.UserHandle;
import android.util.Slog;

/**
@@ -76,7 +77,9 @@ final class IntentHelperImpl implements IntentHelper {
        // not expected to need local data.

        Receiver packageUpdateReceiver = new Receiver(packageTracker);
        mContext.registerReceiver(packageUpdateReceiver, packageIntentFilter);
        mContext.registerReceiverAsUser(
                packageUpdateReceiver, UserHandle.SYSTEM, packageIntentFilter,
                null /* broadcastPermission */, null /* default handler */);
    }

    /** Sends an intent to trigger an update check. */
+5 −3
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.os.SystemClock;
import android.os.UserHandle;
import android.util.Slog;

import java.util.List;
@@ -114,8 +115,8 @@ final class PackageTrackerHelperImpl implements ClockHelper, ConfigHelper, Packa
    @Override
    public boolean contentProviderRegistered(String authority, String requiredPackageName) {
        int flags = PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
        ProviderInfo providerInfo =
                mPackageManager.resolveContentProvider(authority, flags);
        ProviderInfo providerInfo = mPackageManager.resolveContentProviderAsUser(
                authority, flags, UserHandle.SYSTEM.getIdentifier());
        if (providerInfo == null) {
            Slog.i(TAG, "contentProviderRegistered: No content provider registered with authority="
                    + authority);
@@ -136,7 +137,8 @@ final class PackageTrackerHelperImpl implements ClockHelper, ConfigHelper, Packa
            throws PackageManager.NameNotFoundException {

        int flags = PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
        List<ResolveInfo> resolveInfo = mPackageManager.queryBroadcastReceivers(intent, flags);
        List<ResolveInfo> resolveInfo = mPackageManager.queryBroadcastReceiversAsUser(
                intent, flags, UserHandle.SYSTEM);
        if (resolveInfo.size() != 1) {
            Slog.i(TAG, "receiverRegistered: Zero or multiple broadcast receiver registered for"
                    + " intent=" + intent + ", found=" + resolveInfo);