From 68f666693a465eb8a66d9252b7b7ac035b9f0b7b Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Thu, 16 Mar 2017 18:32:21 +0000 Subject: [PATCH] Add (disabled) time zone update system server impl This commit builds on top of prior API commits. It adds code to the system server, but in a disabled way. The system server is responsible for monitoring two (configured) package names: one for the "updater app" (provided by the platform) and one for the "data app" (provided by the OEM). When either package changes the updater app is triggered via a privileged intent. The updater is then required to communicate with the data app and report back to the system server. Unit tests are included for the major components. To run: make -j30 FrameworksServicesTests adb install -r -g "out/target/product/angler/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" Test: See above. Bug: 31008728 Merged-In: I8f82cdcc2b574778a7e0d0184270f305b69ee17b Change-Id: I8f82cdcc2b574778a7e0d0184270f305b69ee17b --- .../android/app/SystemServiceRegistry.java | 8 + core/res/res/values/config.xml | 43 + core/res/res/values/symbols.xml | 6 + .../android/server/timezone/CheckToken.java | 98 ++ .../android/server/timezone/ClockHelper.java | 25 + .../android/server/timezone/ConfigHelper.java | 34 + .../server/timezone/FileDescriptorHelper.java | 30 + .../android/server/timezone/IntentHelper.java | 37 + .../server/timezone/IntentHelperImpl.java | 116 ++ .../server/timezone/PackageManagerHelper.java | 41 + .../server/timezone/PackageStatus.java | 89 + .../server/timezone/PackageStatusStorage.java | 336 ++++ .../server/timezone/PackageTracker.java | 504 ++++++ .../timezone/PackageTrackerHelperImpl.java | 154 ++ .../server/timezone/PackageVersions.java | 63 + .../server/timezone/PermissionHelper.java | 25 + .../server/timezone/RulesManagerService.java | 348 ++++ .../RulesManagerServiceHelperImpl.java | 59 + .../java/com/android/server/SystemServer.java | 9 + .../server/timezone/CheckTokenTest.java | 75 + .../timezone/PackageStatusStorageTest.java | 229 +++ .../server/timezone/PackageStatusTest.java | 53 + .../server/timezone/PackageTrackerTest.java | 1471 +++++++++++++++++ .../server/timezone/PackageVersionsTest.java | 47 + .../timezone/RulesManagerServiceTest.java | 924 +++++++++++ 25 files changed, 4824 insertions(+) create mode 100644 services/core/java/com/android/server/timezone/CheckToken.java create mode 100644 services/core/java/com/android/server/timezone/ClockHelper.java create mode 100644 services/core/java/com/android/server/timezone/ConfigHelper.java create mode 100644 services/core/java/com/android/server/timezone/FileDescriptorHelper.java create mode 100644 services/core/java/com/android/server/timezone/IntentHelper.java create mode 100644 services/core/java/com/android/server/timezone/IntentHelperImpl.java create mode 100644 services/core/java/com/android/server/timezone/PackageManagerHelper.java create mode 100644 services/core/java/com/android/server/timezone/PackageStatus.java create mode 100644 services/core/java/com/android/server/timezone/PackageStatusStorage.java create mode 100644 services/core/java/com/android/server/timezone/PackageTracker.java create mode 100644 services/core/java/com/android/server/timezone/PackageTrackerHelperImpl.java create mode 100644 services/core/java/com/android/server/timezone/PackageVersions.java create mode 100644 services/core/java/com/android/server/timezone/PermissionHelper.java create mode 100644 services/core/java/com/android/server/timezone/RulesManagerService.java create mode 100644 services/core/java/com/android/server/timezone/RulesManagerServiceHelperImpl.java create mode 100644 services/tests/servicestests/src/com/android/server/timezone/CheckTokenTest.java create mode 100644 services/tests/servicestests/src/com/android/server/timezone/PackageStatusStorageTest.java create mode 100644 services/tests/servicestests/src/com/android/server/timezone/PackageStatusTest.java create mode 100644 services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java create mode 100644 services/tests/servicestests/src/com/android/server/timezone/PackageVersionsTest.java create mode 100644 services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index ce019cac3772e..1e5ea26efcc73 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -26,6 +26,7 @@ import android.accounts.IAccountManager; import android.app.admin.DevicePolicyManager; import android.app.job.IJobScheduler; import android.app.job.JobScheduler; +import android.app.timezone.RulesManager; import android.app.trust.TrustManager; import android.app.usage.IUsageStatsManager; import android.app.usage.NetworkStatsManager; @@ -786,6 +787,13 @@ final class SystemServiceRegistry { return new ContextHubManager(ctx.getOuterContext(), ctx.mMainThread.getHandler().getLooper()); }}); + + registerService(Context.TIME_ZONE_RULES_MANAGER_SERVICE, RulesManager.class, + new CachedServiceFetcher() { + @Override + public RulesManager createService(ContextImpl ctx) { + return new RulesManager(ctx.getOuterContext()); + }}); } /** diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 589aa07d7f98b..22a1a36633428 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1282,6 +1282,49 @@ true + + false + + + false + + + + + + + + + + 300000 + + + 5 +