diff options
| author | Riddle Hsu <riddlehsu@google.com> | 2020-12-07 18:22:48 +0800 |
|---|---|---|
| committer | Riddle Hsu <riddlehsu@google.com> | 2020-12-08 13:10:10 +0800 |
| commit | f90b2d46100ebe1d9cd8f0e6039243c3fd5baab1 (patch) | |
| tree | 5de80cd1698d0a6fe16c6d00b44caee1ba3c7d62 /core/java | |
| parent | d6cd319fd8e18dd8daaa8891dd054a410240b129 (diff) | |
Move launched activity info getter to ActivityClientController
- Add getLaunchedFromUid and getLaunchedFromPackage into Activity
because they are used in several places.
- Move getActivityClassForToken to ActivityTaskManagerInternal#
getActivityName because it is only used in system server.
- Remove getPackageForToken because it is no longer used.
Bug: 174041144
Bug: 174040691
Test: CtsWindowManagerDeviceTestCases
Change-Id: Iac1581ac2271baf1ab1625ced6cc1f42bf05eaf5
Diffstat (limited to 'core/java')
9 files changed, 49 insertions, 76 deletions
diff --git a/core/java/android/accounts/ChooseAccountActivity.java b/core/java/android/accounts/ChooseAccountActivity.java index 4af22bfac92d..b27d9cda9f97 100644 --- a/core/java/android/accounts/ChooseAccountActivity.java +++ b/core/java/android/accounts/ChooseAccountActivity.java @@ -16,16 +16,12 @@ package android.accounts; import android.app.Activity; -import android.app.ActivityManager; -import android.app.ActivityTaskManager; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.os.IBinder; import android.os.Parcelable; -import android.os.RemoteException; import android.os.Process; import android.os.UserHandle; import android.util.Log; @@ -71,15 +67,8 @@ public class ChooseAccountActivity extends Activity { return; } - try { - IBinder activityToken = getActivityToken(); - mCallingUid = ActivityTaskManager.getService().getLaunchedFromUid(activityToken); - mCallingPackage = ActivityTaskManager.getService().getLaunchedFromPackage( - activityToken); - } catch (RemoteException re) { - // Couldn't figure out caller details - Log.w(getClass().getSimpleName(), "Unable to get caller identity \n" + re); - } + mCallingUid = getLaunchedFromUid(); + mCallingPackage = getLaunchedFromPackage(); if (UserHandle.isSameApp(mCallingUid, Process.SYSTEM_UID) && getIntent().getStringExtra(AccountManager.KEY_ANDROID_PACKAGE_NAME) != null) { diff --git a/core/java/android/accounts/ChooseTypeAndAccountActivity.java b/core/java/android/accounts/ChooseTypeAndAccountActivity.java index 4b4ef002ae06..a2464d54f780 100644 --- a/core/java/android/accounts/ChooseTypeAndAccountActivity.java +++ b/core/java/android/accounts/ChooseTypeAndAccountActivity.java @@ -15,16 +15,12 @@ */ package android.accounts; -import android.app.ActivityTaskManager; import com.google.android.collect.Sets; import android.app.Activity; -import android.app.ActivityManager; import android.content.Intent; import android.os.Bundle; -import android.os.IBinder; import android.os.Parcelable; -import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; @@ -144,22 +140,13 @@ public class ChooseTypeAndAccountActivity extends Activity + savedInstanceState + ")"); } - String message = null; - - try { - IBinder activityToken = getActivityToken(); - mCallingUid = ActivityTaskManager.getService().getLaunchedFromUid(activityToken); - mCallingPackage = ActivityTaskManager.getService().getLaunchedFromPackage( - activityToken); - if (mCallingUid != 0 && mCallingPackage != null) { - Bundle restrictions = UserManager.get(this) - .getUserRestrictions(new UserHandle(UserHandle.getUserId(mCallingUid))); - mDisallowAddAccounts = - restrictions.getBoolean(UserManager.DISALLOW_MODIFY_ACCOUNTS, false); - } - } catch (RemoteException re) { - // Couldn't figure out caller details - Log.w(getClass().getSimpleName(), "Unable to get caller identity \n" + re); + mCallingUid = getLaunchedFromUid(); + mCallingPackage = getLaunchedFromPackage(); + if (mCallingUid != 0 && mCallingPackage != null) { + Bundle restrictions = UserManager.get(this) + .getUserRestrictions(new UserHandle(UserHandle.getUserId(mCallingUid))); + mDisallowAddAccounts = + restrictions.getBoolean(UserManager.DISALLOW_MODIFY_ACCOUNTS, false); } // save some items we use frequently diff --git a/core/java/android/accounts/GrantCredentialsPermissionActivity.java b/core/java/android/accounts/GrantCredentialsPermissionActivity.java index 5dc6e602e5d6..74dae0ecceb7 100644 --- a/core/java/android/accounts/GrantCredentialsPermissionActivity.java +++ b/core/java/android/accounts/GrantCredentialsPermissionActivity.java @@ -16,18 +16,14 @@ package android.accounts; import android.app.Activity; -import android.app.ActivityTaskManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Resources; import android.os.Bundle; -import android.os.IBinder; import android.os.Process; -import android.os.RemoteException; import android.os.UserHandle; import android.text.TextUtils; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; @@ -85,13 +81,7 @@ public class GrantCredentialsPermissionActivity extends Activity implements View return; } - try { - IBinder activityToken = getActivityToken(); - mCallingUid = ActivityTaskManager.getService().getLaunchedFromUid(activityToken); - } catch (RemoteException re) { - // Couldn't figure out caller details - Log.w(getClass().getSimpleName(), "Unable to get caller identity \n" + re); - } + mCallingUid = getLaunchedFromUid(); if (!UserHandle.isSameApp(mCallingUid, Process.SYSTEM_UID) && mCallingUid != mUid) { setResult(Activity.RESULT_CANCELED); diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index f92768a28db1..d8cb7a68753b 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -6230,6 +6230,23 @@ public class Activity extends ContextThemeWrapper } /** + * Returns the uid who started this activity. + * @hide + */ + public int getLaunchedFromUid() { + return ActivityClient.getInstance().getLaunchedFromUid(getActivityToken()); + } + + /** + * Returns the package who started this activity. + * @hide + */ + @Nullable + public String getLaunchedFromPackage() { + return ActivityClient.getInstance().getLaunchedFromPackage(getActivityToken()); + } + + /** * Control whether this activity's main window is visible. This is intended * only for the special case of an activity that is not going to show a * UI itself, but can't just finish prior to onResume() because it needs diff --git a/core/java/android/app/ActivityClient.java b/core/java/android/app/ActivityClient.java index 84ecd24b8c55..77fdeb5fa183 100644 --- a/core/java/android/app/ActivityClient.java +++ b/core/java/android/app/ActivityClient.java @@ -221,6 +221,22 @@ public class ActivityClient { } } + public int getLaunchedFromUid(IBinder token) { + try { + return getActivityClientController().getLaunchedFromUid(token); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + public String getLaunchedFromPackage(IBinder token) { + try { + return getActivityClientController().getLaunchedFromPackage(token); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + Bundle getActivityOptions(IBinder token) { try { return getActivityClientController().getActivityOptions(token); diff --git a/core/java/android/app/IActivityClientController.aidl b/core/java/android/app/IActivityClientController.aidl index f9449f241545..e1e0a8a534a8 100644 --- a/core/java/android/app/IActivityClientController.aidl +++ b/core/java/android/app/IActivityClientController.aidl @@ -58,6 +58,8 @@ interface IActivityClientController { int getTaskForActivity(in IBinder token, in boolean onlyRoot); ComponentName getCallingActivity(in IBinder token); String getCallingPackage(in IBinder token); + int getLaunchedFromUid(in IBinder token); + String getLaunchedFromPackage(in IBinder token); Bundle getActivityOptions(in IBinder token); void setRequestedOrientation(in IBinder token, int requestedOrientation); diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl index 4b2557389382..fabce459afcc 100644 --- a/core/java/android/app/IActivityTaskManager.aidl +++ b/core/java/android/app/IActivityTaskManager.aidl @@ -159,8 +159,6 @@ interface IActivityTaskManager { int userId); boolean isTopActivityImmersive(); ActivityManager.TaskDescription getTaskDescription(int taskId); - int getLaunchedFromUid(in IBinder activityToken); - String getLaunchedFromPackage(in IBinder activityToken); void reportAssistContextExtras(in IBinder assistToken, in Bundle extras, in AssistStructure structure, in AssistContent content, in Uri referrer); @@ -257,8 +255,6 @@ interface IActivityTaskManager { * etc. */ void keyguardGoingAway(int flags); - ComponentName getActivityClassForToken(in IBinder token); - String getPackageForToken(in IBinder token); void suppressResizeConfigChanges(boolean suppress); boolean moveTopActivityToPinnedRootTask(int rootTaskId, in Rect bounds); diff --git a/core/java/com/android/internal/app/IntentForwarderActivity.java b/core/java/com/android/internal/app/IntentForwarderActivity.java index 3e1fa1d5fe59..0f37dc5949f9 100644 --- a/core/java/com/android/internal/app/IntentForwarderActivity.java +++ b/core/java/com/android/internal/app/IntentForwarderActivity.java @@ -24,7 +24,6 @@ import static com.android.internal.app.ResolverActivity.EXTRA_SELECTED_PROFILE; import android.annotation.Nullable; import android.annotation.StringRes; import android.app.Activity; -import android.app.ActivityTaskManager; import android.app.ActivityThread; import android.app.AppGlobals; import android.app.admin.DevicePolicyManager; @@ -199,18 +198,8 @@ public class IntentForwarderActivity extends Activity { /* ignoreTargetSecurity= */ false, userId); } catch (RuntimeException e) { - int launchedFromUid = -1; - String launchedFromPackage = "?"; - try { - launchedFromUid = ActivityTaskManager.getService().getLaunchedFromUid( - getActivityToken()); - launchedFromPackage = ActivityTaskManager.getService() - .getLaunchedFromPackage(getActivityToken()); - } catch (RemoteException ignored) { - } - - Slog.wtf(TAG, "Unable to launch as UID " + launchedFromUid + " package " - + launchedFromPackage + ", while running in " + Slog.wtf(TAG, "Unable to launch as UID " + getLaunchedFromUid() + " package " + + getLaunchedFromPackage() + ", while running in " + ActivityThread.currentProcessName(), e); } } diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 2dbcbb5cf3c4..5416d9ff4cc7 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -350,13 +350,7 @@ public class ResolverActivity extends Activity implements // from managed profile to owner or other way around. setProfileSwitchMessageId(intent.getContentUserHint()); - try { - mLaunchedFromUid = ActivityTaskManager.getService().getLaunchedFromUid( - getActivityToken()); - } catch (RemoteException e) { - mLaunchedFromUid = -1; - } - + mLaunchedFromUid = getLaunchedFromUid(); if (mLaunchedFromUid < 0 || UserHandle.isIsolated(mLaunchedFromUid)) { // Gulp! finish(); @@ -1300,15 +1294,8 @@ public class ResolverActivity extends Activity implements maybeLogCrossProfileTargetLaunch(cti, currentUserHandle); } } catch (RuntimeException e) { - String launchedFromPackage; - try { - launchedFromPackage = ActivityTaskManager.getService().getLaunchedFromPackage( - getActivityToken()); - } catch (RemoteException e2) { - launchedFromPackage = "??"; - } Slog.wtf(TAG, "Unable to launch as uid " + mLaunchedFromUid - + " package " + launchedFromPackage + ", while running in " + + " package " + getLaunchedFromPackage() + ", while running in " + ActivityThread.currentProcessName(), e); } } |
