summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-09-27 12:42:34 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-09-27 12:42:34 -0700
commitd8691d73d158acd9ffc63748126e822afd656707 (patch)
tree41c330928c6672392c6cb870289ed9e42028128e /services
parent14a288da6a372230d9af41da12241fe500eec837 (diff)
parent8313fc7e94e46e5cc09f457a15a771a325b9f74f (diff)
downloadframeworks_base-d8691d73d158acd9ffc63748126e822afd656707.zip
frameworks_base-d8691d73d158acd9ffc63748126e822afd656707.tar.gz
frameworks_base-d8691d73d158acd9ffc63748126e822afd656707.tar.bz2
Merge "Allow all apps to call ContentResolver.getType()." into gingerbread
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java32
-rw-r--r--services/java/com/android/server/am/UriPermission.java4
2 files changed, 34 insertions, 2 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 223d77d..22cd8ff 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -5592,6 +5592,38 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
+ /**
+ * Allows app to retrieve the MIME type of a URI without having permission
+ * to access its content provider.
+ *
+ * CTS tests for this functionality can be run with "runtest cts-appsecurity".
+ *
+ * Test cases are at cts/tests/appsecurity-tests/test-apps/UsePermissionDiffCert/
+ * src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
+ */
+ public String getProviderMimeType(Uri uri) {
+ final String name = uri.getAuthority();
+ final long ident = Binder.clearCallingIdentity();
+ ContentProviderHolder holder = null;
+
+ try {
+ holder = getContentProviderExternal(name);
+ if (holder != null) {
+ return holder.provider.getType(uri);
+ }
+ } catch (RemoteException e) {
+ Log.w(TAG, "Content provider dead retrieving " + uri, e);
+ return null;
+ } finally {
+ if (holder != null) {
+ removeContentProviderExternal(name);
+ }
+ Binder.restoreCallingIdentity(ident);
+ }
+
+ return null;
+ }
+
// =========================================================
// GLOBAL MANAGEMENT
// =========================================================
diff --git a/services/java/com/android/server/am/UriPermission.java b/services/java/com/android/server/am/UriPermission.java
index 0cb6943..e3347cb 100644
--- a/services/java/com/android/server/am/UriPermission.java
+++ b/services/java/com/android/server/am/UriPermission.java
@@ -27,8 +27,8 @@ import java.util.HashSet;
*
* CTS tests for this functionality can be run with "runtest cts-appsecurity".
*
- * Test cases are at cts/tests/appsecurity-tests/test-apps/UsePermissionDiffCert
- * /src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
+ * Test cases are at cts/tests/appsecurity-tests/test-apps/UsePermissionDiffCert/
+ * src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
*/
class UriPermission {
final int uid;