diff options
author | Alex Lin <wwl@google.com> | 2019-11-05 12:52:11 -0800 |
---|---|---|
committer | Alex Lin <wwl@google.com> | 2020-01-31 14:05:58 -0800 |
commit | d0c492f00f10627886d4ad31e0618c77b69ca7e5 (patch) | |
tree | b365dea105838a04f48356efca0ecc9a22afde1e | |
parent | 62eb925376a79ee73af9a8c842ab14ccc07f36a2 (diff) |
Add public API for EuiccService log dump
Add public APi to EuiccService which allows the connected LPA to dump
out the logs when a bug report is triggered.
Bug: 62881779
Test: manually tested by extracting bug report to see if the logs are
present and atest EuiccServiceTest
Change-Id: I0869b95d12ab87a5e2a255015549191040d9daa7
Merged-In: I0869b95d12ab87a5e2a255015549191040d9daa7
4 files changed, 51 insertions, 0 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index b60d321e61e8..60b5af9f2429 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7722,6 +7722,7 @@ package android.service.euicc { public abstract class EuiccService extends android.app.Service { ctor public EuiccService(); + method public void dump(@NonNull java.io.PrintWriter); method @CallSuper public android.os.IBinder onBind(android.content.Intent); method public abstract int onDeleteSubscription(int, String); method public android.service.euicc.DownloadSubscriptionResult onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean, @Nullable android.os.Bundle); diff --git a/core/java/android/service/euicc/IEuiccServiceDumpResultCallback.aidl b/core/java/android/service/euicc/IEuiccServiceDumpResultCallback.aidl new file mode 100644 index 000000000000..ea55ebbadd88 --- /dev/null +++ b/core/java/android/service/euicc/IEuiccServiceDumpResultCallback.aidl @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2017 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.service.euicc; + +/** @hide */ +oneway interface IEuiccServiceDumpResultCallback { + void onComplete(in String logs); +}
\ No newline at end of file diff --git a/telephony/java/android/service/euicc/EuiccService.java b/telephony/java/android/service/euicc/EuiccService.java index bc6a9e848e2a..ef11f469d9a0 100644 --- a/telephony/java/android/service/euicc/EuiccService.java +++ b/telephony/java/android/service/euicc/EuiccService.java @@ -34,6 +34,8 @@ import android.telephony.euicc.EuiccInfo; import android.telephony.euicc.EuiccManager.OtaStatus; import android.util.Log; +import java.io.PrintWriter; +import java.io.StringWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.concurrent.LinkedBlockingQueue; @@ -583,6 +585,13 @@ public abstract class EuiccService extends Service { public abstract int onRetainSubscriptionsForFactoryReset(int slotId); /** + * Dump to a provided printWriter. + */ + public void dump(@NonNull PrintWriter printWriter) { + printWriter.println("The connected LPA does not implement EuiccService#dump()"); + } + + /** * Wrapper around IEuiccService that forwards calls to implementations of {@link EuiccService}. */ private class IEuiccServiceWrapper extends IEuiccService.Stub { @@ -834,5 +843,22 @@ public abstract class EuiccService extends Service { } }); } + + @Override + public void dump(IEuiccServiceDumpResultCallback callback) throws RemoteException { + mExecutor.execute(new Runnable() { + @Override + public void run() { + try { + final StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw); + EuiccService.this.dump(pw); + callback.onComplete(sw.toString()); + } catch (RemoteException e) { + // Can't communicate with the phone process; ignore. + } + } + }); + } } } diff --git a/telephony/java/android/service/euicc/IEuiccService.aidl b/telephony/java/android/service/euicc/IEuiccService.aidl index 2acc47aae919..bb7b569f17f9 100644 --- a/telephony/java/android/service/euicc/IEuiccService.aidl +++ b/telephony/java/android/service/euicc/IEuiccService.aidl @@ -29,6 +29,7 @@ import android.service.euicc.IOtaStatusChangedCallback; import android.service.euicc.IRetainSubscriptionsForFactoryResetCallback; import android.service.euicc.ISwitchToSubscriptionCallback; import android.service.euicc.IUpdateSubscriptionNicknameCallback; +import android.service.euicc.IEuiccServiceDumpResultCallback; import android.telephony.euicc.DownloadableSubscription; import android.os.Bundle; @@ -56,4 +57,5 @@ oneway interface IEuiccService { int slotIndex, int options, in IEraseSubscriptionsCallback callback); void retainSubscriptionsForFactoryReset( int slotId, in IRetainSubscriptionsForFactoryResetCallback callback); + void dump(in IEuiccServiceDumpResultCallback callback); }
\ No newline at end of file |