CTS test for SharedPreferences MODE_MULTI_PROCESS

MODE_MULTI_PROCESS is introduced in Icf93f9df

Change-Id: I6154edab0024be46dcc0c4010186f0fc8e90ce95
diff --git a/tests/tests/content/src/android/content/cts/SharedPreferencesTest.java b/tests/tests/content/src/android/content/cts/SharedPreferencesTest.java
index bc81c4c..004fa9e 100644
--- a/tests/tests/content/src/android/content/cts/SharedPreferencesTest.java
+++ b/tests/tests/content/src/android/content/cts/SharedPreferencesTest.java
@@ -29,6 +29,7 @@
 import android.content.Context;
 import android.content.ContextWrapper;
 import android.content.SharedPreferences;
+import android.os.StrictMode;
 import android.preference.PreferenceManager;
 import android.test.AndroidTestCase;
 import android.util.Log;
@@ -317,4 +318,30 @@
         }
     }
 
+    public void testModeMultiProcess() {
+        // Pre-load it.
+        mContext.getSharedPreferences("multiprocessTest", 0);
+
+        final StrictMode.ThreadPolicy oldPolicy = StrictMode.getThreadPolicy();
+        try {
+            StrictMode.ThreadPolicy diskReadDeath =
+                    new StrictMode.ThreadPolicy.Builder().detectDiskReads().penaltyDeath().build();
+            StrictMode.setThreadPolicy(diskReadDeath);
+
+            // This shouldn't hit disk.  (it was already pre-loaded above)
+            mContext.getSharedPreferences("multiprocessTest", 0);
+
+            boolean didRead = false;
+            // This SHOULD hit disk.  (multi-process flag is set)
+            try {
+                mContext.getSharedPreferences("multiprocessTest", Context.MODE_MULTI_PROCESS);
+                fail();  // we shouldn't get here.
+            } catch (StrictMode.StrictModeViolation e) {
+                didRead = true;
+            }
+            assertTrue(didRead);
+        } finally {
+            StrictMode.setThreadPolicy(oldPolicy);
+        }
+    }
 }