Merge change I75630000 into eclair

* changes:
  Fixing tests that exercise SecurityManager plus stack inspection.
diff --git a/libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/ClassTest.java b/libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/ClassTest.java
index 3097fbe..2b492b1 100644
--- a/libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/ClassTest.java
+++ b/libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/ClassTest.java
@@ -838,9 +838,6 @@
         args = {}
     )
     public void test_getClassLoader() {
-        // this fails if ClassTest.class was loaded by the regular classloader,
-        // but passes if it was loaded by the boot class loader.
-
         assertEquals(ExtendTestClass.class.getClassLoader(),
                          PublicTestClass.class.getClassLoader());
 
@@ -861,8 +858,8 @@
         System.setSecurityManager(sm);
         try {
             System.class.getClassLoader();
-        } catch (SecurityException e) {
-            fail("SecurityException should not be thrown.");
+            fail("SecurityException should be thrown.");
+        } catch (SecurityException expected) {
         } finally {
             System.setSecurityManager(oldSm);
         }
diff --git a/libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/SecurityManagerTest.java b/libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/SecurityManagerTest.java
index be5aa41..0bd0c1f 100644
--- a/libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/SecurityManagerTest.java
+++ b/libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/SecurityManagerTest.java
@@ -16,14 +16,11 @@
 
 package org.apache.harmony.luni.tests.java.lang;
 
-import dalvik.annotation.TestTargets;
 import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestTargetClass;
-
+import dalvik.annotation.TestTargetNew;
 import junit.framework.TestCase;
 
-import java.io.File;
 import java.io.FileDescriptor;
 import java.io.FilePermission;
 import java.io.IOException;
@@ -41,8 +38,6 @@
 import java.security.Security;
 import java.security.SecurityPermission;
 
-import tests.support.Support_Exec;
-
 /**
  * Test case for java.lang.SecurityManager
  */
@@ -230,14 +225,14 @@
             }
             
             try {
-                mutableSM.checkMemberAccess(Object.class, Member.DECLARED);
+                delegateCallToCheckMemberAccess2(Object.class, Member.DECLARED);
                 fail("SecurityException was not thrown.");
             } catch(SecurityException se) {
                 //expected
             }
             
             try {
-                mutableSM.checkMemberAccess(null, Member.PUBLIC);
+                delegateCallToCheckMemberAccess2(null, Member.PUBLIC);
                 fail("NullPointerException was not thrown.");
             } catch(NullPointerException npe) {
                 //expected
@@ -248,6 +243,23 @@
     }
 
     /**
+     * Don't call checkMemberAccess directly, since we're checking our caller
+     * (and not ourselves). This is necessary for unit tests, since JUnit's
+     * TestCase is usually in the boot classpath for dalvik. This delegating
+     * method corresponds to Class.getDeclared*();
+     */
+    private void delegateCallToCheckMemberAccess2(Class<Object> cls, int type) {
+        delegateCallToCheckMemberAccess1(cls, type);
+    }
+
+    /**
+     * This delegating method corresponds to Class.checkMemberAccess().
+     */
+    private void delegateCallToCheckMemberAccess1(Class<Object> cls, int type) {
+        mutableSM.checkMemberAccess(cls, type);
+    }
+
+    /**
      * @tests java.lang.SecurityManager#checkPermission(java.security.Permission)
      */
     @TestTargetNew(