From 759a6d44db0009863dcae4a78f7c05db8bc19858 Mon Sep 17 00:00:00 2001 From: Julius D'souza Date: Wed, 15 May 2019 11:16:32 -0700 Subject: [PATCH] SystemServer: add Telephony guards * Add FEATURE_TELEPHONY checks for telephony services * Add FEATURE_MICROPHONE check for TelecomLoaderService Bug: 132729373 Change-Id: Idcafc61ec951b6fcb9a626f08d4837d7af26ff01 Signed-off-by: Julius D'souza (cherry picked from commit 2dc233a07dce898ae5706ea4940936d0fc990fef) --- .../java/com/android/server/SystemServer.java | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index dae12754904fa..9f3ac0b242fd7 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -1431,13 +1431,18 @@ public final class SystemServer implements Dumpable { ServiceManager.addService("scheduling_policy", new SchedulingPolicyService()); t.traceEnd(); - t.traceBegin("StartTelecomLoaderService"); - mSystemServiceManager.startService(TelecomLoaderService.class); - t.traceEnd(); + // TelecomLoader hooks into classes with defined HFP logic, + // so check for either telephony or microphone. + if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE) || + mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { + t.traceBegin("StartTelecomLoaderService"); + mSystemServiceManager.startService(TelecomLoaderService.class); + t.traceEnd(); + } t.traceBegin("StartTelephonyRegistry"); telephonyRegistry = new TelephonyRegistry( - context, new TelephonyRegistry.ConfigurationProvider()); + context, new TelephonyRegistry.ConfigurationProvider()); ServiceManager.addService("telephony.registry", telephonyRegistry); t.traceEnd(); @@ -2524,10 +2529,12 @@ public final class SystemServer implements Dumpable { mActivityManagerService.enterSafeMode(); } - // MMS service broker - t.traceBegin("StartMmsService"); - mmsService = mSystemServiceManager.startService(MmsServiceBroker.class); - t.traceEnd(); + if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { + // MMS service broker + t.traceBegin("StartMmsService"); + mmsService = mSystemServiceManager.startService(MmsServiceBroker.class); + t.traceEnd(); + } if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_AUTOFILL)) { t.traceBegin("StartAutoFillService"); @@ -2913,9 +2920,7 @@ public final class SystemServer implements Dumpable { t.traceEnd(); t.traceBegin("MakeTelephonyRegistryReady"); try { - if (telephonyRegistryF != null) { - telephonyRegistryF.systemRunning(); - } + if (telephonyRegistryF != null) telephonyRegistryF.systemRunning(); } catch (Throwable e) { reportWtf("Notifying TelephonyRegistry running", e); } @@ -2929,15 +2934,15 @@ public final class SystemServer implements Dumpable { reportWtf("Notifying MediaRouterService running", e); } t.traceEnd(); - t.traceBegin("MakeMmsServiceReady"); - try { - if (mmsServiceF != null) { - mmsServiceF.systemRunning(); + if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { + t.traceBegin("MakeMmsServiceReady"); + try { + if (mmsServiceF != null) mmsServiceF.systemRunning(); + } catch (Throwable e) { + reportWtf("Notifying MmsService running", e); } - } catch (Throwable e) { - reportWtf("Notifying MmsService running", e); + t.traceEnd(); } - t.traceEnd(); t.traceBegin("IncidentDaemonReady"); try {