summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2012-04-19 15:59:20 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-19 15:59:20 -0700
commit875f0643164e2235de7256c0a256f9f4c8768fa2 (patch)
tree3bcbeffbb0e145992b9d0878174312ce881a9714
parent27e2fa43dbb4ebf2824a21a6c5f05c8b45513f52 (diff)
parent35be7560300a97fc3675bdd325910f28827d9508 (diff)
downloadframeworks_base-875f0643164e2235de7256c0a256f9f4c8768fa2.zip
frameworks_base-875f0643164e2235de7256c0a256f9f4c8768fa2.tar.gz
frameworks_base-875f0643164e2235de7256c0a256f9f4c8768fa2.tar.bz2
Merge "Move SystemUI out of system UID."
-rw-r--r--core/java/android/service/wallpaper/WallpaperService.java10
-rw-r--r--core/res/AndroidManifest.xml8
-rwxr-xr-xcore/res/res/values/strings.xml5
-rw-r--r--packages/SystemUI/AndroidManifest.xml39
-rw-r--r--packages/SystemUI/src/com/android/systemui/ImageWallpaper.java5
-rw-r--r--services/java/com/android/server/am/ActivityStack.java9
6 files changed, 67 insertions, 9 deletions
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 7ce96c0..6917fb2 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -140,6 +140,7 @@ public abstract class WallpaperService extends Service {
boolean mIsCreating;
boolean mDrawingAllowed;
boolean mOffsetsChanged;
+ boolean mFixedSizeAllowed;
int mWidth;
int mHeight;
int mFormat;
@@ -211,7 +212,7 @@ public abstract class WallpaperService extends Service {
@Override
public void setFixedSize(int width, int height) {
- if (Process.myUid() != Process.SYSTEM_UID) {
+ if (!mFixedSizeAllowed) {
// Regular apps can't do this. It can only work for
// certain designs of window animations, so you can't
// rely on it.
@@ -385,7 +386,12 @@ public abstract class WallpaperService extends Service {
updateSurface(false, false, false);
}
}
-
+
+ /** {@hide} */
+ public void setFixedSizeAllowed(boolean allowed) {
+ mFixedSizeAllowed = allowed;
+ }
+
/**
* Called once to initialize the engine. After returning, the
* engine's surface will be created by the framework.
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index f5c0f8f..b7ee2ec 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -737,6 +737,14 @@
android:label="@string/permlab_removeTasks"
android:description="@string/permdesc_removeTasks" />
+ <!-- Allows an application to start any activity, regardless of permission
+ protection or exported state. @hide -->
+ <permission android:name="android.permission.START_ANY_ACTIVITY"
+ android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
+ android:protectionLevel="signature"
+ android:label="@string/permlab_startAnyActivity"
+ android:description="@string/permdesc_startAnyActivity" />
+
<!-- @hide Change the screen compatibility mode of applications -->
<permission android:name="android.permission.SET_SCREEN_COMPATIBILITY"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index e00986c..7df24a2 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -538,6 +538,11 @@
tasks and kill their apps. Malicious apps may disrupt
the behavior of other apps.</string>
+ <!-- Title of an application permission, allowing an application to start any activity, regardless of permission protection or exported state. -->
+ <string name="permlab_startAnyActivity">start any activity</string>
+ <!-- Description of an application permission, allowing an application to start any activity, regardless of permission protection or exported state. -->
+ <string name="permdesc_startAnyActivity">Allows the app to start any activity, regardless of permission protection or exported state.</string>
+
<!-- Title of an application permission, allowing control of app screen compatibility mode -->
<string name="permlab_setScreenCompatibility">set screen compatibility</string>
<!-- Description of an application permission, allowing control of app screen compatibility mode -->
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index e937587..39fb2b4 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -1,15 +1,44 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.systemui"
- coreApp="true"
- android:sharedUserId="android.uid.system"
- android:process="system"
- >
+ coreApp="true">
+
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
+ <uses-permission android:name="android.permission.INJECT_EVENTS" />
+ <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />
+ <uses-permission android:name="android.permission.STATUS_BAR" />
+ <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
+
+ <!-- Networking and telephony -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
- <uses-permission android:name="android.permission.GET_TASKS" />
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+
+ <!-- Physical hardware -->
<uses-permission android:name="android.permission.MANAGE_USB" />
+ <uses-permission android:name="android.permission.DEVICE_POWER" />
+ <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+ <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+
+ <!-- ActivityManager -->
+ <uses-permission android:name="android.permission.GET_TASKS" />
+ <uses-permission android:name="android.permission.REORDER_TASKS" />
+ <uses-permission android:name="android.permission.REMOVE_TASKS" />
+ <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
+ <uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" />
+ <uses-permission android:name="android.permission.START_ANY_ACTIVITY" />
+
+ <!-- WindowManager -->
+ <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
+ <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
+ <uses-permission android:name="android.permission.MANAGE_APP_TOKENS" />
+ <uses-permission android:name="android.permission.SET_ORIENTATION" />
+ <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<application
android:persistent="true"
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index 724679f..c60c806 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -155,6 +155,11 @@ public class ImageWallpaper extends WallpaperService {
}
}
+ public DrawableEngine() {
+ super();
+ setFixedSizeAllowed(true);
+ }
+
@Override
public void onCreate(SurfaceHolder surfaceHolder) {
if (DEBUG) {
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index ad13c41..24bab99 100644
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -16,6 +16,9 @@
package com.android.server.am;
+import static android.Manifest.permission.START_ANY_ACTIVITY;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+
import com.android.internal.app.HeavyWeightSwitcherActivity;
import com.android.internal.os.BatteryStatsImpl;
import com.android.server.am.ActivityManagerService.PendingActivityLaunch;
@@ -2407,9 +2410,11 @@ final class ActivityStack {
return err;
}
- final int perm = mService.checkComponentPermission(aInfo.permission, callingPid,
+ final int startAnyPerm = mService.checkPermission(
+ START_ANY_ACTIVITY, callingPid, callingUid);
+ final int componentPerm = mService.checkComponentPermission(aInfo.permission, callingPid,
callingUid, aInfo.applicationInfo.uid, aInfo.exported);
- if (perm != PackageManager.PERMISSION_GRANTED) {
+ if (startAnyPerm != PERMISSION_GRANTED && componentPerm != PERMISSION_GRANTED) {
if (resultRecord != null) {
sendActivityResultLocked(-1,
resultRecord, resultWho, requestCode,