summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorRiddle Hsu <riddlehsu@google.com>2020-12-07 18:22:48 +0800
committerRiddle Hsu <riddlehsu@google.com>2020-12-08 13:10:10 +0800
commitf90b2d46100ebe1d9cd8f0e6039243c3fd5baab1 (patch)
tree5de80cd1698d0a6fe16c6d00b44caee1ba3c7d62 /core/java
parentd6cd319fd8e18dd8daaa8891dd054a410240b129 (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')
-rw-r--r--core/java/android/accounts/ChooseAccountActivity.java15
-rw-r--r--core/java/android/accounts/ChooseTypeAndAccountActivity.java27
-rw-r--r--core/java/android/accounts/GrantCredentialsPermissionActivity.java12
-rw-r--r--core/java/android/app/Activity.java17
-rw-r--r--core/java/android/app/ActivityClient.java16
-rw-r--r--core/java/android/app/IActivityClientController.aidl2
-rw-r--r--core/java/android/app/IActivityTaskManager.aidl4
-rw-r--r--core/java/com/android/internal/app/IntentForwarderActivity.java15
-rw-r--r--core/java/com/android/internal/app/ResolverActivity.java17
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);
}
}