diff options
| author | 2013-02-26 21:39:42 +0000 | |
|---|---|---|
| committer | 2013-02-26 21:39:43 +0000 | |
| commit | d0d209ed4d6280b6e1203eebe823f04f9db766c0 (patch) | |
| tree | 9bc35b51482c20fffc87086ccae4bc1cd7a2bf23 | |
| parent | 47a5f404656e2514acf27c1252f3994647710e24 (diff) | |
| parent | 7e6f976c87714d9c42c376fca5b6c8ef7865e672 (diff) | |
Merge "App ops: turn off content provider ops when running under test." into jb-mr2-dev
| -rw-r--r-- | core/java/android/content/ContentProvider.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java index e9b800dc305a..ff3e843916ad 100644 --- a/core/java/android/content/ContentProvider.java +++ b/core/java/android/content/ContentProvider.java @@ -101,6 +101,7 @@ public abstract class ContentProvider implements ComponentCallbacks2 { private String mWritePermission; private PathPermission[] mPathPermissions; private boolean mExported; + private boolean mNoPerms; private Transport mTransport = new Transport(); @@ -523,10 +524,12 @@ public abstract class ContentProvider implements ComponentCallbacks2 { /** @hide */ public final void setAppOps(int readOp, int writeOp) { - mTransport.mAppOpsManager = (AppOpsManager)mContext.getSystemService( - Context.APP_OPS_SERVICE); - mTransport.mReadOp = readOp; - mTransport.mWriteOp = writeOp; + if (!mNoPerms) { + mTransport.mAppOpsManager = (AppOpsManager)mContext.getSystemService( + Context.APP_OPS_SERVICE); + mTransport.mReadOp = readOp; + mTransport.mWriteOp = writeOp; + } } /** @hide */ @@ -1191,6 +1194,16 @@ public abstract class ContentProvider implements ComponentCallbacks2 { setWritePermission(info.writePermission); setPathPermissions(info.pathPermissions); mExported = info.exported; + mNoPerms = false; + } else { + // We enter here because the content provider is being instantiated + // as a mock. We don't have any information about the provider (such + // as its required permissions), and also want to avoid doing app op + // checks since these aren't real calls coming in and we may not be + // able to get the app ops service at all (if the test is using something + // like the IsolatedProvider). So set this to true, to prevent us + // from enabling app ops on this object. + mNoPerms = true; } ContentProvider.this.onCreate(); } |