19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.dumprendertree; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle; 218b85dceadf281705a94d7546556fa5969364a658Christian Mehlmauerimport android.os.Environment; 22ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Projectimport android.util.Log; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhuimport java.io.BufferedOutputStream; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.File; 26f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhuimport java.io.FileOutputStream; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Menu extends FileList { 29f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu 30f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu private static final int MENU_START = 0x01; 31f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu private static String LOGTAG = "MenuActivity"; 328b85dceadf281705a94d7546556fa5969364a658Christian Mehlmauer static final String LAYOUT_TESTS_LIST_FILE = 338b85dceadf281705a94d7546556fa5969364a658Christian Mehlmauer Environment.getExternalStorageDirectory() + "/android/layout_tests_list.txt"; 34f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu 35f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu public void onCreate(Bundle icicle) { 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onCreate(icicle); 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 38f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean fileFilter(File f) { 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (f.getName().startsWith(".")) 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (f.getName().equalsIgnoreCase("resources")) 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (f.isDirectory()) 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (f.getPath().toLowerCase().endsWith("ml")) 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 50f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu 51f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu void processFile(String filename, boolean selection) { 52ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project Intent intent = new Intent(Intent.ACTION_VIEW); 53ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project intent.setClass(this, TestShellActivity.class); 54ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 55ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project intent.putExtra(TestShellActivity.TEST_URL, "file://" + filename); 569b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch intent.putExtra(TestShellActivity.TOTAL_TEST_COUNT, 1); 579b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch intent.putExtra(TestShellActivity.CURRENT_TEST_NUMBER, 1); 58ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project startActivity(intent); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 60f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu 61f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu @Override 62f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu void processDirectory(String path, boolean selection) { 639b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch int testCount = generateTestList(path); 64f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu Intent intent = new Intent(Intent.ACTION_VIEW); 65f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu intent.setClass(this, TestShellActivity.class); 66f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 67f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu intent.putExtra(TestShellActivity.UI_AUTO_TEST, LAYOUT_TESTS_LIST_FILE); 689b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch intent.putExtra(TestShellActivity.TOTAL_TEST_COUNT, testCount); 699b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch // TestShellActivity will process this intent once and increment the test index 709b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch // before running the first test, so pass 0 here to allow for that. 719b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch intent.putExtra(TestShellActivity.CURRENT_TEST_NUMBER, 0); 72f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu startActivity(intent); 73f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu } 74f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu 759b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch private int generateTestList(String path) { 769b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch int testCount = 0; 77f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu try { 78f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu File tests_list = new File(LAYOUT_TESTS_LIST_FILE); 79f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(tests_list, false)); 809b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch testCount = FsUtils.writeLayoutTestListRecursively( 819b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch bos, path, false); // Don't ignore results 82f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu bos.flush(); 83f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu bos.close(); 84f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu } catch (Exception e) { 85f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu Log.e(LOGTAG, "Error when creating test list: " + e.getMessage()); 86f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu } 879b815d080145f0bc8effc9e011090010ad51f203Ben Murdoch return testCount; 88f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu } 89f92bd42a702af7047ac4bd7c95b4a82973b7a79dGuang Zhu 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 91