resolve merge conflicts of 55c0a66825 to stage-aosp-master
am: e01a7adf5a
Change-Id: I993dc856b8fe0f42d7ad5f766727be32d3d611fe
This commit is contained in:
@@ -103,6 +103,7 @@ java_library {
|
|||||||
"core/java/android/app/timedetector/ITimeDetectorService.aidl",
|
"core/java/android/app/timedetector/ITimeDetectorService.aidl",
|
||||||
"core/java/android/app/timezone/ICallback.aidl",
|
"core/java/android/app/timezone/ICallback.aidl",
|
||||||
"core/java/android/app/timezone/IRulesManager.aidl",
|
"core/java/android/app/timezone/IRulesManager.aidl",
|
||||||
|
"core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl",
|
||||||
"core/java/android/app/usage/ICacheQuotaService.aidl",
|
"core/java/android/app/usage/ICacheQuotaService.aidl",
|
||||||
"core/java/android/app/usage/IStorageStatsManager.aidl",
|
"core/java/android/app/usage/IStorageStatsManager.aidl",
|
||||||
"core/java/android/app/usage/IUsageStatsManager.aidl",
|
"core/java/android/app/usage/IUsageStatsManager.aidl",
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import android.app.job.JobScheduler;
|
|||||||
import android.app.slice.SliceManager;
|
import android.app.slice.SliceManager;
|
||||||
import android.app.timedetector.TimeDetector;
|
import android.app.timedetector.TimeDetector;
|
||||||
import android.app.timezone.RulesManager;
|
import android.app.timezone.RulesManager;
|
||||||
|
import android.app.timezonedetector.TimeZoneDetector;
|
||||||
import android.app.trust.TrustManager;
|
import android.app.trust.TrustManager;
|
||||||
import android.app.usage.IStorageStatsManager;
|
import android.app.usage.IStorageStatsManager;
|
||||||
import android.app.usage.IUsageStatsManager;
|
import android.app.usage.IUsageStatsManager;
|
||||||
@@ -1006,6 +1007,13 @@ final class SystemServiceRegistry {
|
|||||||
throws ServiceNotFoundException {
|
throws ServiceNotFoundException {
|
||||||
return new TimeDetector();
|
return new TimeDetector();
|
||||||
}});
|
}});
|
||||||
|
registerService(Context.TIME_ZONE_DETECTOR_SERVICE, TimeZoneDetector.class,
|
||||||
|
new CachedServiceFetcher<TimeZoneDetector>() {
|
||||||
|
@Override
|
||||||
|
public TimeZoneDetector createService(ContextImpl ctx)
|
||||||
|
throws ServiceNotFoundException {
|
||||||
|
return new TimeZoneDetector();
|
||||||
|
}});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package android.app.timezonedetector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* System private API to comunicate with time zone detector service.
|
||||||
|
*
|
||||||
|
* <p>Used by parts of the Android system with signals associated with the device's time zone to
|
||||||
|
* provide information to the Time Zone Detector Service.
|
||||||
|
*
|
||||||
|
* <p>Use the {@link android.app.timezonedetector.TimeZoneDetector} class rather than going through
|
||||||
|
* this Binder interface directly. See {@link android.app.timezonedetector.TimeZoneDetectorService}
|
||||||
|
* for more complete documentation.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* {@hide}
|
||||||
|
*/
|
||||||
|
interface ITimeZoneDetectorService {
|
||||||
|
void stubbedCall();
|
||||||
|
}
|
||||||
57
core/java/android/app/timezonedetector/TimeZoneDetector.java
Normal file
57
core/java/android/app/timezonedetector/TimeZoneDetector.java
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package android.app.timezonedetector;
|
||||||
|
|
||||||
|
import android.annotation.SystemService;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.os.ServiceManager;
|
||||||
|
import android.os.ServiceManager.ServiceNotFoundException;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The interface through which system components can send signals to the TimeZoneDetectorService.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemService(Context.TIME_ZONE_DETECTOR_SERVICE)
|
||||||
|
public final class TimeZoneDetector {
|
||||||
|
|
||||||
|
private static final String TAG = "timezonedetector.TimeZoneDetector";
|
||||||
|
private static final boolean DEBUG = false;
|
||||||
|
|
||||||
|
private final ITimeZoneDetectorService mITimeZoneDetectorService;
|
||||||
|
|
||||||
|
public TimeZoneDetector() throws ServiceNotFoundException {
|
||||||
|
mITimeZoneDetectorService = ITimeZoneDetectorService.Stub.asInterface(
|
||||||
|
ServiceManager.getServiceOrThrow(Context.TIME_ZONE_DETECTOR_SERVICE));
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Does nothing.
|
||||||
|
* TODO: Remove this when the service implementation is built out.
|
||||||
|
*/
|
||||||
|
public void stubbedCall() {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "stubbedCall called");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
mITimeZoneDetectorService.stubbedCall();
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3059,6 +3059,7 @@ public abstract class Context {
|
|||||||
CROSS_PROFILE_APPS_SERVICE,
|
CROSS_PROFILE_APPS_SERVICE,
|
||||||
//@hide: SYSTEM_UPDATE_SERVICE,
|
//@hide: SYSTEM_UPDATE_SERVICE,
|
||||||
//@hide: TIME_DETECTOR_SERVICE,
|
//@hide: TIME_DETECTOR_SERVICE,
|
||||||
|
//@hide: TIME_ZONE_DETECTOR_SERVICE,
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface ServiceName {}
|
public @interface ServiceName {}
|
||||||
@@ -4219,6 +4220,15 @@ public abstract class Context {
|
|||||||
*/
|
*/
|
||||||
public static final String TIME_DETECTOR_SERVICE = "time_detector";
|
public static final String TIME_DETECTOR_SERVICE = "time_detector";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use with {@link #getSystemService(String)} to retrieve an
|
||||||
|
* {@link android.app.timezonedetector.ITimeZoneDetectorService}.
|
||||||
|
* @hide
|
||||||
|
*
|
||||||
|
* @see #getSystemService(String)
|
||||||
|
*/
|
||||||
|
public static final String TIME_ZONE_DETECTOR_SERVICE = "time_zone_detector";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine whether the given permission is allowed for a particular
|
* Determine whether the given permission is allowed for a particular
|
||||||
* process and user ID running in the system.
|
* process and user ID running in the system.
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.server.timezonedetector;
|
||||||
|
|
||||||
|
import com.android.internal.util.DumpUtils;
|
||||||
|
import com.android.server.SystemService;
|
||||||
|
import android.app.timezonedetector.ITimeZoneDetectorService;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.Slog;
|
||||||
|
import java.io.FileDescriptor;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
|
||||||
|
public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub {
|
||||||
|
private static final String TAG = "timezonedetector.TimeZoneDetectorService";
|
||||||
|
|
||||||
|
public static class Lifecycle extends SystemService {
|
||||||
|
|
||||||
|
public Lifecycle(Context context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
TimeZoneDetectorService service = TimeZoneDetectorService.create(getContext());
|
||||||
|
// Publish the binder service so it can be accessed from other (appropriately
|
||||||
|
// permissioned) processes.
|
||||||
|
publishBinderService(Context.TIME_ZONE_DETECTOR_SERVICE, service);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Context mContext;
|
||||||
|
|
||||||
|
private static TimeZoneDetectorService create(Context context) {
|
||||||
|
return new TimeZoneDetectorService(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeZoneDetectorService(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stubbedCall() {
|
||||||
|
// Empty call for initial tests.
|
||||||
|
Slog.d(TAG, "stubbedCall() called");
|
||||||
|
// TODO: Remove when there are real methods.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
||||||
|
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
|
||||||
|
// TODO: Implement when there is state.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -231,6 +231,8 @@ public final class SystemServer {
|
|||||||
"com.android.internal.car.CarServiceHelperService";
|
"com.android.internal.car.CarServiceHelperService";
|
||||||
private static final String TIME_DETECTOR_SERVICE_CLASS =
|
private static final String TIME_DETECTOR_SERVICE_CLASS =
|
||||||
"com.android.server.timedetector.TimeDetectorService$Lifecycle";
|
"com.android.server.timedetector.TimeDetectorService$Lifecycle";
|
||||||
|
private static final String TIME_ZONE_DETECTOR_SERVICE_CLASS =
|
||||||
|
"com.android.server.timezonedetector.TimeZoneDetectorService$Lifecycle";
|
||||||
|
|
||||||
private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
|
private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
|
||||||
|
|
||||||
@@ -1246,6 +1248,14 @@ public final class SystemServer {
|
|||||||
}
|
}
|
||||||
traceEnd();
|
traceEnd();
|
||||||
|
|
||||||
|
traceBeginAndSlog("StartTimeZoneDetectorService");
|
||||||
|
try {
|
||||||
|
mSystemServiceManager.startService(TIME_ZONE_DETECTOR_SERVICE_CLASS);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
reportWtf("starting StartTimeZoneDetectorService service", e);
|
||||||
|
}
|
||||||
|
traceEnd();
|
||||||
|
|
||||||
if (!isWatch) {
|
if (!isWatch) {
|
||||||
traceBeginAndSlog("StartSearchManagerService");
|
traceBeginAndSlog("StartSearchManagerService");
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.server.timezonedetector;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.support.test.InstrumentationRegistry;
|
||||||
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit tests for the {@link TimeZoneDetectorService}.
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class TimeZoneDetectorServiceTest {
|
||||||
|
|
||||||
|
private TimeZoneDetectorService mTimeZoneDetectorService;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
final Context context = InstrumentationRegistry.getContext();
|
||||||
|
mTimeZoneDetectorService = new TimeZoneDetectorService(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStubbedCall() {
|
||||||
|
mTimeZoneDetectorService.stubbedCall();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user