From b755291e65f7cf928221c4d2c718b6b9c152e461 Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Fri, 22 Sep 2017 15:32:06 +0100 Subject: [PATCH] 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 1281f39f86a8e4d9950581fb1f15245843856c23) --- core/java/android/app/timezone/RulesUpdaterContract.java | 3 +-- .../core/java/com/android/server/timezone/IntentHelperImpl.java | 5 ++++- .../com/android/server/timezone/PackageTrackerHelperImpl.java | 8 +++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/core/java/android/app/timezone/RulesUpdaterContract.java b/core/java/android/app/timezone/RulesUpdaterContract.java index 9c62f46b6e36..1f354af3f0f8 100644 --- a/core/java/android/app/timezone/RulesUpdaterContract.java +++ b/core/java/android/app/timezone/RulesUpdaterContract.java @@ -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); } } diff --git a/services/core/java/com/android/server/timezone/IntentHelperImpl.java b/services/core/java/com/android/server/timezone/IntentHelperImpl.java index bc0f6e4b283b..6e6259d902dc 100644 --- a/services/core/java/com/android/server/timezone/IntentHelperImpl.java +++ b/services/core/java/com/android/server/timezone/IntentHelperImpl.java @@ -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. */ diff --git a/services/core/java/com/android/server/timezone/PackageTrackerHelperImpl.java b/services/core/java/com/android/server/timezone/PackageTrackerHelperImpl.java index 2e0c21bf007d..b89dd3838ae9 100644 --- a/services/core/java/com/android/server/timezone/PackageTrackerHelperImpl.java +++ b/services/core/java/com/android/server/timezone/PackageTrackerHelperImpl.java @@ -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 = mPackageManager.queryBroadcastReceivers(intent, flags); + List 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); -- 2.11.0