summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/am/ActivityManagerService.java
diff options
context:
space:
mode:
authorBen Gruver <bgruv@google.com>2013-04-02 21:18:41 -0700
committerBen Gruver <bgruv@google.com>2013-04-02 21:18:41 -0700
commit4efe9403afb0ba3b83fa647eb82e4f90d29f131b (patch)
tree6e71f47bd46fb9e110879c1125ef309f151abfd4 /services/java/com/android/server/am/ActivityManagerService.java
parentcdee9727e26721910a44ba67980b39de4b103f7d (diff)
downloadframeworks_base-4efe9403afb0ba3b83fa647eb82e4f90d29f131b.zip
frameworks_base-4efe9403afb0ba3b83fa647eb82e4f90d29f131b.tar.gz
frameworks_base-4efe9403afb0ba3b83fa647eb82e4f90d29f131b.tar.bz2
Initial implementation of IntentFirewall functionality
This has the full filter functionality, but is currently only able to block Activity intents. Logging intents, or blocking service/broadcast intents is not yet implemented. Change-Id: Ied3d8dedf982e17bcbdff3e328eeb87477954df7
Diffstat (limited to 'services/java/com/android/server/am/ActivityManagerService.java')
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 88ef884..90a727d 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -30,6 +30,7 @@ import com.android.server.ProcessMap;
import com.android.server.SystemServer;
import com.android.server.Watchdog;
import com.android.server.am.ActivityStack.ActivityState;
+import com.android.server.firewall.IntentFirewall;
import com.android.server.pm.UserManagerService;
import com.android.server.wm.AppTransition;
import com.android.server.wm.WindowManagerService;
@@ -274,6 +275,8 @@ public final class ActivityManagerService extends ActivityManagerNative
public ActivityStack mMainStack;
+ public IntentFirewall mIntentFirewall;
+
private final boolean mHeadless;
// Whether we should show our dialogs (ANR, crash, etc) or just perform their
@@ -570,8 +573,8 @@ public final class ActivityManagerService extends ActivityManagerNative
}
@Override
- protected String packageForFilter(BroadcastFilter filter) {
- return filter.packageName;
+ protected boolean isPackageForFilter(String packageName, BroadcastFilter filter) {
+ return packageName.equals(filter.packageName);
}
};
@@ -1467,7 +1470,8 @@ public final class ActivityManagerService extends ActivityManagerNative
m.mContext = context;
m.mFactoryTest = factoryTest;
m.mMainStack = new ActivityStack(m, context, true, thr.mLooper);
-
+ m.mIntentFirewall = new IntentFirewall(m.new IntentFirewallInterface());
+
m.mBatteryStatsService.publish(context);
m.mUsageStatsService.publish(context);
m.mAppOpsService.publish(context);
@@ -4943,6 +4947,14 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
+ class IntentFirewallInterface implements IntentFirewall.AMSInterface {
+ public int checkComponentPermission(String permission, int pid, int uid,
+ int owningUid, boolean exported) {
+ return ActivityManagerService.this.checkComponentPermission(permission, pid, uid,
+ owningUid, exported);
+ }
+ }
+
/**
* This can be called with or without the global lock held.
*/