1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/*
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  this work for additional information regarding copyright ownership.
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  the License.  You may obtain a copy of the License at
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  See the License for the specific language governing permissions and
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  limitations under the License.
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @author Alexander V. Astapchuk
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @version $Revision$
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.java.security;
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
252f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Projectimport dalvik.annotation.KnownFailure;
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel;
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass;
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew;
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase;
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.URL;
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.URLClassLoader;
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.ByteBuffer;
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.CodeSource;
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Permission;
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.PermissionCollection;
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.ProtectionDomain;
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.SecureClassLoader;
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.Certificate;
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(value=SecureClassLoader.class,
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        untestedMethods={
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            @TestTargetNew(
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    level = TestLevel.NOT_FEASIBLE,
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    notes = "cannot be tested",
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    method = "defineClass",
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    args = {
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        java.lang.String.class, byte[].class, int.class,
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        int.class, java.security.CodeSource.class}
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            ),
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            @TestTargetNew(
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    level = TestLevel.NOT_FEASIBLE,
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    notes = "cannot be tested",
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    method = "defineClass",
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    args = {
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        java.lang.String.class, java.nio.ByteBuffer.class,
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        java.security.CodeSource.class}
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            )
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project})
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unit test for SecureClassLoader.
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class SecureClassLoaderTest extends TestCase {
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Entry point for stand alone runs.
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param args
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            command line parameters
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static void main(String[] args) {
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        junit.textui.TestRunner.run(SecureClassLoaderTest.class);
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * A class name for the class presented as {@link #klassData bytecode below}
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static final String klassName = "HiWorld";
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Some class presented as bytecode<br>
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Class src:<br>
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * <p>
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * <code>public class HiWorld {
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *     public static void main(String[] args)
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *         {System.out.println("Hi, world!"); }
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *    }
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * </code>
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static final byte[] klassData = { (byte) 0xCA, (byte) 0xFE,
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0xBA, (byte) 0xBE, (byte) 0x00, (byte) 0x00, (byte) 0x00,
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x2E, (byte) 0x00, (byte) 0x22, (byte) 0x01, (byte) 0x00,
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x07, (byte) 0x48, (byte) 0x69, (byte) 0x57, (byte) 0x6F,
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x72, (byte) 0x6C, (byte) 0x64, (byte) 0x07, (byte) 0x00,
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x01, (byte) 0x01, (byte) 0x00, (byte) 0x10, (byte) 0x6A,
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2F, (byte) 0x6C,
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x61, (byte) 0x6E, (byte) 0x67, (byte) 0x2F, (byte) 0x4F,
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x62, (byte) 0x6A, (byte) 0x65, (byte) 0x63, (byte) 0x74,
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x07, (byte) 0x00, (byte) 0x03, (byte) 0x01, (byte) 0x00,
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x06, (byte) 0x3C, (byte) 0x69, (byte) 0x6E, (byte) 0x69,
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x74, (byte) 0x3E, (byte) 0x01, (byte) 0x00, (byte) 0x03,
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x28, (byte) 0x29, (byte) 0x56, (byte) 0x01, (byte) 0x00,
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x04, (byte) 0x43, (byte) 0x6F, (byte) 0x64, (byte) 0x65,
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x0C, (byte) 0x00, (byte) 0x05, (byte) 0x00, (byte) 0x06,
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x0A, (byte) 0x00, (byte) 0x04, (byte) 0x00, (byte) 0x08,
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x01, (byte) 0x00, (byte) 0x0F, (byte) 0x4C, (byte) 0x69,
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6E, (byte) 0x65, (byte) 0x4E, (byte) 0x75, (byte) 0x6D,
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x62, (byte) 0x65, (byte) 0x72, (byte) 0x54, (byte) 0x61,
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x62, (byte) 0x6C, (byte) 0x65, (byte) 0x01, (byte) 0x00,
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x12, (byte) 0x4C, (byte) 0x6F, (byte) 0x63, (byte) 0x61,
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6C, (byte) 0x56, (byte) 0x61, (byte) 0x72, (byte) 0x69,
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x61, (byte) 0x62, (byte) 0x6C, (byte) 0x65, (byte) 0x54,
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x61, (byte) 0x62, (byte) 0x6C, (byte) 0x65, (byte) 0x01,
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x04, (byte) 0x74, (byte) 0x68, (byte) 0x69,
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x73, (byte) 0x01, (byte) 0x00, (byte) 0x09, (byte) 0x4C,
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x48, (byte) 0x69, (byte) 0x57, (byte) 0x6F, (byte) 0x72,
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6C, (byte) 0x64, (byte) 0x3B, (byte) 0x01, (byte) 0x00,
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x04, (byte) 0x6D, (byte) 0x61, (byte) 0x69, (byte) 0x6E,
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x01, (byte) 0x00, (byte) 0x16, (byte) 0x28, (byte) 0x5B,
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x4C, (byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61,
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x2F, (byte) 0x6C, (byte) 0x61, (byte) 0x6E, (byte) 0x67,
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x2F, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69,
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6E, (byte) 0x67, (byte) 0x3B, (byte) 0x29, (byte) 0x56,
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x01, (byte) 0x00, (byte) 0x10, (byte) 0x6A, (byte) 0x61,
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x76, (byte) 0x61, (byte) 0x2F, (byte) 0x6C, (byte) 0x61,
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6E, (byte) 0x67, (byte) 0x2F, (byte) 0x53, (byte) 0x79,
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x73, (byte) 0x74, (byte) 0x65, (byte) 0x6D, (byte) 0x07,
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x10, (byte) 0x01, (byte) 0x00, (byte) 0x03,
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6F, (byte) 0x75, (byte) 0x74, (byte) 0x01, (byte) 0x00,
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x15, (byte) 0x4C, (byte) 0x6A, (byte) 0x61, (byte) 0x76,
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x61, (byte) 0x2F, (byte) 0x69, (byte) 0x6F, (byte) 0x2F,
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x50, (byte) 0x72, (byte) 0x69, (byte) 0x6E, (byte) 0x74,
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x65, (byte) 0x61,
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6D, (byte) 0x3B, (byte) 0x0C, (byte) 0x00, (byte) 0x12,
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x13, (byte) 0x09, (byte) 0x00, (byte) 0x11,
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x14, (byte) 0x01, (byte) 0x00, (byte) 0x0A,
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x48, (byte) 0x69, (byte) 0x2C, (byte) 0x20, (byte) 0x77,
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6F, (byte) 0x72, (byte) 0x6C, (byte) 0x64, (byte) 0x21,
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x08, (byte) 0x00, (byte) 0x16, (byte) 0x01, (byte) 0x00,
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x13, (byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61,
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x2F, (byte) 0x69, (byte) 0x6F, (byte) 0x2F, (byte) 0x50,
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x72, (byte) 0x69, (byte) 0x6E, (byte) 0x74, (byte) 0x53,
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x74, (byte) 0x72, (byte) 0x65, (byte) 0x61, (byte) 0x6D,
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x07, (byte) 0x00, (byte) 0x18, (byte) 0x01, (byte) 0x00,
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x07, (byte) 0x70, (byte) 0x72, (byte) 0x69, (byte) 0x6E,
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x74, (byte) 0x6C, (byte) 0x6E, (byte) 0x01, (byte) 0x00,
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x15, (byte) 0x28, (byte) 0x4C, (byte) 0x6A, (byte) 0x61,
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x76, (byte) 0x61, (byte) 0x2F, (byte) 0x6C, (byte) 0x61,
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6E, (byte) 0x67, (byte) 0x2F, (byte) 0x53, (byte) 0x74,
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x72, (byte) 0x69, (byte) 0x6E, (byte) 0x67, (byte) 0x3B,
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x29, (byte) 0x56, (byte) 0x0C, (byte) 0x00, (byte) 0x1A,
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x1B, (byte) 0x0A, (byte) 0x00, (byte) 0x19,
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x1C, (byte) 0x01, (byte) 0x00, (byte) 0x04,
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x61, (byte) 0x72, (byte) 0x67, (byte) 0x73, (byte) 0x01,
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x13, (byte) 0x5B, (byte) 0x4C, (byte) 0x6A,
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2F, (byte) 0x6C,
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x61, (byte) 0x6E, (byte) 0x67, (byte) 0x2F, (byte) 0x53,
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x74, (byte) 0x72, (byte) 0x69, (byte) 0x6E, (byte) 0x67,
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x3B, (byte) 0x01, (byte) 0x00, (byte) 0x0A, (byte) 0x53,
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6F, (byte) 0x75, (byte) 0x72, (byte) 0x63, (byte) 0x65,
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x46, (byte) 0x69, (byte) 0x6C, (byte) 0x65, (byte) 0x01,
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x0C, (byte) 0x48, (byte) 0x69, (byte) 0x57,
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6F, (byte) 0x72, (byte) 0x6C, (byte) 0x64, (byte) 0x2E,
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x00,
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x21, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x04,
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x02, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x05,
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x06, (byte) 0x00, (byte) 0x01, (byte) 0x00,
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x07, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x2F,
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x00,
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x05, (byte) 0x2A, (byte) 0xB7,
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x09, (byte) 0xB1, (byte) 0x00, (byte) 0x00,
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x0A, (byte) 0x00,
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x06, (byte) 0x00, (byte) 0x01,
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x14, (byte) 0x00,
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x0B, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0C,
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x05, (byte) 0x00, (byte) 0x0C, (byte) 0x00, (byte) 0x0D,
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0x00,
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x0E, (byte) 0x00, (byte) 0x0F, (byte) 0x00, (byte) 0x01,
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x07, (byte) 0x00, (byte) 0x00, (byte) 0x00,
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x37, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x01,
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0xB2,
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x15, (byte) 0x12, (byte) 0x17, (byte) 0xB6,
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x1D, (byte) 0xB1, (byte) 0x00, (byte) 0x00,
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x0A, (byte) 0x00,
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x0A, (byte) 0x00, (byte) 0x02,
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00,
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x08, (byte) 0x00, (byte) 0x18, (byte) 0x00, (byte) 0x0B,
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0C, (byte) 0x00,
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x09,
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x1E, (byte) 0x00, (byte) 0x1F, (byte) 0x00,
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x20,
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00,
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            (byte) 0x21, };
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Tests default ctor
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "SecureClassLoader",
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testSecureClassLoader() {
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        new MyClassLoader();
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        class TestSecurityManager extends SecurityManager {
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean called;
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            @Override
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            public void checkCreateClassLoader() {
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                called = true;
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                super.checkCreateClassLoader();
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            @Override
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            public void checkPermission(Permission permission) {
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (permission instanceof RuntimePermission) {
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    if (permission.getName().equals("createClassLoader")) {
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        throw new SecurityException();
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    }
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestSecurityManager sm = new TestSecurityManager();
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            System.setSecurityManager(sm);
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            new MyClassLoader();
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("expected SecurityException");
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (SecurityException e) {
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("checkCreateClassLoader was not called", sm.called);
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // ok
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } finally {
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            System.setSecurityManager(null);
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Tests SecureClassLoader(ClassLoader)
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Verification with null parameter missed",
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "SecureClassLoader",
249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.ClassLoader.class}
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2512f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project    @KnownFailure("Android doesn't allow null parent.")
252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testSecureClassLoaderClassLoader() throws Exception {
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        URL[] urls = new URL[] { new URL("http://localhost") };
254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        URLClassLoader ucl = URLClassLoader.newInstance(urls);
255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        new MyClassLoader(ucl);
256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            new MyClassLoader(null);
259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("unexpected exception: " + e);
261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        class TestSecurityManager extends SecurityManager {
264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean called;
265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            @Override
266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            public void checkCreateClassLoader() {
267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                called = true;
268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                super.checkCreateClassLoader();
269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            @Override
272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            public void checkPermission(Permission permission) {
273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (permission instanceof RuntimePermission) {
274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    if (permission.getName().equals("createClassLoader")) {
275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        throw new SecurityException();
276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    }
277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestSecurityManager sm = new TestSecurityManager();
282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            System.setSecurityManager(sm);
284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            new MyClassLoader(ucl);
285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("expected SecurityException");
286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (SecurityException e) {
287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // ok
288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("checkCreateClassLoader was not called", sm.called);
289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } finally {
291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            System.setSecurityManager(null);
292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Tests getPermission
297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.SUFFICIENT,
300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getPermissions",
302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.security.CodeSource.class}
303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testGetPermissions() throws Exception {
305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        URL url = new URL("http://localhost");
306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        CodeSource cs = new CodeSource(url, (Certificate[]) null);
307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MyClassLoader ldr = new MyClassLoader();
308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ldr.getPerms(null);
309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ldr.getPerms(cs);
310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3122f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    /**
3132f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//     * Tests defineClass(String, byte[], int, int, CodeSource)
3142f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//     */
3152f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    @TestTargetNew(
3162f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        level = TestLevel.NOT_FEASIBLE,
3172f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        notes = "ClassFormatError, IndexOutOfBoundsException, SecurityException checking missed",
3182f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        method = "defineClass",
3192f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        args = {java.lang.String.class, byte[].class, int.class, int.class, java.security.CodeSource.class}
3202f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    )
3212f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    public void _testDefineClassStringbyteArrayintintCodeSource() {
3222f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        MyClassLoader ldr = new MyClassLoader();
3232f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        Class klass = ldr.define(null, klassData, 0, klassData.length, null);
3242f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        assertEquals(klass.getName(), klassName);
3252f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    }
3262f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//
3272f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    /**
3282f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//     * Tests defineClass(String, ByteBuffer, CodeSource)
3292f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//     */
3302f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    @TestTargetNew(
3312f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        level = TestLevel.NOT_FEASIBLE,
3322f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        notes = "ClassFormatError, SecurityException checking missed",
3332f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        method = "defineClass",
3342f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        args = {java.lang.String.class, java.nio.ByteBuffer.class, java.security.CodeSource.class}
3352f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    )
3362f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    public void _testDefineClassStringByteBufferCodeSource() {
3372f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        MyClassLoader ldr = new MyClassLoader();
3382f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        ByteBuffer bbuf = ByteBuffer.wrap(klassData);
3392f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        Class klass = ldr.define(null, bbuf, null);
3402f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//        assertEquals(klass.getName(), klassName);
3412f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project//    }
342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    class MyClassLoader extends SecureClassLoader {
344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public MyClassLoader() {
346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            super();
347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public MyClassLoader(ClassLoader parent) {
350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            super(parent);
351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public PermissionCollection getPerms(CodeSource codesource) {
354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return super.getPermissions(codesource);
355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public Class define(String name, byte[] bytes) {
358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return defineClass(name, bytes, 0, bytes.length,
359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    (ProtectionDomain) null);
360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public Class define(String name, ByteBuffer b, CodeSource cs) {
363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return defineClass(name, b, cs);
364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public Class define(String name, byte[] b, int off, int len,
367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                CodeSource cs) {
368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return defineClass(name, b, off, len, cs);
369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
373