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
Merged-In: Idb754f3e1aa3830ba1ada8ef5740f9f7340f03d5
(cherry picked from commit 1281f39f86)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user