1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * you may not use this file except in compliance with the License. 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.security.permissions; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.File; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileFilter; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FilenameFilter; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Permission; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 252be0c815dda289b09f3bb26f751c124f30eaf612Jesse Wilsonimport dalvik.annotation.KnownFailure; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This class tests the security permissions which are documented in 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://java.sun.com/j2se/1.5.0/docs/guide/security/permissions.html#PermsAndMethods 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * for class java.io.File. 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(java.io.File.class) 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class JavaIoFileTest extends TestCase { 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager old; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setUp() throws Exception { 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project old = System.getSecurityManager(); 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setUp(); 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void tearDown() throws Exception { 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(old); 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.tearDown(); 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.delete and File.deleteOnExit methods call checkDelete on security manager.", 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "delete", 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.delete and File.deleteOnExit methods call checkDelete on security manager.", 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "deleteOnExit", 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_File1() throws IOException { 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestSecurityManager extends SecurityManager { 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean called; 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String filename; 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project void reset(){ 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project called = false; 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = null; 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkDelete(String file) { 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project called = true; 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.filename = file; 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission p) { 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long id = new java.util.Date().getTime(); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String filename = "SecurityPermissionsTest_"+id; 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File f = File.createTempFile(filename, null); 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.deleteOnExit(); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = f.getCanonicalPath(); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestSecurityManager s = new TestSecurityManager(); 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(s); 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.delete(); 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.delete must call checkDelete on security manager", s.called); 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkDelete is not correct", filename, s.filename); 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.deleteOnExit(); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.deleteOnExit must call checkDelete on security manager", s.called); 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkDelete is not correct", filename, s.filename); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "exists", 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "canRead", 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isFile", 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isDirectory", 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isHidden", 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "lastModified", 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "length", 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "list", 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "list", 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.FilenameFilter.class} 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "listFiles", 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "listFiles", 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.FilenameFilter.class} 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that File.exists(), File.canRead(), File.isFile(), File.isDirectory(), File.isHidden(), File.lastModified(), File.length(), File.list(...), File.listFiles(...) methods call checkRead method of security manager.", 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "listFiles", 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.FileFilter.class} 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_File2() throws IOException { 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestSecurityManager extends SecurityManager { 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean called; 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String file; 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project void reset(){ 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project called = false; 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = null; 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkRead(String file){ 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project called = true; 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.file = file; 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission p) { 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long id = new java.util.Date().getTime(); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String filename = "SecurityPermissionsTest_"+id; 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File f = File.createTempFile(filename, null); 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.deleteOnExit(); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = f.getCanonicalPath(); 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestSecurityManager s = new TestSecurityManager(); 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(s); 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.exists(); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.exists() must call checkRead on security manager", s.called); 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.canRead(); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.canRead() must call checkRead on security manager", s.called); 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.isFile(); 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.isFile() must call checkRead on security manager", s.called); 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.isDirectory(); 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.isDirectory() must call checkRead on security manager", s.called); 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.isHidden(); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.isHidden() must call checkRead on security manager", s.called); 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.lastModified(); 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.lastModified() must call checkRead on security manager", s.called); 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.length(); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.length() must call checkRead on security manager", s.called); 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.list(); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.list() must call checkRead on security manager", s.called); 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.list((FilenameFilter)null); 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.list(FilenameFilter) must call checkRead on security manager", s.called); 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.listFiles(); 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.listFiles() must call checkRead on security manager", s.called); 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.listFiles((FilenameFilter)null); 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.listFiles(FilenameFilter) must call checkRead on security manager", s.called); 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.listFiles((FileFilter)null); 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.listFiles(FileFilter) must call checkRead on security manager", s.called); 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkRead is not correct", filename, s.file); 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "canWrite", 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "createNewFile", 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "createTempFile", 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.lang.String.class} 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "createTempFile", 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.lang.String.class, java.io.File.class} 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "mkdir", 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "mkdirs", 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "renameTo", 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.File.class} 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setLastModified", 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {long.class} 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that write/create methods of File class call checkWrite on security manager.", 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setReadOnly", 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_File3() throws IOException { 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestSecurityManager extends SecurityManager { 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean called; 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String file; 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project void reset(){ 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project called = false; 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = null; 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkWrite(String file){ 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project called = true; 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.file = file; 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission p) { 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String tmpPath = System.getProperty("java.io.tmpdir"); 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if(!tmpPath.endsWith("/")) { 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmpPath += "/"; 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long id = new java.util.Date().getTime(); 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String filename = "SecurityPermissionsTest_"+id; 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String filename2 = "SecurityPermissionsTest_"+(id+1); 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File f = File.createTempFile(filename, null); 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.deleteOnExit(); 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = f.getCanonicalPath(); 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File f2 = File.createTempFile(filename2, null); 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f2.deleteOnExit(); 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename2 = f2.getCanonicalPath(); 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestSecurityManager s = new TestSecurityManager(); 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(s); 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.canWrite(); 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.canWrite() must call checkWrite on security manager", s.called); 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", filename, s.file); 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.createNewFile(); 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.createNewFile() must call checkWrite on security manager", s.called); 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", filename, s.file); 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File tmp = new File(tmpPath + "dir"+id); 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmp.mkdir(); 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.canWrite() must call checkWrite on security manager", s.called); 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", tmpPath + "dir"+id, s.file); 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmp = new File(tmpPath + "a"+id+"/b/c"); 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmp.mkdirs(); 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.mkdirs() must call checkWrite on security manager", s.called); 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", tmpPath +"a"+id+"/b/c", s.file); 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.renameTo(f2); 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.renameTo(File) must call checkWrite on security manager", s.called); 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", filename2, s.file); 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.setLastModified(id); 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.setLastModified() must call checkWrite on security manager", s.called); 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", filename, s.file); 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.setReadOnly(); 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.setReadOnly() must call checkWrite on security manager", s.called); 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", filename, s.file); 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmp = File.createTempFile("xxx", "yyy"); 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmp.deleteOnExit(); 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = tmp.getCanonicalPath(); 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.createTempFile(String,String) must call checkWrite on security manager", s.called); 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", filename, s.file); 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmp = File.createTempFile("xxx", "yyy", (File)null); 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tmp.deleteOnExit(); 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = tmp.getCanonicalPath(); 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.createTempFile(String,String,File) must call checkWrite on security manager", s.called); 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Argument of checkWrite is not correct", filename, s.file); 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that checkRead(java.io.FileDescriptor) " + 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "and checkPropertyAccess(java.lang.String) on " + 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "security manager are called.", 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getCanonicalFile", 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that checkRead(java.io.FileDescriptor) " + 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "and checkPropertyAccess(java.lang.String) on " + 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "security manager are called.", 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getCanonicalPath", 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 4352be0c815dda289b09f3bb26f751c124f30eaf612Jesse Wilson @KnownFailure("We need to finish cleaning up java.io.File (bug 2281992)") 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_File4() throws IOException { 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestSecurityManager extends SecurityManager { 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean checkPropertyAccessCalled; 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project void reset(){ 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyAccessCalled = false; 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPropertyAccess(String key){ 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyAccessCalled = true; 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission p) { 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long id = new java.util.Date().getTime(); 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestSecurityManager s = new TestSecurityManager(); 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(s); 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String filename = "SecurityPermissionsTest_" + id; 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File f = new File(filename); 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.getCanonicalFile(); 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.getCanonicalFile() must call checkPropertyAccess " + 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "on security manager", s.checkPropertyAccessCalled); 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new File(filename); 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = f.getCanonicalPath(); 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.getCanonicalPath() must call checkPropertyAccess " + 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project " on security manager", s.checkPropertyAccessCalled); 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.delete(); 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that checkPropertyAccess(java.lang.String) on " + 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "security manager is called.", 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getAbsoluteFile", 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that checkPropertyAccess(java.lang.String) on " + 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "security manager is called.", 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getAbsolutePath", 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 4922be0c815dda289b09f3bb26f751c124f30eaf612Jesse Wilson @KnownFailure("We need to finish cleaning up java.io.File (bug 2281992)") 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_File5() throws IOException { 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestSecurityManager extends SecurityManager { 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean checkPropertyAccessCalled; 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project void reset(){ 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyAccessCalled = false; 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPropertyAccess(String key){ 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyAccessCalled = true; 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission p) { 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long id = new java.util.Date().getTime(); 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestSecurityManager s = new TestSecurityManager(); 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(s); 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String filename = "SecurityPermissionsTest_" + id; 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File f = new File(filename); 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.getAbsoluteFile(); 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.getAbsoluteFile() must call checkPropertyAccess " + 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "on security manager", s.checkPropertyAccessCalled); 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.reset(); 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new File(filename); 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = f.getAbsolutePath(); 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("File.getAbsolutePath() must call checkPropertyAccess " + 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project " on security manager", s.checkPropertyAccessCalled); 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f.delete(); 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 534