diff --git a/CtsTestCaseList.mk b/CtsTestCaseList.mk
index a3ca867..068df98 100644
--- a/CtsTestCaseList.mk
+++ b/CtsTestCaseList.mk
@@ -41,7 +41,6 @@
     CtsMonkeyApp2 \
     CtsProfileOwnerApp \
     CtsSomeAccessibilityServices \
-    CtsTestStubs \
     CtsThemeDeviceApp \
     SignatureTest \
     TestDeviceSetup \
diff --git a/apps/CtsVerifier/Android.mk b/apps/CtsVerifier/Android.mk
index bcfaf44..88386ec 100644
--- a/apps/CtsVerifier/Android.mk
+++ b/apps/CtsVerifier/Android.mk
@@ -36,8 +36,6 @@
 
 LOCAL_DEX_PREOPT := false
 
-LOCAL_INSTRUMENTATION_FOR := CtsTestStubs
-
 include $(BUILD_PACKAGE)
 
 # Builds and launches CTS Verifier on a device.
diff --git a/apps/CtsVerifier/proguard.flags b/apps/CtsVerifier/proguard.flags
index 7605f3d..be17d8b 100644
--- a/apps/CtsVerifier/proguard.flags
+++ b/apps/CtsVerifier/proguard.flags
@@ -14,4 +14,5 @@
 -keepclasseswithmembers class * extends com.android.cts.verifier.location.LocationModeTestActivity
 
 -dontwarn android.hardware.Sensor
+-dontwarn android.test.AndroidTestRunner
 -dontwarn java.util.concurrent.ConcurrentLinkedDeque
diff --git a/tests/Android.mk b/tests/Android.mk
index 39a27fe..46a8ec2 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -12,28 +12,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)\
-              $(call all-renderscript-files-under, src)\
-
-LOCAL_JAVA_LIBRARIES := android.test.runner
-
-# Resource unit tests use a private locale and some densities
-LOCAL_AAPT_FLAGS = -c xx_YY -c cs -c small -c normal -c large -c xlarge \
-        -c 320dpi -c 240dpi -c 160dpi -c 32dpi \
-        -c kok,kok_IN,kok_419,kok_419_VARIANT,kok_Knda_419,kok_Knda_419_VARIANT,kok_VARIANT,kok_Knda,tgl,tgl_PH
-
-LOCAL_PACKAGE_NAME := CtsTestStubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestserver ctstestrunner
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_PACKAGE)
-
 # Build the test APK using its own makefile, and any other CTS-related packages
-include $(call all-makefiles-under,$(LOCAL_PATH))
+include $(call all-subdir-makefiles)
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
deleted file mode 100644
index b3798b1..0000000
--- a/tests/AndroidManifest.xml
+++ /dev/null
@@ -1,957 +0,0 @@
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.cts.stub">
-
-    <permission android:name="android.app.cts.permission.TEST_GRANTED"
-        android:protectionLevel="normal"
-            android:label="@string/permlab_testGranted"
-            android:description="@string/permdesc_testGranted">
-        <meta-data android:name="android.app.cts.string" android:value="foo" />
-        <meta-data android:name="android.app.cts.boolean" android:value="true" />
-        <meta-data android:name="android.app.cts.integer" android:value="100" />
-        <meta-data android:name="android.app.cts.color" android:value="#ff000000" />
-        <meta-data android:name="android.app.cts.float" android:value="100.1" />
-        <meta-data android:name="android.app.cts.reference" android:resource="@xml/metadata" />
-    </permission>
-
-    <uses-permission android:name="android.permission.GET_TASKS" />
-    <uses-permission android:name="android.permission.SET_WALLPAPER" />
-    <uses-permission android:name="android.permission.SET_TIME_ZONE" />
-    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
-    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
-    <uses-permission android:name="android.permission.WRITE_SOCIAL_STREAM" />
-    <uses-permission android:name="android.permission.READ_CALL_LOG" />
-    <uses-permission android:name="android.permission.READ_CONTACTS" />
-    <uses-permission android:name="android.permission.READ_SOCIAL_STREAM" />
-    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
-    <uses-permission android:name="android.permission.READ_CALENDAR" />
-    <uses-permission android:name="android.permission.DEVICE_POWER" />
-    <uses-permission android:name="android.permission.STATUS_BAR" />
-    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
-    <uses-permission android:name="android.permission.VIBRATE" />
-    <uses-permission android:name="android.permission.PERSISTENT_ACTIVITY" />
-    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
-    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
-    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
-    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
-    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
-    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
-    <uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
-    <uses-permission android:name="android.permission.READ_OWNER_DATA" />
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
-    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-    <uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
-    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
-    <uses-permission android:name="android.permission.ADD_SYSTEM_SERVICE" />
-    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
-    <uses-permission android:name="android.app.cts.permission.TEST_GRANTED" />
-    <uses-permission android:name="android.permission.INJECT_EVENTS" />
-    <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.WAKE_LOCK" />
-    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
-    <uses-permission android:name="android.permission.CALL_PHONE" />
-    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
-    <uses-permission android:name="android.permission.RECORD_AUDIO" />
-    <uses-permission android:name="android.permission.DUMP" />
-    <uses-permission android:name="android.permission.NFC" />
-    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
-    <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
-    <uses-permission android:name="android.permission.BLUETOOTH" />
-
-    <!-- Used for PackageManager test, don't delete this INTERNET permission -->
-    <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.WAKE_LOCK" />
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
-    <uses-permission android:name="android.permission.CAMERA" />
-    <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
-    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
-    <uses-permission android:name="android.permission.GET_PACKAGE_SIZE" />
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-    <uses-permission android:name="android.permission.SEND_SMS" />
-    <uses-permission android:name="android.permission.RECEIVE_SMS" />
-    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
-    <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
-    <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS" />
-    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
-    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
-
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.READ_LOGS" />
-
-    <!-- telephony provider tests -->
-    <uses-permission android:name="android.permission.READ_SMS"/>
-    <uses-permission android:name="android.permission.WRITE_SMS"/>
-
-    <!-- content sync tests -->
-    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
-    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
-    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
-    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
-    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
-    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
-    <uses-permission android:name="android.permission.READ_SYNC_STATS" />
-
-    <!-- Used for ClonedSecureRandomTest -->
-    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
-
-    <!-- Used for Transmit IR Test -->
-    <uses-permission android:name="android.permission.TRANSMIT_IR" />
-
-    <!-- Used for SystemFeatures Test -->
-    <uses-permission android:name="android.permission.BODY_SENSORS"/>
-
-    <!-- Used for PackageManager test, don't delete this permission-tree -->
-    <permission-tree android:name="com.android.cts.stub.permission.TEST_DYNAMIC"
-                    android:label="Test Tree"/>
-
-    <!-- Used for PackageManager test, don't delete this permission-group -->
-    <permission-group android:name="android.permission-group.COST_MONEY"/>
-    <!-- Used for PackageManager test, don't delete! -->
-    <uses-configuration/>
-    <uses-feature android:name="android.hardware.camera" />
-    <uses-feature android:glEsVersion="0x00020000" />
-    <feature-group/>
-    <feature-group>
-        <uses-feature android:glEsVersion="0x00030000" />
-        <uses-feature android:name="android.hardware.location" />
-    </feature-group>
-    <feature-group>
-        <uses-feature android:glEsVersion="0x00010001" />
-        <uses-feature android:name="android.hardware.camera" />
-    </feature-group>
-
-    <!-- maxRecents=1 keeps the recents list from filling memory with thumbnails -->
-    <application android:label="Android TestCase"
-                android:icon="@drawable/size_48x48"
-                android:maxRecents="1"
-                android:multiArch="true"
-                android:name="android.app.cts.MockApplication"
-                android:supportsRtl="true">
-
-        <activity android:name="android.app.cts.ActionBarActivity" />
-        <activity android:name="android.widget.cts.TwoLineListItemStubActivity"
-            android:label="TwoLineListItemStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ViewFlipperStubActivity"
-            android:label="ViewFlipperStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.DialogStubActivity"
-            android:label="DialogStubActivity"
-            android:configChanges="keyboardHidden|orientation|screenSize">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.HorizontalScrollViewStubActivity"
-            android:label="HorizontalScrollViewStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.SlidingDrawerStubActivity"
-            android:label="SlidingDrawerStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.MockActivity" android:label="MockActivity">
-            <meta-data android:name="android.app.alias"
-                android:resource="@xml/alias" />
-            <meta-data android:name="android.app.intent.filter"
-                android:resource="@xml/intentfilter" />
-            <meta-data android:name="android.widget.layout"
-                android:resource="@xml/layout" />
-            <meta-data android:name="android.view.merge"
-                android:resource="@xml/merge" />
-        </activity>
-
-        <activity android:name="android.widget.cts.DigitalClockStubActivity"
-            android:label="DigitalClockStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ImageViewStubActivity"
-            android:label="ImageViewStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.SeekBarStubActivity"
-            android:label="SeekBarStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ScrollViewStubActivity"
-            android:label="ScrollViewStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.FrameLayoutStubActivity"
-            android:label="FrameLayoutStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.LinearLayoutStubActivity"
-            android:label="LinearLayoutStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.GridLayoutStubActivity"
-            android:label="GridLayoutStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.LayoutDirectionStubActivity"
-            android:label="LayoutDirectionStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ProgressBarStubActivity"
-            android:label="ProgressBarStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ChronometerStubActivity"
-            android:label="ChronometerStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.MediaControllerStubActivity"
-            android:label="MediaControllerStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.RatingBarStubActivity"
-            android:label="RatingBarStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.RemoteViewsStubActivity"
-            android:label="RemoteViewsStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ViewGroupStubActivity"
-            android:label="WidgetViewGroupStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.VideoViewStubActivity"
-            android:configChanges="keyboardHidden|orientation|screenSize"
-            android:label="VideoViewStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.AutoCompleteStubActivity"
-            android:label="AutoCompleteStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ViewAnimatorStubActivity" android:label="ViewAnimatorStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.GridViewStubActivity"
-            android:label="GridViewStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.RelativeLayoutStubActivity"
-            android:label="RelativeLayoutStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.FrameLayoutStubActivity"
-            android:label="FrameLayoutStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <service android:name="android.content.cts.MockContextWrapperService" />
-        <activity android:name=".content.ContextWrapperStubActivity"
-            android:label="ContextWrapperStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
-        <receiver android:name="android.content.cts.MockReceiverFirst">
-            <intent-filter android:priority="3">
-                <action android:name="android.content.cts.BroadcastReceiverTest.BROADCAST_TESTABORT" />
-            </intent-filter>
-        </receiver>
-        <receiver android:name="android.content.cts.MockReceiverAbort">
-            <intent-filter android:priority="2">
-                <action android:name="android.content.cts.BroadcastReceiverTest.BROADCAST_TESTABORT" />
-            </intent-filter>
-        </receiver>
-        <receiver android:name="android.content.cts.MockReceiver">
-            <intent-filter android:priority="1">
-                <action android:name="android.content.cts.BroadcastReceiverTest.BROADCAST_MOCKTEST" />
-                <action android:name="android.content.cts.BroadcastReceiverTest.BROADCAST_TESTABORT" />
-                <action android:name="android.content.cts.ContextWrapperTest.BROADCAST_TESTORDER" />
-            </intent-filter>
-        </receiver>
-
-        <activity android:name="android.provider.cts.BrowserStubActivity"
-            android:label="BrowserStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.content.cts.AvailableIntentsActivity"
-            android:label="AvailableIntentsActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.text.cts.EmojiStubActivity"
-            android:label="AvailableIntentsActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.TableStubActivity"
-            android:label="TableStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.TabHostStubActivity"
-            android:label="TabHostStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.view.animation.cts.GridLayoutAnimStubActivity"
-            android:label="GridLayoutAnimStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.view.animation.cts.LayoutAnimStubActivity"
-            android:label="LayoutAnimStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.webkit.cts.CookieSyncManagerStubActivity"
-            android:label="CookieSyncManagerStubActivity"
-            android:screenOrientation="nosensor">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ExpandableListSimple"
-            android:label="ExpandableListSimple">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.StubActivity"
-            android:label="StubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ExpandableListWithHeaders"
-            android:label="ExpandableListWithHeaders">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.GalleryStubActivity"
-            android:label="GalleryStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.MockPopupWindowStubActivity"
-            android:label="MockPopupWindowStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ListViewStubActivity"
-            android:label="ListViewStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.TextViewStubActivity"
-            android:label="TextViewStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.DialerFilterStubActivity"
-            android:label="DialerFilterStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-        <activity android:name="android.widget.cts.MultiAutoCompleteTextViewStubActivity"
-            android:label="MultiAutoCompleteTextView Test Activity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.AdapterViewStubActivity"
-            android:label="AdapterViewStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.CheckedTextViewStubActivity"
-            android:label="CheckedTextViewStubActivity"/>
-
-        <activity android:name="android.hardware.cts.CameraStubActivity"
-            android:label="CameraStubActivity"
-            android:screenOrientation="landscape"
-            android:configChanges="keyboardHidden|orientation|screenSize">
-        </activity>
-
-        <activity android:name="android.hardware.camera2.cts.Camera2SurfaceViewStubActivity"
-            android:label="Camera2StubActivity"
-            android:screenOrientation="landscape"
-            android:configChanges="keyboardHidden|orientation|screenSize">
-        </activity>
-
-        <activity android:name="android.hardware.camera2.cts.Camera2MultiViewStubActivity"
-            android:label="Camera2MultiViewStubActivity"
-            android:screenOrientation="landscape"
-            android:configChanges="keyboardHidden|orientation|screenSize">
-        </activity>
-
-        <activity android:name="android.view.inputmethod.cts.InputMethodStubActivity"
-            android:label="InputMethodStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-        <service android:name="android.view.inputmethod.cts.InputMethodInfoStub"
-            android:label="InputMethodInfoStub">
-            <intent-filter>
-                <action android:name="android.view.InputMethod" />
-            </intent-filter>
-            <meta-data android:name="android.view.im"
-                android:resource="@xml/method" />
-        </service>
-
-        <activity android:name="android.text.method.cts.KeyListenerStubActivity"
-            android:label="KeyListenerStubActivity"/>
-
-        <activity android:name="android.text.method.cts.StubActivity"
-            android:label="StubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.text.style.cts.URLSpanStubActivity"
-            android:label="URLSpanStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.text.style.cts.MockURLSpanTestActivity"
-            android:label="MockURLSpanTestActivity"
-            android:launchMode="singleTask"
-            android:alwaysRetainTaskState="true"
-            android:configChanges="orientation|keyboardHidden">
-            <intent-filter>
-                <action android:name="android.intent.action.VIEW" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.BROWSABLE" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-                <data android:scheme="ctstest" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.widget.cts.ZoomButtonStubActivity"
-            android:label="ZoomButtonStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.MockApplicationActivity"
-            android:label="MockApplicationActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.InstrumentationTestActivity"
-                  android:theme="@style/Theme_NoSwipeDismiss"
-                  android:label="InstrumentationTestActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.cursor.dir/person" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.AliasActivityStub">
-            <meta-data android:name="android.app.alias"
-                android:resource="@xml/alias" />
-        </activity>
-
-        <activity android:name="android.webkit.cts.WebViewStubActivity"
-            android:label="WebViewStubActivity"
-            android:screenOrientation="nosensor">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.webkit.cts.WebViewStartupStubActivity"
-            android:label="WebViewStartupStubActivity"
-            android:screenOrientation="nosensor">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.ChildActivity"
-                        android:label="ChildActivity" />
-
-        <receiver android:name="android.app.cts.MockReceiver">
-            <intent-filter>
-                <action android:name="android.app.cts.PendingIntentTest.TEST_RECEIVER" />
-            </intent-filter>
-        </receiver>
-
-        <service android:name="android.app.cts.MockService" />
-
-        <activity android:name="android.app.cts.SearchManagerStubActivity"
-                android:label="SearchManagerStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.SEARCH" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-            <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
-        </activity>
-
-        <service android:name="android.app.cts.LocalService">
-            <intent-filter>
-                <action android:name="android.app.cts.activity.SERVICE_LOCAL" />
-            </intent-filter>
-            <meta-data android:name="android.app.cts.string" android:value="foo" />
-            <meta-data android:name="android.app.cts.boolean" android:value="true" />
-            <meta-data android:name="android.app.cts.integer" android:value="100" />
-            <meta-data android:name="android.app.cts.color" android:value="#ff000000" />
-            <meta-data android:name="android.app.cts.float" android:value="100.1" />
-            <meta-data android:name="android.app.cts.reference" android:resource="@xml/metadata" />
-        </service>
-
-        <service android:name="android.app.cts.LocalGrantedService"
-             android:permission="android.app.cts.permission.TEST_GRANTED">
-            <intent-filter>
-                <action android:name="android.app.cts.activity.SERVICE_LOCAL_GRANTED" />
-            </intent-filter>
-        </service>
-
-        <service android:name="android.app.cts.LocalDeniedService"
-               android:permission="android.app.cts.permission.TEST_DENIED">
-            <intent-filter>
-                <action android:name="android.app.cts.activity.SERVICE_LOCAL_DENIED" />
-            </intent-filter>
-        </service>
-
-        <activity android:name="android.app.cts.TestedScreen"
-                android:process=":remoteScreen">
-        </activity>
-        <activity android:name="android.app.cts.LocalScreen" android:multiprocess="true">
-        </activity>
-        <activity android:name="android.app.cts.ClearTop" android:multiprocess="true"
-               android:launchMode="singleTop">
-        </activity>
-        <activity android:name="android.app.cts.LocalDialog" android:multiprocess="true"
-               android:theme="@android:style/Theme.Dialog">
-        </activity>
-
-        <activity android:name="android.app.cts.PendingIntentStubActivity"
-             android:label="PendingIntentStubActivity"/>
-
-        <activity android:name="android.app.cts.LocalActivityManagerStubActivity"
-                        android:label="LocalActivityManagerStubActivity" />
-
-        <activity android:name="android.app.cts.LocalActivityManagerTestHelper"
-            android:label="LocalActivityManagerTestHelper" />
-
-        <activity android:name="android.app.cts.LaunchpadTabActivity" android:multiprocess="true">
-        </activity>
-
-        <activity android:name="android.app.cts.LocalActivity" android:multiprocess="true">
-            <meta-data android:name="android.app.cts.string" android:value="foo" />
-            <meta-data android:name="android.app.cts.boolean" android:value="true" />
-            <meta-data android:name="android.app.cts.integer" android:value="100" />
-            <meta-data android:name="android.app.cts.color" android:value="#ff000000" />
-            <meta-data android:name="android.app.cts.float" android:value="100.1" />
-            <meta-data android:name="android.app.cts.reference" android:resource="@xml/metadata" />
-        </activity>
-
-        <activity android:name="android.app.cts.TestedActivity"
-                android:process=":remoteActivity">
-        </activity>
-
-        <activity android:name="android.app.cts.ExpandableListTestActivity"
-            android:label="ExpandableListTestActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <!--Test for PackageManager-->
-        <activity android:name="android.content.pm.cts.TestPmActivity"
-                android:icon="@drawable/start">
-            <intent-filter>
-                <action android:name="android.intent.action.PMTEST" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-            <meta-data android:name="android.content.pm.cts.xmltest" android:resource="@xml/pm_test" />
-        </activity>
-        <activity android:name="android.content.pm.cts.TestPmCompare">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.INFO" />
-            </intent-filter>
-        </activity>
-        <!--Test for PackageManager-->
-        <service android:name="android.content.pm.cts.TestPmService">
-            <intent-filter>
-                <action android:name="android.content.pm.cts.activity.PMTEST_SERVICE" />
-            </intent-filter>
-        </service>
-        <!--Test for PackageManager-->
-        <receiver android:name="android.content.pm.cts.PmTestReceiver">
-            <intent-filter>
-                <action android:name="android.content.pm.cts.PackageManagerTest.PMTEST_RECEIVER" />
-            </intent-filter>
-        </receiver>
-
-        <activity android:name="android.app.cts.ChildTabActivity" android:label="ChildTabActivity" />
-
-        <activity android:name="android.app.cts.LauncherActivityStub"
-                  android:label="LauncherActivityStub" >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.MockTabActivity" android:label="MockTabActivity" />
-
-        <activity android:name="android.app.cts.AppStubActivity" android:label="AppStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.DialogStubActivity"
-                  android:theme="@style/Theme_NoSwipeDismiss"
-                  android:label="DialogStubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.ActivityManagerStubFooActivity"
-            android:label="ActivityManagerStubFooActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.ActivityManagerRecentOneActivity"
-            android:label="ActivityManagerRecentOneActivity"
-            android:allowTaskReparenting="true"
-            android:taskAffinity="android.app.cts.recentOne">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.ActivityManagerRecentTwoActivity"
-            android:label="ActivityManagerRecentTwoActivity"
-            android:allowTaskReparenting="true"
-            android:taskAffinity="android.app.cts.recentTwo">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.app.cts.ActivityManagerStubCrashActivity"
-            android:label="ActivityManagerStubCrashActivity"
-            android:multiprocess="true"
-            android:process=":ActivityManagerStubCrashActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.text.method.cts.StubActivity"
-            android:label="StubActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <service android:name="android.app.cts.StubRemoteService"
-            android:process=":remote">
-            <intent-filter>
-                <action
-                    android:name="android.app.cts.ISecondary" />
-                <action
-                    android:name="android.app.REMOTESERVICE" />
-            </intent-filter>
-        </service>
-
-        <activity android:name="android.app.ActivityGroup"
-            android:label="ActivityGroup" />
-
-        <activity android:name="android.app.cts.KeyguardManagerActivity"
-            android:label="KeyguardManagerActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.os.cts.CountDownTimerTestStub"
-            android:label="CountDownTimerTestStub">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <service android:name="android.os.cts.EmptyService"
-            android:process=":remote">
-            <intent-filter>
-                <action
-                    android:name="android.os.cts.IEmptyService" />
-                <action
-                    android:name="android.os.REMOTESERVICE" />
-            </intent-filter>
-        </service>
-
-        <service android:name="android.os.cts.MessengerService"
-                android:process=":messengerService">
-        </service>
-        <service android:name="android.app.cts.IntentServiceStub"/>
-
-        <activity android:name="android.app.cts.LaunchpadActivity"
-                  android:configChanges="keyboardHidden|orientation|screenSize"
-                  android:multiprocess="true">
-        </activity>
-
-        <service android:name="android.content.cts.MockSyncAdapterService" android:exported="true">
-            <intent-filter>
-                <action android:name="android.content.SyncAdapter" />
-            </intent-filter>
-
-            <meta-data android:name="android.content.SyncAdapter"
-                       android:resource="@xml/syncadapter" />
-        </service>
-
-        <service android:name="android.content.cts.MockAccountService" android:exported="true"
-                 >
-            <intent-filter>
-                <action android:name="android.accounts.AccountAuthenticator" />
-            </intent-filter>
-
-            <meta-data android:name="android.accounts.AccountAuthenticator"
-                       android:resource="@xml/authenticator" />
-        </service>
-
-        <activity android:name="android.opengl.cts.GLSurfaceViewStubActivity"
-                  android:label="GLSurfaceViewStub"/>
-
-        <activity android:name="android.opengl.cts.OpenGlEsVersionStubActivity"/>
-
-        <activity android:name="android.opengl.cts.EglConfigStubActivity"
-            android:configChanges="keyboardHidden|orientation|screenSize|uiMode" />
-
-        <activity android:name="android.opengl.cts.CompressedTextureStubActivity"
-            android:label="CompressedTextureStubActivity"
-            android:screenOrientation="nosensor">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.content.cts.ClipboardManagerListenerActivity"/>
-
-        <activity android:name="android.app.cts.ActivityManagerMemoryClassLaunchActivity" />
-
-        <activity android:name="android.app.cts.ActivityManagerMemoryClassTestActivity"
-                android:process=":memoryclass" />
-
-        <service android:name="android.speech.tts.cts.StubTextToSpeechService">
-            <intent-filter>
-                <action android:name="android.intent.action.TTS_SERVICE" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </service>
-
-        <activity android:name="android.renderscriptgraphics.cts.RenderscriptGLStubActivity"
-                  android:label="RenderscriptGLStub"/>
-
-        <service android:name="android.security.cts.activity.SecureRandomService"
-                 android:process=":secureRandom"/>
-    </application>
-
-
-    <!--Test for PackageManager, please put this at the very beginning-->
-    <instrumentation android:name="android.content.pm.cts.TestPmInstrumentation"
-        android:targetPackage="android"
-        android:label="PackageManager Instrumentation Test" />
-
-</manifest>
-
diff --git a/tests/assets/images/tomato.png b/tests/assets/images/tomato.png
deleted file mode 100644
index 44c590d..0000000
--- a/tests/assets/images/tomato.png
+++ /dev/null
Binary files differ
diff --git a/tests/assets/ringer.mp3 b/tests/assets/ringer.mp3
deleted file mode 100644
index aa052e7..0000000
--- a/tests/assets/ringer.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/assets/sphere.a3d b/tests/assets/sphere.a3d
deleted file mode 100644
index 3d78b01..0000000
--- a/tests/assets/sphere.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/res/anim/accelerate_alpha.xml b/tests/res/anim/accelerate_alpha.xml
deleted file mode 100644
index 594652b..0000000
--- a/tests/res/anim/accelerate_alpha.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<alpha xmlns:android="http://schemas.android.com/apk/res/android"
-    android:interpolator="@android:anim/accelerate_interpolator"
-    android:fromAlpha="0.1"
-    android:toAlpha="0.9"
-    android:duration="1000" />
diff --git a/tests/res/anim/accelerate_decelerate_alpha.xml b/tests/res/anim/accelerate_decelerate_alpha.xml
deleted file mode 100644
index 7c892b2..0000000
--- a/tests/res/anim/accelerate_decelerate_alpha.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<alpha xmlns:android="http://schemas.android.com/apk/res/android"
-    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
-    android:fromAlpha="0.0"
-    android:toAlpha="1.0"
-    android:duration="2000" />
diff --git a/tests/res/anim/alpha.xml b/tests/res/anim/alpha.xml
deleted file mode 100644
index 8893d66..0000000
--- a/tests/res/anim/alpha.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<alpha xmlns:android="http://schemas.android.com/apk/res/android"
-       android:fromAlpha="0.0"
-       android:toAlpha="1.0"
-       android:duration="500" />
diff --git a/tests/res/anim/anim_alpha.xml b/tests/res/anim/anim_alpha.xml
deleted file mode 100644
index b5794c3..0000000
--- a/tests/res/anim/anim_alpha.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<alpha xmlns:android="http://schemas.android.com/apk/res/android"
-       android:interpolator="@android:anim/accelerate_interpolator"
-       android:fromAlpha="0.0"
-       android:toAlpha="1.0"
-       android:duration="500" />
-
diff --git a/tests/res/anim/anim_gridlayout.xml b/tests/res/anim/anim_gridlayout.xml
deleted file mode 100644
index be42d76..0000000
--- a/tests/res/anim/anim_gridlayout.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<gridLayoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
-        android:delay="10%"
-        android:rowDelay="50%"
-        android:directionPriority="column"
-        android:animation="@anim/anim_alpha" />
diff --git a/tests/res/anim/anim_rotate.xml b/tests/res/anim/anim_rotate.xml
deleted file mode 100644
index 4fbadcf..0000000
--- a/tests/res/anim/anim_rotate.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<rotate xmlns:android="http://schemas.android.com/apk/res/android"
-    android:interpolator="@android:anim/decelerate_interpolator"
-    android:fromDegrees="0"
-    android:toDegrees="-45"
-    android:toYScale="0.0"
-    android:pivotX="50%"
-    android:pivotY="50%"
-    android:duration="700" />
diff --git a/tests/res/anim/anim_scale.xml b/tests/res/anim/anim_scale.xml
deleted file mode 100644
index 96a3e28..0000000
--- a/tests/res/anim/anim_scale.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<scale xmlns:android="http://schemas.android.com/apk/res/android"
-    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
-    android:fromXScale="1.0"
-    android:toXScale="1.4"
-    android:fromYScale="1.0"
-    android:toYScale="0.6"
-    android:pivotX="50%"
-    android:pivotY="50%"
-    android:fillAfter="false"
-    android:duration="600" />
diff --git a/tests/res/anim/anim_set.xml b/tests/res/anim/anim_set.xml
deleted file mode 100644
index 7d139a8..0000000
--- a/tests/res/anim/anim_set.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
-
-    <scale
-        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
-        android:fromXScale="1.0"
-        android:toXScale="1.4"
-        android:fromYScale="1.0"
-        android:toYScale="0.6"
-        android:pivotX="50%"
-        android:pivotY="50%"
-        android:fillAfter="false"
-        android:duration="900" />
-
-    <set
-        android:interpolator="@android:anim/accelerate_interpolator"
-                android:startOffset="700">
-
-        <scale
-            android:fromXScale="1.4"
-            android:toXScale="0.0"
-            android:fromYScale="0.6"
-            android:toYScale="0.0"
-            android:pivotX="50%"
-            android:pivotY="50%"
-            android:duration="400" />
-
-        <rotate
-            android:fromDegrees="0"
-            android:toDegrees="-45"
-            android:toYScale="0.0"
-            android:pivotX="50%"
-            android:pivotY="50%"
-            android:duration="400" />
-    </set>
-
-</set>
diff --git a/tests/res/anim/anim_translate.xml b/tests/res/anim/anim_translate.xml
deleted file mode 100644
index 6659c2b..0000000
--- a/tests/res/anim/anim_translate.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<translate xmlns:android="http://schemas.android.com/apk/res/android"
-    android:interpolator="@android:anim/accelerate_interpolator"
-    android:fromXDelta="100%p"
-    android:toXDelta="0"
-    android:fromYDelta="100%p"
-    android:toYDelta="0"
-    android:duration="800" />
diff --git a/tests/res/anim/cycle_alpha.xml b/tests/res/anim/cycle_alpha.xml
deleted file mode 100644
index 0a3b53c..0000000
--- a/tests/res/anim/cycle_alpha.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<alpha xmlns:android="http://schemas.android.com/apk/res/android"
-       android:interpolator="@anim/cycle_interpolator"
-       android:fromAlpha="0.0"
-       android:toAlpha="1.0"
-       android:duration="2000" />
diff --git a/tests/res/anim/cycle_interpolator.xml b/tests/res/anim/cycle_interpolator.xml
deleted file mode 100644
index d1586e5..0000000
--- a/tests/res/anim/cycle_interpolator.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
- <cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:cycles="1" />
diff --git a/tests/res/anim/decelerate_alpha.xml b/tests/res/anim/decelerate_alpha.xml
deleted file mode 100644
index 793807e..0000000
--- a/tests/res/anim/decelerate_alpha.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<alpha xmlns:android="http://schemas.android.com/apk/res/android"
-    android:interpolator="@android:anim/decelerate_interpolator"
-    android:fromAlpha="0.0"
-    android:toAlpha="1.0"
-    android:duration="2000" />
diff --git a/tests/res/anim/layout_anim_controller_animation.xml b/tests/res/anim/layout_anim_controller_animation.xml
deleted file mode 100644
index 1e3608c..0000000
--- a/tests/res/anim/layout_anim_controller_animation.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<alpha xmlns:android="http://schemas.android.com/apk/res/android"
-       android:interpolator="@android:anim/accelerate_interpolator"
-       android:fillAfter="true"
-       android:fromAlpha="0.0"
-       android:toAlpha="1.0"
-       android:duration="1000" />
diff --git a/tests/res/anim/lineartest.xml b/tests/res/anim/lineartest.xml
deleted file mode 100644
index 7a41628..0000000
--- a/tests/res/anim/lineartest.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<screenplay>
-     <paint id="paint" antiAlias="true">
-         <color id="col" color="gray"/>
-     </paint>
-     <event kind="onLoad">
-         <add id="addPaint" use="paint"/>
-         <text y="15" text="hello"/>
-     </event>
-     <event kind="keyPress" code="up">
-         <apply scope="addPaint">
-             <set target="paint" field="linearText" to="true"/>
-             <set target="col" field="color" to="black"/>
-             <animate target="paint" id="grow" field="textSize" from="12" to="15" dur=".25"/>
-         </apply>
-     </event>
-     <event kind="onEnd" target="grow">
-         <apply scope="addPaint">
-             <set target="paint" field="linearText" to="false"/>
-         </apply>
-     </event>
-     <event kind="keyPress" code="down">
-         <apply scope="addPaint">
-             <set target="col" field="color" to="gray"/>
-             <animate target="paint" id="shrink" field="textSize" from="15" to="12" dur=".25"/>
-         </apply>
-     </event>
-     <event kind="onEnd" target="shrink">
-         <apply scope="addPaint">
-             <set target="paint" field="linearText" to="false"/>
-         </apply>
-     </event>
- </screenplay>
diff --git a/tests/res/anim/move_ani.xml b/tests/res/anim/move_ani.xml
deleted file mode 100644
index b691c0d..0000000
--- a/tests/res/anim/move_ani.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<translate xmlns:android="http://schemas.android.com/apk/res/android"
-           android:fromXDelta="0"
-           android:toXDelta="4"
-           android:duration="2000"
-           android:interpolator="@anim/move_cycle" />
diff --git a/tests/res/anim/move_cycle.xml b/tests/res/anim/move_cycle.xml
deleted file mode 100644
index 2e2233a..0000000
--- a/tests/res/anim/move_cycle.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:cycles="20" />
diff --git a/tests/res/anim/movie_test.xml b/tests/res/anim/movie_test.xml
deleted file mode 100644
index dcebd16..0000000
--- a/tests/res/anim/movie_test.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<screenplay>
-    <event kind="onLoad">
-        <movie src="lineartest.xml"/>
-    </event>
-</screenplay>
diff --git a/tests/res/color/color1.xml b/tests/res/color/color1.xml
deleted file mode 100755
index 87034fa..0000000
--- a/tests/res/color/color1.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_focused="true" android:color="@color/testcolor1"/>
-    <item android:color="@color/testcolor2"/>
-</selector>
diff --git a/tests/res/drawable-nodpi/vector_icon_clip_path_1_golden.png b/tests/res/drawable-nodpi/vector_icon_clip_path_1_golden.png
deleted file mode 100644
index be487d1..0000000
--- a/tests/res/drawable-nodpi/vector_icon_clip_path_1_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_create_golden.png b/tests/res/drawable-nodpi/vector_icon_create_golden.png
deleted file mode 100644
index 943fce5..0000000
--- a/tests/res/drawable-nodpi/vector_icon_create_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_delete_golden.png b/tests/res/drawable-nodpi/vector_icon_delete_golden.png
deleted file mode 100644
index b46363e..0000000
--- a/tests/res/drawable-nodpi/vector_icon_delete_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_heart_golden.png b/tests/res/drawable-nodpi/vector_icon_heart_golden.png
deleted file mode 100644
index 7450751..0000000
--- a/tests/res/drawable-nodpi/vector_icon_heart_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_random_path_1_golden.png b/tests/res/drawable-nodpi/vector_icon_random_path_1_golden.png
deleted file mode 100644
index 91776a9..0000000
--- a/tests/res/drawable-nodpi/vector_icon_random_path_1_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_random_path_2_golden.png b/tests/res/drawable-nodpi/vector_icon_random_path_2_golden.png
deleted file mode 100644
index 9af40a3..0000000
--- a/tests/res/drawable-nodpi/vector_icon_random_path_2_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_render_order_1_golden.png b/tests/res/drawable-nodpi/vector_icon_render_order_1_golden.png
deleted file mode 100644
index ea3be94..0000000
--- a/tests/res/drawable-nodpi/vector_icon_render_order_1_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_render_order_2_golden.png b/tests/res/drawable-nodpi/vector_icon_render_order_2_golden.png
deleted file mode 100644
index f317901..0000000
--- a/tests/res/drawable-nodpi/vector_icon_render_order_2_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_repeated_a_1_golden.png b/tests/res/drawable-nodpi/vector_icon_repeated_a_1_golden.png
deleted file mode 100644
index b3acfe7..0000000
--- a/tests/res/drawable-nodpi/vector_icon_repeated_a_1_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_repeated_a_2_golden.png b/tests/res/drawable-nodpi/vector_icon_repeated_a_2_golden.png
deleted file mode 100644
index bbc84b9..0000000
--- a/tests/res/drawable-nodpi/vector_icon_repeated_a_2_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_repeated_cq_golden.png b/tests/res/drawable-nodpi/vector_icon_repeated_cq_golden.png
deleted file mode 100644
index 8d73cfd..0000000
--- a/tests/res/drawable-nodpi/vector_icon_repeated_cq_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_repeated_st_golden.png b/tests/res/drawable-nodpi/vector_icon_repeated_st_golden.png
deleted file mode 100644
index 6094a9a..0000000
--- a/tests/res/drawable-nodpi/vector_icon_repeated_st_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_schedule_golden.png b/tests/res/drawable-nodpi/vector_icon_schedule_golden.png
deleted file mode 100644
index 9822bc2..0000000
--- a/tests/res/drawable-nodpi/vector_icon_schedule_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_settings_golden.png b/tests/res/drawable-nodpi/vector_icon_settings_golden.png
deleted file mode 100644
index d12b142..0000000
--- a/tests/res/drawable-nodpi/vector_icon_settings_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_stroke_1_golden.png b/tests/res/drawable-nodpi/vector_icon_stroke_1_golden.png
deleted file mode 100644
index c57ad20..0000000
--- a/tests/res/drawable-nodpi/vector_icon_stroke_1_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_stroke_2_golden.png b/tests/res/drawable-nodpi/vector_icon_stroke_2_golden.png
deleted file mode 100644
index aee8ff5..0000000
--- a/tests/res/drawable-nodpi/vector_icon_stroke_2_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_stroke_3_golden.png b/tests/res/drawable-nodpi/vector_icon_stroke_3_golden.png
deleted file mode 100644
index 1212fb3..0000000
--- a/tests/res/drawable-nodpi/vector_icon_stroke_3_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_transformation_1_golden.png b/tests/res/drawable-nodpi/vector_icon_transformation_1_golden.png
deleted file mode 100644
index baf418d..0000000
--- a/tests/res/drawable-nodpi/vector_icon_transformation_1_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_transformation_2_golden.png b/tests/res/drawable-nodpi/vector_icon_transformation_2_golden.png
deleted file mode 100644
index e0e14f3..0000000
--- a/tests/res/drawable-nodpi/vector_icon_transformation_2_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_transformation_3_golden.png b/tests/res/drawable-nodpi/vector_icon_transformation_3_golden.png
deleted file mode 100644
index b6798c2..0000000
--- a/tests/res/drawable-nodpi/vector_icon_transformation_3_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_transformation_4_golden.png b/tests/res/drawable-nodpi/vector_icon_transformation_4_golden.png
deleted file mode 100644
index a5d4d33..0000000
--- a/tests/res/drawable-nodpi/vector_icon_transformation_4_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_transformation_5_golden.png b/tests/res/drawable-nodpi/vector_icon_transformation_5_golden.png
deleted file mode 100644
index 0d8ded1..0000000
--- a/tests/res/drawable-nodpi/vector_icon_transformation_5_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable-nodpi/vector_icon_transformation_6_golden.png b/tests/res/drawable-nodpi/vector_icon_transformation_6_golden.png
deleted file mode 100644
index 64d07fa..0000000
--- a/tests/res/drawable-nodpi/vector_icon_transformation_6_golden.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/alpha.png b/tests/res/drawable/alpha.png
deleted file mode 100644
index 8a88548..0000000
--- a/tests/res/drawable/alpha.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/animated.gif b/tests/res/drawable/animated.gif
deleted file mode 100644
index 51baf15..0000000
--- a/tests/res/drawable/animated.gif
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/animationdrawable.xml b/tests/res/drawable/animationdrawable.xml
deleted file mode 100644
index 6756966..0000000
--- a/tests/res/drawable/animationdrawable.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
-    <item android:drawable="@drawable/testimage" android:duration="3000"/>
-    <item android:drawable="@drawable/pass" android:duration="2000"/>
-    <item android:drawable="@drawable/scenery" android:duration="1000"/>
-</animation-list>
diff --git a/tests/res/drawable/baseline_jpeg.jpg b/tests/res/drawable/baseline_jpeg.jpg
deleted file mode 100644
index ed5251c..0000000
--- a/tests/res/drawable/baseline_jpeg.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/baseline_restart_jpeg.jpg b/tests/res/drawable/baseline_restart_jpeg.jpg
deleted file mode 100644
index 00dcc5b..0000000
--- a/tests/res/drawable/baseline_restart_jpeg.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/bitmapdrawable_theme.xml b/tests/res/drawable/bitmapdrawable_theme.xml
deleted file mode 100644
index 6df36b3..0000000
--- a/tests/res/drawable/bitmapdrawable_theme.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2014 The Android Open Source Project
-    
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-    
-          http://www.apache.org/licenses/LICENSE-2.0
-    
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:antialias="?attr/themeBoolean"
-    android:autoMirrored="?attr/themeBoolean"
-    android:dither="?attr/themeBoolean"
-    android:filter="?attr/themeBoolean"
-    android:gravity="?attr/themeGravity"
-    android:mipMap="?attr/themeBoolean"
-    android:src="?attr/themeBitmap"
-    android:tileMode="?attr/themeTileMode" />
diff --git a/tests/res/drawable/bmp_test.bmp b/tests/res/drawable/bmp_test.bmp
deleted file mode 100644
index 5ec6dd4..0000000
--- a/tests/res/drawable/bmp_test.bmp
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/colordrawable_test.xml b/tests/res/drawable/colordrawable_test.xml
deleted file mode 100644
index 9d2f390..0000000
--- a/tests/res/drawable/colordrawable_test.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<ColorDrawable xmlns:android="http://schemas.android.com/apk/res/android" android:color="#02000000">
-    <solid android:color="#02000000"/>
-</ColorDrawable>
diff --git a/tests/res/drawable/colordrawable_theme.xml b/tests/res/drawable/colordrawable_theme.xml
deleted file mode 100644
index 00c6fe7..0000000
--- a/tests/res/drawable/colordrawable_theme.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2014 The Android Open Source Project
-    
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-    
-          http://www.apache.org/licenses/LICENSE-2.0
-    
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<color xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?attr/themeColor" />
diff --git a/tests/res/drawable/colorstatelist_test.xml b/tests/res/drawable/colorstatelist_test.xml
deleted file mode 100644
index c86a1a7..0000000
--- a/tests/res/drawable/colorstatelist_test.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-   <item android:state_focused="true" android:color="@color/resource_test_color"/>
-   <item android:state_pressed="true" android:state_enabled="false" android:color="@color/resource_test_color"/>
-   <item android:state_enabled="false" android:color="@color/resource_test_color"/>
-   <item android:state_active="true" android:color="@color/resource_test_color"/>
-   <item android:color="@color/resource_test_color"/>
- </selector>
diff --git a/tests/res/drawable/faces.jpg b/tests/res/drawable/faces.jpg
deleted file mode 100644
index 0672022..0000000
--- a/tests/res/drawable/faces.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/failed.jpg b/tests/res/drawable/failed.jpg
deleted file mode 100644
index 1bb9b52..0000000
--- a/tests/res/drawable/failed.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/gif_test.gif b/tests/res/drawable/gif_test.gif
deleted file mode 100644
index d1c2815..0000000
--- a/tests/res/drawable/gif_test.gif
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/google_logo_1.png b/tests/res/drawable/google_logo_1.png
deleted file mode 100644
index 6e038fc..0000000
--- a/tests/res/drawable/google_logo_1.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/google_logo_2.webp b/tests/res/drawable/google_logo_2.webp
deleted file mode 100644
index f92c42b..0000000
--- a/tests/res/drawable/google_logo_2.webp
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/gradientdrawable.xml b/tests/res/drawable/gradientdrawable.xml
deleted file mode 100644
index ed8ff96..0000000
--- a/tests/res/drawable/gradientdrawable.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <gradient android:startColor="#ffffffff" android:centerColor="#ffff0000"
-              android:endColor="#0000ffff" />
-    <corners android:radius="8px" />
-    <padding android:left="4px" android:top="2px"
-             android:right="6px" android:bottom="10px" />
-    <size android:width="42px" android:height="63px"/>
-</shape>
-
diff --git a/tests/res/drawable/gradientdrawable_radius_base.xml b/tests/res/drawable/gradientdrawable_radius_base.xml
deleted file mode 100644
index ecd50f8..0000000
--- a/tests/res/drawable/gradientdrawable_radius_base.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android" >
-
-    <gradient
-        android:centerColor="#ffff0000"
-        android:endColor="#0000ffff"
-        android:gradientRadius="50%"
-        android:startColor="#ffffffff"
-        android:type="radial" />
-
-    <corners android:radius="8px" />
-
-    <padding
-        android:bottom="10px"
-        android:left="4px"
-        android:right="6px"
-        android:top="2px" />
-
-    <size
-        android:height="50px"
-        android:width="50px" />
-
-</shape>
\ No newline at end of file
diff --git a/tests/res/drawable/gradientdrawable_radius_parent.xml b/tests/res/drawable/gradientdrawable_radius_parent.xml
deleted file mode 100644
index 73d116a..0000000
--- a/tests/res/drawable/gradientdrawable_radius_parent.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android" >
-
-    <gradient
-        android:centerColor="#ffff0000"
-        android:endColor="#0000ffff"
-        android:gradientRadius="50%p"
-        android:startColor="#ffffffff"
-        android:type="radial" />
-
-    <corners android:radius="8px" />
-
-    <padding
-        android:bottom="10px"
-        android:left="4px"
-        android:right="6px"
-        android:top="2px" />
-
-    <size
-        android:height="50px"
-        android:width="50px" />
-
-</shape>
\ No newline at end of file
diff --git a/tests/res/drawable/gradientdrawable_theme.xml b/tests/res/drawable/gradientdrawable_theme.xml
deleted file mode 100644
index 68cec62..0000000
--- a/tests/res/drawable/gradientdrawable_theme.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2014 The Android Open Source Project
-    
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-    
-          http://www.apache.org/licenses/LICENSE-2.0
-    
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android" >
-
-    <corners
-        android:bottomLeftRadius="?attr/themeDimension"
-        android:bottomRightRadius="?attr/themeDimension"
-        android:topLeftRadius="?attr/themeDimension"
-        android:topRightRadius="?attr/themeDimension" />
-
-    <gradient
-        android:angle="?attr/themeAngle"
-        android:centerColor="?attr/themeColor"
-        android:centerX="?attr/themeFloat"
-        android:centerY="?attr/themeFloat"
-        android:endColor="?attr/themeColor"
-        android:gradientRadius="?attr/themeFloat"
-        android:startColor="?attr/themeColor"
-        android:useLevel="?attr/themeBoolean" />
-
-    <padding
-        android:bottom="?attr/themeDimension"
-        android:left="?attr/themeDimension"
-        android:right="?attr/themeDimension"
-        android:top="?attr/themeDimension" />
-
-    <size
-        android:height="?attr/themeDimension"
-        android:width="?attr/themeDimension" />
-
-    <solid android:color="?attr/themeColor" />
-
-    <stroke android:color="?attr/themeColor" />
-
-</shape>
diff --git a/tests/res/drawable/ic_cts_minitab_selected.png b/tests/res/drawable/ic_cts_minitab_selected.png
deleted file mode 100644
index c730050..0000000
--- a/tests/res/drawable/ic_cts_minitab_selected.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/ic_cts_selected.png b/tests/res/drawable/ic_cts_selected.png
deleted file mode 100644
index 72a065c..0000000
--- a/tests/res/drawable/ic_cts_selected.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/icon_black.jpg b/tests/res/drawable/icon_black.jpg
deleted file mode 100644
index 4c9062a..0000000
--- a/tests/res/drawable/icon_black.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/icon_blue.jpg b/tests/res/drawable/icon_blue.jpg
deleted file mode 100644
index 9e6c1c8..0000000
--- a/tests/res/drawable/icon_blue.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/icon_green.jpg b/tests/res/drawable/icon_green.jpg
deleted file mode 100644
index 55a78f2..0000000
--- a/tests/res/drawable/icon_green.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/icon_red.jpg b/tests/res/drawable/icon_red.jpg
deleted file mode 100644
index 6bc9e1f..0000000
--- a/tests/res/drawable/icon_red.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/icon_yellow.jpg b/tests/res/drawable/icon_yellow.jpg
deleted file mode 100644
index e748059..0000000
--- a/tests/res/drawable/icon_yellow.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/insetdrawable.xml b/tests/res/drawable/insetdrawable.xml
deleted file mode 100644
index 8431c69..0000000
--- a/tests/res/drawable/insetdrawable.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
-    android:drawable="@drawable/testimage"/>
-
diff --git a/tests/res/drawable/layerdrawable.xml b/tests/res/drawable/layerdrawable.xml
deleted file mode 100644
index 521703b..0000000
--- a/tests/res/drawable/layerdrawable.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="@drawable/testimage"/>
-    <item android:drawable="@drawable/start"/>
-</layer-list>
diff --git a/tests/res/drawable/layerdrawable_theme.xml b/tests/res/drawable/layerdrawable_theme.xml
deleted file mode 100644
index 2a678ff..0000000
--- a/tests/res/drawable/layerdrawable_theme.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2014 The Android Open Source Project
-    
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-    
-          http://www.apache.org/licenses/LICENSE-2.0
-    
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
-    android:autoMirrored="?attr/themeBoolean" >
-
-    <item android:drawable="@drawable/bitmapdrawable_theme"/>
-    <item>
-        <nine-patch
-            android:autoMirrored="?attr/themeBoolean"
-            android:dither="?attr/themeBoolean"
-            android:src="?attr/themeNinePatch" />
-    </item>
-
-</layer-list>
\ No newline at end of file
diff --git a/tests/res/drawable/levellistdrawable.xml b/tests/res/drawable/levellistdrawable.xml
deleted file mode 100644
index 8fa93e8..0000000
--- a/tests/res/drawable/levellistdrawable.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<level-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:maxLevel="50" android:drawable="@drawable/testimage"/>
-    <item android:maxLevel="100" android:drawable="@drawable/start"/>
-</level-list>
-
diff --git a/tests/res/drawable/ninepatch_0.9.png b/tests/res/drawable/ninepatch_0.9.png
deleted file mode 100644
index 24019d8..0000000
--- a/tests/res/drawable/ninepatch_0.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/ninepatch_1.9.png b/tests/res/drawable/ninepatch_1.9.png
deleted file mode 100644
index c56b1db..0000000
--- a/tests/res/drawable/ninepatch_1.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/ninepatchdrawable.xml b/tests/res/drawable/ninepatchdrawable.xml
deleted file mode 100644
index 6e72457..0000000
--- a/tests/res/drawable/ninepatchdrawable.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ninepatch_0"
-    android:dither="true"
-/>
-
diff --git a/tests/res/drawable/ninepatchdrawable_theme.xml b/tests/res/drawable/ninepatchdrawable_theme.xml
deleted file mode 100644
index bb031a5..0000000
--- a/tests/res/drawable/ninepatchdrawable_theme.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2014 The Android Open Source Project
-    
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-    
-          http://www.apache.org/licenses/LICENSE-2.0
-    
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
-    android:autoMirrored="?attr/themeBoolean"
-    android:dither="?attr/themeBoolean"
-    android:src="?attr/themeNinePatch" />
diff --git a/tests/res/drawable/no_padding.png b/tests/res/drawable/no_padding.png
deleted file mode 100644
index 7d4c27c..0000000
--- a/tests/res/drawable/no_padding.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/opaque.9.png b/tests/res/drawable/opaque.9.png
deleted file mode 100644
index a60f6d8..0000000
--- a/tests/res/drawable/opaque.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/padding_0.9.png b/tests/res/drawable/padding_0.9.png
deleted file mode 100644
index 0127bf4..0000000
--- a/tests/res/drawable/padding_0.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/paintdrawable_attr.xml b/tests/res/drawable/paintdrawable_attr.xml
deleted file mode 100644
index 444e5e2..0000000
--- a/tests/res/drawable/paintdrawable_attr.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-<shape  xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shape="rectangle">
-
-        <solid
-            android:color="#00000000"/>
-
-        <stroke
-            android:width="2dp"
-            android:color="#ff000000"/>
-
-        <padding
-            android:paddingLeft="1dp"
-            android:paddingRight="10dp"
-            android:paddingTop="1dp"
-            android:paddingBottom="10dp"/>
-
-        <corners
-            android:radius="9dp"
-            android:bottomRightRadius="8dp"
-            android:bottomLeftRadius="8dp"
-            android:topLeftRadius="0.5dp"
-            android:topRightRadius="0.5dp"/>
-
-</shape>
-
diff --git a/tests/res/drawable/pass.jpg b/tests/res/drawable/pass.jpg
deleted file mode 100644
index 2f4b083..0000000
--- a/tests/res/drawable/pass.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/png_test.png b/tests/res/drawable/png_test.png
deleted file mode 100644
index 5230051..0000000
--- a/tests/res/drawable/png_test.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/premul_data.png b/tests/res/drawable/premul_data.png
deleted file mode 100644
index 92d7e37..0000000
--- a/tests/res/drawable/premul_data.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/progressive_jpeg.jpg b/tests/res/drawable/progressive_jpeg.jpg
deleted file mode 100644
index 6b58be4..0000000
--- a/tests/res/drawable/progressive_jpeg.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/progressive_restart_jpeg.jpg b/tests/res/drawable/progressive_restart_jpeg.jpg
deleted file mode 100644
index 352c7a8..0000000
--- a/tests/res/drawable/progressive_restart_jpeg.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/rippledrawable_theme.xml b/tests/res/drawable/rippledrawable_theme.xml
deleted file mode 100644
index a49b820..0000000
--- a/tests/res/drawable/rippledrawable_theme.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?attr/themeColor" />
diff --git a/tests/res/drawable/robot.png b/tests/res/drawable/robot.png
deleted file mode 100644
index 8a9e698..0000000
--- a/tests/res/drawable/robot.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/rotatedrawable.xml b/tests/res/drawable/rotatedrawable.xml
deleted file mode 100644
index b9b2cfe..0000000
--- a/tests/res/drawable/rotatedrawable.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<rotate xmlns:android="http://schemas.android.com/apk/res/android"
-    android:pivotX="50%" android:pivotY="50%"
-    android:fromDegrees="0" android:toDegrees="360"
-    android:drawable="@drawable/testimage"/>
-
diff --git a/tests/res/drawable/scaled1.png b/tests/res/drawable/scaled1.png
deleted file mode 100644
index 2dad421..0000000
--- a/tests/res/drawable/scaled1.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/scaled2.png b/tests/res/drawable/scaled2.png
deleted file mode 100644
index 6d6a94f..0000000
--- a/tests/res/drawable/scaled2.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/scaledrawable.xml b/tests/res/drawable/scaledrawable.xml
deleted file mode 100644
index 7e65dce..0000000
--- a/tests/res/drawable/scaledrawable.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<scale xmlns:android="http://schemas.android.com/apk/res/android"
-    android:fromXScale="1.0"
-    android:toXScale="1.4"
-    android:fromYScale="1.0"
-    android:toYScale="0.6"
-    android:drawable="@drawable/testimage"/>
diff --git a/tests/res/drawable/scenery.jpg b/tests/res/drawable/scenery.jpg
deleted file mode 100644
index 7a6145b..0000000
--- a/tests/res/drawable/scenery.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/shapedrawable_test.xml b/tests/res/drawable/shapedrawable_test.xml
deleted file mode 100644
index 02da9f8..0000000
--- a/tests/res/drawable/shapedrawable_test.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<MockShapeDrawable xmlns:android="http://schemas.android.com/apk/res/android"
-       android:color="#00000000" android:width="42px" android:height="63px">
-    <padding android:left="1px" android:top="2px" android:right="3px" android:bottom="4px"/>
-    <testattrs android:id="@id/background"/>
-</MockShapeDrawable>
-
diff --git a/tests/res/drawable/size_48x48.jpg b/tests/res/drawable/size_48x48.jpg
deleted file mode 100644
index 5c2291e..0000000
--- a/tests/res/drawable/size_48x48.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/start.jpg b/tests/res/drawable/start.jpg
deleted file mode 100644
index 54e05e0..0000000
--- a/tests/res/drawable/start.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/statelist_testimage.jpg b/tests/res/drawable/statelist_testimage.jpg
deleted file mode 100644
index 754df0c..0000000
--- a/tests/res/drawable/statelist_testimage.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/statelistdrawable.xml b/tests/res/drawable/statelistdrawable.xml
deleted file mode 100644
index b867904..0000000
--- a/tests/res/drawable/statelistdrawable.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-   <item android:state_focused="true" android:drawable="@drawable/statelist_testimage"/>
-   <item android:state_enabled="false" android:drawable="@drawable/statelist_testimage"/>
-</selector>
-
diff --git a/tests/res/drawable/testcolor.xml b/tests/res/drawable/testcolor.xml
deleted file mode 100644
index d7b2718..0000000
--- a/tests/res/drawable/testcolor.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="#FFA6C839"/>
-</selector>
-
diff --git a/tests/res/drawable/testimage.jpg b/tests/res/drawable/testimage.jpg
deleted file mode 100644
index 754df0c..0000000
--- a/tests/res/drawable/testimage.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/transition_test.xml b/tests/res/drawable/transition_test.xml
deleted file mode 100644
index 3d62378..0000000
--- a/tests/res/drawable/transition_test.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<transition xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item >
-        <color android:color="#ffff0000" />
-    </item>
-
-    <item >
-        <color android:color="#ff0000ff" />
-    </item>
-</transition>
-
diff --git a/tests/res/drawable/transparent_border.9.png b/tests/res/drawable/transparent_border.9.png
deleted file mode 100644
index 2614c06..0000000
--- a/tests/res/drawable/transparent_border.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/transparent_right.9.png b/tests/res/drawable/transparent_right.9.png
deleted file mode 100644
index a438312..0000000
--- a/tests/res/drawable/transparent_right.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/typeface_test.png b/tests/res/drawable/typeface_test.png
deleted file mode 100644
index c337f5f..0000000
--- a/tests/res/drawable/typeface_test.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/vector_icon_clip_path_1.xml b/tests/res/drawable/vector_icon_clip_path_1.xml
deleted file mode 100644
index c2ab429..0000000
--- a/tests/res/drawable/vector_icon_clip_path_1.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="12.25"
-        android:viewportWidth="7.30625" >
-
-    <group
-        android:pivotX="3.65"
-        android:pivotY="6.125"
-        android:rotation="-30" >
-        <clip-path
-            android:name="clip1"
-            android:pathData="
-                M 0, 6.125
-                l 7.3, 0
-                l 0, 12.25
-                l -7.3, 0
-                z" />
-    </group>
-    <group>
-        <path
-            android:name="one"
-            android:fillColor="#ff88ff"
-            android:pathData="M 1.215625,9.5l 1.9375,0.0 0.0-6.671875 -2.109375,0.421875 0.0-1.078125
-                l 2.09375-0.421875 1.1874998,0.0 0.0,7.75 1.9375,0.0 0.0,1.0
-                l -5.046875,0.0 0.0-1.0Z" />
-    </group>
-    <group
-        android:pivotX="3.65"
-        android:pivotY="6.125"
-        android:rotation="-30" >
-        <clip-path
-            android:name="clip2"
-            android:pathData="
-                M 0, 0
-                l 7.3, 0
-                l 0, 6.125
-                l -7.3, 0
-                z" />
-    </group>
-    <group>
-        <path
-            android:name="two"
-            android:fillColor="#ff88ff"
-            android:pathData="M 2.534375,9.6875l 4.140625,0.0 0.0,1.0 -5.5625,0.0 0.0-1.0q 0.671875-0.6875 1.828125-1.859375
-                        q 1.1718752-1.1875 1.4687502-1.53125 0.578125-0.625 0.796875-1.0625
-                        q 0.234375-0.453125 0.234375-0.875 0.0-0.703125 -0.5-1.140625
-                        q -0.484375-0.4375 -1.2656252-0.4375 -0.5625,0.0 -1.1875,0.1875
-                        q -0.609375,0.1875 -1.3125,0.59375l 0.0-1.203125q 0.71875-0.28125 1.328125-0.421875
-                        q 0.625-0.15625 1.140625-0.15625 1.3593752,0.0 2.1718752,0.6875
-                        q 0.8125,0.671875 0.8125,1.8125 0.0,0.53125 -0.203125,1.015625
-                        q -0.203125,0.484375 -0.734375,1.140625 -0.15625,0.171875 -0.9375,0.984375
-                        q -0.78125024,0.8125 -2.2187502,2.265625Z" />
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_create.xml b/tests/res/drawable/vector_icon_create.xml
deleted file mode 100644
index 7db4ad5..0000000
--- a/tests/res/drawable/vector_icon_create.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="24"
-        android:viewportWidth="24" >
-
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M3.0,17.25L3.0,21.0l3.75,0.0L17.813995,9.936001l-3.75-3.75L3.0,17.25zM20.707,7.0429993c0.391-0.391 0.391-1.023 0.0-1.414l-2.336-2.336c-0.391-0.391-1.023-0.391 -1.414,0.0l-1.832,1.832l3.75,3.75L20.707,7.0429993z" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_delete.xml b/tests/res/drawable/vector_icon_delete.xml
deleted file mode 100644
index 8d9c21c..0000000
--- a/tests/res/drawable/vector_icon_delete.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="24"
-        android:viewportWidth="24" >
-
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M6.0,19.0c0.0,1.104 0.896,2.0 2.0,2.0l8.0,0.0c1.104,0.0 2.0-0.896 2.0-2.0l0.0-12.0L6.0,7.0L6.0,19.0zM18.0,4.0l-2.5,0.0l-1.0-1.0l-5.0,0.0l-1.0,1.0L6.0,4.0C5.4469986,4.0 5.0,4.4469986 5.0,5.0l0.0,1.0l14.0,0.0l0.0-1.0C19.0,4.4469986 18.552002,4.0 18.0,4.0z" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_heart.xml b/tests/res/drawable/vector_icon_heart.xml
deleted file mode 100644
index ff55fe5..0000000
--- a/tests/res/drawable/vector_icon_heart.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="24"
-        android:viewportWidth="24" >
-
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M16.0,5.0c-1.955,0.0 -3.83,1.268 -4.5,3.0c-0.67-1.732 -2.547-3.0 -4.5-3.0C4.4570007,5.0 2.5,6.931999 2.5,9.5c0.0,3.529 3.793,6.258 9.0,11.5c5.207-5.242 9.0-7.971 9.0-11.5C20.5,6.931999 18.543,5.0 16.0,5.0z" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_random_path_1.xml b/tests/res/drawable/vector_icon_random_path_1.xml
deleted file mode 100644
index 5c55294..0000000
--- a/tests/res/drawable/vector_icon_random_path_1.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at"+
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="128"
-        android:viewportWidth="128" >
-
-    <path
-        android:fillColor="#FF00FF00"
-        android:pathData="
-                 m 0.0 0.0
-                 c 58.357853 57.648304 47.260395 2.2044754 3.0 3.0
-                 s 61.29288 10.748665 6.0 6.0
-                 s 0.12015152 45.193787 9.0 9.0
-                 s 32.573513 46.862522 12.0 12.0
-                 C 52.051823 62.050003 14.197739 51.99994 15.0 15.0
-                 S 58.365482 51.877937 18.0 18.0
-                 S 26.692455 3.9604378 21.0 21.0
-                 S 21.433464 52.17514 24.0 24.0
-                 M 27.0 27.0
-                 s 0.77630234 20.606667 30.0 30.0
-                 M 33.0 33.0
-                 S 31.06879 21.506374 36.0 36.0
-                 m 39.0 39.0
-                 s 11.699013 23.684185 42.0 42.0
-                 m 45.0 45.0
-                 S 3.7642136 38.589584 48.0 48.0
-                 Q 27.203026 53.329338 51.0 51.0
-                 s 39.229023 15.1781845 54.0 54.0
-                 Q 47.946877 23.706299 57.0 57.0
-                 S 45.63452 56.15198 60.0 60.0 "
-        android:strokeColor="#FF0000FF"
-        android:strokeWidth="1" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_random_path_2.xml b/tests/res/drawable/vector_icon_random_path_2.xml
deleted file mode 100644
index 95e0a54..0000000
--- a/tests/res/drawable/vector_icon_random_path_2.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at"+
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="128"
-        android:viewportWidth="128" >
-
-    <path
-        android:fillColor="#FF00FF00"
-        android:pathData="
-                 m 0.0 0.0
-                 q 4.7088394 36.956432 3.0 3.0
-                 s 29.470345 16.754963 6.0 6.0
-                 q 20.278355 7.4670525 9.0 9.0
-                 S 30.897224 17.732414 12.0 12.0
-                 T 15.0 15.0
-                 s 63.47204 45.67142 18.0 18.0
-                 T 21.0 21.0
-                 S 0.3184204 24.808247 24.0 24.0
-                 t 27.0 27.0
-                 s 39.02275 38.261158 30.0 30.0
-                 t 33.0 33.0
-                 S 50.709816 16.067192 36.0 36.0
-                 a 62.50911 7.7131805 51.932335 0 0 39.0 39.0
-                 s 5.155651 15.749123 42.0 42.0
-                 a 51.87415 40.30564 49.804344 0 0 45.0 45.0
-                 S 16.16534 62.55986 48.0 48.0
-                 A 39.90161 43.904438 41.642593 1 0 51.0 51.0
-                 s 46.258068 32.12831 54.0 54.0
-                 A 22.962704 55.05604 42.912285 1 1 57.0 57.0
-                 S 36.47731 54.216763 60.0 60.0 "
-        android:strokeColor="#FF0000FF"
-        android:strokeWidth="1" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_render_order_1.xml b/tests/res/drawable/vector_icon_render_order_1.xml
deleted file mode 100644
index 8639096..0000000
--- a/tests/res/drawable/vector_icon_render_order_1.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="400"
-        android:viewportWidth="400" >
-
-    <group
-        android:name="FirstLevelGroup"
-        android:alpha="0.9"
-        android:translateX="100.0"
-        android:translateY="0.0" >
-        <path
-            android:fillColor="#FFFF0000"
-            android:pathData="@string/rectangle200" />
-
-        <group
-            android:name="SecondLevelGroup1"
-            android:alpha="0.9"
-            android:translateX="-100.0"
-            android:translateY="50.0" >
-            <path
-                android:fillColor="#FF00FF00"
-                android:pathData="@string/rectangle200" />
-
-            <group
-                android:name="ThridLevelGroup1"
-                android:alpha="0.9"
-                android:translateX="-100.0"
-                android:translateY="50.0" >
-                <path
-                    android:fillColor="#FF0000FF"
-                    android:pathData="@string/rectangle200" />
-            </group>
-            <group
-                android:name="ThridLevelGroup2"
-                android:alpha="0.8"
-                android:translateX="100.0"
-                android:translateY="50.0" >
-                <path
-                    android:fillColor="#FF000000"
-                    android:pathData="@string/rectangle200" />
-            </group>
-        </group>
-        <group
-            android:name="SecondLevelGroup2"
-            android:alpha="0.8"
-            android:translateX="100.0"
-            android:translateY="50.0" >
-            <path
-                android:fillColor="#FF0000FF"
-                android:pathData="@string/rectangle200" />
-
-            <group
-                android:name="ThridLevelGroup3"
-                android:alpha="0.9"
-                android:translateX="-100.0"
-                android:translateY="50.0" >
-                <path
-                    android:fillColor="#FFFF0000"
-                    android:pathData="@string/rectangle200" />
-            </group>
-            <group
-                android:name="ThridLevelGroup4"
-                android:alpha="0.8"
-                android:translateX="100.0"
-                android:translateY="50.0" >
-                <path
-                    android:fillColor="#FF00FF00"
-                    android:pathData="@string/rectangle200" />
-            </group>
-        </group>
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_render_order_2.xml b/tests/res/drawable/vector_icon_render_order_2.xml
deleted file mode 100644
index 069a531..0000000
--- a/tests/res/drawable/vector_icon_render_order_2.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="400"
-        android:viewportWidth="400" >
-
-    <group
-        android:name="FirstLevelGroup"
-        android:alpha="0.9"
-        android:translateX="100.0"
-        android:translateY="0.0" >
-        <group
-            android:name="SecondLevelGroup1"
-            android:alpha="0.9"
-            android:translateX="-100.0"
-            android:translateY="50.0" >
-            <path
-                android:fillColor="#FF00FF00"
-                android:pathData="@string/rectangle200" />
-
-            <group
-                android:name="ThridLevelGroup1"
-                android:alpha="0.9"
-                android:translateX="-100.0"
-                android:translateY="50.0" >
-                <path
-                    android:fillColor="#FF0000FF"
-                    android:pathData="@string/rectangle200" />
-            </group>
-            <group
-                android:name="ThridLevelGroup2"
-                android:alpha="0.8"
-                android:translateX="100.0"
-                android:translateY="50.0" >
-                <path
-                    android:fillColor="#FF000000"
-                    android:pathData="@string/rectangle200" />
-            </group>
-        </group>
-        <group
-            android:name="SecondLevelGroup2"
-            android:alpha="0.8"
-            android:translateX="100.0"
-            android:translateY="50.0" >
-            <path
-                android:fillColor="#FF0000FF"
-                android:pathData="@string/rectangle200" />
-
-            <group
-                android:name="ThridLevelGroup3"
-                android:alpha="0.9"
-                android:translateX="-100.0"
-                android:translateY="50.0" >
-                <path
-                    android:fillColor="#FFFF0000"
-                    android:pathData="@string/rectangle200" />
-            </group>
-            <group
-                android:name="ThridLevelGroup4"
-                android:alpha="0.8"
-                android:translateX="100.0"
-                android:translateY="50.0" >
-                <path
-                    android:fillColor="#FF00FF00"
-                    android:pathData="@string/rectangle200" />
-            </group>
-        </group>
-
-        <path
-            android:fillColor="#FFFF0000"
-            android:pathData="@string/rectangle200" />
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_repeated_a_1.xml b/tests/res/drawable/vector_icon_repeated_a_1.xml
deleted file mode 100644
index e27464b..0000000
--- a/tests/res/drawable/vector_icon_repeated_a_1.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at"+
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="128"
-        android:viewportWidth="128" >
-
-    <path
-        android:fillColor="#FF00FF00"
-        android:pathData="m 45.712063 19.109837
-                H 24.509682
-                a 59.3415 26.877445 22.398209 1 1 3.3506432 1.6524277
-                a 34.922844 36.72583 13.569004 0 0 24.409462 20.931156
-                a 43.47134 32.61542 52.534607 1 0 7.187504 61.509724
-                A 30.621132 41.44202 50.885685 0 0 23.235489 26.638653
-                A 7.251148 15.767811 44.704533 1 1 19.989803 21.33052
-                A 55.645584 46.20288 19.40316 0 1 32.881298 53.410923
-                c 30.649612 4.8525085 21.96682 1.3304634 17.300182 14.747681
-                a 9.375069 44.365055 57.169727 0 0 56.01326 52.59596
-                A 50.071907 37.331825 56.301754 1 0 14.676102 62.04976
-                C 36.531925 4.6217957 47.59332 54.793385 13.562473 13.753647
-                A 2.3695297 42.578487 54.250687 0 1 33.1337 41.511288
-                a 39.4827 38.844944 54.52335 1 1 13.549484 46.81581
-                c 56.943657 51.96854 27.938824 61.148792 24.168636 46.642727
-                "
-        android:strokeColor="#FF0000FF"
-        android:strokeWidth="1" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_repeated_a_2.xml b/tests/res/drawable/vector_icon_repeated_a_2.xml
deleted file mode 100644
index 924ba1b..0000000
--- a/tests/res/drawable/vector_icon_repeated_a_2.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at"+
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="128"
-        android:viewportWidth="128" >
-
-    <path
-        android:fillColor="#FF00FF00"
-        android:pathData="m 45.712063 19.109837
-                H 24.509682
-                A 37.689938 2.3916092 17.462616 1 0 24.958328 48.110596
-                q 45.248383 30.396336 5.777027 3.4086685
-                a 30.966236 62.67946 50.532032 1 0 29.213684 60.63014
-                L 56.16764 8.342098
-                Q 61.172253 1.4613304 4.4721107 38.287144
-                A 6.284897 22.991482 47.409508 1 1 44.10166 60.998764
-                t 36.36881 55.68292
-                a 51.938667 35.22107 22.272938 1 1 28.572739 60.848858
-                A 19.610851 11.569599 51.407906 1 1 56.82705 24.386292
-                T 36.918854 59.542286
-                a 33.191364 10.553429 53.047726 1 0 54.874985 7.409252
-                s 30.186714 42.154182 59.73551 35.50219
-                A 47.9379 5.776497 28.307701 1 1 3.3323975 30.113499
-                a 22.462494 28.096004 55.76455 0 0 25.58981 30.816948
-                S 43.91107 54.679676 19.540264 0.34284973
-                "
-        android:strokeColor="#FF0000FF"
-        android:strokeWidth="1" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_repeated_cq.xml b/tests/res/drawable/vector_icon_repeated_cq.xml
deleted file mode 100644
index e0848f0..0000000
--- a/tests/res/drawable/vector_icon_repeated_cq.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at"+
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="128"
-        android:viewportWidth="128" >
-
-    <path
-        android:fillColor="#FF00FF00"
-        android:pathData="m 30.81895 41.37989
-                v 31.00579
-                c 24.291603 52.03364 40.6086 24.840137 29.56704 6.5204926
-                45.133224 22.913471 33.052887 21.727486 33.369 61.60278
-                9.647232 22.098152 48.939598 47.470215 53.653687 62.32235
-                C 2.0560722 1.4615479 7.0928993 26.005287 40.137558 36.75628
-                11.246731 32.178127 59.367462 60.34823 57.254383 37.357815
-                47.75605 11.424667 3.3105545 51.886635 56.63027 17.12133
-                q 28.37534 32.85535 25.85654 33.57151
-                10.356537 51.850616 54.085087 35.653175
-                12.530029 52.87991 17.44696 11.780586
-                Q 2.585228 51.92801 60.000664 56.79912
-                54.18275 51.500694 9.375679 23.836113
-                60.35329 59.026245 31.058632 35.14934
-                "
-        android:strokeColor="#FF0000FF"
-        android:strokeWidth="1" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_repeated_st.xml b/tests/res/drawable/vector_icon_repeated_st.xml
deleted file mode 100644
index b104349..0000000
--- a/tests/res/drawable/vector_icon_repeated_st.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at"+
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="128"
-        android:viewportWidth="128" >
-
-    <path
-        android:fillColor="#FF00FF00"
-        android:pathData="m 20.20005 8.139153
-                h 10.053165
-                s 14.2943 49.612846 35.520653 54.904068
-                50.1405 17.044182 5.470337 40.180553
-                3.125019 34.221123 53.212563 32.862965
-                S 35.985264 35.74349 0.15337753 59.27337
-                2.2951508 44.56783 51.089413 29.829689
-                8.5599785 22.649555 4.3914986 28.139206
-                t 11.932453 44.041077
-                62.629326 7.40921
-                23.302986 54.116184
-                T 43.560753 63.370514
-                40.156204 17.60786
-                40.12051 60.803394
-                "
-        android:strokeColor="#FF0000FF"
-        android:strokeWidth="1" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_schedule.xml b/tests/res/drawable/vector_icon_schedule.xml
deleted file mode 100644
index 64d19e8..0000000
--- a/tests/res/drawable/vector_icon_schedule.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="24"
-        android:viewportWidth="24" >
-
-    <path
-        android:fillColor="#E6000000"
-        android:pathData="M11.994999,2.0C6.4679985,2.0 2.0,6.4780006 2.0,12.0s4.468,10.0 9.995,10.0S22.0,17.522 22.0,12.0S17.521,2.0 11.994999,2.0zM12.0,20.0c-4.42,0.0 -8.0-3.582-8.0-8.0s3.58-8.0 8.0-8.0s8.0,3.582 8.0,8.0S16.419998,20.0 12.0,20.0z" />
-    <path
-        android:fillColor="#E6000000"
-        android:pathData="M12.5,6.0l-1.5,0.0 0.0,7.0 5.3029995,3.1819992 0.75-1.249999-4.5529995-2.7320004z" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_settings.xml b/tests/res/drawable/vector_icon_settings.xml
deleted file mode 100644
index 13d7f05..0000000
--- a/tests/res/drawable/vector_icon_settings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="24"
-        android:viewportWidth="24" >
-
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M19.429,12.975998c0.042-0.32 0.07-0.645 0.07-0.976s-0.029-0.655-0.07-0.976l2.113-1.654c0.188-0.151 0.243-0.422 0.118-0.639l-2.0-3.463c-0.125-0.217-0.386-0.304-0.612-0.218l-2.49,1.004c-0.516-0.396-1.081-0.731-1.69-0.984l-0.375-2.648C14.456,2.1829987 14.25,2.0 14.0,2.0l-4.0,0.0C9.75,2.0 9.544,2.1829987 9.506,2.422001L9.131,5.0699997C8.521,5.322998 7.957,5.6570015 7.44,6.054001L4.952,5.0509987C4.726,4.965 4.464,5.052002 4.34,5.269001l-2.0,3.463C2.2150002,8.947998 2.27,9.219002 2.4580002,9.369999l2.112,1.653C4.528,11.344002 4.5,11.668999 4.5,12.0s0.029,0.656 0.071,0.977L2.4580002,14.630001c-0.188,0.151-0.243,0.422-0.118,0.639l2.0,3.463c0.125,0.217 0.386,0.304 0.612,0.218l2.489-1.004c0.516,0.396 1.081,0.731 1.69,0.984l0.375,2.648C9.544,21.817001 9.75,22.0 10.0,22.0l4.0,0.0c0.25,0.0 0.456-0.183 0.494-0.422l0.375-2.648c0.609-0.253 1.174-0.588 1.689-0.984l2.49,1.004c0.226,0.086 0.487-0.001 0.612-0.218l2.0-3.463c0.125-0.217 0.07-0.487-0.118-0.639L19.429,12.975998zM12.0,16.0c-2.21,0.0-4.0-1.791-4.0-4.0c0.0-2.21 1.79-4.0 4.0-4.0c2.208,0.0 4.0,1.79 4.0,4.0C16.0,14.209 14.208,16.0 12.0,16.0z" />
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_stroke_1.xml b/tests/res/drawable/vector_icon_stroke_1.xml
deleted file mode 100644
index af351f1..0000000
--- a/tests/res/drawable/vector_icon_stroke_1.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:height="64dp"
-    android:viewportHeight="200"
-    android:viewportWidth="200"
-    android:width="64dp" >
-
-    <group>
-        <path
-            android:name="background1"
-            android:fillColor="#FF000000"
-            android:pathData="M 0,0 l 100,0 l 0, 100 l -100, 0 z" />
-        <path
-            android:name="background2"
-            android:fillColor="#FF000000"
-            android:pathData="M 100,100 l 100,0 l 0, 100 l -100, 0 z" />
-    </group>
-    <group
-        android:translateX="50"
-        android:translateY="50" >
-        <path
-            android:name="twoLines"
-            android:pathData="M 100,20 l 0 80 l -30 -80"
-            android:fillColor="#FF000000"
-            android:strokeColor="#FF00FF00"
-            android:strokeLineCap="butt"
-            android:strokeLineJoin="miter"
-            android:strokeMiterLimit="6"
-            android:strokeWidth="20" />
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_stroke_2.xml b/tests/res/drawable/vector_icon_stroke_2.xml
deleted file mode 100644
index f85d5fc..0000000
--- a/tests/res/drawable/vector_icon_stroke_2.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:height="64dp"
-    android:viewportHeight="200"
-    android:viewportWidth="200"
-    android:width="64dp" >
-
-    <group>
-        <path
-            android:name="background1"
-            android:fillColor="#FF000000"
-            android:pathData="M 0,0 l 100,0 l 0, 100 l -100, 0 z" />
-        <path
-            android:name="background2"
-            android:fillColor="#FF000000"
-            android:pathData="M 100,100 l 100,0 l 0, 100 l -100, 0 z" />
-    </group>
-    <group
-        android:translateX="50"
-        android:translateY="50" >
-        <path
-            android:name="twoLines"
-            android:pathData="M 100,20 l 0 80 l -30 -80"
-            android:fillColor="#FF000000"
-            android:strokeColor="#FF00FF00"
-            android:strokeLineCap="round"
-            android:strokeLineJoin="round"
-            android:strokeMiterLimit="10"
-            android:strokeWidth="20" />
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_stroke_3.xml b/tests/res/drawable/vector_icon_stroke_3.xml
deleted file mode 100644
index 8f3d47e..0000000
--- a/tests/res/drawable/vector_icon_stroke_3.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:height="64dp"
-    android:viewportHeight="200"
-    android:viewportWidth="200"
-    android:width="64dp" >
-
-    <group>
-        <path
-            android:name="background1"
-            android:fillColor="#FF000000"
-            android:pathData="M 0,0 l 100,0 l 0, 100 l -100, 0 z" />
-        <path
-            android:name="background2"
-            android:fillColor="#FF000000"
-            android:pathData="M 100,100 l 100,0 l 0, 100 l -100, 0 z" />
-    </group>
-    <group
-        android:translateX="50"
-        android:translateY="50" >
-        <path
-            android:name="twoLines"
-            android:pathData="M 100,20 l 0 80 l -30 -80"
-            android:fillColor="#FF000000"
-            android:strokeColor="#FF00FF00"
-            android:strokeLineCap="square"
-            android:strokeLineJoin="bevel"
-            android:strokeMiterLimit="10"
-            android:strokeWidth="20" />
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_transformation_1.xml b/tests/res/drawable/vector_icon_transformation_1.xml
deleted file mode 100644
index f6623d0..0000000
--- a/tests/res/drawable/vector_icon_transformation_1.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="500"
-        android:viewportWidth="800" >
-
-    <group
-        android:pivotX="90"
-        android:pivotY="100"
-        android:rotation="20">
-        <path
-            android:name="pie2"
-            android:pathData="M200,350 l 50,-25
-           a25,12 -30 0,1 100,-50 l 50,-25
-           a25,25 -30 0,1 100,-50 l 50,-25
-           a25,37 -30 0,1 100,-50 l 50,-25
-           a25,50 -30 0,1 100,-50 l 50,-25"
-           android:fillColor="#00000000"
-            android:strokeColor="#FF00FF00"
-            android:strokeWidth="10" />
-    </group>
-
-</vector>
diff --git a/tests/res/drawable/vector_icon_transformation_2.xml b/tests/res/drawable/vector_icon_transformation_2.xml
deleted file mode 100644
index 87da0bb..0000000
--- a/tests/res/drawable/vector_icon_transformation_2.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="200"
-        android:viewportWidth="200" >
-
-    <group>
-        <path
-            android:name="background1"
-            android:pathData="M 0,0 l 100,0 l 0, 100 l -100, 0 z"
-            android:fillColor="#FF000000"/>
-        <path
-            android:name="background2"
-            android:pathData="M 100,100 l 100,0 l 0, 100 l -100, 0 z"
-            android:fillColor="#FF000000"/>
-    </group>
-    <group
-        android:pivotX="100"
-        android:pivotY="100"
-        android:rotation="90"
-        android:scaleX="0.75"
-        android:scaleY="0.5"
-        android:translateX="0.0"
-        android:translateY="100.0">
-        <path
-            android:name="twoLines"
-            android:pathData="M 100,10 v 90 M 10,100 h 90"
-            android:fillColor="#00000000"
-            android:strokeColor="#FF00FF00"
-            android:strokeWidth="10" />
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_transformation_3.xml b/tests/res/drawable/vector_icon_transformation_3.xml
deleted file mode 100644
index fc30af3..0000000
--- a/tests/res/drawable/vector_icon_transformation_3.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="200"
-        android:viewportWidth="200" >
-
-    <group>
-        <path
-            android:name="background1"
-            android:pathData="M 0,0 l 100,0 l 0, 100 l -100, 0 z"
-            android:fillColor="#FF000000"/>
-        <path
-            android:name="background2"
-            android:pathData="M 100,100 l 100,0 l 0, 100 l -100, 0 z"
-            android:fillColor="#FF000000"/>
-    </group>
-    <group
-        android:pivotX="0"
-        android:pivotY="0"
-        android:rotation="90"
-        android:scaleX="0.75"
-        android:scaleY="0.5"
-        android:translateX="100.0"
-        android:translateY="100.0">
-        <path
-            android:name="twoLines"
-            android:pathData="M 100,10 v 90 M 10,100 h 90"
-            android:fillColor="#00000000"
-            android:strokeColor="#FF00FF00"
-            android:strokeWidth="10" />
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_transformation_4.xml b/tests/res/drawable/vector_icon_transformation_4.xml
deleted file mode 100644
index 5b40d0d..0000000
--- a/tests/res/drawable/vector_icon_transformation_4.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="400"
-        android:viewportWidth="400" >
-
-    <group android:name="backgroundGroup" >
-        <path
-            android:name="background1"
-            android:fillColor="#80000000"
-            android:pathData="M 0,0 l 200,0 l 0, 200 l -200, 0 z" />
-        <path
-            android:name="background2"
-            android:fillColor="#80000000"
-            android:pathData="M 200,200 l 200,0 l 0, 200 l -200, 0 z" />
-    </group>
-    <group
-        android:name="translateToCenterGroup"
-        android:translateX="50.0"
-        android:translateY="90.0" >
-        <path
-            android:name="twoLines"
-            android:pathData="M 0,0 v 100 M 0,0 h 100"
-            android:strokeColor="#FFFF0000"
-            android:strokeWidth="20" />
-
-        <group
-            android:name="rotationGroup"
-            android:pivotX="0.0"
-            android:pivotY="0.0"
-            android:rotation="-45.0" >
-            <path
-                android:name="twoLines1"
-                android:pathData="M 0,0 v 100 M 0,0 h 100"
-                android:strokeColor="#FF00FF00"
-                android:strokeWidth="20" />
-
-            <group
-                android:name="translateGroup"
-                android:translateX="130.0"
-                android:translateY="160.0" >
-                <group android:name="scaleGroup" >
-                    <path
-                        android:name="twoLines2"
-                        android:pathData="M 0,0 v 100 M 0,0 h 100"
-                        android:strokeColor="#FF0000FF"
-                        android:strokeWidth="20" />
-                </group>
-            </group>
-        </group>
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_transformation_5.xml b/tests/res/drawable/vector_icon_transformation_5.xml
deleted file mode 100644
index 4a27754..0000000
--- a/tests/res/drawable/vector_icon_transformation_5.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="400"
-        android:viewportWidth="400" >
-
-    <group android:name="backgroundGroup" >
-        <path
-            android:name="background1"
-            android:fillColor="#80000000"
-            android:pathData="M 0,0 l 200,0 l 0, 200 l -200, 0 z" />
-        <path
-            android:name="background2"
-            android:fillColor="#80000000"
-            android:pathData="M 200,200 l 200,0 l 0, 200 l -200, 0 z" />
-    </group>
-    <group
-        android:name="translateToCenterGroup"
-        android:translateX="50.0"
-        android:translateY="90.0" >
-        <path
-            android:name="twoLines"
-            android:pathData="M 0,0 v 150 M 0,0 h 150"
-            android:strokeColor="#FFFF0000"
-            android:strokeWidth="20" />
-
-        <group
-            android:name="rotationGroup"
-            android:pivotX="0.0"
-            android:pivotY="0.0"
-            android:rotation="-45.0" >
-            <path
-                android:name="twoLines1"
-                android:pathData="M 0,0 v 100 M 0,0 h 100"
-                android:strokeColor="#FF00FF00"
-                android:strokeWidth="20" />
-
-            <group
-                android:name="translateGroup"
-                android:translateX="130.0"
-                android:translateY="160.0" >
-                <group android:name="scaleGroup" >
-                    <path
-                        android:name="twoLines3"
-                        android:pathData="M 0,0 v 100 M 0,0 h 100"
-                        android:strokeColor="#FF0000FF"
-                        android:strokeWidth="20" />
-                </group>
-            </group>
-
-            <group
-                android:name="translateGroupHalf"
-                android:translateX="65.0"
-                android:translateY="80.0" >
-                <group android:name="scaleGroup" >
-                    <path
-                        android:name="twoLines2"
-                        android:pathData="M 0,0 v 100 M 0,0 h 100"
-                        android:strokeColor="#FF0000FF"
-                        android:strokeWidth="20" />
-                </group>
-            </group>
-        </group>
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/vector_icon_transformation_6.xml b/tests/res/drawable/vector_icon_transformation_6.xml
deleted file mode 100644
index 5e60c4a..0000000
--- a/tests/res/drawable/vector_icon_transformation_6.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--
- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="64dp"
-        android:width="64dp"
-        android:viewportHeight="400"
-        android:viewportWidth="400" >
-
-    <group android:name="backgroundGroup"
-        android:alpha = "0.5" >
-        <path
-            android:name="background1"
-            android:fillColor="#FF000000"
-            android:pathData="M 0,0 l 200,0 l 0, 200 l -200, 0 z" />
-        <path
-            android:name="background2"
-            android:fillColor="#FF000000"
-            android:pathData="M 200,200 l 200,0 l 0, 200 l -200, 0 z" />
-    </group>
-    <group
-        android:name="translateToCenterGroup"
-        android:translateX="50.0"
-        android:translateY="90.0"
-        android:alpha = "0.5" >
-        <path
-            android:name="twoLines"
-            android:pathData="M 0,0 v 100 M 0,0 h 100"
-            android:strokeColor="#FFFF0000"
-            android:strokeWidth="20" />
-
-        <group
-            android:name="rotationGroup"
-            android:pivotX="0.0"
-            android:pivotY="0.0"
-            android:rotation="-45.0"
-            android:alpha = "0.5" >
-            <path
-                android:name="twoLines1"
-                android:pathData="M 0,0 v 100 M 0,0 h 100"
-                android:strokeColor="#FF00FF00"
-                android:strokeWidth="20" />
-
-            <group
-                android:name="translateGroup"
-                android:translateX="130.0"
-                android:translateY="160.0"
-                android:alpha = "0.5">
-                <group android:name="scaleGroup" >
-                    <path
-                        android:name="twoLines3"
-                        android:pathData="M 0,0 v 100 M 0,0 h 100"
-                        android:strokeColor="#FF0000FF"
-                        android:strokeWidth="20" />
-                </group>
-            </group>
-
-            <group
-                android:name="translateGroupHalf"
-                android:translateX="65.0"
-                android:translateY="80.0"
-                android:alpha = "0.5">
-                <group android:name="scaleGroup" >
-                    <path
-                        android:name="twoLines2"
-                        android:pathData="M 0,0 v 100 M 0,0 h 100"
-                        android:strokeColor="#FF0000FF"
-                        android:strokeWidth="20" />
-                </group>
-            </group>
-        </group>
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/tests/res/drawable/webp_test.webp b/tests/res/drawable/webp_test.webp
deleted file mode 100644
index 7b1009f..0000000
--- a/tests/res/drawable/webp_test.webp
+++ /dev/null
Binary files differ
diff --git a/tests/res/drawable/window_test_drawable.xml b/tests/res/drawable/window_test_drawable.xml
deleted file mode 100644
index 4281cd8..0000000
--- a/tests/res/drawable/window_test_drawable.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="#00000000"/>
-    <stroke android:width="2dp" android:color="#ff000000"/>
-    <padding android:left="1dp" android:top="1dp"
-            android:right="1dp" android:bottom="1dp" />
-</shape>
diff --git a/tests/res/layout-land/mediaplayer.xml b/tests/res/layout-land/mediaplayer.xml
deleted file mode 100644
index 5dafdb9..0000000
--- a/tests/res/layout-land/mediaplayer.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="horizontal"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <SurfaceView android:id="@+id/surface"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_weight="1">
-    </SurfaceView>
-
-    <SurfaceView android:id="@+id/surface2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_weight="1">
-    </SurfaceView>
-
-    <SurfaceView android:id="@+id/surface3"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_weight="1">
-    </SurfaceView>
-
-</LinearLayout>
diff --git a/tests/res/layout/abslistview_layout.xml b/tests/res/layout/abslistview_layout.xml
deleted file mode 100644
index a090ce3..0000000
--- a/tests/res/layout/abslistview_layout.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ViewGroup_Layout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/abslistview_root"
-    android:layout_width="25px"
-    android:layout_height="25px" >
-
-   <GridView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
-
-   <ListView>
-        <TextView
-            android:text="@string/table_layout_first"
-            android:padding="3dip" />
-        <TextView
-            android:text="@string/table_layout_second"
-            android:padding="3dip" />
-        <TextView
-            android:text="@string/table_layout_third"
-            android:padding="3dip" />
-    </ListView>
-</ViewGroup_Layout>
-
diff --git a/tests/res/layout/absolute_layout.xml b/tests/res/layout/absolute_layout.xml
deleted file mode 100644
index 6cec61b..0000000
--- a/tests/res/layout/absolute_layout.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <AbsoluteLayout
-        android:id="@+id/absolute_view"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_x="1dip"
-        android:layout_y="2dip">
-
-        <TextView
-            android:id="@+id/absolute_textview"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_x="10dip"
-            android:layout_y="20dip"
-            android:background="@drawable/red"
-            android:text="@string/hello_world"/>
-
-    </AbsoluteLayout>
-
-</LinearLayout>
diff --git a/tests/res/layout/adapterview_layout.xml b/tests/res/layout/adapterview_layout.xml
deleted file mode 100644
index e118500..0000000
--- a/tests/res/layout/adapterview_layout.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/adapterview_tv"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
-
diff --git a/tests/res/layout/alert_dialog_text_entry.xml b/tests/res/layout/alert_dialog_text_entry.xml
deleted file mode 100644
index 8b87a5d..0000000
--- a/tests/res/layout/alert_dialog_text_entry.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    <TextView
-        android:id="@+id/username_view"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:layout_marginLeft="20dip"
-        android:layout_marginRight="20dip"
-        android:text="@string/alert_dialog_username"
-        android:gravity="left"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    <EditText
-        android:id="@+id/username_edit"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:layout_marginLeft="20dip"
-        android:layout_marginRight="20dip"
-        android:scrollHorizontally="true"
-        android:autoText="false"
-        android:capitalize="none"
-        android:gravity="fill_horizontal"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    <TextView
-        android:id="@+id/password_view"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:layout_marginLeft="20dip"
-        android:layout_marginRight="20dip"
-        android:text="@string/alert_dialog_password"
-        android:gravity="left"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    <EditText
-        android:id="@+id/password_edit"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:layout_marginLeft="20dip"
-        android:layout_marginRight="20dip"
-        android:scrollHorizontally="true"
-        android:autoText="false"
-        android:capitalize="none"
-        android:gravity="fill_horizontal"
-        android:password="true"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
-</LinearLayout>
diff --git a/tests/res/layout/alert_dialog_text_entry_2.xml b/tests/res/layout/alert_dialog_text_entry_2.xml
deleted file mode 100644
index 848b342..0000000
--- a/tests/res/layout/alert_dialog_text_entry_2.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    <TextView
-        android:id="@+id/username_view"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:layout_marginLeft="20dip"
-        android:layout_marginRight="20dip"
-        android:text="@string/alert_dialog_username"
-        android:gravity="left" />
-
-    <EditText
-        android:id="@+id/username_edit"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:layout_marginLeft="20dip"
-        android:layout_marginRight="20dip"
-        android:scrollHorizontally="true"
-        android:autoText="false"
-        android:capitalize="none"
-        android:gravity="fill_horizontal" />
-
-</LinearLayout>
diff --git a/tests/res/layout/alertdialog_custom_title.xml b/tests/res/layout/alertdialog_custom_title.xml
deleted file mode 100644
index ff36f2a..0000000
--- a/tests/res/layout/alertdialog_custom_title.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/alertdialog_custom_title"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:gravity="center_vertical|center_horizontal"
-    android:textAppearance="?android:attr/textAppearanceMedium"
-    android:text="@string/hello_world"/>
diff --git a/tests/res/layout/alertdialog_custom_title2.xml b/tests/res/layout/alertdialog_custom_title2.xml
deleted file mode 100644
index 51c154d..0000000
--- a/tests/res/layout/alertdialog_custom_title2.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/alertdialog_custom_title"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:gravity="center_vertical|center_horizontal"
-    android:text="@string/hello_android"/>
diff --git a/tests/res/layout/analogclock.xml b/tests/res/layout/analogclock.xml
deleted file mode 100644
index 7d862c3..0000000
--- a/tests/res/layout/analogclock.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<AnalogClock android:id="@+id/clock"
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="96dip"
-    android:layout_gravity="center_horizontal"
-    android:layout_height="wrap_content"/>
diff --git a/tests/res/layout/anim_layout.xml b/tests/res/layout/anim_layout.xml
deleted file mode 100644
index b6aa906..0000000
--- a/tests/res/layout/anim_layout.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:id="@+id/anim_window_parent">
-
-    <TextView android:id="@+id/anim_window"
-        android:layout_width="100dip"
-        android:layout_height="20dip"
-        android:text="@string/text_view_hello"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/animation_layout.xml b/tests/res/layout/animation_layout.xml
deleted file mode 100644
index 13228d1..0000000
--- a/tests/res/layout/animation_layout.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:id="@+id/layout"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <ImageButton android:id="@+id/scenery"
-        android:src="@drawable/scenery"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerHorizontal="true"/>
-
-    <ImageButton android:id="@+id/start"
-        android:src="@drawable/start"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerHorizontal="true"
-        android:layout_below="@id/scenery"/>
-
-    <TextView android:id="@+id/explain"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="18sp"
-        android:autoText="true"
-        android:capitalize="sentences"
-        android:text="@string/explain"
-        android:layout_centerHorizontal="true"
-        android:layout_below="@id/start"/>
-
-    <LinearLayout android:id="@+id/button_layout"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:layout_centerHorizontal="true"
-        android:layout_alignParentBottom="true">
-
-        <ImageButton android:id="@+id/pass"
-            android:src="@drawable/pass"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginRight="20px"/>
-
-        <ImageButton android:id="@+id/failed"
-            android:src="@drawable/failed"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="40px"/>
-
-    </LinearLayout>
-
-</RelativeLayout>
diff --git a/tests/res/layout/app_activity.xml b/tests/res/layout/app_activity.xml
deleted file mode 100644
index 8b7206f..0000000
--- a/tests/res/layout/app_activity.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<!-- Demonstrates receiving activity results.
-     See corresponding Java code com.android.sdk.app.ReceiveResult.java. -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="4dip"
-    android:gravity="center_horizontal"
-    android:layout_width="match_parent" android:layout_height="match_parent">
-
-    <TextView
-        android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
-        android:text="@string/forwarding"/>
-
-    <Button android:id="@+id/go"
-        android:layout_width="wrap_content" android:layout_height="wrap_content"
-        android:text="@string/go">
-        <requestFocus />
-    </Button>
-
-</LinearLayout>
-
diff --git a/tests/res/layout/app_another.xml b/tests/res/layout/app_another.xml
deleted file mode 100644
index f4574a2..0000000
--- a/tests/res/layout/app_another.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<!-- Demonstrates receiving activity results.
-     See corresponding Java code com.android.sdk.app.ReceiveResult.java. -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="4dip"
-    android:gravity="center_horizontal"
-    android:layout_width="match_parent" android:layout_height="match_parent">
-
-    <TextView
-        android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
-        android:text="@string/forwarding"/>
-
-    <Button android:id="@+id/back"
-        android:layout_width="wrap_content" android:layout_height="wrap_content"
-        android:text="@string/back">
-        <requestFocus />
-    </Button>
-
-</LinearLayout>
-
diff --git a/tests/res/layout/autocompletetextview_layout.xml b/tests/res/layout/autocompletetextview_layout.xml
deleted file mode 100644
index c2404d5..0000000
--- a/tests/res/layout/autocompletetextview_layout.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/autocompletetv_title"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/notify" />
-
-    <AutoCompleteTextView android:id="@+id/autocompletetv_edit"
-        android:completionThreshold="1"
-        android:completionHint="@string/tabs_1"
-        android:layout_width="match_parent" 
-        android:layout_height="wrap_content"
-        android:inputType="none"/>
-</LinearLayout>
diff --git a/tests/res/layout/available_intents_layout.xml b/tests/res/layout/available_intents_layout.xml
deleted file mode 100644
index 5415657..0000000
--- a/tests/res/layout/available_intents_layout.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-    <TextView android:id="@+id/text"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:paddingLeft="4dip"
-        android:focusable="true"
-        android:focusableInTouchMode="true"
-        android:text="@string/text_view_hello"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/checkbox_layout.xml b/tests/res/layout/checkbox_layout.xml
deleted file mode 100644
index a1f1718..0000000
--- a/tests/res/layout/checkbox_layout.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-    <CheckBox android:id="@+id/check_box"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/hello_world" />
-
-</LinearLayout>
diff --git a/tests/res/layout/checkedtextview_layout.xml b/tests/res/layout/checkedtextview_layout.xml
deleted file mode 100644
index d5b9c1f..0000000
--- a/tests/res/layout/checkedtextview_layout.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent">
-
-    <ListView android:id="@+id/checkedtextview_listview"
-        android:orientation="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    </ListView>
-
-    <CheckedTextView android:id="@+id/checkedtextview_test"
-        android:orientation="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    </CheckedTextView>
-
-</LinearLayout>
diff --git a/tests/res/layout/chronometer_stub_layout.xml b/tests/res/layout/chronometer_stub_layout.xml
deleted file mode 100644
index 487f2f8..0000000
--- a/tests/res/layout/chronometer_stub_layout.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen"
-    android:layout_width="match_parent" android:layout_height="match_parent"
-    android:orientation="vertical">
-    <LinearLayout
-        android:id="@+id/chronometer_view_group"
-        android:layout_width="match_parent" android:layout_height="match_parent"
-        android:orientation="vertical">
-        <Chronometer
-            android:id="@+id/test_chronometer"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:text="@string/chronometer_text"
-            />
-    </LinearLayout>
-</ScrollView>
-
diff --git a/tests/res/layout/context_layout.xml b/tests/res/layout/context_layout.xml
deleted file mode 100644
index 6ec6c76..0000000
--- a/tests/res/layout/context_layout.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <DatePicker
-        android:id="@+id/contextdatepicker_dp"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerInParent="true" />
-
-</RelativeLayout>
diff --git a/tests/res/layout/cursoradapter_group0.xml b/tests/res/layout/cursoradapter_group0.xml
deleted file mode 100644
index f640686..0000000
--- a/tests/res/layout/cursoradapter_group0.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:id="@+id/cursorAdapter_group0">
-</ImageView>
diff --git a/tests/res/layout/cursoradapter_group1.xml b/tests/res/layout/cursoradapter_group1.xml
deleted file mode 100644
index d1dfa3c..0000000
--- a/tests/res/layout/cursoradapter_group1.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:id="@+id/cursorAdapter_group1">
-</ImageView>
diff --git a/tests/res/layout/cursoradapter_host.xml b/tests/res/layout/cursoradapter_host.xml
deleted file mode 100644
index 82ac72b..0000000
--- a/tests/res/layout/cursoradapter_host.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:id="@+id/cursorAdapter_host">
-</LinearLayout>
diff --git a/tests/res/layout/cursoradapter_item0.xml b/tests/res/layout/cursoradapter_item0.xml
deleted file mode 100644
index 5ecd496..0000000
--- a/tests/res/layout/cursoradapter_item0.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:id="@+id/cursorAdapter_item0">
-</TextView>
diff --git a/tests/res/layout/cursoradapter_item1.xml b/tests/res/layout/cursoradapter_item1.xml
deleted file mode 100644
index 44037b0..0000000
--- a/tests/res/layout/cursoradapter_item1.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:id="@+id/cursorAdapter_item1">
-</TextView>
diff --git a/tests/res/layout/datepicker.xml b/tests/res/layout/datepicker.xml
deleted file mode 100644
index 6a7b51c..0000000
--- a/tests/res/layout/datepicker.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-    <DatePicker android:id="@+id/datePicker1"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:spinnersShown="false"
-                xmlns:android="http://schemas.android.com/apk/res/android">
-    </DatePicker>
diff --git a/tests/res/layout/datepicker_layout.xml b/tests/res/layout/datepicker_layout.xml
deleted file mode 100644
index 925674c..0000000
--- a/tests/res/layout/datepicker_layout.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <DatePicker
-        android:id="@+id/datePicker_dp"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerInParent="true" />
-
-</RelativeLayout>
diff --git a/tests/res/layout/dialerfilter_layout.xml b/tests/res/layout/dialerfilter_layout.xml
deleted file mode 100644
index 46edbd7..0000000
--- a/tests/res/layout/dialerfilter_layout.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<DialerFilter android:id="@+id/dialer_filter"
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <EditText android:id="@android:id/hint"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@android:drawable/editbox_background"/>
-
-    <EditText android:id="@android:id/primary"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@android:id/hint"/>
-
-</DialerFilter>
diff --git a/tests/res/layout/dialog_stub_layout.xml b/tests/res/layout/dialog_stub_layout.xml
deleted file mode 100644
index b0a8861..0000000
--- a/tests/res/layout/dialog_stub_layout.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
-        android:layout_width="match_parent" 
-        android:layout_height="match_parent"
-        >
-</LinearLayout>
diff --git a/tests/res/layout/digitalclock_layout.xml b/tests/res/layout/digitalclock_layout.xml
deleted file mode 100644
index cbdb84d..0000000
--- a/tests/res/layout/digitalclock_layout.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<com.android.cts.stub.alarmclock.DigitalClock android:id="@+id/digitalClock"
-     xmlns:android="http://schemas.android.com/apk/res/android"
-     android:layout_width="wrap_content"
-     android:layout_height="208dip"
-     android:gravity="center">
-     <!-- Includes vertical padding so animated background doesn't
-          stretch much -->
-     <TextView android:id="@+id/timeDisplay"
-         android:layout_width="wrap_content"
-         android:layout_height="wrap_content"
-         android:textSize="64sp"
-         android:paddingRight="4dip"
-         android:paddingTop="48dip"
-         android:paddingBottom="48dip"/>
-     <LinearLayout android:id="@+id/am_pm"
-         android:layout_width="wrap_content"
-         android:layout_height="wrap_content"
-         android:orientation="vertical">
-         <TextView android:id="@+id/am"
-             android:layout_width="wrap_content"
-             android:layout_height="wrap_content"
-             android:layout_marginTop="-7dp"
-             android:text="@string/am"
-             android:textSize="28sp"/>
-         <TextView android:id="@+id/pm"
-             android:layout_width="wrap_content"
-             android:layout_height="wrap_content"
-             android:layout_marginTop="-4dp"
-             android:text="@string/pm"
-             android:textSize="28sp"/>
-     </LinearLayout>
-</com.android.cts.stub.alarmclock.DigitalClock>
diff --git a/tests/res/layout/digitalclock_simplelayout.xml b/tests/res/layout/digitalclock_simplelayout.xml
deleted file mode 100644
index 16f7b45..0000000
--- a/tests/res/layout/digitalclock_simplelayout.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/digitalclock_root"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-</LinearLayout>
diff --git a/tests/res/layout/edittext_layout.xml b/tests/res/layout/edittext_layout.xml
deleted file mode 100644
index 398d3be..0000000
--- a/tests/res/layout/edittext_layout.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent" >
-
-    <LinearLayout android:id="@+id/edit_text"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-        <EditText android:id="@+id/edittext1"
-            style="@android:style/Widget.EditText"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_marginTop="10dip"
-            android:scrollHorizontally="true"
-            android:capitalize="sentences"
-            android:autoText="false"
-            android:maxLines="3"
-            android:textColor="#FF0000"
-            android:text="@string/edit_text"
-        />
-    </LinearLayout>
-</ScrollView>
diff --git a/tests/res/layout/expandablelistview_layout.xml b/tests/res/layout/expandablelistview_layout.xml
deleted file mode 100644
index 3a3ebb7..0000000
--- a/tests/res/layout/expandablelistview_layout.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<ExpandableListView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/expandablelistview_test"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:drawSelectorOnTop="false" />
-
diff --git a/tests/res/layout/focus_finder_layout.xml b/tests/res/layout/focus_finder_layout.xml
deleted file mode 100644
index 0502fd8..0000000
--- a/tests/res/layout/focus_finder_layout.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    <TableLayout android:id="@+id/layout"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerInParent="true">
-        <TableRow>
-            <android.view.cts.TestButton android:id="@+id/top_left_button"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:text="TL" />
-            <android.view.cts.TestButton android:id="@+id/top_right_button"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:text="TR" />
-        </TableRow>
-        <TableRow>
-            <android.view.cts.TestButton android:id="@+id/bottom_left_button"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:text="BL" />
-            <android.view.cts.TestButton android:id="@+id/bottom_right_button"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:text="BR" />
-        </TableRow>  
-    </TableLayout>
-</RelativeLayout>
-
diff --git a/tests/res/layout/focus_handling_layout.xml b/tests/res/layout/focus_handling_layout.xml
deleted file mode 100644
index 84c8e6a..0000000
--- a/tests/res/layout/focus_handling_layout.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <View
-        android:id="@+id/view1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/id_ok"/>
-
-    <View
-        android:id="@+id/view2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toRightOf="@id/view1"
-        android:layout_alignTop="@id/view1"
-        android:nextFocusLeft="@id/view1"
-        android:text="@string/id_ok"/>
-
-    <View
-        android:id="@+id/view3"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/view1"
-        android:layout_alignLeft="@id/view1"
-        android:nextFocusUp="@id/view1"
-        android:text="@string/id_ok"/>
-
-    <View
-        android:id="@+id/view4"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toRightOf="@id/view3"
-        android:layout_alignTop="@id/view3"
-        android:layout_alignRight="@id/view2"
-        android:nextFocusUp="@id/view2"
-        android:nextFocusLeft="@id/view3"
-        android:text="@string/id_ok"/>
-</RelativeLayout>
-
diff --git a/tests/res/layout/framelayout_layout.xml b/tests/res/layout/framelayout_layout.xml
deleted file mode 100644
index 78b7b47..0000000
--- a/tests/res/layout/framelayout_layout.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:id="@+id/framelayout_container"
-                android:background="@drawable/red"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:layout_gravity="bottom"
-                android:orientation="vertical">
-
-    <FrameLayout
-        android:layout_width="100dip"
-        android:layout_height="100dip"
-        android:background="@drawable/yellow"
-        android:id="@+id/framelayout">
-    </FrameLayout>
-
-    <FrameLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:background="@drawable/yellow"
-        android:id="@+id/framelayout_measureall">
-
-        <TextView android:id="@+id/framelayout_textview"
-            android:background="@drawable/blue"
-            android:layout_width="60dip"
-            android:layout_height="30dip"
-            android:text="@string/hello_world"/>
-
-        <Button android:id="@+id/framelayout_button"
-            android:layout_width="50dip"
-            android:layout_height="15dip"
-            android:text="@string/go"/>
-
-    </FrameLayout>
-
-    <FrameLayout
-        android:id="@+id/foreground_tint"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:foregroundTint="@android:color/white"
-        android:foregroundTintMode="src_over" />
-
-</LinearLayout>
diff --git a/tests/res/layout/gallery_test.xml b/tests/res/layout/gallery_test.xml
deleted file mode 100644
index 03f0e60..0000000
--- a/tests/res/layout/gallery_test.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <android.widget.cts.MyGallery xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/gallery_test"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-    </android.widget.cts.MyGallery>
-
-</LinearLayout>
diff --git a/tests/res/layout/gridlayout_anim_controller_layout.xml b/tests/res/layout/gridlayout_anim_controller_layout.xml
deleted file mode 100644
index 0ff2d46..0000000
--- a/tests/res/layout/gridlayout_anim_controller_layout.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<GridView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/gridlayout_anim_gridview"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:padding="10dp"
-    android:verticalSpacing="20dp"
-    android:horizontalSpacing="20dp"
-    android:numColumns="3"
-    android:columnWidth="60dp"
-    android:stretchMode="columnWidth"
-    android:gravity="center"
-/>
diff --git a/tests/res/layout/gridlayout_layout.xml b/tests/res/layout/gridlayout_layout.xml
deleted file mode 100644
index 54b3b2c..0000000
--- a/tests/res/layout/gridlayout_layout.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2012 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<GridLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    >
-</GridLayout>
diff --git a/tests/res/layout/gridview_layout.xml b/tests/res/layout/gridview_layout.xml
deleted file mode 100644
index c7774a3..0000000
--- a/tests/res/layout/gridview_layout.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<GridView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/gridview"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-/>
-
diff --git a/tests/res/layout/home_activity.xml b/tests/res/layout/home_activity.xml
deleted file mode 100644
index 49174da..0000000
--- a/tests/res/layout/home_activity.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:orientation="vertical"
-              android:layout_width="match_parent"
-              android:layout_height="match_parent">
-      <Button android:text="@string/holo_test"
-              android:id="@+id/button_holo"
-              android:onClick="onHoloTestClick"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content">
-      </Button>
-      <Button android:text="@string/holo_generator"
-              android:id="@+id/button2"
-              android:onClick="onHoloGenClick"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content">
-      </Button>
-      <Button android:text="@string/holo_light_test"
-              android:id="@+id/button3"
-              android:onClick="onHoloLightTestClick"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content">
-      </Button>
-      <Button android:text="@string/holo_light_generator"
-              android:id="@+id/button4"
-              android:onClick="onHoloLightGenClick"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content">
-      </Button>
-</LinearLayout>
diff --git a/tests/res/layout/horizontal_scrollview.xml b/tests/res/layout/horizontal_scrollview.xml
deleted file mode 100644
index 0f88ab3..0000000
--- a/tests/res/layout/horizontal_scrollview.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<android.widget.cts.MyHorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/horizontal_scroll_view"
-    android:layout_width="100px"
-    android:layout_height="100px">
-
-    <LinearLayout
-        android:orientation="horizontal"
-        android:layout_width="250px"
-        android:layout_height="wrap_content">
-
-        <Button
-            android:id="@+id/first_horizontal_child"
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_3"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_3"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_3"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_3"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:id="@+id/last_horizontal_child"
-            android:layout_width="250px"
-            android:layout_height="100px"
-            android:text="@string/vertical_text_3"/>
-    </LinearLayout>
-
-</android.widget.cts.MyHorizontalScrollView>
diff --git a/tests/res/layout/imagebutton_test.xml b/tests/res/layout/imagebutton_test.xml
deleted file mode 100644
index 7d4b691..0000000
--- a/tests/res/layout/imagebutton_test.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/imagebutton"
-    android:layout_width="96px"
-    android:layout_height="76px"
-    android:soundEffectsEnabled="false"
-/>
-
diff --git a/tests/res/layout/imageswitcher_test.xml b/tests/res/layout/imageswitcher_test.xml
deleted file mode 100644
index 496b2ba..0000000
--- a/tests/res/layout/imageswitcher_test.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <ImageSwitcher android:id="@+id/switcher"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_alignParentTop="true"
-        android:layout_alignParentLeft="true"
-    />
-</RelativeLayout>
-
diff --git a/tests/res/layout/imageview_layout.xml b/tests/res/layout/imageview_layout.xml
deleted file mode 100644
index e56a9c9..0000000
--- a/tests/res/layout/imageview_layout.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <ImageView
-        android:id="@+id/imageview"
-        android:layout_width="320px"
-        android:layout_height="240px"/>
-
-    <ImageView
-        android:id="@+id/image_tint"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:tint="@android:color/white"
-        android:tintMode="src_over" />
-
-</LinearLayout>
-
diff --git a/tests/res/layout/inflater_layout.xml b/tests/res/layout/inflater_layout.xml
deleted file mode 100644
index cff224e..0000000
--- a/tests/res/layout/inflater_layout.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/numeric_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:editable="true"/>
-
-    <TextView android:id="@+id/numeric_integer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="integer"/>
-
-    <TextView android:id="@+id/numeric_signed"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="signed"/>
-
-    <TextView android:id="@+id/numeric_decimal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="decimal"/>
-
-    <TextView android:id="@+id/numeric_signed_integer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="signed|integer"/>
-
-    <TextView android:id="@+id/numeric_integer_decimal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="integer|decimal"/>
-
-    <TextView android:id="@+id/numeric_signed_decimal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="signed|decimal"/>
-
-    <TextView android:id="@+id/numeric_signed_decimal_integer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="signed|integer|decimal"/>
-
-     <android.view.cts.MockViewStub class="android.view.cts.MockViewStub"
-        android:id="@+id/autotext_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/inflater_layout_tags.xml b/tests/res/layout/inflater_layout_tags.xml
deleted file mode 100644
index dc3eb29..0000000
--- a/tests/res/layout/inflater_layout_tags.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/viewlayout_root"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical" >
-
-    <tag
-        android:id="@+id/tag_viewlayout_root"
-        android:value="@string/tag1" />
-
-    <View
-        android:id="@+id/mock_view"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" >
-
-        <tag
-            android:id="@+id/tag_mock_view"
-            android:value="@string/tag2" />
-    </View>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/tests/res/layout/inflater_override_theme_layout.xml b/tests/res/layout/inflater_override_theme_layout.xml
deleted file mode 100644
index 2d2a578..0000000
--- a/tests/res/layout/inflater_override_theme_layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:theme="@style/Theme_OverrideOuter" >
-
-    <View
-        android:id="@+id/view_outer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:theme="@style/Theme_OverrideInner" >
-
-        <View
-            android:id="@+id/view_inner"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-        <View
-            android:id="@+id/view_attr"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:theme="?attr/themeOverrideAttr" />
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/tests/res/layout/inputmethod_edittext.xml b/tests/res/layout/inputmethod_edittext.xml
deleted file mode 100755
index 849b411..0000000
--- a/tests/res/layout/inputmethod_edittext.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                  android:layout_width="fill_parent"
-                  android:layout_height="wrap_content"
-                  android:background="@drawable/blue"
-                android:padding="10px">
-
-    <EditText android:id="@+id/entry"
-              android:layout_width="fill_parent"
-              android:layout_height="wrap_content"
-              android:background="@android:drawable/editbox_background"/>
-
-</RelativeLayout>
diff --git a/tests/res/layout/keylistener_layout.xml b/tests/res/layout/keylistener_layout.xml
deleted file mode 100644
index 96a419d..0000000
--- a/tests/res/layout/keylistener_layout.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/keylistener_textview"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-/>
-
diff --git a/tests/res/layout/layoutdirection_layout.xml b/tests/res/layout/layoutdirection_layout.xml
deleted file mode 100644
index e506dc1..0000000
--- a/tests/res/layout/layoutdirection_layout.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2012 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"
-              android:orientation="vertical">
-
-    <LinearLayout android:id="@+id/layout_linearlayout_ltr"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:layoutDirection="ltr">
-
-        <LinearLayout android:id="@+id/layout_linearlayout_ltr_child_1"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="ltr" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_ltr_child_2"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="rtl" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_ltr_child_3"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="inherit" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_ltr_child_4"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="locale" />
-
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/layout_linearlayout_rtl"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:layoutDirection="rtl">
-
-        <LinearLayout android:id="@+id/layout_linearlayout_rtl_child_1"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="ltr" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_rtl_child_2"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="rtl" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_rtl_child_3"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="inherit" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_rtl_child_4"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="locale" />
-
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/layout_linearlayout_locale"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:layoutDirection="locale">
-
-        <LinearLayout android:id="@+id/layout_linearlayout_locale_child_1"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="ltr" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_locale_child_2"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="rtl" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_locale_child_3"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="inherit" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_locale_child_4"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="locale" />
-
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/layout_linearlayout_inherit"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:layoutDirection="inherit">
-
-        <LinearLayout android:id="@+id/layout_linearlayout_inherit_child_1"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="ltr" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_inherit_child_2"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="rtl" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_inherit_child_3"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="inherit" />
-
-        <LinearLayout android:id="@+id/layout_linearlayout_inherit_child_4"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:layoutDirection="locale" />
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/tests/res/layout/linearlayout_layout.xml b/tests/res/layout/linearlayout_layout.xml
deleted file mode 100644
index c70937d..0000000
--- a/tests/res/layout/linearlayout_layout.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-    <LinearLayout android:id="@+id/horizontal"
-        android:orientation="horizontal"
-        android:layout_width="wrap_content"
-        android:layout_height="100dip"
-        android:background="#FF909090">
-
-        <TextView android:id="@+id/gravity_top"
-            android:background="#FF00FF00"
-            android:layout_width="wrap_content"
-            android:layout_height="50dip"
-            android:layout_gravity="top"
-            android:text="@string/horizontal_text_1"/>
-
-        <TextView android:id="@+id/gravity_center_vertical"
-            android:background="#FF00FF00"
-            android:layout_width="wrap_content"
-            android:layout_height="50dip"
-            android:layout_gravity="center_vertical"
-            android:text="@string/horizontal_text_2"/>
-
-        <TextView android:id="@+id/gravity_bottom"
-            android:background="#FF00FF00"
-            android:layout_width="wrap_content"
-            android:layout_height="50dip"
-            android:layout_gravity="bottom"
-            android:text="@string/horizontal_text_3"/>
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/vertical"
-        android:orientation="vertical"
-        android:layout_width="100dip"
-        android:layout_height="wrap_content"
-        android:background="#FFFF0909">
-
-        <TextView android:id="@+id/gravity_left"
-            android:background="#FF00FF00"
-            android:layout_width="wrap_content"
-            android:layout_height="20dip"
-            android:layout_gravity="left"
-            android:text="@string/vertical_text_1"/>
-
-        <TextView android:id="@+id/gravity_center_horizontal"
-            android:background="#FF0000FF"
-            android:layout_width="wrap_content"
-            android:layout_height="20dip"
-            android:layout_gravity="center_horizontal"
-            android:text="@string/vertical_text_2"/>
-
-        <TextView android:id="@+id/gravity_right"
-            android:background="#FF00FF00"
-            android:layout_width="wrap_content"
-            android:layout_height="20dip"
-            android:layout_gravity="right"
-            android:text="@string/vertical_text_3"/>
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/weightsum"
-        android:orientation="horizontal"
-        android:weightSum="1.0"
-        android:baselineAligned="false"
-        android:layout_width="100dip"
-        android:layout_height="100dip"
-        android:background="#FF909090">
-
-        <TextView android:id="@+id/weight_0_2"
-            android:background="#FF0000FF"
-            android:layout_width="0dip"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.2"
-            android:text="@string/horizontal_text_1"/>
-
-        <TextView android:id="@+id/weight_0_5"
-            android:background="#FFF00F0F"
-            android:layout_width="0dip"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.5"
-            android:text="@string/horizontal_text_2"/>
-
-        <TextView android:id="@+id/weight_0_3"
-            android:background="#FF0000FF"
-            android:layout_width="0dip"
-            android:layout_height="wrap_content"
-            android:layout_weight="0.3"
-            android:text="@string/horizontal_text_3"/>
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/baseline_aligned_child_index"
-        android:orientation="vertical"
-        android:baselineAlignedChildIndex="1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:background="#FFFF0909">
-
-        <TextView android:id="@+id/textview1"
-            android:background="#FF00FF00"
-            android:layout_width="wrap_content"
-            android:layout_height="20dip"
-            android:layout_gravity="left"
-            android:text="@string/vertical_text_1"/>
-
-        <TextView android:id="@+id/textview2"
-            android:background="#FF0000FF"
-            android:layout_width="wrap_content"
-            android:layout_height="20dip"
-            android:layout_gravity="center_horizontal"
-            android:text="@string/vertical_text_2"/>
-
-        <TextView android:id="@+id/textview3"
-            android:background="#FF00FF00"
-            android:layout_width="wrap_content"
-            android:layout_height="20dip"
-            android:layout_gravity="right"
-            android:text="@string/vertical_text_3"/>
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/tests/res/layout/list_activity_layout.xml b/tests/res/layout/list_activity_layout.xml
deleted file mode 100644
index 0486cf0..0000000
--- a/tests/res/layout/list_activity_layout.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@android:id/text1"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-/>
diff --git a/tests/res/layout/listview_layout.xml b/tests/res/layout/listview_layout.xml
deleted file mode 100644
index ee8b6de..0000000
--- a/tests/res/layout/listview_layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/headerview1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/header_view" />
-
-    <TextView android:id="@+id/headerview2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/header_view" />
-
-    <ListView android:id="@+id/listview_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-    <TextView android:id="@+id/footerview1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/footer_view" />
-
-    <TextView android:id="@+id/footerview2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/footer_view" />
-</LinearLayout>
-
diff --git a/tests/res/layout/local_sample.xml b/tests/res/layout/local_sample.xml
deleted file mode 100644
index 6f02e78..0000000
--- a/tests/res/layout/local_sample.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:padding="4dip"
-    android:gravity="center_horizontal"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
-        android:text="@string/text"/>
-
-    <Button android:id="@+id/go"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/text">
-        <requestFocus />
-    </Button>
-
-</LinearLayout>
-
diff --git a/tests/res/layout/mediacontroller_layout.xml b/tests/res/layout/mediacontroller_layout.xml
deleted file mode 100644
index 871adf4..0000000
--- a/tests/res/layout/mediacontroller_layout.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <VideoView
-        android:id="@+id/mediacontroller_videoview"
-        android:layout_width="320px"
-        android:layout_height="240px"/>
-
-</LinearLayout>
-
diff --git a/tests/res/layout/multi_auto_complete_text_view_layout.xml b/tests/res/layout/multi_auto_complete_text_view_layout.xml
deleted file mode 100644
index 50109c8..0000000
--- a/tests/res/layout/multi_auto_complete_text_view_layout.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/text_country" />
-
-    <MultiAutoCompleteTextView android:id="@+id/country_edit"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/text_name" />
-
-    <MultiAutoCompleteTextView android:id="@+id/name_edit"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-</LinearLayout>
-
diff --git a/tests/res/layout/popupwindow.xml b/tests/res/layout/popupwindow.xml
deleted file mode 100644
index 2508115..0000000
--- a/tests/res/layout/popupwindow.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:orientation="vertical">
-
-    <TextView android:id="@+id/anchor_upper"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/text_view_hint" />
-
-    <LinearLayout android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_weight="1">
-
-        <TextView android:id="@+id/anchor_middle_left"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:text="@string/text_view_hint"
-            android:layout_weight="1"/>
-
-        <TextView android:id="@+id/anchor_middle_right"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:text="@string/text_view_hint"
-            android:layout_weight="1"/>
-
-    </LinearLayout>
-
-    <TextView android:id="@+id/anchor_lower"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/text_view_hint" />
-
-</LinearLayout>
diff --git a/tests/res/layout/progressbar_layout.xml b/tests/res/layout/progressbar_layout.xml
deleted file mode 100644
index a1786b8..0000000
--- a/tests/res/layout/progressbar_layout.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <ProgressBar
-        android:id="@+id/progress_tint"
-        android:progressTint="@android:color/white"
-        android:progressTintMode="src_over"
-        android:progressBackgroundTint="@android:color/white"
-        android:progressBackgroundTintMode="src_over"
-        android:secondaryProgressTint="@android:color/white"
-        android:secondaryProgressTintMode="src_over"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        style="@android:style/Widget.ProgressBar.Horizontal" />
-
-    <ProgressBar
-        android:id="@+id/indeterminate_tint"
-        android:indeterminateTint="@android:color/white"
-        android:indeterminateTintMode="src_over"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        style="@android:style/Widget.ProgressBar.Large" />
-
-</LinearLayout>
diff --git a/tests/res/layout/radiogroup_1.xml b/tests/res/layout/radiogroup_1.xml
deleted file mode 100644
index 1e9db83..0000000
--- a/tests/res/layout/radiogroup_1.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:layout_weight="0.5"
-    android:layout_gravity="bottom"
-    android:layout_margin="5px">
-</RadioGroup>
-
diff --git a/tests/res/layout/ratingbar_layout.xml b/tests/res/layout/ratingbar_layout.xml
deleted file mode 100644
index acc7fa8..0000000
--- a/tests/res/layout/ratingbar_layout.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:orientation="vertical">
-
-    <RatingBar android:id="@+id/ratingbar_constructor"
-        android:isIndicator="false"
-        android:numStars="50"
-        android:rating="1.2"
-        android:stepSize="0.2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/relative_layout.xml b/tests/res/layout/relative_layout.xml
deleted file mode 100644
index db4b2e8..0000000
--- a/tests/res/layout/relative_layout.xml
+++ /dev/null
@@ -1,258 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <RelativeLayout
-        android:id="@+id/relative_sublayout_attrs"
-        android:background="@drawable/blue"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <!-- view1, centered within its parent. -->
-        <TextView
-            android:id="@+id/relative_view1"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerInParent="true"
-            android:text="@string/relative_view1"/>
-
-        <!-- view2, below view1 and has same left position with view1. -->
-        <TextView
-            android:id="@+id/relative_view2"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_below="@id/relative_view1"
-            android:layout_alignLeft="@id/relative_view1"
-            android:text="@string/relative_view2"/>
-
-        <!-- view3, has same top position with view1 and same bottom position with view2,
-             and on the right of view1. -->
-        <TextView
-            android:id="@+id/relative_view3"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignTop="@id/relative_view1"
-            android:layout_alignBottom="@id/relative_view2"
-            android:layout_toRightOf="@id/relative_view1"
-            android:text="@string/relative_view3"/>
-
-        <!-- view4, has same right position with view3 and above view3. -->
-        <TextView
-            android:id="@+id/relative_view4"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignRight="@id/relative_view3"
-            android:layout_above="@id/relative_view3"
-            android:text="@string/relative_view4"/>
-
-        <!-- view5 goes on the left-bottom -->
-        <TextView
-            android:id="@+id/relative_view5"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentBottom="true"
-            android:layout_alignParentLeft="true"
-            android:text="@string/relative_view5"/>
-
-        <!-- view6 goes on the top-right -->
-        <TextView
-            android:id="@+id/relative_view6"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentTop="true"
-            android:layout_alignParentRight="true"
-            android:text="@string/relative_view6"/>
-
-        <!-- view7, has same baseline with view6 and centered horizontally within its parent. -->
-        <TextView
-            android:id="@+id/relative_view7"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignBaseline="@id/relative_view6"
-            android:layout_centerHorizontal="true"
-            android:text="@string/relative_view7"/>
-
-        <!-- view8, centered vertically within its parent and on the left of view1. -->
-        <TextView
-            android:id="@+id/relative_view8"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_toLeftOf="@id/relative_view1"
-            android:layout_centerVertical="true"
-            android:text="@string/relative_view8"/>
-
-        <!-- view9, has same top and bottom position with view3 and same left position
-             with its parent. -->
-        <TextView
-            android:id="@+id/relative_view9"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignLeft="@id/gravity_bottom"
-            android:layout_alignTop="@id/relative_view3"
-            android:layout_alignBottom="@id/relative_view3"
-            android:layout_alignWithParentIfMissing="true"
-            android:text="@string/relative_view9"/>
-
-    </RelativeLayout>
-
-    <RelativeLayout
-        android:id="@+id/relative_sublayout_gravity"
-        android:background="@drawable/yellow"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <!-- view10 -->
-        <TextView
-            android:id="@+id/relative_view10"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/relative_view10"/>
-
-        <!-- view11 -->
-        <TextView
-            android:id="@+id/relative_view11"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_below="@id/relative_view10"
-            android:text="@string/relative_view11"/>
-    </RelativeLayout>
-
-    <RelativeLayout
-        android:id="@+id/relative_sublayout_ignore_gravity"
-        android:background="@drawable/red"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:ignoreGravity="@+id/relative_view12"
-        android:gravity="right">
-
-        <!-- view12 -->
-        <TextView
-            android:id="@id/relative_view12"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/relative_view12"/>
-
-        <!-- view13 -->
-        <TextView
-            android:id="@+id/relative_view13"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/relative_view13"/>
-    </RelativeLayout>
-
-    <Spinner
-        android:id="@+id/spinner1"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:prompt="@string/text_view_hello"/>
-
-    <RelativeLayout
-            android:id="@+id/relative_sublayout_attrs_2"
-            android:background="@drawable/blue"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
-
-        <!-- view21, centered within its parent. -->
-        <TextView
-                android:id="@+id/relative_view21"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_centerInParent="true"
-                android:text="@string/relative_view1"/>
-
-        <!-- view22, below view1 and has same start position with view21. -->
-        <TextView
-                android:id="@+id/relative_view22"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_below="@id/relative_view21"
-                android:layout_alignStart="@id/relative_view21"
-                android:text="@string/relative_view2"/>
-
-        <!-- view23, has same top position with view21 and same bottom position with view22,
-             and on the end of view1. -->
-        <TextView
-                android:id="@+id/relative_view23"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignTop="@id/relative_view21"
-                android:layout_alignBottom="@id/relative_view22"
-                android:layout_toEndOf="@id/relative_view21"
-                android:text="@string/relative_view3"/>
-
-        <!-- view24, has same end position with view23 and above view23. -->
-        <TextView
-                android:id="@+id/relative_view24"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignEnd="@id/relative_view23"
-                android:layout_above="@id/relative_view23"
-                android:text="@string/relative_view4"/>
-
-        <!-- view25 goes on the start-bottom -->
-        <TextView
-                android:id="@+id/relative_view25"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignParentBottom="true"
-                android:layout_alignParentStart="true"
-                android:text="@string/relative_view5"/>
-
-        <!-- view26 goes on the top-end -->
-        <TextView
-                android:id="@+id/relative_view26"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignParentTop="true"
-                android:layout_alignParentEnd="true"
-                android:text="@string/relative_view6"/>
-
-        <!-- view27, has same baseline with view26 and centered horizontally within its parent. -->
-        <TextView
-                android:id="@+id/relative_view27"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignBaseline="@id/relative_view26"
-                android:layout_centerHorizontal="true"
-                android:text="@string/relative_view7"/>
-
-        <!-- view28, centered vertically within its parent and on the start of view21. -->
-        <TextView
-                android:id="@+id/relative_view28"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_toStartOf="@id/relative_view21"
-                android:layout_centerVertical="true"
-                android:text="@string/relative_view8"/>
-
-        <!-- view29, has same top and bottom position with view23 and same start position
-             with its parent. -->
-        <TextView
-                android:id="@+id/relative_view29"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignStart="@id/gravity_bottom"
-                android:layout_alignTop="@id/relative_view23"
-                android:layout_alignBottom="@id/relative_view23"
-                android:layout_alignWithParentIfMissing="true"
-                android:text="@string/relative_view9"/>
-
-    </RelativeLayout>
-
-</RelativeLayout>
diff --git a/tests/res/layout/remote_view_test_bad_1.xml b/tests/res/layout/remote_view_test_bad_1.xml
deleted file mode 100644
index a65a5ec..0000000
--- a/tests/res/layout/remote_view_test_bad_1.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2008, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/linear"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <EditText android:id="@+id/edit"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/tests/res/layout/remote_view_test_bad_2.xml b/tests/res/layout/remote_view_test_bad_2.xml
deleted file mode 100644
index 92623d8..0000000
--- a/tests/res/layout/remote_view_test_bad_2.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2008, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/linear"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <WebView android:id="@+id/web"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/tests/res/layout/remote_view_test_good.xml b/tests/res/layout/remote_view_test_good.xml
deleted file mode 100644
index 3df9d62..0000000
--- a/tests/res/layout/remote_view_test_good.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2008, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/linear"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView android:id="@+id/text"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-    <ImageView android:id="@+id/image"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-    <FrameLayout android:id="@+id/frame"
-        android:layout_width="10dip"
-        android:layout_height="10dip" />
-
-    <RelativeLayout android:id="@+id/relative"
-        android:layout_width="10dip"
-        android:layout_height="10dip" />
-
-    <AbsoluteLayout android:id="@+id/absolute"
-        android:layout_width="10dip"
-        android:layout_height="10dip" />
-
-    <ProgressBar android:id="@+id/progress"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-    <ImageButton android:id="@+id/image_button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-    <Button android:id="@+id/button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/tests/res/layout/remoteviews_good.xml b/tests/res/layout/remoteviews_good.xml
deleted file mode 100644
index 8fdbc64..0000000
--- a/tests/res/layout/remoteviews_good.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/remoteViews_good"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <LinearLayout android:id="@+id/remoteView_linear"
-        android:layout_width="10dip"
-        android:layout_height="10dip" />
-
-    <TextView android:id="@+id/remoteView_text"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-    <ImageView android:id="@+id/remoteView_image"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-    <FrameLayout android:id="@+id/remoteView_frame"
-        android:layout_width="10dip"
-        android:layout_height="10dip" />
-
-    <RelativeLayout android:id="@+id/remoteView_relative"
-        android:layout_width="10dip"
-        android:layout_height="10dip" />
-
-    <AbsoluteLayout android:id="@+id/remoteView_absolute"
-        android:layout_width="10dip"
-        android:layout_height="10dip" />
-
-    <ProgressBar android:id="@+id/remoteView_progress"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        style="?android:attr/progressBarStyleHorizontal" />
-
-    <Chronometer android:id="@+id/remoteView_chronometer"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/tests/res/layout/remoteviews_host.xml b/tests/res/layout/remoteviews_host.xml
deleted file mode 100644
index ace5903..0000000
--- a/tests/res/layout/remoteviews_host.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:id="@+id/remoteView_host">
-</LinearLayout>
diff --git a/tests/res/layout/scrollview_layout.xml b/tests/res/layout/scrollview_layout.xml
deleted file mode 100644
index 3c9a474..0000000
--- a/tests/res/layout/scrollview_layout.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<android.widget.cts.MyScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/scroll_view"
-    android:layout_width="100dip"
-    android:layout_height="100dip">
-
-    <LinearLayout
-        android:orientation="vertical"
-        android:layout_width="250dip"
-        android:layout_height="wrap_content">
-
-        <Button
-            android:id="@+id/first_child"
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_3"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_3"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_3"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_3"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_1"/>
-
-        <Button
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_2"/>
-
-        <Button
-            android:id="@+id/last_child"
-            android:layout_width="250dip"
-            android:layout_height="100dip"
-            android:text="@string/vertical_text_3"/>
-    </LinearLayout>
-
-</android.widget.cts.MyScrollView>
diff --git a/tests/res/layout/searchview.xml b/tests/res/layout/searchview.xml
deleted file mode 100644
index dba105a..0000000
--- a/tests/res/layout/searchview.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-    <SearchView android:id="@+id/searchView1"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
-                xmlns:android="http://schemas.android.com/apk/res/android">
-    </SearchView>
diff --git a/tests/res/layout/seekbar_layout.xml b/tests/res/layout/seekbar_layout.xml
deleted file mode 100644
index 5c311fd..0000000
--- a/tests/res/layout/seekbar_layout.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-     <SeekBar android:id="@+id/seekBar"
-         android:layout_width="match_parent"
-         android:layout_height="wrap_content"
-         android:max="100"
-         android:progress="50"
-         android:secondaryProgress="75" />
-
-    <SeekBar
-        android:id="@+id/thumb_tint"
-        android:thumbTint="@android:color/white"
-        android:thumbTintMode="src_over"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/tests/res/layout/simple_dropdown_item_1line.xml b/tests/res/layout/simple_dropdown_item_1line.xml
deleted file mode 100644
index 9a044b1..0000000
--- a/tests/res/layout/simple_dropdown_item_1line.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/text1"
-    style="?android:attr/dropDownItemStyle"
-    android:textAppearance="?android:attr/textAppearanceLargeInverse"
-    android:singleLine="true"
-    android:layout_width="match_parent"
-    android:layout_height="?android:attr/listPreferredItemHeight" />
diff --git a/tests/res/layout/simple_spinner_item.xml b/tests/res/layout/simple_spinner_item.xml
deleted file mode 100644
index 247bffa..0000000
--- a/tests/res/layout/simple_spinner_item.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License"); 
-     you may not use this file except in compliance with the License. 
-     You may obtain a copy of the License at 
-
-         http://www.apache.org/licenses/LICENSE-2.0 
-
-     Unless required by applicable law or agreed to in writing, software 
-     distributed under the License is distributed on an "AS IS" BASIS, 
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-     See the License for the specific language governing permissions and 
-     limitations under the License.
--->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
-    android:id="@android:id/text1"
-    style="?android:attr/spinnerItemStyle"
-    android:singleLine="true"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content" />
diff --git a/tests/res/layout/sliding_drawer_layout.xml b/tests/res/layout/sliding_drawer_layout.xml
deleted file mode 100644
index 3f84d46..0000000
--- a/tests/res/layout/sliding_drawer_layout.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <SlidingDrawer
-        android:id="@+id/drawer"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:animateOnClick="false"
-
-        android:handle="@+id/handle"
-        android:content="@+id/content">
-
-        <ImageView
-            android:id="@id/handle"
-            android:background="#FF00FF00"
-            android:layout_width="88dip"
-            android:layout_height="44dip" />
-
-        <TextView
-            android:id="@id/content"
-            android:background="#FF0000FF"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:text="@string/hello_world" />
-
-    </SlidingDrawer>
-
-</RelativeLayout>
diff --git a/tests/res/layout/surface_view.xml b/tests/res/layout/surface_view.xml
deleted file mode 100644
index f410544..0000000
--- a/tests/res/layout/surface_view.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <SurfaceView
-        android:id="@+id/surface_view"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/tabhost_layout.xml b/tests/res/layout/tabhost_layout.xml
deleted file mode 100644
index 1bae57a..0000000
--- a/tests/res/layout/tabhost_layout.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@android:id/tabhost"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content">
-
-    <TabWidget android:id="@android:id/tabs"
-        android:layout_width="match_parent"
-        android:layout_height="68dip"
-        android:paddingLeft="1dip"
-        android:paddingRight="1dip"
-        android:paddingTop="4dip"
-    />
-
-    <FrameLayout android:id="@android:id/tabcontent"
-        android:layout_width="match_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1">
-
-        <TextView android:id="@+id/tabhost_textview"
-            android:password="true"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/hello_world"/>
-
-        <ListView android:id="@+id/tabhost_listview"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"/>
-    </FrameLayout>
-</TabHost>
diff --git a/tests/res/layout/table_layout_1.xml b/tests/res/layout/table_layout_1.xml
deleted file mode 100644
index 0896cd2..0000000
--- a/tests/res/layout/table_layout_1.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/table1"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:collapseColumns="0"
-    android:stretchColumns="2">
-
-    <TableRow>
-        <TextView
-            android:text="@string/table_layout_first"
-            android:padding="3dip" />
-        <TextView
-            android:text="@string/table_layout_second"
-            android:padding="3dip" />
-        <TextView
-            android:text="@string/table_layout_third"
-            android:padding="3dip" />
-    </TableRow>
-</TableLayout>
-
diff --git a/tests/res/layout/table_layout_2.xml b/tests/res/layout/table_layout_2.xml
deleted file mode 100644
index 84750fc..0000000
--- a/tests/res/layout/table_layout_2.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/table2"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:shrinkColumns="1">
-
-    <TableRow>
-        <TextView
-            android:layout_column="1"
-            android:text="@string/table_layout_long"
-            android:padding="3dip" />
-        <TextView
-            android:layout_span="2"
-            android:text="@string/table_layout_second"
-            android:padding="3dip" />
-        <TextView
-            android:text="@string/table_layout_third"
-            android:padding="3dip" />
-    </TableRow>
-</TableLayout>
-
diff --git a/tests/res/layout/textview_autolink.xml b/tests/res/layout/textview_autolink.xml
deleted file mode 100644
index 53d89f3..0000000
--- a/tests/res/layout/textview_autolink.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/autolink_default"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
-
-    <TextView android:id="@+id/autolink_web"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:autoLink="web"/>
-
-    <TextView android:id="@+id/autolink_email"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:autoLink="email"/>
-
-    <TextView android:id="@+id/autolink_phone"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:autoLink="phone"/>
-
-    <TextView android:id="@+id/autolink_all"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:autoLink="all"/>
-
-    <TextView android:id="@+id/autolink_compound1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:autoLink="web|email"/>
-
-    <TextView android:id="@+id/autolink_compound2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:autoLink="web|phone"/>
-
-    <TextView android:id="@+id/autolink_compound3"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:autoLink="email|phone"/>
-
-    <TextView android:id="@+id/autolink_compound4"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:autoLink="phone|all"/>
-
-</FrameLayout>
diff --git a/tests/res/layout/textview_autotext.xml b/tests/res/layout/textview_autotext.xml
deleted file mode 100644
index 9a1e9ef..0000000
--- a/tests/res/layout/textview_autotext.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/autotext_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-    <TextView android:id="@+id/autotext_false"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:autoText="false"/>
-
-    <TextView android:id="@+id/autotext_true"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:autoText="true"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_buffertype.xml b/tests/res/layout/textview_buffertype.xml
deleted file mode 100644
index 33b0d20..0000000
--- a/tests/res/layout/textview_buffertype.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/buffertype_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-    <TextView android:id="@+id/buffertype_normal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:bufferType="normal"/>
-
-    <TextView android:id="@+id/buffertype_spannable"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:bufferType="spannable"/>
-
-    <TextView android:id="@+id/buffertype_editable"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:bufferType="editable"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_capitalize.xml b/tests/res/layout/textview_capitalize.xml
deleted file mode 100644
index 4b80ce0..0000000
--- a/tests/res/layout/textview_capitalize.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/capitalize_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:editable="true"/>
-
-    <TextView android:id="@+id/capitalize_none"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:capitalize="none"/>
-
-    <TextView android:id="@+id/capitalize_sentences"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:capitalize="sentences"/>
-
-    <TextView android:id="@+id/capitalize_words"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:capitalize="words"/>
-
-    <TextView android:id="@+id/capitalize_characters"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:capitalize="characters"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_content.xml b/tests/res/layout/textview_content.xml
deleted file mode 100644
index 189f812..0000000
--- a/tests/res/layout/textview_content.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/text_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-    <TextView android:id="@+id/text_resid"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="@string/text_view_hello"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_digits.xml b/tests/res/layout/textview_digits.xml
deleted file mode 100644
index 2a0d470..0000000
--- a/tests/res/layout/textview_digits.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/digits_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:editable="true"/>
-
-    <TextView android:id="@+id/digits_hex"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:digits="0123456789ABCDEFabcdef.-"/>
-
-    <TextView android:id="@+id/digits_blank"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:digits=""/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_ellipsize.xml b/tests/res/layout/textview_ellipsize.xml
deleted file mode 100644
index 0fc5779..0000000
--- a/tests/res/layout/textview_ellipsize.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/ellipsize_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-    <TextView android:id="@+id/ellipsize_none"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:ellipsize="none"/>
-
-    <TextView android:id="@+id/ellipsize_start"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:ellipsize="start"/>
-
-    <TextView android:id="@+id/ellipsize_middle"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:ellipsize="middle"/>
-
-    <TextView android:id="@+id/ellipsize_end"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:ellipsize="end"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_ems.xml b/tests/res/layout/textview_ems.xml
deleted file mode 100644
index a169cb0..0000000
--- a/tests/res/layout/textview_ems.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/ems_default"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/ems_huge"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:ems="60"
-        android:text="@string/explain"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/ems_tiny"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:ems="1"
-        android:text="@string/explain"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/ems_zero"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:ems="0"
-        android:text="@string/explain"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/minEms_tiny"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:minEms="1"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/minEms_huge"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:minEms="1000"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/minEms_zero"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:minEms="0"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/maxEms_tiny"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:maxEms="1"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/maxEms_huge"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:maxEms="1000"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/maxEms_zero"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:maxEms="0"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/minEms_maxEms_correct"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:maxEms="60"
-        android:minEms="10"
-        android:scrollHorizontally="true"/>
-
-    <TextView android:id="@+id/minEms_maxEms_wrong"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:maxEms="10"
-        android:minEms="60"
-        android:scrollHorizontally="true"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_gravity.xml b/tests/res/layout/textview_gravity.xml
deleted file mode 100644
index a4a7592..0000000
--- a/tests/res/layout/textview_gravity.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/gravity_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-    <TextView android:id="@+id/gravity_bottom"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="bottom"/>
-
-    <TextView android:id="@+id/gravity_right"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="right"/>
-
-    <TextView android:id="@+id/gravity_fill"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="fill"/>
-
-    <TextView android:id="@+id/gravity_center"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center"/>
-
-    <TextView android:id="@+id/gravity_center_vertical_right"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center_vertical|right"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_hint_linksclickable_freezestext.xml b/tests/res/layout/textview_hint_linksclickable_freezestext.xml
deleted file mode 100644
index a22e429..0000000
--- a/tests/res/layout/textview_hint_linksclickable_freezestext.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/hint_linksClickable_freezesText_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-
-    <TextView android:id="@+id/hint_blank"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint=""/>
-
-    <TextView android:id="@+id/hint_string"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/text_view_simple_hint"/>
-
-    <TextView android:id="@+id/hint_resid"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/text_view_hint"/>
-
-    <TextView android:id="@+id/linksClickable_true"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:linksClickable="true"/>
-
-    <TextView android:id="@+id/linksClickable_false"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:linksClickable="false"/>
-
-    <TextView android:id="@+id/freezesText_true"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:freezesText="true"/>
-
-    <TextView android:id="@+id/freezesText_false"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:freezesText="false"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_inputmethod_blank.xml b/tests/res/layout/textview_inputmethod_blank.xml
deleted file mode 100644
index 4420611..0000000
--- a/tests/res/layout/textview_inputmethod_blank.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:inputMethod=""/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_inputmethod_builtin.xml b/tests/res/layout/textview_inputmethod_builtin.xml
deleted file mode 100644
index e09a0ea..0000000
--- a/tests/res/layout/textview_inputmethod_builtin.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/inputMethod_builtIn_digits"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:inputMethod="android.text.method.DigitsKeyListener"/>
-
-    <TextView android:id="@+id/inputMethod_builtIn_datetime"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:inputMethod="android.text.method.DateTimeKeyListener"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_inputmethod_notexist.xml b/tests/res/layout/textview_inputmethod_notexist.xml
deleted file mode 100644
index 9030b62..0000000
--- a/tests/res/layout/textview_inputmethod_notexist.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:inputMethod="android.text.method.NotExistKeyListener"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_layout.xml b/tests/res/layout/textview_layout.xml
deleted file mode 100644
index d069df2..0000000
--- a/tests/res/layout/textview_layout.xml
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:id="@+id/layout_textviewtest">
-
-    <ScrollView android:layout_width="match_parent"
-            android:layout_height="match_parent">
-
-        <LinearLayout android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent">
-
-            <TextView android:id="@+id/textview_textAttr"
-                    android:text="@string/text_view_hello"
-                    android:textColor="@drawable/black"
-                    android:textColorHighlight="@drawable/yellow"
-                    android:textColorHint="@drawable/red"
-                    android:textColorLink="@drawable/blue"
-                    android:textScaleX="1.2"
-                    android:typeface="normal"
-                    android:textSize="20px"
-                    android:textStyle="normal"
-                    android:textAppearance="@null"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"/>
-        
-            <TextView android:id="@+id/textview_password"
-                    android:password="true"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"/>
-        
-            <TextView android:id="@+id/textview_singleLine"
-                    android:singleLine="true"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"/>
-        
-            <TextView android:id="@+id/textview_text"
-                    android:text="@string/text_view_hello"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"/>
-
-            <TextView android:id="@+id/textview_text_two_lines"
-                    android:text="@string/text_view_hello_two_lines"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"/>
-
-            <android.widget.cts.MockTextView
-                    android:id="@+id/mock_textview_left"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:requiresFadingEdge="horizontal"
-                    android:singleLine="true"
-                    android:text="@string/long_text"
-                    android:gravity="left"
-                    />
-
-            <android.widget.cts.MockTextView
-                    android:id="@+id/mock_textview_right"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:requiresFadingEdge="horizontal"
-                    android:singleLine="true"
-                    android:text="@string/long_text"
-                    android:gravity="right"
-                    />
-
-            <android.widget.cts.MockTextView
-                    android:id="@+id/mock_textview_center"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:requiresFadingEdge="horizontal"
-                    android:singleLine="true"
-                    android:text="@string/long_text"
-                    android:gravity="center"
-                    />
-        </LinearLayout>
-
-    </ScrollView>
-
-    <TextView android:id="@+id/textview_ltr"
-              android:layout_height="wrap_content"
-              android:layout_width="wrap_content"/>
-
-    <TextView android:id="@+id/textview_rtl"
-              android:layout_height="wrap_content"
-              android:layout_width="wrap_content"/>
-
-    <TextView android:id="@+id/textview_drawable_1_1"
-              android:layout_height="wrap_content"
-              android:layout_width="wrap_content"
-              android:drawableLeft="@drawable/icon_blue"
-              android:drawableRight="@drawable/icon_red"
-              android:drawableTop="@drawable/icon_green"
-              android:drawableBottom="@drawable/icon_yellow"
-            />
-
-    <TextView android:id="@+id/textview_drawable_1_2"
-              android:layout_height="wrap_content"
-              android:layout_width="wrap_content"
-              android:drawableLeft="@drawable/icon_blue"
-              android:drawableRight="@drawable/icon_red"
-              android:drawableTop="@drawable/icon_green"
-              android:drawableBottom="@drawable/icon_yellow"
-              android:layoutDirection="rtl"
-            />
-
-    <TextView android:id="@+id/textview_drawable_2_1"
-              android:layout_height="wrap_content"
-              android:layout_width="wrap_content"
-              android:drawableStart="@drawable/icon_blue"
-              android:drawableEnd="@drawable/icon_red"
-              android:drawableTop="@drawable/icon_green"
-              android:drawableBottom="@drawable/icon_yellow"
-            />
-
-    <TextView android:id="@+id/textview_drawable_2_2"
-              android:layout_height="wrap_content"
-              android:layout_width="wrap_content"
-              android:drawableStart="@drawable/icon_blue"
-              android:drawableEnd="@drawable/icon_red"
-              android:drawableTop="@drawable/icon_green"
-              android:drawableBottom="@drawable/icon_yellow"
-              android:layoutDirection="rtl"
-            />
-
-    <TextView android:id="@+id/textview_drawable_3_1"
-              android:layout_height="wrap_content"
-              android:layout_width="wrap_content"
-              android:drawableLeft="@drawable/icon_black"
-              android:drawableRight="@drawable/icon_black"
-              android:drawableStart="@drawable/icon_blue"
-              android:drawableEnd="@drawable/icon_red"
-              android:drawableTop="@drawable/icon_green"
-              android:drawableBottom="@drawable/icon_yellow"
-            />
-
-    <TextView android:id="@+id/textview_drawable_3_2"
-              android:layout_height="wrap_content"
-              android:layout_width="wrap_content"
-              android:drawableLeft="@drawable/icon_black"
-              android:drawableRight="@drawable/icon_black"
-              android:drawableStart="@drawable/icon_blue"
-              android:drawableEnd="@drawable/icon_red"
-              android:drawableTop="@drawable/icon_green"
-              android:drawableBottom="@drawable/icon_yellow"
-              android:layoutDirection="rtl"
-            />
-
-
-    <LinearLayout android:orientation="vertical"
-                  android:layout_width="match_parent"
-                  android:layout_height="match_parent"
-                  android:layoutDirection="ltr">
-
-        <TextView android:id="@+id/textview_drawable_4_1"
-                  android:layout_height="wrap_content"
-                  android:layout_width="wrap_content"
-                  android:drawableStart="@drawable/icon_blue"
-                  android:drawableEnd="@drawable/icon_red"
-                  android:drawableTop="@drawable/icon_green"
-                  android:drawableBottom="@drawable/icon_yellow"
-                />
-
-        <TextView android:id="@+id/textview_drawable_5_1"
-                  android:layout_height="wrap_content"
-                  android:layout_width="wrap_content"
-                  android:drawableLeft="@drawable/icon_black"
-                  android:drawableRight="@drawable/icon_black"
-                  android:drawableStart="@drawable/icon_blue"
-                  android:drawableEnd="@drawable/icon_red"
-                  android:drawableTop="@drawable/icon_green"
-                  android:drawableBottom="@drawable/icon_yellow"
-                />
-
-    </LinearLayout>
-
-    <LinearLayout android:orientation="vertical"
-                  android:layout_width="match_parent"
-                  android:layout_height="match_parent"
-                  android:layoutDirection="rtl">
-
-        <TextView android:id="@+id/textview_drawable_4_2"
-                  android:layout_height="wrap_content"
-                  android:layout_width="wrap_content"
-                  android:drawableStart="@drawable/icon_blue"
-                  android:drawableEnd="@drawable/icon_red"
-                  android:drawableTop="@drawable/icon_green"
-                  android:drawableBottom="@drawable/icon_yellow"
-                />
-
-        <TextView android:id="@+id/textview_drawable_5_2"
-                  android:layout_height="wrap_content"
-                  android:layout_width="wrap_content"
-                  android:drawableLeft="@drawable/icon_black"
-                  android:drawableRight="@drawable/icon_black"
-                  android:drawableStart="@drawable/icon_blue"
-                  android:drawableEnd="@drawable/icon_red"
-                  android:drawableTop="@drawable/icon_green"
-                  android:drawableBottom="@drawable/icon_yellow"
-                />
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_numeric.xml b/tests/res/layout/textview_numeric.xml
deleted file mode 100644
index e60cb26..0000000
--- a/tests/res/layout/textview_numeric.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/numeric_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:editable="true"/>
-
-    <TextView android:id="@+id/numeric_integer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="integer"/>
-
-    <TextView android:id="@+id/numeric_signed"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="signed"/>
-
-    <TextView android:id="@+id/numeric_decimal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="decimal"/>
-
-    <TextView android:id="@+id/numeric_signed_integer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="signed|integer"/>
-
-    <TextView android:id="@+id/numeric_integer_decimal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="integer|decimal"/>
-
-    <TextView android:id="@+id/numeric_signed_decimal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="signed|decimal"/>
-
-    <TextView android:id="@+id/numeric_signed_decimal_integer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:numeric="signed|integer|decimal"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_phonenumber.xml b/tests/res/layout/textview_phonenumber.xml
deleted file mode 100644
index d0975c6..0000000
--- a/tests/res/layout/textview_phonenumber.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/phoneNumber_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:editable="true"/>
-
-    <TextView android:id="@+id/phoneNumber_true"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:phoneNumber="true"/>
-
-    <TextView android:id="@+id/phoneNumber_false"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:phoneNumber="false"
-        android:editable="true"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/textview_selectallonfocus.xml b/tests/res/layout/textview_selectallonfocus.xml
deleted file mode 100644
index b1c3682..0000000
--- a/tests/res/layout/textview_selectallonfocus.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <TextView android:id="@+id/selectAllOnFocus_default"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:focusable="true"/>
-
-    <TextView android:id="@+id/selectAllOnFocus_true"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:selectAllOnFocus="true"
-        android:focusable="true"/>
-
-    <TextView android:id="@+id/selectAllOnFocus_false"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:selectAllOnFocus="false"
-        android:focusable="true"/>
-
-        <TextView android:id="@+id/selectAllOnFocus_dummy"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:focusable="true"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/timepicker.xml b/tests/res/layout/timepicker.xml
deleted file mode 100644
index 352f69b..0000000
--- a/tests/res/layout/timepicker.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TimePicker xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"/>
diff --git a/tests/res/layout/togglebutton_layout.xml b/tests/res/layout/togglebutton_layout.xml
deleted file mode 100644
index a6c08e1..0000000
--- a/tests/res/layout/togglebutton_layout.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <LinearLayout
-        android:orientation="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <ToggleButton android:id="@+id/toggle1"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content" />
-
-        <ToggleButton android:id="@+id/toggle2"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content" />
-
-        <ToggleButton android:id="@+id/button_tint"
-            android:buttonTint="@android:color/white"
-            android:buttonTintMode="src_over"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content" />
-
-    </LinearLayout>
-
-</ScrollView>
diff --git a/tests/res/layout/twolinelistitem.xml b/tests/res/layout/twolinelistitem.xml
deleted file mode 100644
index ec256c1..0000000
--- a/tests/res/layout/twolinelistitem.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:id="@+id/twoLineListItem">
-
-    <TextView android:id="@android:id/text1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/twolinelistitem_test_text1"/>
-
-    <TextView android:id="@android:id/text2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/twolinelistitem_test_text2"/>
-
-</TwoLineListItem>
diff --git a/tests/res/layout/urlspan_layout.xml b/tests/res/layout/urlspan_layout.xml
deleted file mode 100644
index 2ca95ac..0000000
--- a/tests/res/layout/urlspan_layout.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-    <TextView android:id="@+id/url"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:paddingLeft="4dip"
-        android:focusable="true"
-        android:focusableInTouchMode="true"
-        android:text="@string/text_view_hello"/>
-
-</LinearLayout>
diff --git a/tests/res/layout/using_views_layout.xml b/tests/res/layout/using_views_layout.xml
deleted file mode 100644
index b35aa08..0000000
--- a/tests/res/layout/using_views_layout.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView
-        android:id="@+id/country"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="@string/country"/>
-
-    <EditText
-        android:id="@+id/entry"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@android:drawable/editbox_background"
-        android:layout_below="@id/country"/>
-
-    <Button
-        android:id="@+id/cancel"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/entry"
-        android:layout_alignParentRight="true"
-        android:layout_marginLeft="10dip"
-        android:text="@string/id_cancel"/>
-
-    <Button
-        android:id="@+id/ok"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toLeftOf="@id/cancel"
-        android:layout_alignTop="@id/cancel"
-        android:text="@string/id_ok"/>
-
-    <TextView
-        android:id="@+id/symbol"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/ok"
-        android:text="@string/symbol"/>
-
-    <TextView
-        android:id="@+id/symbolball"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/symbol"
-        android:layout_marginLeft="20dip"/>
-
-    <TextView
-        android:id="@+id/warning"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="#aa0000"
-        android:layout_below="@id/symbolball"
-        android:text="@string/country_warning"
-        android:visibility="invisible"
-        android:layout_weight="2"/>
-
-</RelativeLayout>
-
diff --git a/tests/res/layout/videoview_layout.xml b/tests/res/layout/videoview_layout.xml
deleted file mode 100644
index 9b042cb..0000000
--- a/tests/res/layout/videoview_layout.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <VideoView
-        android:id="@+id/videoview"
-        android:layout_width="160px"
-        android:layout_height="120px"/>
-</LinearLayout>
diff --git a/tests/res/layout/view_layout.xml b/tests/res/layout/view_layout.xml
deleted file mode 100644
index fa817dc..0000000
--- a/tests/res/layout/view_layout.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 Esmertec AG.
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/viewlayout_root"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <android.view.cts.MockView
-        android:id="@+id/mock_view"
-        android:layout_width="100px"
-        android:layout_height="200px"/>
-
-    <android.view.cts.MockView
-        android:id="@+id/scroll_view"
-        android:layout_width="100px"
-        android:layout_height="200px"
-        android:scrollbars="horizontal|vertical"
-        android:fadingEdge="horizontal|vertical"
-        android:fadingEdgeLength="20px"/>
-
-    <android.view.cts.MockView
-        android:id="@+id/scroll_view_2"
-        android:layout_width="100px"
-        android:layout_height="200px"
-        android:scrollbars="horizontal|vertical"
-        android:requiresFadingEdge="horizontal|vertical"
-        android:fadingEdgeLength="20px"/>
-
-    <View
-        android:id="@+id/fit_windows"
-        android:fitsSystemWindows="true"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
-
-    <android.view.cts.MockView
-            android:id="@+id/mock_view_padding_full"
-            android:layout_width="200px"
-            android:layout_height="200px"
-            android:padding="0px"
-            android:background="@drawable/padding_0" />
-
-    <android.view.cts.MockView
-            android:id="@+id/mock_view_padding_left"
-            android:layout_width="200px"
-            android:layout_height="200px"
-            android:paddingLeft="0px"
-            android:background="@drawable/padding_0" />
-
-    <android.view.cts.MockView
-            android:id="@+id/mock_view_padding_right"
-            android:layout_width="200px"
-            android:layout_height="200px"
-            android:paddingRight="0px"
-            android:background="@drawable/padding_0" />
-
-    <android.view.cts.MockView
-            android:id="@+id/mock_view_padding_top"
-            android:layout_width="200px"
-            android:layout_height="200px"
-            android:paddingTop="0px"
-            android:background="@drawable/padding_0" />
-
-    <android.view.cts.MockView
-            android:id="@+id/mock_view_padding_bottom"
-            android:layout_width="200px"
-            android:layout_height="200px"
-            android:paddingBottom="0dp"
-            android:background="@drawable/padding_0" />
-
-    <android.view.cts.MockView
-            android:id="@+id/mock_view_padding_runtime_updated"
-            android:layout_width="200px"
-            android:layout_height="200px"
-            android:paddingStart="8px"
-            android:paddingEnd="8px"
-            android:background="@drawable/no_padding" />
-
-    <View
-        android:id="@+id/background_tint"
-        android:backgroundTint="@android:color/white"
-        android:backgroundTintMode="src_over"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/tests/res/layout/view_layout_position.xml b/tests/res/layout/view_layout_position.xml
deleted file mode 100644
index 7d28186..0000000
--- a/tests/res/layout/view_layout_position.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 Esmertec AG.
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <LinearLayout
-            android:id="@+id/testparent"
-            android:layout_marginLeft = "1dip"
-            android:layout_marginTop = "2dip"
-            android:layout_marginRight = "3dip"
-            android:layout_marginBottom = "4dip"
-            android:orientation="vertical"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
-
-        <View
-            android:id="@+id/testview"
-            android:layout_marginLeft = "5dip"
-            android:layout_marginTop = "6dip"
-            android:layout_marginRight = "7dip"
-            android:layout_marginBottom = "8dip"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
-
-    </LinearLayout>
-</LinearLayout>
diff --git a/tests/res/layout/view_visibility_layout.xml b/tests/res/layout/view_visibility_layout.xml
deleted file mode 100644
index 92d22ed..0000000
--- a/tests/res/layout/view_visibility_layout.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <View
-        android:id="@+id/textview1"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:visibility="visible"/>
-
-    <View
-        android:id="@+id/textview2"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:visibility="invisible"/>
-
-    <View
-        android:id="@+id/textview3"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:visibility="gone"/>
-</LinearLayout>
-
diff --git a/tests/res/layout/viewanimator_layout.xml b/tests/res/layout/viewanimator_layout.xml
deleted file mode 100644
index 96b2483..0000000
--- a/tests/res/layout/viewanimator_layout.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<!-- Demonstrates using a relative layout to create a form -->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:focusable="true"
-    android:background="@drawable/blue">
-
-    <TextView android:id="@+id/label"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentTop="true"
-        android:layout_alignParentLeft="true"
-        android:text="@string/viewanimator_test"/>
-
-    <EditText android:id="@+id/entry"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@android:drawable/editbox_background"
-        android:layout_below="@id/label"/>
-
-    <Button android:id="@+id/cancel"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/entry"
-        android:layout_alignParentRight="true"
-        android:layout_marginLeft="10px"
-        android:text="@string/id_cancel" />
-
-    <Button android:id="@+id/ok"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toLeftOf="@id/cancel"
-        android:layout_alignTop="@id/cancel"
-        android:text="@string/id_ok" />
-
-</RelativeLayout>
-
diff --git a/tests/res/layout/viewflipper_layout.xml b/tests/res/layout/viewflipper_layout.xml
deleted file mode 100644
index 6480379..0000000
--- a/tests/res/layout/viewflipper_layout.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="vertical"
-        android:padding="10dip"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-    <ViewFlipper android:id="@+id/viewflipper_test"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:flipInterval="1000"
-                android:layout_marginBottom="20dip" >
-                <TextView android:id="@+id/viewflipper_textview1"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_horizontal"
-                        android:textSize="26sp"
-                        android:visibility="gone"
-                        android:text="@string/hello_world"/>
-                <TextView android:id="@+id/viewflipper_textview2"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_horizontal"
-                        android:textSize="26sp"
-                        android:visibility="gone"
-                        android:text="@string/hello_android"/>
-    </ViewFlipper>
-</LinearLayout>
-
diff --git a/tests/res/layout/viewgroup_margin_layout.xml b/tests/res/layout/viewgroup_margin_layout.xml
deleted file mode 100644
index 8e750c9..0000000
--- a/tests/res/layout/viewgroup_margin_layout.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:padding="10dip"
-    android:layout_width="200dip"
-    android:layout_height="300dip">
-</LinearLayout>
-
diff --git a/tests/res/layout/viewgrouptest_stub.xml b/tests/res/layout/viewgrouptest_stub.xml
deleted file mode 100644
index ee59126..0000000
--- a/tests/res/layout/viewgrouptest_stub.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<android.widget.cts.MockLinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:id="@+id/mocklinearlayout">
-
-    <!-- view1 goes on top -->
-    <TextView
-        android:id="@+id/viewgrouptest_stub"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-    />
-
-</android.widget.cts.MockLinearLayout>
-
diff --git a/tests/res/layout/viewstub_layout.xml b/tests/res/layout/viewstub_layout.xml
deleted file mode 100644
index 5c7ff22..0000000
--- a/tests/res/layout/viewstub_layout.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <ViewStub android:id="@+id/viewstub"
-        android:inflatedId="@+id/inflated_id"
-        android:layout="@layout/textview_layout"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/tests/res/layout/viewswitcher_layout.xml b/tests/res/layout/viewswitcher_layout.xml
deleted file mode 100644
index 933dc32..0000000
--- a/tests/res/layout/viewswitcher_layout.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <ViewSwitcher android:id="@+id/viewswitcher_test"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-</LinearLayout>
-
diff --git a/tests/res/layout/viewtreeobserver_layout.xml b/tests/res/layout/viewtreeobserver_layout.xml
deleted file mode 100644
index 66e98b2..0000000
--- a/tests/res/layout/viewtreeobserver_layout.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:id="@+id/linearlayout"
-                android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-    <View android:id="@+id/view1"
-        android:layout_width="match_parent"
-        android:layout_height="10dip"
-        android:focusable="true"/>
-
-    <View android:id="@+id/view2"
-        android:layout_width="match_parent"
-        android:layout_height="10dip"
-        android:focusable="true"/>
-
-    <Button android:id="@+id/button1"
-        android:layout_width="wrap_content"
-        android:layout_height="10dip" />
-
-</LinearLayout>
-
diff --git a/tests/res/layout/webview_layout.xml b/tests/res/layout/webview_layout.xml
deleted file mode 100644
index 7a0ed0d..0000000
--- a/tests/res/layout/webview_layout.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <WebView android:id="@+id/web_page"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-</LinearLayout>
diff --git a/tests/res/layout/windowstub_addlayout.xml b/tests/res/layout/windowstub_addlayout.xml
deleted file mode 100644
index 0d6399e..0000000
--- a/tests/res/layout/windowstub_addlayout.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView android:id="@+id/listview_addwindow"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</ScrollView>
diff --git a/tests/res/layout/windowstub_layout.xml b/tests/res/layout/windowstub_layout.xml
deleted file mode 100644
index 0cf7d6d..0000000
--- a/tests/res/layout/windowstub_layout.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/listview_window"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" >
-     </TextView>
diff --git a/tests/res/layout/windowstub_presentation.xml b/tests/res/layout/windowstub_presentation.xml
deleted file mode 100644
index 80490c4..0000000
--- a/tests/res/layout/windowstub_presentation.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-    <Button
-        android:id="@+id/presentation_button1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_weight="1"
-        android:text="@string/vertical_text_1" />
-    <Button
-        android:id="@+id/presentation_button2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_weight="1"
-        android:text="@string/vertical_text_2" />
-    <Button
-        android:id="@+id/presentation_button3"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_weight="1"
-        android:text="@string/vertical_text_3" />
-</LinearLayout>
diff --git a/tests/res/layout/xml_test.xml b/tests/res/layout/xml_test.xml
deleted file mode 100644
index 4702281..0000000
--- a/tests/res/layout/xml_test.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-</LinearLayout>
diff --git a/tests/res/layout/zoombutton_layout.xml b/tests/res/layout/zoombutton_layout.xml
deleted file mode 100644
index 1b1e0b2..0000000
--- a/tests/res/layout/zoombutton_layout.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<ZoomButton xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/zoombutton_test"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-/>
-
diff --git a/tests/res/menu/browser.xml b/tests/res/menu/browser.xml
deleted file mode 100644
index 29e5149..0000000
--- a/tests/res/menu/browser.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <group android:id="@+id/MAIN_MENU">
-        <item android:id="@+id/goto_menu_id"
-            android:title="@string/hello_world"
-            android:alphabeticShortcut="l"/>
-    </group>
-
-</menu>
diff --git a/tests/res/menu/category_order.xml b/tests/res/menu/category_order.xml
deleted file mode 100644
index 06a6993..0000000
--- a/tests/res/menu/category_order.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <!-- This group uses the default category. -->
-    <group android:id="@+id/most_used_items">
-
-        <item android:id="@+id/last_most_item"
-            android:orderInCategory="5"
-            android:title="Last most often" />
-
-        <item android:id="@+id/middle_most_item"
-            android:orderInCategory="3"
-            android:title="Middle most often" />
-
-        <item android:id="@+id/first_most_item"
-            android:orderInCategory="1"
-            android:title="First most often" />
-
-    </group>
-
-    <!-- This group uses the secondary category, which is used for less oftenly used items.
-         Notice these items will show up after the above items.
-         (Furthermore, notice how the orders in each category are independent from the other
-         category.) -->
-    <group android:id="@+id/least_used_items"
-        android:menuCategory="secondary">
-
-        <item android:id="@+id/last_least_item"
-            android:orderInCategory="4"
-            android:title="Last least often" />
-
-        <item android:id="@+id/middle_least_item"
-            android:orderInCategory="2"
-            android:title="Middle least often" />
-
-        <item android:id="@+id/first_least_item"
-            android:orderInCategory="0"
-            android:title="First least often" />
-
-    </group>
-
-</menu>
diff --git a/tests/res/menu/checkable.xml b/tests/res/menu/checkable.xml
deleted file mode 100644
index 339d9c9..0000000
--- a/tests/res/menu/checkable.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <!-- Checkable items appear only in submenus or context menus. -->
-
-    <!-- Carefully look at the attribute name checkableBehavior on groups, but
-         the attribute name checkable on items. The checkableBehavior encompasses
-         the number of items that will be checkable within that group. -->
-
-    <item android:title="None">
-        <menu>
-            <!-- The none checkableBehavior is default, but we explicitly show it here. -->
-            <group android:id="@+id/noncheckable_group"
-                    android:checkableBehavior="none">
-                <!-- Notice how these items inherit from the group. -->
-                <item android:id="@+id/noncheckable_item_1"
-                        android:title="Item 1" />
-                <item android:id="@+id/noncheckable_item_2"
-                        android:title="Item 2" />
-                <item android:id="@+id/noncheckable_item_3"
-                        android:title="Item 3" />
-            </group>
-        </menu>
-    </item>
-
-    <item android:title="All">
-        <menu>
-            <group android:id="@+id/checkable_group"
-                    android:checkableBehavior="all">
-                <!-- Notice how these items inherit from the group. -->
-                <item android:id="@+id/checkable_item_1"
-                        android:title="Item 1" />
-                <item android:id="@+id/checkable_item_2"
-                        android:title="Item 2"
-                        android:checked="true" />
-                <item android:id="@+id/checkable_item_3"
-                        android:title="Item 3"
-                        android:checked="true" />
-            </group>
-        </menu>
-    </item>
-
-    <item android:title="Single">
-        <menu>
-            <group android:id="@+id/exclusive_checkable_group"
-                    android:checkableBehavior="single">
-                <!-- Notice how these items inherit from the group. -->
-                <item android:id="@+id/exclusive_checkable_item_1"
-                        android:title="Item 1" />
-                <item android:id="@+id/exclusive_checkable_item_2"
-                        android:title="Item 2" />
-                <item android:id="@+id/exclusive_checkable_item_3"
-                        android:title="Item 3"
-                        android:checked="true" />
-            </group>
-        </menu>
-    </item>
-
-    <item android:title="All without group"
-            android:id="@+id/submenu">
-        <menu>
-            <!-- Notice how these items have each set. -->
-            <item android:id="@+id/nongroup_checkable_item_1"
-                    android:title="Item 1"
-                    android:checkable="true" />
-            <item android:id="@+id/nongroup_checkable_item_2"
-                    android:title="Item 2"
-                    android:checkable="true"
-                    android:checked="true" />
-            <item android:id="@+id/nongroup_checkable_item_3"
-                    android:title="Item 3"
-                    android:checkable="true"
-                    android:checked="true" />
-        </menu>
-    </item>
-
-</menu>
diff --git a/tests/res/menu/menu_searchview.xml b/tests/res/menu/menu_searchview.xml
deleted file mode 100644
index d9f6475..0000000
--- a/tests/res/menu/menu_searchview.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@+id/menu_search"
-        android:title="Search"
-        android:icon="@android:drawable/ic_menu_search"
-        android:showAsAction="ifRoom"
-        android:actionLayout="@layout/searchview" />
-</menu>
\ No newline at end of file
diff --git a/tests/res/menu/title_icon.xml b/tests/res/menu/title_icon.xml
deleted file mode 100644
index d8cdc52..0000000
--- a/tests/res/menu/title_icon.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <item android:id="@+id/start"
-        android:title="Start"
-        android:icon="@drawable/start" />
-
-    <item android:id="@+id/pass"
-        android:title="Pass"
-        android:icon="@drawable/pass" />
-
-    <item android:id="@+id/failed"
-        android:title="Failed"
-        android:icon="@drawable/failed" />
-
-</menu>
diff --git a/tests/res/menu/visible_shortcut.xml b/tests/res/menu/visible_shortcut.xml
deleted file mode 100644
index 4d6f362..0000000
--- a/tests/res/menu/visible_shortcut.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <item android:id="@+id/visible_item"
-        android:title="Visible"
-        android:alphabeticShortcut="a" />
-
-    <item android:id="@+id/hidden_item"
-        android:title="Hidden"
-        android:visible="false"
-        android:alphabeticShortcut="b" />
-
-    <group android:id="@+id/hidden_group"
-        android:visible="false">
-
-        <item android:id="@+id/hidden_by_group"
-            android:title="Hidden by group"
-            android:alphabeticShortcut="c" />
-
-    </group>
-
-</menu>
diff --git a/tests/res/raw/basetex.png b/tests/res/raw/basetex.png
deleted file mode 100644
index c47a8a5..0000000
--- a/tests/res/raw/basetex.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/ddstex.dds b/tests/res/raw/ddstex.dds
deleted file mode 100644
index a865693..0000000
--- a/tests/res/raw/ddstex.dds
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/pvrtex.pvr b/tests/res/raw/pvrtex.pvr
deleted file mode 100644
index c92962d..0000000
--- a/tests/res/raw/pvrtex.pvr
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/samplefont.ttf b/tests/res/raw/samplefont.ttf
deleted file mode 100644
index 49f1c62..0000000
--- a/tests/res/raw/samplefont.ttf
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/scenery.jpg b/tests/res/raw/scenery.jpg
deleted file mode 100644
index 7d1f5e1..0000000
--- a/tests/res/raw/scenery.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/sphere.a3d b/tests/res/raw/sphere.a3d
deleted file mode 100644
index 3d78b01..0000000
--- a/tests/res/raw/sphere.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/test1.obb b/tests/res/raw/test1.obb
deleted file mode 100644
index a6b3e1c..0000000
--- a/tests/res/raw/test1.obb
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/test1_nosig.obb b/tests/res/raw/test1_nosig.obb
deleted file mode 100644
index 5c3573f..0000000
--- a/tests/res/raw/test1_nosig.obb
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/test1_wrongpackage.obb b/tests/res/raw/test1_wrongpackage.obb
deleted file mode 100644
index d0aafe1..0000000
--- a/tests/res/raw/test1_wrongpackage.obb
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/testimage.jpg b/tests/res/raw/testimage.jpg
deleted file mode 100644
index d3dae03..0000000
--- a/tests/res/raw/testimage.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/testmp3.mp3 b/tests/res/raw/testmp3.mp3
deleted file mode 100755
index 657faf7..0000000
--- a/tests/res/raw/testmp3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/testmp3_2.mp3 b/tests/res/raw/testmp3_2.mp3
deleted file mode 100644
index 6a70c69..0000000
--- a/tests/res/raw/testmp3_2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/testvideo.3gp b/tests/res/raw/testvideo.3gp
deleted file mode 100644
index 1503272..0000000
--- a/tests/res/raw/testvideo.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/res/raw/text.txt b/tests/res/raw/text.txt
deleted file mode 100755
index 3d8c519..0000000
--- a/tests/res/raw/text.txt
+++ /dev/null
@@ -1 +0,0 @@
-OneTwoThreeFourFiveSixSevenEightNineTen
\ No newline at end of file
diff --git a/tests/res/values/arrays.xml b/tests/res/values/arrays.xml
deleted file mode 100644
index 71e0133..0000000
--- a/tests/res/values/arrays.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<resources>
-    <item type="integer" name="reference" format="integer">101</item>
-
-      <string-array name="strings">
-        <item>zero</item>
-        <item>1</item>
-        <item>@string/reference</item>
-    </string-array>
-
-    <integer-array name="integers">
-        <item>0</item>
-        <item>1</item>
-        <item>@integer/reference</item>
-    </integer-array>
-
-    <array name="difficultyLevel">
-        <item>Easy</item>
-        <item>Medium</item>
-        <item>Hard</item>
-    </array>
-
-    <string-array name="string">
-        <item>Test String 1</item>
-        <item>Test String 2</item>
-        <item>Test String 3</item>
-    </string-array>
-
-    <integer-array name="table_row_layout">
-        <item>1</item>
-        <item>2</item>
-        <item>3</item>
-        <item>4</item>
-        <item>5</item>
-        <item>6</item>
-        <item>7</item>
-        <item>8</item>
-        <item>9</item>
-        <item>10</item>
-    </integer-array>
-</resources>
diff --git a/tests/res/values/attrs.xml b/tests/res/values/attrs.xml
deleted file mode 100644
index 4c3d9db..0000000
--- a/tests/res/values/attrs.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<resources>
-    <declare-styleable name="Style1">
-        <attr name="Type1" format="integer">
-            <enum name="type" value="28" />
-            <enum name="data" value="0xff00ff00" />
-            <enum name="asset_cookie" value="0" />
-            <enum name="resource_id" value="0" />
-            <enum name="changing_config" value="0" />
-        </attr>
-        <attr name="Type2" format="integer">
-            <enum name="type" value="28" />
-            <enum name="data" value="0xff0000ff" />
-            <enum name="asset_cookie" value="0" />
-            <enum name="resource_id" value="0" />
-            <enum name="changing_config" value="0" />
-        </attr>
-    </declare-styleable>
-    <attr name="type1" format="boolean"/>
-    <attr name="type2" format="boolean"/>
-    <attr name="type3" format="color"/>
-    <attr name="type4" format="reference|color"/>
-    <attr name="type5" format="dimension"/>
-    <attr name="type6" format="dimension"/>
-    <attr name="type7" format="dimension"/>
-    <attr name="type8" format="reference"/>
-    <attr name="type9" format="float"/>
-    <attr name="type10" format="fraction"/>
-    <attr name="type11" format="integer"/>
-    <attr name="type12" format="integer"/>
-    <attr name="type13" format="reference|string"/>
-    <attr name="type14" format="string"/>
-    <attr name="type15" format="reference"/>
-    <attr name="type16" format="string"/>
-    <declare-styleable name="style1">
-        <attr name="type1"/>
-        <attr name="type2"/>
-        <attr name="type3"/>
-        <attr name="type4"/>
-        <attr name="type5"/>
-        <attr name="type6"/>
-        <attr name="type7"/>
-        <attr name="type8"/>
-        <attr name="type9"/>
-        <attr name="type10"/>
-        <attr name="type11"/>
-        <attr name="type12"/>
-        <attr name="type13"/>
-        <attr name="type14"/>
-        <attr name="type15"/>
-        <attr name="type16"/>
-    </declare-styleable>
-    <attr name="testEnum">
-        <enum name="val1" value="1" />
-        <enum name="val2" value="2" />
-        <enum name="val10" value="10" />
-    </attr>
-    <attr name="testFlags">
-        <flag name="bit1" value="0x1" />
-        <flag name="bit2" value="0x2" />
-        <flag name="bit31" value="0x40000000" />
-    </attr>
-    <attr name="testString" format="string" />
-    <declare-styleable name="EnumStyle">
-        <attr name="testEnum" />
-    </declare-styleable>
-    <declare-styleable name="FlagStyle">
-        <attr name="testFlags" />
-    </declare-styleable>
-    <declare-styleable name="TestConfig">
-        <attr name="testString" />
-    </declare-styleable>
-    <!-- Size of text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp).
-         Supported values include the following:<p/>
-    <ul>
-        <li><b>px</b> Pixels</li>
-        <li><b>sp</b> Scaled pixels (scaled to relative pixel size on screen). See {@link android.util.DisplayMetrics} for more information.</li>
-        <li><b>pt</b> Points</li>
-        <li><b>dip</b> Device independent pixels. See {@link android.util.DisplayMetrics} for more information.</li>
-    </ul>
-    -->
-    <attr name="textSize" format="dimension" />
-    <attr name="typeface">
-        <enum name="normal" value="0" />
-        <enum name="sans" value="1" />
-        <enum name="serif" value="2" />
-        <enum name="monospace" value="3" />
-    </attr>
-    <!-- Default text typeface style. -->
-    <attr name="textStyle">
-        <flag name="normal" value="0" />
-        <flag name="bold" value="1" />
-        <flag name="italic" value="2" />
-    </attr>
-    <!-- Color of text (usually same as colorForeground). -->
-    <attr name="textColor" format="reference|color" />
-    <!-- Color of highlighted text. -->
-    <attr name="textColorHighlight" format="reference|color" />
-    <!-- Color of hint text (displayed when the field is empty). -->
-    <attr name="textColorHint" format="reference|color" />
-    <!-- Color of link text (URLs). -->
-    <attr name="textColorLink" format="reference|color" />
-    <declare-styleable name="TextAppearance">
-        <attr name="textColor"/>
-        <attr name="textSize"/>
-        <attr name="textStyle"/>
-        <attr name="typeface"/>
-        <attr name="textColorHighlight"/>
-        <attr name="textColorHint"/>
-        <attr name="textColorLink"/>
-    </declare-styleable>
-    <!-- Integer used to uniquely identify theme overrides. -->
-    <attr name="themeType" format="integer"/>
-    <!-- Theme reference used to override parent theme. -->
-    <attr name="themeOverrideAttr" format="reference"/>
-
-    <!-- Drawable theming attributes -->
-    <attr name="themeBoolean" />
-    <attr name="themeColor" />
-    <attr name="themeFloat" />
-    <attr name="themeInteger" />
-    <attr name="themeDimension" />
-    <attr name="themeDrawable" />
-    <attr name="themeBitmap" />
-    <attr name="themeNinePatch" />
-    <attr name="themeGravity" />
-    <attr name="themeTileMode" />
-    <attr name="themeAngle" />
-</resources>
diff --git a/tests/res/values/bools.xml b/tests/res/values/bools.xml
deleted file mode 100755
index f119cda..0000000
--- a/tests/res/values/bools.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<resources>
-	<bool name="trueRes">true</bool>
-	<bool name="falseRes">false</bool>
-</resources>
diff --git a/tests/res/values/colors.xml b/tests/res/values/colors.xml
deleted file mode 100644
index f3cc325..0000000
--- a/tests/res/values/colors.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<resources>
-    <drawable name="red">#7f00</drawable>
-    <drawable name="blue">#770000ff</drawable>
-    <drawable name="black">#77ffffff</drawable>
-    <drawable name="yellow">#77ffff00</drawable>
-    <color name="testcolor1">#ff00ff00</color>
-    <color name="testcolor2">#ffff0000</color>
-    <color name="failColor">#ff0000ff</color>
-</resources>
diff --git a/tests/res/values/configVarying.xml b/tests/res/values/configVarying.xml
deleted file mode 100755
index 7b7d576..0000000
--- a/tests/res/values/configVarying.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <item type="configVarying" name="simple">simple default</item>
-    <bag type="configVarying" name="bag">
-        <item name="testString">bag default</item>
-    </bag>
-    <item type="configVarying" name="small">default</item>
-    <item type="configVarying" name="normal">default</item>
-    <item type="configVarying" name="large">default</item>
-    <item type="configVarying" name="xlarge">default</item>
-    <item type="configVarying" name="sw">default</item>
-    <item type="configVarying" name="w">default</item>
-    <item type="configVarying" name="h">default</item>
-    <item type="configVarying" name="wh">default</item>
-</resources>
diff --git a/tests/res/values/dimens.xml b/tests/res/values/dimens.xml
deleted file mode 100755
index bae216f..0000000
--- a/tests/res/values/dimens.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<resources>
-    <item name="frac100perc" type="dimen" format="fraction">100%</item>
-    <item name="frac1perc" type="dimen" format="fraction">1%</item>
-    <item name="fracp1perc" type="dimen" format="fraction">.1%</item>
-    <item name="fracp01perc" type="dimen" format="fraction">.01%</item>
-    <item name="frac0perc" type="dimen" format="fraction">0%</item>
-    <item name="frac1p1perc" type="dimen" format="fraction">1.1%</item>
-    <item name="frac100p1perc" type="dimen" format="fraction">100.1%</item>
-    <item name="frac25510perc" type="dimen" format="fraction">25510%</item>
-    <item name="frac25610perc" type="dimen" format="fraction">25610%</item>
-    <item name="frac6553510perc" type="dimen" format="fraction">6553510%</item>
-    <item name="frac6553610perc" type="dimen" format="fraction">6553610%</item>
-
-    <item name="frac100pperc" type="dimen" format="fraction">100%p</item>
-    <item name="frac1pperc" type="dimen" format="fraction">1%p</item>
-    <item name="fracp1pperc" type="dimen" format="fraction">.1%p</item>
-    <item name="fracp01pperc" type="dimen" format="fraction">.01%p</item>
-    <item name="frac0pperc" type="dimen" format="fraction">0%p</item>
-    <item name="frac1p1pperc" type="dimen" format="fraction">1.1%p</item>
-    <item name="frac100p1pperc" type="dimen" format="fraction">100.1%p</item>
-    <item name="frac25510pperc" type="dimen" format="fraction">25510%p</item>
-    <item name="frac25610pperc" type="dimen" format="fraction">25610%p</item>
-    <item name="frac6553510pperc" type="dimen" format="fraction">6553510%p</item>
-    <item name="frac6553610pperc" type="dimen" format="fraction">6553610%p</item>
-</resources>
-
diff --git a/tests/res/values/ids.xml b/tests/res/values/ids.xml
deleted file mode 100644
index 30e081b..0000000
--- a/tests/res/values/ids.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-  <item type="id" name="background" />
-</resources>
diff --git a/tests/res/values/resources_test.xml b/tests/res/values/resources_test.xml
deleted file mode 100644
index 91c2c4a..0000000
--- a/tests/res/values/resources_test.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-     <!-- The width that is used when creating thumbnails of applications. -->
-     <dimen name="thumbnail_width">84dp</dimen>
-     <!-- The height that is used when creating thumbnails of applications. -->
-     <dimen name="thumbnail_height">63dp</dimen>
-     <!-- The standard size (both width and height) of an application icon that
-          will be displayed in the app launcher and elsewhere. -->
-     <dimen name="app_icon_size">48px</dimen>
-     <dimen name="toast_y_offset">64dip</dimen>
-     <plurals name="plurals_test">
-        <item quantity="one">A dog</item>
-        <item quantity="other">Some dogs</item>
-      </plurals>
-     <color name="resource_test_color">#003B3B3B</color>
-     <integer name="resource_test_int">10</integer>
-</resources>
diff --git a/tests/res/values/strings.xml b/tests/res/values/strings.xml
deleted file mode 100644
index c167278..0000000
--- a/tests/res/values/strings.xml
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="permlab_testGranted">Test Granted</string>
-    <string name="permdesc_testGranted">Used for running CTS tests, for testing operations
-        where we have the permission.</string>
-    <string name="permlab_testDynamic">Test Dynamic</string>
-    <string name="permdesc_testDynamic">Used for running CTS tests, for testing adding
-        dynamic permissions.</string>
-    <string name="permlab_testDenied">Test Denied</string>
-    <string name="permdesc_testDenied">Used for running CTS tests, for testing operations
-        where we do not have the permission.</string>
-    <string name="explain">1. click start. \n2. if above image shaked, then press pass button,
-         else press failed button.</string>
-    <string name="text_view_hello">Hello! Text view!</string>
-    <string name="text_view_hello_two_lines">Hello! \nText view!</string>
-    <string name="text_view_simple_hint">This is a hint.</string>
-    <string name="text_view_hint">This is a string for testing hint of textview.</string>
-    <string name="activity_forwarding">App/Forwarding</string>
-    <string name="forwarding">$$$</string>
-    <string name="go">Go</string>
-    <string name="back">Back</string>
-    <string name="forward_target">
-        Press back button and notice we don\'t see the previous activity.
-    </string>
-    <string name="edit_text">testing</string>
-    <string name="text">DialogTest</string>
-    <string name="text_country">Country</string>
-    <string name="text_name">Name</string>
-    <string name="hello_world">Hello, World!</string>
-    <string name="hello_android">Hello, Android!</string>
-    <string name="alert_dialog_username">Name:</string>
-    <string name="alert_dialog_password">Password:</string>
-    <string name="alert_dialog_positive">Positive</string>
-    <string name="alert_dialog_negative">Negative</string>
-    <string name="alert_dialog_neutral">Neutral</string>
-    <string name="notify">Notify </string>
-    <string name="tabs_1">testing</string>
-    <string name="table_layout_first">first</string>
-    <string name="table_layout_second">second</string>
-    <string name="table_layout_third">third</string>
-    <string name="table_layout_long">Very long to make the string out of the screen</string>
-    <string name="chronometer_text">Test Chronometer</string>
-    <string name="am">AM</string>
-    <string name="pm">PM</string>
-    <string name="viewgroup_test">ViewGroup test</string>
-    <string name="viewanimator_test">ViewAnimator test</string>
-    <string name="id_ok">OK</string>
-    <string name="id_cancel">Cancel</string>
-    <string name="context_test_string1">This is %s string.</string>
-    <string name="context_test_string2">This is test string.</string>
-    <string name="animationutils_test_instructions">Choose different animations</string>
-    <string name="animationutils_test_alpha">Alpha animation</string>
-    <string name="animationutils_test_scale">Scale animation</string>
-    <string name="animationutils_test_rotate">Rotate animation</string>
-    <string name="animationutils_test_translate">Translate animation</string>
-    <string name="animationutils_test_set">Animation set</string>
-    <string name="animationutils_test_layout">Layout animation</string>
-    <string name="animationutils_test_gridlayout">Grid layout animation</string>
-    <string name="twolinelistitem_test_text1">text1</string>
-    <string name="twolinelistitem_test_text2">text2</string>
-    <string name="metadata_text">metadata text</string>
-    <string name="horizontal_text_1">horizontal 1</string>
-    <string name="horizontal_text_2">horizontal 2</string>
-    <string name="horizontal_text_3">horizontal 3</string>
-    <string name="vertical_text_1">vertical 1</string>
-    <string name="vertical_text_2">vertical 2</string>
-    <string name="vertical_text_3">vertical 3</string>
-    <string name="reference">here</string>
-    <string name="coerceIntegerToString">100</string>
-    <string name="coerceBooleanToString">true</string>
-    <string name="coerceColorToString">#fff</string>
-    <string name="coerceFloatToString">100.0</string>
-    <string name="coerceDimensionToString">100px</string>
-    <string name="coerceFractionToString">100<xliff:g id="percent">%</xliff:g></string>
-    <string name="formattedStringNone">Format[]</string>
-    <string name="formattedStringOne">Format[<xliff:g id="format">%d</xliff:g>]</string>
-    <string name="formattedStringTwo">Format[<xliff:g id="format">%3$d,%2$s</xliff:g>]</string>
-    <string name="checkboxpref_key">checkboxpref_key</string>
-   <string name="checkboxpref_title">title of preference</string>
-   <string name="checkboxpref_summary">summary of preference</string>
-   <string name="checkboxpref_summary_on">summary on of preference</string>
-   <string name="checkboxpref_summary_off">summary off of preference</string>
-   <string name="checkboxpref_depend">checkboxpref_depend</string>
-   <string name="checkboxpref_depend_title"> depend title of preference</string>
-   <string name="checkboxpref_depend_summary"> depend summary of preference</string>
-   <string name="edittextpref_key">edittextpref_key</string>
-   <string name="edittextpref_default_value">default value of preference</string>
-   <string name="edittextpref_title">title of edit text preference</string>
-   <string name="edittextpref_summary">summary of edit text preference</string>
-   <string name="edittextpref_dialog_title">dialog title of edit text preference</string>
-   <string name="edittextpref_text">text of  edit text preference</string>
-   <string name="listpref_key">listpref_key</string>
-   <string name="listpref_title">title of list preference</string>
-   <string name="listpref_summary">summary of list preference</string>
-   <string name="listpref_dialogtitle">dialog title of list preference</string>
-   <string name="easy">Easy</string>
-   <string name="medium">Medium</string>
-   <string name="hard">Hard</string>
-   <string name="footer_view">Footer view</string>
-   <string name="header_view">Header view</string>
-   <string name="dialogpref_title">title of dialog preference </string>
-   <string name="dialogpref_dialog_title">dialog title of dialog preference </string>
-   <string name="dialogpref_key">dialogpref_key</string>
-   <string name="dialogpref_default_value">default value of dialog preference</string>
-   <string name="dialogpref_summary">summary of dialog preference</string>
-   <string name="dialogpref_message">message of dialog preference</string>
-   <string name="dialogpref_sure">Sure</string>
-   <string name="dialogpref_cancel">Cancel</string>
-   <string name="pref_key">pref_key</string>
-   <string name="pref_title">title of preference</string>
-   <string name="pref_summary">summary of preference</string>
-   <string name="pref_depend_key">pref_depend_key</string>
-   <string name="pref_depend_title"> depend title of preference</string>
-   <string name="pref_depend_summary"> depend summary of preference</string>
-   <string name="android_intent_action_preference">android.intent.action.PREFERENCE</string>
-   <string name="def_pref_key">def_pref_key</string>
-   <string name="def_pref_title">default preference</string>
-   <string name="def_pref_summary">This is default preference of cts</string>
-   <string name="relative_view1">view 1</string>
-   <string name="relative_view2">view 2</string>
-   <string name="relative_view3">view 3</string>
-   <string name="relative_view4">view 4</string>
-   <string name="relative_view5">view 5</string>
-   <string name="relative_view6">view 6</string>
-   <string name="relative_view7">view 7</string>
-   <string name="relative_view8">view 8</string>
-   <string name="relative_view9">view 9</string>
-   <string name="relative_view10">view 10</string>
-   <string name="relative_view11">view 11</string>
-   <string name="relative_view12">view 12</string>
-   <string name="relative_view13">view 13</string>
-   <string name="country">Country:</string>
-   <string name="symbol">Symbol:</string>
-   <string name="country_warning">No such country registered</string>
-   <string name="version_cur">base</string>
-   <string name="version_old">base</string>
-   <string name="version_v3">base</string>
-   <string name="authenticator_label">Android CTS</string>
-   <string name="search_label">Android CTS</string>
-   <string name="tag1">tag 1</string>
-   <string name="tag2">tag 2</string>
-
-   <string name="button">Button</string>
-   <string name="holo_test">Holo Test</string>
-   <string name="holo_generator">Holo Generator</string>
-   <string name="holo_light_test">Holo Light Test</string>
-   <string name="holo_light_generator">Holo Light Generator</string>
-   <string name="reference_image">Reference Image: </string>
-   <string name="generated_image">Generated Image: </string>
-   <string name="themes_prompt">Select a Theme:</string>
-   <string name="sample_text">Sample text goes here. I wanted something creative and whimsical
-but then I just got bored...</string>
-    <string name="long_text">This is a really long string which exceeds the width of the view.
-New devices have a much larger screen which actually enables long strings to be displayed
-with no fading. I have made this string longer to fix this case. If you are correcting this
-text, I would love to see the kind of devices you guys now use! Guys, maybe some devices need longer string!
-I think so, so how about double this string, like copy and paste!
-This is a really long string which exceeds the width of the view.
-New devices have a much larger screen which actually enables long strings to be displayed
-with no fading. I have made this string longer to fix this case. If you are correcting this
-text, I would love to see the kind of devices you guys now use! Guys, maybe some devices need longer string!
-I think so, so how about double this string, like copy and paste! </string>
-    <string name="rectangle200">"M 0,0 l 200,0 l 0, 200 l -200, 0 z"</string>
-</resources>
diff --git a/tests/res/values/styles.xml b/tests/res/values/styles.xml
deleted file mode 100644
index 20c80f8..0000000
--- a/tests/res/values/styles.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <style name="Whatever">
-        <item name="type1">true</item>
-        <item name="type2">false</item>
-        <item name="type3">#ff0000ff</item>
-        <item name="type4">#ff00ff00</item>
-        <item name="type5">0.75px</item>
-        <item name="type6">10px</item>
-        <item name="type7">18px</item>
-        <item name="type8">@drawable/pass</item>
-        <item name="type9">3.14</item>
-        <item name="type10">100%</item>
-        <item name="type11">365</item>
-        <item name="type12">86400</item>
-        <item name="type13">@string/hello_android</item>
-        <item name="type14">TypedArray Test!</item>
-        <item name="type15">@array/difficultyLevel</item>
-        <item name="type16">Typed Value!</item>
-    </style>
-
-    <style name="TextViewWithoutColorAndAppearance">
-        <item name="android:textSize">18sp</item>
-    </style>
-
-    <style name="TextViewWithColorButWithOutAppearance">
-        <item name="android:textColor">#ff0000ff</item>
-    </style>
-
-    <style name="TextViewWithColorAndAppearance">
-        <item name="android:textColor">#ff0000ff</item>
-        <item name="android:textAppearance">@style/TextAppearance.WithColor</item>
-    </style>
-
-    <style name="TextViewWithoutColorButWithAppearance">
-        <item name="android:textAppearance">@style/TextAppearance.WithColor</item>
-    </style>
-
-    <style name="TextAppearance" parent="android:TextAppearance">
-    </style>
-
-    <style name="TextAppearance.WithColor">
-        <item name="android:textColor">#ffff0000</item>
-    </style>
-
-    <style name="TextAppearance.All">
-        <item name="android:textColor">@drawable/black</item>
-        <item name="android:textSize">20px</item>
-        <item name="android:textStyle">bold</item>
-        <item name="android:textColorHint">@drawable/red</item>
-        <item name="android:textColorLink">@drawable/blue</item>
-        <item name="android:textColorHighlight">@drawable/yellow</item>
-    </style>
-
-    <style name="TextAppearance.Colors">
-        <item name="android:textColor">@drawable/black</item>
-        <item name="android:textColorHint">@drawable/blue</item>
-        <item name="android:textColorLink">@drawable/yellow</item>
-        <item name="android:textColorHighlight">@drawable/red</item>
-    </style>
-
-    <style name="TextAppearance.NotColors">
-        <item name="android:textSize">17px</item>
-        <item name="android:typeface">sans</item>
-        <item name="android:textStyle">normal</item>
-    </style>
-
-    <style name="TextAppearance.Style">
-        <item name="android:textStyle">normal</item>
-    </style>
-
-    <style name="TestEnum1">
-        <item name="testEnum">val1</item>
-    </style>
-
-    <style name="TestEnum2">
-        <item name="testEnum">val2</item>
-    </style>
-
-    <style name="TestEnum10">
-        <item name="testEnum">val10</item>
-    </style>
-
-    <style name="TestFlag1">
-        <item name="testFlags">bit1</item>
-    </style>
-
-    <style name="TestFlag2">
-        <item name="testFlags">bit2</item>
-    </style>
-
-    <style name="TestFlag31">
-        <item name="testFlags">bit31</item>
-    </style>
-
-    <style name="TestFlag1And2">
-        <item name="testFlags">bit1|bit2</item>
-    </style>
-
-    <style name="TestFlag1And2And31">
-        <item name="testFlags">bit1|bit2|bit31</item>
-    </style>
-
-    <style name="TestEnum1.EmptyInherit" />
-
-    <style name="Theme_AlertDialog">
-        <item name="android:textSize">18sp</item>
-    </style>
-
-    <style name="TestProgressBar">
-        <item name="android:indeterminateOnly">false</item>
-        <item name="android:progressDrawable">?android:drawable/progress_horizontal</item>
-        <item name="android:indeterminateDrawable">?android:drawable/progress_horizontal</item>
-        <item name="android:minHeight">20dip</item>
-        <item name="android:maxHeight">20dip</item>
-        <item name="android:focusable">true</item>
-    </style>
-
-    <style name="Test_Theme">
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:panelColorForeground">#ff000000</item>
-        <item name="android:panelColorBackground">#ffffffff</item>
-    </style>
-
-    <style name="Theme_OverrideOuter">
-        <item name="themeType">1</item>
-    </style>
-
-    <style name="Theme_OverrideInner">
-        <item name="themeType">2</item>
-        <item name="themeOverrideAttr">@style/Theme_OverrideAttr</item>
-    </style>
-
-    <style name="Theme_OverrideAttr">
-        <item name="themeType">3</item>
-    </style>
-    
-    <style name="Theme_ThemedDrawableTest">
-        <item name="themeBoolean">true</item>
-        <item name="themeColor">@android:color/black</item>
-        <item name="themeFloat">1.0</item>
-        <item name="themeAngle">45.0</item>
-        <item name="themeInteger">1</item>
-        <item name="themeDimension">1px</item>
-        <item name="themeDrawable">@drawable/icon_black</item>
-        <item name="themeBitmap">@drawable/icon_black</item>
-        <item name="themeNinePatch">@drawable/ninepatch_0</item>
-        <item name="themeGravity">48</item>
-        <item name="themeTileMode">2</item>
-    </style>
-
-    <style name="Theme_NoSwipeDismiss">
-        <item name="android:windowSwipeToDismiss">false</item>
-    </style>
-
-</resources>
diff --git a/tests/res/xml/alias.xml b/tests/res/xml/alias.xml
deleted file mode 100644
index f88f3dc..0000000
--- a/tests/res/xml/alias.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<alias xmlns:android="http://schemas.android.com/apk/res/android">
-    <intent android:action="android.intent.action.MAIN"
-        android:targetPackage="com.android.cts.stub"
-        android:targetClass="android.app.cts.ChildActivity"
-        android:data="http://www.google.com/">
-    </intent>
-</alias>
-
diff --git a/tests/res/xml/anim_list_correct.xml b/tests/res/xml/anim_list_correct.xml
deleted file mode 100644
index 660aa96..0000000
--- a/tests/res/xml/anim_list_correct.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
-    android:visible="false"
-    android:variablePadding="true"
-    android:oneshot="true" >
-
-    <item android:drawable="@drawable/testimage"
-        android:duration="2000" />
-
-    <item android:duration="1000" >
-        <color android:color="#77ffffff" />
-    </item>
-</animation-list>
-
diff --git a/tests/res/xml/anim_list_missing_item_drawable.xml b/tests/res/xml/anim_list_missing_item_drawable.xml
deleted file mode 100644
index 99052f4..0000000
--- a/tests/res/xml/anim_list_missing_item_drawable.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item android:duration="2000" />
-</animation-list>
-
diff --git a/tests/res/xml/anim_list_missing_item_duration.xml b/tests/res/xml/anim_list_missing_item_duration.xml
deleted file mode 100644
index e3986c2..0000000
--- a/tests/res/xml/anim_list_missing_item_duration.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item android:drawable="@drawable/testimage" />
-</animation-list>
-
diff --git a/tests/res/xml/anim_list_missing_list_attrs.xml b/tests/res/xml/anim_list_missing_list_attrs.xml
deleted file mode 100644
index 25d2dfe..0000000
--- a/tests/res/xml/anim_list_missing_list_attrs.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item android:drawable="@drawable/testimage"
-        android:duration="2000" />
-</animation-list>
-
diff --git a/tests/res/xml/authenticator.xml b/tests/res/xml/authenticator.xml
deleted file mode 100644
index 1e298b1..0000000
--- a/tests/res/xml/authenticator.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/**
- * Copyright (c) 2009, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-
-<!-- The attributes in this XML file provide configuration information -->
-<!-- for the Account Manager. -->
-
-<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
-    android:accountType="android.content.cts.account.type"
-    android:icon="@drawable/ic_cts_selected"
-    android:smallIcon="@drawable/ic_cts_minitab_selected"
-    android:label="@string/authenticator_label"
-/>
\ No newline at end of file
diff --git a/tests/res/xml/base_attributes.xml b/tests/res/xml/base_attributes.xml
deleted file mode 100644
index adb44de..0000000
--- a/tests/res/xml/base_attributes.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<alias xmlns:android="http://schemas.android.com/apk/res/android">
-    <base_attr_pixel>
-        <Attributes xmlns:android="http://schemas.android.com/apk/res/android"
-            android:layout_width="400px"
-            android:layout_height="600px"/>
-    </base_attr_pixel>
-    <base_attr_fillwrap>
-        <Attributes xmlns:android="http://schemas.android.com/apk/res/android"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
-    </base_attr_fillwrap>
-    <base_attr_noheight>
-        <Attributes xmlns:android="http://schemas.android.com/apk/res/android"
-            android:layout_width="600px"/>
-    </base_attr_noheight>
-</alias>
diff --git a/tests/res/xml/bitmapdrawable.xml b/tests/res/xml/bitmapdrawable.xml
deleted file mode 100644
index f9001aa..0000000
--- a/tests/res/xml/bitmapdrawable.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<alias xmlns:android="http://schemas.android.com/apk/res/android">
-    <bitmap_allattrs>
-        <bitmap android:src="@drawable/testimage"
-            android:gravity="top|right"
-            android:dither="true"
-            android:antialias="true"
-            android:filter="false"
-            android:tileMode="repeat"/>
-    </bitmap_allattrs>
-
-    <bitmap_partattrs>
-        <bitmap android:src="@drawable/size_48x48"
-            android:gravity="center"
-            android:tileMode="mirror"/>
-    </bitmap_partattrs>
-
-    <bitmap_wrongsrc>
-        <bitmap android:src="@drawable/colorstatelist_test"/>
-    </bitmap_wrongsrc>
-
-    <bitmap_nosrc>
-        <bitmap android:gravity="center"/>
-    </bitmap_nosrc>
-</alias>
diff --git a/tests/res/xml/colors.xml b/tests/res/xml/colors.xml
deleted file mode 100644
index 8c44a66..0000000
--- a/tests/res/xml/colors.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-<resources>
-    <color name="testcolor1">#ff00ff00</color>
-    <color name="testcolor2">#ffff0000</color>
-    <color name="failColor">#ff0000ff</color>
-</resources>
-
diff --git a/tests/res/xml/drawable_test.xml b/tests/res/xml/drawable_test.xml
deleted file mode 100644
index f2a2e5d..0000000
--- a/tests/res/xml/drawable_test.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<drawable xmlns:android="http://schemas.android.com/apk/res/android" android:visible="false">
-</drawable>
-
diff --git a/tests/res/xml/extra.xml b/tests/res/xml/extra.xml
deleted file mode 100755
index b3bffb4..0000000
--- a/tests/res/xml/extra.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<tag xmlns:android="http://schemas.android.com/apk/res/android" android:name="Bruce" android:value="Lee">
-    <extra android:name="google" android:value="android">
-    </extra>
-</tag>
diff --git a/tests/res/xml/input_extras.xml b/tests/res/xml/input_extras.xml
deleted file mode 100644
index ce5eb5e..0000000
--- a/tests/res/xml/input_extras.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<input-extras xmlns:android="http://schemas.android.com/apk/res/android">
-    <extra android:name="google" android:value="android"/>
-    <extra android:name="test" android:value="cts"/>
-</input-extras>
-
diff --git a/tests/res/xml/intentfilter.xml b/tests/res/xml/intentfilter.xml
deleted file mode 100644
index 7ed3a53..0000000
--- a/tests/res/xml/intentfilter.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-<intent-filter xmlns="http://schemas.android.com/apk/res/android">
-    <action name="testAction"/>
-    <cat name="testCategory" />
-    <type name="vnd.android.cursor.dir/person"/>
-    <scheme name="testScheme"/>
-    <auth host="testHost" port="80"/>
-    <path name="testPath" literal="test"/>
-    <path name="testPath" prefix="test"/>
-    <path name="testPath" sglob="test"/>
-</intent-filter>
diff --git a/tests/res/xml/layerdrawable.xml b/tests/res/xml/layerdrawable.xml
deleted file mode 100644
index 9bb1268..0000000
--- a/tests/res/xml/layerdrawable.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<alias xmlns:android="http://schemas.android.com/apk/res/android">
-    <layer-list_full>
-        <layer-list>
-            <item><color android:color="#88ffffff">
-                <padding android:left="1px" android:top="2px" android:right="3px"
-                    android:bottom="4px"/>
-            </color></item>
-            <item android:drawable="@drawable/testimage"/>
-            <item>
-                <rotate
-                    android:pivotX="50%" android:pivotY="50%"
-                    android:fromDegrees="0" android:toDegrees="360"
-                    android:drawable="@drawable/testimage"/>
-                <padding android:left="4px" android:top="3px"
-                    android:right="2px" android:bottom="1px" />
-            </item>
-            <bitmap android:src="@drawable/testimage"/>
-            <item android:id="@id/background"
-                android:drawable="@drawable/window_test_drawable" />
-        </layer-list>
-    </layer-list_full>
-    <layer-list_empty>
-        <layer-list>
-            <bitmap android:src="@drawable/testimage"/>
-        </layer-list>
-    </layer-list_empty>
-    <layer-list_exception>
-        <layer-list>
-            <item android:id="@id/background"/>
-        </layer-list>
-    </layer-list_exception>
-</alias>
diff --git a/tests/res/xml/layout.xml b/tests/res/xml/layout.xml
deleted file mode 100644
index 6bcb27d..0000000
--- a/tests/res/xml/layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<alias xmlns:android="http://schemas.android.com/apk/res/android">
-    <AbsoluteLayout    android:layout_width="20dip"
-               android:layout_height="30dip"
-               android:layout_x="10dip"
-               android:layout_y="20dip">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_x="0dip"
-                android:layout_y="0dip"
-                android:text="@string/notify">
-                <requestFocuse/>
-            </TextView>
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_x="0dip"
-                android:layout_y="0dip"
-                android:text="@string/notify"/>
-
-            <View
-                android:id="@+id/fit_windows"
-                android:fitsSystemWindows="true"
-                android:layout_height="wrap_content"/>
-            <include layout="@xml/merge" />
-    </AbsoluteLayout>
-
-</alias>
diff --git a/tests/res/xml/level_list_correct.xml b/tests/res/xml/level_list_correct.xml
deleted file mode 100644
index 241ec16..0000000
--- a/tests/res/xml/level_list_correct.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item android:drawable="@drawable/testimage"
-        android:minLevel="100"
-        android:maxLevel="200" />
-
-    <item android:minLevel="200"
-        android:maxLevel="300" >
-        <color android:color="#77ffffff" />
-    </item>
-</level-list>
-
diff --git a/tests/res/xml/level_list_missing_item_drawable.xml b/tests/res/xml/level_list_missing_item_drawable.xml
deleted file mode 100644
index 506b10f..0000000
--- a/tests/res/xml/level_list_missing_item_drawable.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item android:minLevel="100"
-        android:maxLevel="200"/>
-</level-list>
-
diff --git a/tests/res/xml/level_list_missing_item_minlevel_maxlevel.xml b/tests/res/xml/level_list_missing_item_minlevel_maxlevel.xml
deleted file mode 100644
index f77bfd5..0000000
--- a/tests/res/xml/level_list_missing_item_minlevel_maxlevel.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item android:drawable="@drawable/testimage" />
-</level-list>
-
diff --git a/tests/res/xml/merge.xml b/tests/res/xml/merge.xml
deleted file mode 100644
index 710e904..0000000
--- a/tests/res/xml/merge.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
-   <AbsoluteLayout    android:layout_width="20dip"
-               android:layout_height="30dip"
-               android:layout_x="10dip"
-               android:layout_y="20dip">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_x="0dip"
-                android:layout_y="0dip"
-                android:text="@string/notify"/>
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_x="0dip"
-                android:layout_y="0dip"
-                android:text="@string/notify"/>
-
-    </AbsoluteLayout>
-
-</merge>
diff --git a/tests/res/xml/metadata.xml b/tests/res/xml/metadata.xml
deleted file mode 100644
index 336b931..0000000
--- a/tests/res/xml/metadata.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<thedata xmlns:android="http://schemas.android.com/apk/res/android"
-    rawText="some raw text"
-    rawColor="#ffffff00"
-    android:color="#f00"
-    android:text="@string/metadata_text"/>
diff --git a/tests/res/xml/method.xml b/tests/res/xml/method.xml
deleted file mode 100644
index 763faa5..0000000
--- a/tests/res/xml/method.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<input-method xmlns:android="http://schemas.android.com/apk/res/android"
-        android:settingsActivity="android.view.inputmethod.cts.InputMethodInfoStub"
-/>
diff --git a/tests/res/xml/pm_test.xml b/tests/res/xml/pm_test.xml
deleted file mode 100644
index 4db24cf..0000000
--- a/tests/res/xml/pm_test.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
- <!-- This xml is just test for PackageManager Test -->
-<resources>
-</resources>
diff --git a/tests/res/xml/scaledrawable.xml b/tests/res/xml/scaledrawable.xml
deleted file mode 100644
index d8d5f73..0000000
--- a/tests/res/xml/scaledrawable.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<alias xmlns:android="http://schemas.android.com/apk/res/android">
-    <scale_allattrs>
-        <scale
-            android:scaleWidth="0.4"
-            android:scaleHeight="0.3"
-            android:scaleGravity="center"
-            android:drawable="@drawable/testimage">
-            <color android:color="#88ffffff"/>
-            <bitmap android:src="@drawable/size_48x48"/>
-        </scale>
-    </scale_allattrs>
-
-    <scale_nodrawable>
-        <scale
-            android:scaleWidth="0.7"
-            android:scaleHeight="0.3"
-            android:scaleGravity="center"/>
-    </scale_nodrawable>
-</alias>
diff --git a/tests/res/xml/searchable.xml b/tests/res/xml/searchable.xml
deleted file mode 100644
index f526341..0000000
--- a/tests/res/xml/searchable.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<searchable xmlns:android="http://schemas.android.com/apk/res/android"
-    android:label="@string/search_label"
-/>
diff --git a/tests/res/xml/selector_correct.xml b/tests/res/xml/selector_correct.xml
deleted file mode 100644
index 917833f..0000000
--- a/tests/res/xml/selector_correct.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:visible="false"
-    android:variablePadding="true"
-    android:constantSize="true" >
-
-    <item android:state_focused="true"
-        android:state_pressed="false"
-        android:drawable="@drawable/testimage" />
-
-    <item >
-        <color android:color="#77ffffff" />
-    </item>
-</selector>
-
diff --git a/tests/res/xml/selector_missing_item_drawable.xml b/tests/res/xml/selector_missing_item_drawable.xml
deleted file mode 100644
index 35bef42..0000000
--- a/tests/res/xml/selector_missing_item_drawable.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:visible="false"
-    android:variablePadding="true"
-    android:constantSize="true" >
-
-    <item android:state_focused="true"
-        android:state_pressed="false" />
-</selector>
-
diff --git a/tests/res/xml/selector_missing_selector_attrs.xml b/tests/res/xml/selector_missing_selector_attrs.xml
deleted file mode 100644
index 87ccc3c..0000000
--- a/tests/res/xml/selector_missing_selector_attrs.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item android:drawable="@drawable/testimage"
-        android:state_focused="true"
-        android:state_pressed="false" />
-</selector>
-
diff --git a/tests/res/xml/syncadapter.xml b/tests/res/xml/syncadapter.xml
deleted file mode 100644
index 1c0bb72..0000000
--- a/tests/res/xml/syncadapter.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/**
- * Copyright (c) 2009, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-
-<!-- The attributes in this XML file provide configuration information -->
-<!-- for the SyncAdapter. -->
-
-<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
-    android:contentAuthority="android.content.cts.authority"
-    android:accountType="android.content.cts.account.type"
-/>
diff --git a/tests/res/xml/test_color.xml b/tests/res/xml/test_color.xml
deleted file mode 100644
index 97f7dec..0000000
--- a/tests/res/xml/test_color.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-        android:versionName="testNonResourcesString">
-    <color name="testcolor1">#ff00ff00</color>
-    <color name="testcolor2">#ffff0000</color>
-    <color name="failColor">#ff0000ff</color>
-</resources>
diff --git a/tests/src/android/opengl/cts/CompressedTextureLoader.java b/tests/src/android/opengl/cts/CompressedTextureLoader.java
deleted file mode 100644
index 2cb6910..0000000
--- a/tests/src/android/opengl/cts/CompressedTextureLoader.java
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.opengl.cts;
-
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.Buffer;
-import java.nio.ByteOrder;
-import java.util.HashMap;
-
-import com.android.cts.stub.R;
-
-import android.app.Activity;
-import android.content.res.AssetFileDescriptor;
-import android.content.res.Resources;
-import android.os.Bundle;
-import android.util.Log;
-
-import android.opengl.ETC1;
-import android.opengl.ETC1Util;
-import android.opengl.GLES20;
-
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.Config;
-import android.graphics.BitmapFactory;
-
-public class CompressedTextureLoader {
-    private static final String TAG = "CompressedTextureLoader";
-
-    public static final String TEXTURE_UNCOMPRESSED = "UNCOMPRESSED";
-    public static final String TEXTURE_ETC1 = "ETC1";
-    public static final String TEXTURE_S3TC = "S3TC";
-    public static final String TEXTURE_ATC = "ATC";
-    public static final String TEXTURE_PVRTC = "PVRTC";
-
-    public static class Texture {
-        public Texture(int width, int height, int internalformat, ByteBuffer data,
-                       String formatName) {
-            mWidth = width;
-            mHeight = height;
-            mInternalFormat = internalformat;
-            mData = data;
-            mFormatName = formatName;
-        }
-
-        /**
-         * Get the width of the texture in pixels.
-         * @return the width of the texture in pixels.
-         */
-        public int getWidth() { return mWidth; }
-
-        /**
-         * Get the height of the texture in pixels.
-         * @return the width of the texture in pixels.
-         */
-        public int getHeight() { return mHeight; }
-
-        /**
-         * Get the compressed data of the texture.
-         * @return the texture data.
-         */
-        public ByteBuffer getData() { return mData; }
-
-        /**
-         * Get the format of the texture.
-         * @return the internal format.
-         */
-        public int getFormat() { return mInternalFormat; }
-
-        /**
-         * Get the format of the texture.
-         * @return the internal format.
-         */
-        public boolean isSupported() { return isFormatSupported(mFormatName); }
-
-        private int mWidth;
-        private int mHeight;
-        private int mInternalFormat;
-        private ByteBuffer mData;
-        private String mFormatName;
-    }
-
-    /*  .pvr header is described by the following c struct
-        typedef struct PVR_TEXTURE_HEADER_TAG{
-            unsigned int  dwHeaderSize;   // size of the structure
-            unsigned int  dwHeight;    // height of surface to be created
-            unsigned int  dwWidth;    // width of input surface
-            unsigned int  dwMipMapCount;   // number of MIP-map levels requested
-            unsigned int  dwpfFlags;   // pixel format flags
-            unsigned int  dwDataSize;   // Size of the compress data
-            unsigned int  dwBitCount;   // number of bits per pixel
-            unsigned int  dwRBitMask;   // mask for red bit
-            unsigned int  dwGBitMask;   // mask for green bits
-            unsigned int  dwBBitMask;   // mask for blue bits
-            unsigned int  dwAlphaBitMask;   // mask for alpha channel
-            unsigned int  dwPVR;    // should be 'P' 'V' 'R' '!'
-            unsigned int  dwNumSurfs;   //number of slices for volume textures or skyboxes
-        } PVR_TEXTURE_HEADER;
-    */
-    static final int PVR_HEADER_SIZE = 13 * 4;
-    static final int PVR_2BPP = 24;
-    static final int PVR_4BPP = 25;
-    static final int PVR_MAGIC_NUMBER = 559044176;
-
-    static final int GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00;
-    static final int GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01;
-    static final int GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02;
-    static final int GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03;
-
-    static class PVRHeader {
-        int mHeaderSize;   // size of the structure
-        int mHeight;    // height of surface to be created
-        int mWidth;    // width of input surface
-        int mMipMapCount;   // number of MIP-map levels requested
-        int mpfFlags;   // pixel format flags
-        int mDataSize;   // Size of the compress data
-        int mBitCount;   // number of bits per pixel
-        int mRBitMask;   // mask for red bit
-        int mGBitMask;   // mask for green bits
-        int mBBitMask;   // mask for blue bits
-        int mAlphaBitMask;   // mask for alpha channel
-        int mPVR;    // should be 'P' 'V' 'R' '!'
-        int mNumSurfs;   //number of slices for volume textures or skyboxes
-    }
-
-    protected static PVRHeader readPVRHeader(InputStream is) {
-
-        byte[] headerData = new byte[PVR_HEADER_SIZE];
-        try {
-            is.read(headerData);
-        } catch (Exception e) {
-            throw new RuntimeException("Unable to read data");
-        }
-
-        ByteBuffer headerBuffer = ByteBuffer.allocateDirect(PVR_HEADER_SIZE)
-                .order(ByteOrder.nativeOrder());
-        headerBuffer.put(headerData, 0, PVR_HEADER_SIZE).position(0);
-
-        PVRHeader header = new PVRHeader();
-
-        header.mHeaderSize = headerBuffer.getInt();
-        header.mHeight = headerBuffer.getInt();
-        header.mWidth = headerBuffer.getInt();
-        header.mMipMapCount = headerBuffer.getInt();
-        header.mpfFlags = headerBuffer.getInt();
-        header.mDataSize = headerBuffer.getInt();
-        header.mBitCount = headerBuffer.getInt();
-        header.mRBitMask = headerBuffer.getInt();
-        header.mGBitMask = headerBuffer.getInt();
-        header.mBBitMask = headerBuffer.getInt();
-        header.mAlphaBitMask = headerBuffer.getInt();
-        header.mPVR = headerBuffer.getInt();
-        header.mNumSurfs = headerBuffer.getInt();
-
-        if (header.mHeaderSize != PVR_HEADER_SIZE ||
-            header.mPVR != PVR_MAGIC_NUMBER) {
-            throw new RuntimeException("Invalid header data");
-        }
-
-        return header;
-    }
-
-    public static Texture loadTextureATC(Resources res, int id) {
-        Texture tex = new Texture(0, 0, 0, null, "Stub!");
-        return tex;
-    }
-
-    private static ETC1Util.ETC1Texture compressTexture(Buffer input,
-                                                        int width, int height,
-                                                        int pixelSize, int stride){
-        int encodedImageSize = ETC1.getEncodedDataSize(width, height);
-        ByteBuffer compressedImage = ByteBuffer.allocateDirect(encodedImageSize).
-            order(ByteOrder.nativeOrder());
-        ETC1.encodeImage(input, width, height, pixelSize, stride, compressedImage);
-        return new ETC1Util.ETC1Texture(width, height, compressedImage);
-    }
-
-    public static Texture createFromUncompressedETC1(Bitmap bitmap) {
-        int dataSize = bitmap.getRowBytes() * bitmap.getHeight();
-
-        ByteBuffer dataBuffer;
-        dataBuffer = ByteBuffer.allocateDirect(dataSize).order(ByteOrder.nativeOrder());
-        bitmap.copyPixelsToBuffer(dataBuffer);
-        dataBuffer.position(0);
-
-        int bytesPerPixel = bitmap.getRowBytes() / bitmap.getWidth();
-        ETC1Util.ETC1Texture compressed = compressTexture(dataBuffer,
-                                                          bitmap.getWidth(),
-                                                          bitmap.getHeight(),
-                                                          bytesPerPixel,
-                                                          bitmap.getRowBytes());
-
-        Texture tex = new Texture(compressed.getWidth(), compressed.getHeight(),
-                                  ETC1.ETC1_RGB8_OES, compressed.getData(), TEXTURE_ETC1);
-
-        return tex;
-    }
-
-    private static ByteBuffer read(InputStream is, int dataSize) {
-        ByteBuffer dataBuffer;
-        dataBuffer = ByteBuffer.allocateDirect(dataSize).order(ByteOrder.nativeOrder());
-        byte[] ioBuffer = new byte[4096];
-        for (int i = 0; i < dataSize; ) {
-            int chunkSize = Math.min(ioBuffer.length, dataSize - i);
-            try {
-                is.read(ioBuffer, 0, chunkSize);
-            } catch (Exception e) {
-                throw new RuntimeException("Unable to read data");
-            }
-            dataBuffer.put(ioBuffer, 0, chunkSize);
-            i += chunkSize;
-        }
-        dataBuffer.position(0);
-        return dataBuffer;
-    }
-
-    public static Texture loadTexturePVRTC(Resources res, int id) {
-        InputStream is = null;
-        try {
-            is = res.openRawResource(id);
-        } catch (Exception e) {
-            throw new RuntimeException("Unable to open resource " + id);
-        }
-
-        PVRHeader header = readPVRHeader(is);
-
-        int format = header.mpfFlags & 0xFF;
-        int internalFormat = 0;
-        if (format == PVR_2BPP && header.mAlphaBitMask == 1) {
-            internalFormat = GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
-        } else if (format == PVR_2BPP && header.mAlphaBitMask == 0) {
-            internalFormat = GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
-        } else if (format == PVR_4BPP && header.mAlphaBitMask == 1) {
-            internalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
-        } else if (format == PVR_4BPP && header.mAlphaBitMask == 0) {
-            internalFormat = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
-        }
-
-        // only load the first mip level for now
-        int dataSize = (header.mWidth * header.mHeight * header.mBitCount) >> 3;
-        ByteBuffer dataBuffer = read(is, dataSize);
-        Texture tex = new Texture(header.mWidth, header.mHeight,
-                                  internalFormat, dataBuffer,
-                                  TEXTURE_PVRTC);
-        try {
-            is.close();
-        } catch (Exception e) {
-            throw new RuntimeException("Unable to close resource stream " + id);
-        }
-        return tex;
-    }
-
-    /* DDS Header is described by the following structs
-       typedef struct {
-          DWORD           dwSize;
-          DWORD           dwFlags;
-          DWORD           dwHeight;
-          DWORD           dwWidth;
-          DWORD           dwPitchOrLinearSize;
-          DWORD           dwDepth;
-          DWORD           dwMipMapCount;
-          DWORD           dwReserved1[11];
-          DDS_PIXELFORMAT ddspf;
-          DWORD           dwCaps;
-          DWORD           dwCaps2;
-          DWORD           dwCaps3;
-          DWORD           dwCaps4;
-          DWORD           dwReserved2;
-        } DDS_HEADER;
-
-        struct DDS_PIXELFORMAT {
-          DWORD dwSize;
-          DWORD dwFlags;
-          DWORD dwFourCC;
-          DWORD dwRGBBitCount;
-          DWORD dwRBitMask;
-          DWORD dwGBitMask;
-          DWORD dwBBitMask;
-          DWORD dwABitMask;
-        };
-
-        In the file it looks like this
-        DWORD               dwMagic;
-        DDS_HEADER          header;
-        DDS_HEADER_DXT10    header10; // If the DDS_PIXELFORMAT dwFlags is set to DDPF_FOURCC
-                                      // and dwFourCC is DX10
-
-    */
-
-    static final int DDS_HEADER_STRUCT_SIZE = 124;
-    static final int DDS_PIXELFORMAT_STRUCT_SIZE = 32;
-    static final int DDS_HEADER_SIZE = 128;
-    static final int DDS_MAGIC_NUMBER = 0x20534444;
-    static final int DDS_DDPF_FOURCC = 0x4;
-    static final int DDS_DXT1 = 0x31545844;
-    static final int DDS_DXT5 = 0x35545844;
-
-    static final int COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0;
-    static final int COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1;
-    static final int COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3;
-
-    static class DDSHeader {
-        int mMagic;
-        int mSize;
-        int mFlags;
-        int mHeight;
-        int mWidth;
-        int mPitchOrLinearSize;
-        int mDepth;
-        int mMipMapCount;
-        int[] mReserved1;
-        // struct DDS_PIXELFORMAT {
-            int mPixelFormatSize;
-            int mPixelFormatFlags;
-            int mPixelFormatFourCC;
-            int mPixelFormatRGBBitCount;
-            int mPixelFormatRBitMask;
-            int mPixelFormatGBitMask;
-            int mPixelFormatBBitMask;
-            int mPixelFormatABitMask;
-        // };
-        int mCaps;
-        int mCaps2;
-        int mCaps3;
-        int mCaps4;
-        int mReserved2;
-
-        DDSHeader() {
-            mReserved1 = new int[11];
-        }
-    }
-
-    protected static DDSHeader readDDSHeader(InputStream is) {
-
-        byte[] headerData = new byte[DDS_HEADER_SIZE];
-        try {
-            is.read(headerData);
-        } catch (Exception e) {
-            throw new RuntimeException("Unable to read data");
-        }
-
-        ByteBuffer headerBuffer = ByteBuffer.allocateDirect(DDS_HEADER_SIZE)
-                .order(ByteOrder.nativeOrder());
-        headerBuffer.put(headerData, 0, DDS_HEADER_SIZE).position(0);
-
-        DDSHeader header = new DDSHeader();
-
-        header.mMagic = headerBuffer.getInt();
-        header.mSize = headerBuffer.getInt();
-        header.mFlags = headerBuffer.getInt();
-        header.mHeight = headerBuffer.getInt();
-        header.mWidth = headerBuffer.getInt();
-        header.mPitchOrLinearSize = headerBuffer.getInt();
-        header.mDepth = headerBuffer.getInt();
-        header.mMipMapCount = headerBuffer.getInt();
-        for (int i = 0; i < header.mReserved1.length; i ++) {
-            header.mReserved1[i] = headerBuffer.getInt();
-        }
-        // struct DDS_PIXELFORMAT {
-            header.mPixelFormatSize = headerBuffer.getInt();
-            header.mPixelFormatFlags = headerBuffer.getInt();
-            header.mPixelFormatFourCC = headerBuffer.getInt();
-            header.mPixelFormatRGBBitCount = headerBuffer.getInt();
-            header.mPixelFormatRBitMask = headerBuffer.getInt();
-            header.mPixelFormatGBitMask = headerBuffer.getInt();
-            header.mPixelFormatBBitMask = headerBuffer.getInt();
-            header.mPixelFormatABitMask = headerBuffer.getInt();
-        // };
-        header.mCaps = headerBuffer.getInt();
-        header.mCaps2 = headerBuffer.getInt();
-        header.mCaps3 = headerBuffer.getInt();
-        header.mCaps4 = headerBuffer.getInt();
-        header.mReserved2 = headerBuffer.getInt();
-
-        if (header.mSize != DDS_HEADER_STRUCT_SIZE ||
-            header.mPixelFormatSize != DDS_PIXELFORMAT_STRUCT_SIZE ||
-            header.mMagic != DDS_MAGIC_NUMBER) {
-            throw new RuntimeException("Invalid header data");
-        }
-
-        return header;
-    }
-
-    // Very simple loader that only reads in the header and a DXT1 mip level 0
-    public static Texture loadTextureDXT(Resources res, int id) {
-        InputStream is = null;
-        try {
-            is = res.openRawResource(id);
-        } catch (Exception e) {
-            throw new RuntimeException("Unable to open resource " + id);
-        }
-
-        DDSHeader header = readDDSHeader(is);
-
-        if (header.mPixelFormatFlags != DDS_DDPF_FOURCC) {
-            throw new RuntimeException("Unsupported DXT data");
-        }
-
-        int internalFormat = 0;
-        int bpp = 0;
-        switch (header.mPixelFormatFourCC) {
-        case DDS_DXT1:
-            internalFormat = COMPRESSED_RGB_S3TC_DXT1_EXT;
-            bpp = 4;
-            break;
-        case DDS_DXT5:
-            internalFormat = COMPRESSED_RGBA_S3TC_DXT5_EXT;
-            bpp = 8;
-            break;
-        default:
-            throw new RuntimeException("Unsupported DXT data");
-        }
-
-        // only load the first mip level for now
-        int dataSize = (header.mWidth * header.mHeight * bpp) >> 3;
-        if (dataSize != header.mPitchOrLinearSize) {
-            throw new RuntimeException("Expected data and header mismatch");
-        }
-        ByteBuffer dataBuffer = read(is, dataSize);
-
-        Texture tex = new Texture(header.mWidth, header.mHeight, internalFormat,
-                                  dataBuffer, TEXTURE_S3TC);
-        return tex;
-    }
-
-    static HashMap<String, Boolean> sExtensionMap;
-    static HashMap<String, Boolean> sFormatMap;
-
-    private static synchronized void updateSupportedFormats() {
-        if (sExtensionMap != null) {
-            return;
-        }
-
-        sExtensionMap = new HashMap<String, Boolean>();
-        sFormatMap = new HashMap<String, Boolean>();
-        String extensionList = GLES20.glGetString(GLES20.GL_EXTENSIONS);
-
-        for (String extension : extensionList.split(" ")) {
-            sExtensionMap.put(extension, true);
-        }
-
-        // Check ETC1
-        sFormatMap.put(TEXTURE_ETC1, ETC1Util.isETC1Supported());
-        // Check ATC
-        if (sExtensionMap.get("GL_AMD_compressed_ATC_texture") != null ||
-            sExtensionMap.get("GL_ATI_compressed_texture_atitc") != null ||
-            sExtensionMap.get("GL_ATI_texture_compression_atitc") != null) {
-            sFormatMap.put(TEXTURE_ATC, true);
-        }
-        // Check DXT
-        if (sExtensionMap.get("GL_EXT_texture_compression_dxt1") != null ||
-            sExtensionMap.get("GL_EXT_texture_compression_s3tc") != null ||
-            sExtensionMap.get("OES_texture_compression_S3TC") != null) {
-            sFormatMap.put(TEXTURE_S3TC, true);
-        }
-        // Check DXT
-        if (sExtensionMap.get("GL_IMG_texture_compression_pvrtc") != null) {
-            sFormatMap.put(TEXTURE_PVRTC, true);
-        }
-
-        /*Log.i(TAG, "mIsSupportedETC1 " + sFormatMap.get(TEXTURE_ETC1));
-        Log.i(TAG, "mIsSupportedATC " + sFormatMap.get(TEXTURE_ATC));
-        Log.i(TAG, "mIsSupportedDXT " + sFormatMap.get(TEXTURE_S3TC));
-        Log.i(TAG, "mIsSupportedPVRTC " + sFormatMap.get(TEXTURE_PVRTC));*/
-    }
-
-    private static boolean isFormatSupported(String format) {
-        updateSupportedFormats();
-        Boolean supported = sFormatMap.get(format);
-        return supported != null ? supported : false;
-    }
-}
diff --git a/tests/src/android/opengl/cts/CompressedTextureStubActivity.java b/tests/src/android/opengl/cts/CompressedTextureStubActivity.java
deleted file mode 100644
index cfd3129..0000000
--- a/tests/src/android/opengl/cts/CompressedTextureStubActivity.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.opengl.cts;
-
-import com.android.cts.stub.R;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.res.AssetFileDescriptor;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.Config;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.util.Log;
-
-public class CompressedTextureStubActivity extends Activity {
-
-    private static final String TAG = "CompressedTextureStubActivity";
-
-    protected Resources mResources;
-
-    private CompressedTextureSurfaceView mCompressedTextureView = null;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        Bundle extras = getIntent().getExtras();
-        String formatTest = extras.getString("TextureFormat", null);
-
-        Log.i(TAG, "Testing format " + formatTest);
-
-        mResources = getResources();
-
-        CompressedTextureLoader.Texture compressed = null;
-
-        BitmapFactory.Options optionsRGB = new BitmapFactory.Options();
-        optionsRGB.inPreferredConfig = Bitmap.Config.RGB_565;
-        optionsRGB.inScaled = false;
-        Bitmap bitmap = BitmapFactory.decodeResource(mResources, R.raw.basetex, optionsRGB);
-
-        if (formatTest.equals(CompressedTextureLoader.TEXTURE_ETC1)) {
-            compressed = CompressedTextureLoader.createFromUncompressedETC1(bitmap);
-        } else if (formatTest.equals(CompressedTextureLoader.TEXTURE_S3TC)) {
-            compressed = CompressedTextureLoader.loadTextureDXT(mResources, R.raw.ddstex);
-        } else if (formatTest.equals(CompressedTextureLoader.TEXTURE_ATC)) {
-            compressed = CompressedTextureLoader.loadTextureATC(mResources, 0); //stub for now
-        } else if (formatTest.equals(CompressedTextureLoader.TEXTURE_PVRTC)) {
-            compressed = CompressedTextureLoader.loadTexturePVRTC(mResources, R.raw.pvrtex);
-        }
-
-        mCompressedTextureView = new CompressedTextureSurfaceView(this, bitmap, compressed);
-        setContentView(mCompressedTextureView);
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        mCompressedTextureView.onResume();
-    }
-
-    public boolean getPassed() throws InterruptedException {
-        return mCompressedTextureView.getTestPassed();
-    }
-}
diff --git a/tests/src/android/opengl/cts/CompressedTextureSurfaceView.java b/tests/src/android/opengl/cts/CompressedTextureSurfaceView.java
deleted file mode 100644
index d0c8ed4..0000000
--- a/tests/src/android/opengl/cts/CompressedTextureSurfaceView.java
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.opengl.cts;
-
-import java.io.IOException;
-import java.nio.Buffer;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.FloatBuffer;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.opengles.GL10;
-
-import com.android.cts.stub.R;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.Config;
-import android.graphics.BitmapFactory;
-import android.graphics.Color;
-import android.graphics.SurfaceTexture;
-import android.opengl.ETC1;
-import android.opengl.ETC1Util;
-import android.opengl.GLES20;
-import android.opengl.GLSurfaceView;
-import android.opengl.GLUtils;
-import android.opengl.Matrix;
-import android.util.Log;
-import android.view.Surface;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-class CompressedTextureSurfaceView extends GLSurfaceView {
-    private static final String TAG = "CompressedTextureSurfaceView";
-    private static final int SLEEP_TIME_MS = 1000;
-
-    CompressedTextureRender mRenderer;
-
-    public CompressedTextureSurfaceView(Context context,
-                                        Bitmap base,
-                                        CompressedTextureLoader.Texture compressed) {
-        super(context);
-
-        setEGLContextClientVersion(2);
-        mRenderer = new CompressedTextureRender(context, base, compressed);
-        setRenderer(mRenderer);
-        setRenderMode(RENDERMODE_WHEN_DIRTY);
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-    }
-
-    public boolean getTestPassed() throws InterruptedException {
-        return mRenderer.getTestPassed();
-    }
-
-    private static class CompressedTextureRender implements GLSurfaceView.Renderer {
-        private static String TAG = "CompressedTextureRender";
-
-        private static final int ALLOWED_DELTA = 25;
-        private static final int FBO_PIXEL_SIZE_BYTES = 4;
-        private static final int FLOAT_SIZE_BYTES = 4;
-        private static final int TRIANGLE_VERTICES_DATA_STRIDE_BYTES = 5 * FLOAT_SIZE_BYTES;
-        private static final int TRIANGLE_VERTICES_DATA_POS_OFFSET = 0;
-        private static final int TRIANGLE_VERTICES_DATA_UV_OFFSET = 3;
-        private final float[] mTriangleVerticesData = {
-            // X, Y, Z, U, V
-            -1.0f, -1.0f, 0, 0.f, 0.f,
-            1.0f, -1.0f, 0, 1.f, 0.f,
-            -1.0f,  1.0f, 0, 0.f, 1.f,
-            1.0f,  1.0f, 0, 1.f, 1.f,
-        };
-
-        private FloatBuffer mTriangleVertices;
-
-        private final String mVertexShader =
-                "uniform mat4 uMVPMatrix;\n" +
-                "attribute vec4 aPosition;\n" +
-                "attribute vec4 aTextureCoord;\n" +
-                "varying vec2 vTextureCoord;\n" +
-                "void main() {\n" +
-                "  gl_Position = uMVPMatrix * aPosition;\n" +
-                "  vTextureCoord = aTextureCoord.xy;\n" +
-                "}\n";
-
-        private final String mFragmentShader =
-                "precision mediump float;\n" +
-                "varying vec2 vTextureCoord;\n" +
-                "uniform sampler2D sTexture;\n" +
-                "void main() {\n" +
-                "  gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
-                "}\n";
-
-        private float[] mMVPMatrix = new float[16];
-        private float[] mSTMatrix = new float[16];
-
-        private int mProgram;
-        private int mTextureID;
-        private int muMVPMatrixHandle;
-        private int maPositionHandle;
-        private int maTextureHandle;
-        private int msTextureHandle;
-
-        private int mColorTargetID;
-        private int mFrameBufferObjectID;
-
-        private boolean updateSurface = false;
-
-        private boolean mTestPassed;
-        private CountDownLatch mDoneSignal;
-
-        Bitmap mBaseTexture;
-        CompressedTextureLoader.Texture mCompressedTexture;
-
-        int mWidth;
-        int mHeight;
-
-        ByteBuffer mReadBackBuffer;
-
-        boolean getTestPassed() throws InterruptedException {
-            if (!mDoneSignal.await(2000L, TimeUnit.MILLISECONDS)) {
-                throw new IllegalStateException("Coudn't finish drawing frames!");
-            }
-
-            return mTestPassed;
-        }
-
-        public CompressedTextureRender(Context context,
-                                       Bitmap base,
-                                       CompressedTextureLoader.Texture compressed) {
-            mBaseTexture = base;
-            mCompressedTexture = compressed;
-            mTriangleVertices = ByteBuffer.allocateDirect(
-                mTriangleVerticesData.length * FLOAT_SIZE_BYTES)
-                    .order(ByteOrder.nativeOrder()).asFloatBuffer();
-            mTriangleVertices.put(mTriangleVerticesData).position(0);
-
-            Matrix.setIdentityM(mSTMatrix, 0);
-
-            int byteBufferSize = mBaseTexture.getWidth() *
-                                 mBaseTexture.getHeight() *
-                                 FBO_PIXEL_SIZE_BYTES;
-            mReadBackBuffer = ByteBuffer.allocateDirect(byteBufferSize);
-
-            mDoneSignal = new CountDownLatch(1);
-        }
-
-        private void renderQuad(int textureID) {
-            GLES20.glUseProgram(mProgram);
-            checkGlError("glUseProgram");
-
-            GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
-            GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureID);
-
-            mTriangleVertices.position(TRIANGLE_VERTICES_DATA_POS_OFFSET);
-            GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false,
-                TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
-            checkGlError("glVertexAttribPointer maPosition");
-            GLES20.glEnableVertexAttribArray(maPositionHandle);
-            checkGlError("glEnableVertexAttribArray maPositionHandle");
-
-            mTriangleVertices.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
-            GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false,
-                TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
-            checkGlError("glVertexAttribPointer maTextureHandle");
-            GLES20.glEnableVertexAttribArray(maTextureHandle);
-            checkGlError("glEnableVertexAttribArray maTextureHandle");
-
-            Matrix.setIdentityM(mMVPMatrix, 0);
-            GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0);
-
-            GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
-            checkGlError("glDrawArrays");
-        }
-
-        private int getUnsignedByte(byte val) {
-            return 0xFF & ((int)val);
-        }
-
-        private boolean comparePixel(int x, int y) {
-            int w = mBaseTexture.getWidth();
-            int sampleStart = (y * w + x) * FBO_PIXEL_SIZE_BYTES;
-
-            int R = getUnsignedByte(mReadBackBuffer.get(sampleStart));
-            int G = getUnsignedByte(mReadBackBuffer.get(sampleStart + 1));
-            int B = getUnsignedByte(mReadBackBuffer.get(sampleStart + 2));
-
-            int original = mBaseTexture.getPixel(x, y);
-
-            int deltaR = Math.abs(R - Color.red(original));
-            int deltaG = Math.abs(G - Color.green(original));
-            int deltaB = Math.abs(B - Color.blue(original));
-
-            if (deltaR <= ALLOWED_DELTA &&
-                deltaG <= ALLOWED_DELTA &&
-                deltaB <= ALLOWED_DELTA) {
-                return true;
-            }
-
-            Log.i("PIXEL DELTA", "R: " + deltaR + " G: " + deltaG + " B: " + deltaB);
-
-            return false;
-        }
-
-        private void comparePixels() {
-            int w = mBaseTexture.getWidth();
-            int h = mBaseTexture.getWidth();
-            int wOver4 = w / 4;
-            int hOver4 = h / 4;
-
-            // Sample 4 points in the image. Test is designed so that
-            // sample areas are low frequency and easy to compare
-            boolean sample1Matches = comparePixel(wOver4, hOver4);
-            boolean sample2Matches = comparePixel(wOver4 * 3, hOver4);
-            boolean sample3Matches = comparePixel(wOver4, hOver4 * 3);
-            boolean sample4Matches = comparePixel(wOver4 * 3, hOver4 * 3);
-
-            mTestPassed = sample1Matches && sample2Matches && sample3Matches && sample4Matches;
-            mDoneSignal.countDown();
-        }
-
-        public void onDrawFrame(GL10 glUnused) {
-            if (mProgram == 0) {
-                return;
-            }
-
-            GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, mFrameBufferObjectID);
-            GLES20.glViewport(0, 0, mBaseTexture.getWidth(), mBaseTexture.getHeight());
-            GLES20.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
-            renderQuad(mTextureID);
-            GLES20.glReadPixels(0, 0, mBaseTexture.getWidth(), mBaseTexture.getHeight(),
-                                GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, mReadBackBuffer);
-            comparePixels();
-            GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
-
-            GLES20.glViewport(0, 0, mWidth, mHeight);
-            GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
-            GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
-
-            renderQuad(mColorTargetID);
-
-            GLES20.glFinish();
-        }
-
-        public void onSurfaceChanged(GL10 glUnused, int width, int height) {
-            mWidth = width;
-            mHeight = height;
-        }
-
-        private void setupSamplers() {
-            GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D,
-                    GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
-            GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D,
-                    GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
-            GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
-                    GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
-            GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
-                    GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
-        }
-
-        private void initFBO() {
-            int[] textures = new int[1];
-            GLES20.glGenTextures(1, textures, 0);
-
-            mColorTargetID = textures[0];
-            GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mColorTargetID);
-            checkGlError("glBindTexture mColorTargetID");
-            setupSamplers();
-            GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA,
-                                mBaseTexture.getWidth(), mBaseTexture.getHeight(), 0,
-                                GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);
-            checkGlError("glTexImage2D mColorTargetID");
-
-            GLES20.glGenFramebuffers(1, textures, 0);
-            mFrameBufferObjectID = textures[0];
-            GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, mFrameBufferObjectID);
-
-            GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0,
-                                          GLES20.GL_TEXTURE_2D, mColorTargetID, 0);
-
-            int status = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER);
-            if(status != GLES20.GL_FRAMEBUFFER_COMPLETE) {
-                throw new RuntimeException("Failed to initialize framebuffer object");
-            }
-
-            GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
-        }
-
-        public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
-            if (mCompressedTexture != null && !mCompressedTexture.isSupported()) {
-                mTestPassed = true;
-                mDoneSignal.countDown();
-                return;
-            }
-
-            initFBO();
-
-            mProgram = createProgram(mVertexShader, mFragmentShader);
-            if (mProgram == 0) {
-                return;
-            }
-            maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
-            checkGlError("glGetAttribLocation aPosition");
-            if (maPositionHandle == -1) {
-                throw new RuntimeException("Could not get attrib location for aPosition");
-            }
-            maTextureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord");
-            checkGlError("glGetAttribLocation aTextureCoord");
-            if (maTextureHandle == -1) {
-                throw new RuntimeException("Could not get attrib location for aTextureCoord");
-            }
-
-            muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
-            checkGlError("glGetUniformLocation uMVPMatrix");
-            if (muMVPMatrixHandle == -1) {
-                throw new RuntimeException("Could not get attrib location for uMVPMatrix");
-            }
-
-            int[] textures = new int[1];
-            GLES20.glGenTextures(1, textures, 0);
-
-            mTextureID = textures[0];
-            GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID);
-            checkGlError("glBindTexture mTextureID");
-            setupSamplers();
-
-            if (mCompressedTexture == null) {
-                GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, mBaseTexture, 0);
-                checkGlError("texImage2D mBaseTexture");
-            } else {
-                GLES20.glCompressedTexImage2D(GLES20.GL_TEXTURE_2D,
-                                              0,
-                                              mCompressedTexture.getFormat(),
-                                              mCompressedTexture.getWidth(),
-                                              mCompressedTexture.getHeight(),
-                                              0,
-                                              mCompressedTexture.getData().remaining(),
-                                              mCompressedTexture.getData());
-                checkGlError("glCompressedTexImage2D mTextureID");
-            }
-        }
-
-        synchronized public void onFrameAvailable(SurfaceTexture surface) {
-            updateSurface = true;
-        }
-
-        private int loadShader(int shaderType, String source) {
-            int shader = GLES20.glCreateShader(shaderType);
-            if (shader != 0) {
-                GLES20.glShaderSource(shader, source);
-                GLES20.glCompileShader(shader);
-                int[] compiled = new int[1];
-                GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
-                if (compiled[0] == 0) {
-                    Log.e(TAG, "Could not compile shader " + shaderType + ":");
-                    Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
-                    GLES20.glDeleteShader(shader);
-                    shader = 0;
-                }
-            }
-            return shader;
-        }
-
-        private int createProgram(String vertexSource, String fragmentSource) {
-            int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
-            if (vertexShader == 0) {
-                return 0;
-            }
-            int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
-            if (pixelShader == 0) {
-                return 0;
-            }
-
-            int program = GLES20.glCreateProgram();
-            if (program != 0) {
-                GLES20.glAttachShader(program, vertexShader);
-                checkGlError("glAttachShader");
-                GLES20.glAttachShader(program, pixelShader);
-                checkGlError("glAttachShader");
-                GLES20.glLinkProgram(program);
-                int[] linkStatus = new int[1];
-                GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
-                if (linkStatus[0] != GLES20.GL_TRUE) {
-                    Log.e(TAG, "Could not link program: ");
-                    Log.e(TAG, GLES20.glGetProgramInfoLog(program));
-                    GLES20.glDeleteProgram(program);
-                    program = 0;
-                }
-            }
-            return program;
-        }
-
-        private void checkGlError(String op) {
-            int error;
-            while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
-                Log.e(TAG, op + ": glError " + error);
-                throw new RuntimeException(op + ": glError " + error);
-            }
-        }
-
-    }  // End of class CompressedTextureRender.
-
-}  // End of class CompressedTextureSurfaceView.
diff --git a/tests/src/android/opengl/cts/EglConfigGLSurfaceView.java b/tests/src/android/opengl/cts/EglConfigGLSurfaceView.java
deleted file mode 100644
index 03e8d94..0000000
--- a/tests/src/android/opengl/cts/EglConfigGLSurfaceView.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.opengl.cts;
-
-import android.content.Context;
-import android.opengl.GLES20;
-import android.opengl.GLSurfaceView;
-import android.util.Log;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.FloatBuffer;
-
-import javax.microedition.khronos.egl.EGL10;
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.egl.EGLDisplay;
-import javax.microedition.khronos.opengles.GL10;
-
-/**
- * {@link GLSurfaceView} that uses the EGL configuration specified. Draws a couple frames of a red
- * triangle and then calls the callback.
- */
-public class EglConfigGLSurfaceView extends GLSurfaceView {
-
-    private static final String TAG = EglConfigGLSurfaceView.class.getName();
-
-    private final int mConfigId;
-
-    private final Runnable mCallback;
-
-    public EglConfigGLSurfaceView(Context context, int configId, int contextClientVersion,
-            Runnable callback) {
-        super(context);
-        mConfigId = configId;
-        mCallback = callback;
-        setEGLConfigChooser(new ConfigChooser());
-        setEGLContextClientVersion(contextClientVersion);
-        setRenderer(contextClientVersion == 1
-                ? new Renderer()
-                : new Renderer20());
-    }
-
-    private class ConfigChooser implements GLSurfaceView.EGLConfigChooser {
-
-        public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
-            int[] attributeList = new int[] {
-                    EGL10.EGL_CONFIG_ID, mConfigId,
-                    EGL10.EGL_NONE
-            };
-
-            EGLConfig[] configs = new EGLConfig[1];
-            if (egl.eglChooseConfig(display, attributeList, configs, 1, new int[] {1})) {
-                // Print out the configuration since we may crash...
-                printConfig(egl, display, configs[0]);
-                return configs[0];
-            } else {
-                throw new IllegalStateException("Could not get EGL config...");
-            }
-        }
-    }
-
-    private class Renderer implements GLSurfaceView.Renderer {
-
-        private int mNumFrames;
-
-        private FloatBuffer mFloatBuffer;
-
-        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
-            float[] triangleVertices = {
-                    0.0f, 1.0f, -1.0f,
-                    -1.0f, -1.0f, -1.0f,
-                    1.0f, -1.0f, -1.0f
-            };
-
-            ByteBuffer byteBuffer = ByteBuffer.allocateDirect(triangleVertices.length * 4);
-            byteBuffer.order(ByteOrder.nativeOrder());
-
-            mFloatBuffer = ByteBuffer.allocateDirect(triangleVertices.length * 4)
-                    .order(ByteOrder.nativeOrder())
-                    .asFloatBuffer();
-            mFloatBuffer.put(triangleVertices).position(0);
-
-            gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
-        }
-
-        public void onDrawFrame(GL10 gl) {
-            gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
-            gl.glColor4f(1.0f, 0, 0, 0);
-            gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mFloatBuffer);
-            gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 9);
-
-            if (++mNumFrames == 10) {
-                post(mCallback);
-            }
-        }
-
-        public void onSurfaceChanged(GL10 gl, int width, int height) {
-            gl.glViewport(0, 0, width, height);
-        }
-    }
-
-    private class Renderer20 implements GLSurfaceView.Renderer {
-
-        private FloatBuffer mFloatBuffer;
-
-        private final String mVertexShader =
-            "attribute vec4 aPosition;\n" +
-            "void main() {\n" +
-            "  gl_Position = aPosition;\n" +
-            "}\n";
-
-        private final String mFragmentShader =
-            "void main() {\n" +
-            "  gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);\n" +
-            "}\n";
-
-        private int mProgram;
-
-        private int maPositionHandle;
-
-        private int mNumFrames;
-
-        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
-            mProgram = createProgram(mVertexShader, mFragmentShader);
-            if (mProgram == 0) {
-                throw new RuntimeException("Could not create program");
-            }
-
-            maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
-            checkGlError("glGetAttribLocation aPosition");
-            if (maPositionHandle == -1) {
-                throw new RuntimeException("Could not get attrib location for aPosition");
-            }
-
-            float[] triangleVertices = {
-                    0.0f, 1.0f, 0.0f,
-                    -1.0f, -1.0f, 0.0f,
-                    1.0f, -1.0f, 0.0f
-            };
-
-            mFloatBuffer = ByteBuffer.allocateDirect(triangleVertices.length * 4)
-                    .order(ByteOrder.nativeOrder())
-                    .asFloatBuffer();
-            mFloatBuffer.put(triangleVertices).position(0);
-        }
-
-        private int createProgram(String vertexSource, String fragmentSource) {
-            int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
-            if (vertexShader == 0) {
-                return 0;
-            }
-
-            int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
-            if (pixelShader == 0) {
-                return 0;
-            }
-
-            int program = GLES20.glCreateProgram();
-            if (program != 0) {
-                GLES20.glAttachShader(program, vertexShader);
-                checkGlError("glAttachShader");
-                GLES20.glAttachShader(program, pixelShader);
-                checkGlError("glAttachShader");
-                GLES20.glLinkProgram(program);
-                int[] linkStatus = new int[1];
-                GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
-                if (linkStatus[0] != GLES20.GL_TRUE) {
-                    Log.e(TAG, "Could not link program: ");
-                    Log.e(TAG, GLES20.glGetProgramInfoLog(program));
-                    GLES20.glDeleteProgram(program);
-                    program = 0;
-                }
-            }
-            return program;
-        }
-
-        private int loadShader(int shaderType, String source) {
-            int shader = GLES20.glCreateShader(shaderType);
-            if (shader != 0) {
-                GLES20.glShaderSource(shader, source);
-                GLES20.glCompileShader(shader);
-                int[] compiled = new int[1];
-                GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
-                if (compiled[0] == 0) {
-                    Log.e(TAG, "Could not compile shader " + shaderType + ":");
-                    Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
-                    GLES20.glDeleteShader(shader);
-                    shader = 0;
-                }
-            }
-            return shader;
-        }
-
-        private void checkGlError(String op) {
-            int error;
-            while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
-                Log.e(TAG, op + ": glError " + error);
-                throw new RuntimeException(op + ": glError " + error);
-            }
-        }
-
-        @Override
-        public void onDrawFrame(GL10 gl) {
-            GLES20.glClearColor(0, 0, 0, 1);
-            GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
-            GLES20.glUseProgram(mProgram);
-
-            GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false,
-                    0, mFloatBuffer);
-            checkGlError("glVertexAttribPointer maPosition");
-
-            GLES20.glEnableVertexAttribArray(maPositionHandle);
-            checkGlError("glEnableVertexAttribArray maPositionHandle");
-
-            GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
-            checkGlError("glDrawArrays");
-
-            if (++mNumFrames == 10) {
-                post(mCallback);
-            }
-        }
-
-        public void onSurfaceChanged(GL10 gl, int width, int height) {
-            GLES20.glViewport(0, 0, width, height);
-        }
-    }
-
-    /** Ripped from the NDK sample GL2JNIView class. */
-    private static void printConfig(EGL10 egl, EGLDisplay display,
-            EGLConfig config) {
-        int[] attributes = {
-                EGL10.EGL_BUFFER_SIZE,
-                EGL10.EGL_ALPHA_SIZE,
-                EGL10.EGL_BLUE_SIZE,
-                EGL10.EGL_GREEN_SIZE,
-                EGL10.EGL_RED_SIZE,
-                EGL10.EGL_DEPTH_SIZE,
-                EGL10.EGL_STENCIL_SIZE,
-                EGL10.EGL_CONFIG_CAVEAT,
-                EGL10.EGL_CONFIG_ID,
-                EGL10.EGL_LEVEL,
-                EGL10.EGL_MAX_PBUFFER_HEIGHT,
-                EGL10.EGL_MAX_PBUFFER_PIXELS,
-                EGL10.EGL_MAX_PBUFFER_WIDTH,
-                EGL10.EGL_NATIVE_RENDERABLE,
-                EGL10.EGL_NATIVE_VISUAL_ID,
-                EGL10.EGL_NATIVE_VISUAL_TYPE,
-                0x3030, // EGL10.EGL_PRESERVED_RESOURCES,
-                EGL10.EGL_SAMPLES,
-                EGL10.EGL_SAMPLE_BUFFERS,
-                EGL10.EGL_SURFACE_TYPE,
-                EGL10.EGL_TRANSPARENT_TYPE,
-                EGL10.EGL_TRANSPARENT_RED_VALUE,
-                EGL10.EGL_TRANSPARENT_GREEN_VALUE,
-                EGL10.EGL_TRANSPARENT_BLUE_VALUE,
-                0x3039, // EGL10.EGL_BIND_TO_TEXTURE_RGB,
-                0x303A, // EGL10.EGL_BIND_TO_TEXTURE_RGBA,
-                0x303B, // EGL10.EGL_MIN_SWAP_INTERVAL,
-                0x303C, // EGL10.EGL_MAX_SWAP_INTERVAL,
-                EGL10.EGL_LUMINANCE_SIZE,
-                EGL10.EGL_ALPHA_MASK_SIZE,
-                EGL10.EGL_COLOR_BUFFER_TYPE,
-                EGL10.EGL_RENDERABLE_TYPE,
-                0x3042 // EGL10.EGL_CONFORMANT
-        };
-        String[] names = {
-                "EGL_BUFFER_SIZE",
-                "EGL_ALPHA_SIZE",
-                "EGL_BLUE_SIZE",
-                "EGL_GREEN_SIZE",
-                "EGL_RED_SIZE",
-                "EGL_DEPTH_SIZE",
-                "EGL_STENCIL_SIZE",
-                "EGL_CONFIG_CAVEAT",
-                "EGL_CONFIG_ID",
-                "EGL_LEVEL",
-                "EGL_MAX_PBUFFER_HEIGHT",
-                "EGL_MAX_PBUFFER_PIXELS",
-                "EGL_MAX_PBUFFER_WIDTH",
-                "EGL_NATIVE_RENDERABLE",
-                "EGL_NATIVE_VISUAL_ID",
-                "EGL_NATIVE_VISUAL_TYPE",
-                "EGL_PRESERVED_RESOURCES",
-                "EGL_SAMPLES",
-                "EGL_SAMPLE_BUFFERS",
-                "EGL_SURFACE_TYPE",
-                "EGL_TRANSPARENT_TYPE",
-                "EGL_TRANSPARENT_RED_VALUE",
-                "EGL_TRANSPARENT_GREEN_VALUE",
-                "EGL_TRANSPARENT_BLUE_VALUE",
-                "EGL_BIND_TO_TEXTURE_RGB",
-                "EGL_BIND_TO_TEXTURE_RGBA",
-                "EGL_MIN_SWAP_INTERVAL",
-                "EGL_MAX_SWAP_INTERVAL",
-                "EGL_LUMINANCE_SIZE",
-                "EGL_ALPHA_MASK_SIZE",
-                "EGL_COLOR_BUFFER_TYPE",
-                "EGL_RENDERABLE_TYPE",
-                "EGL_CONFORMANT"
-        };
-        int[] value = new int[1];
-        for (int i = 0; i < attributes.length; i++) {
-            int attribute = attributes[i];
-            String name = names[i];
-            if (egl.eglGetConfigAttrib(display, config, attribute, value)) {
-                Log.w(TAG, String.format("  %s: %d\n", name, value[0]));
-            } else {
-                // Log.w(TAG, String.format("  %s: failed\n", name));
-                while (egl.eglGetError() != EGL10.EGL_SUCCESS);
-            }
-        }
-    }
-}
diff --git a/tests/src/android/opengl/cts/EglConfigStubActivity.java b/tests/src/android/opengl/cts/EglConfigStubActivity.java
deleted file mode 100644
index 749679a..0000000
--- a/tests/src/android/opengl/cts/EglConfigStubActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.opengl.cts;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.opengl.GLSurfaceView;
-import android.os.Bundle;
-import android.view.WindowManager;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * {@link Activity} with a {@link GLSurfaceView} that chooses a specific configuration.
- */
-public class EglConfigStubActivity extends Activity {
-
-    public static final String CONFIG_ID_EXTRA = "eglConfigId";
-
-    public static final String CONTEXT_CLIENT_VERSION_EXTRA = "eglContextClientVersion";
-
-    private EglConfigGLSurfaceView mView;
-
-    private CountDownLatch mFinishedDrawing;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        int configId = getConfigId();
-        int contextClientVersion = getContextClientVersion();
-        setTitle("EGL Config Id: " + configId + " Client Version: " + contextClientVersion);
-
-        // Dismiss keyguard and keep screen on while this test is on.
-        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
-                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
-                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-
-        mFinishedDrawing = new CountDownLatch(1);
-        mView = new EglConfigGLSurfaceView(this, configId, contextClientVersion, new Runnable() {
-            @Override
-            public void run() {
-                mFinishedDrawing.countDown();
-            }
-        });
-        setContentView(mView);
-    }
-
-    private int getConfigId() {
-        Intent intent = getIntent();
-        if (intent != null) {
-            return intent.getIntExtra(CONFIG_ID_EXTRA, 0);
-        } else {
-            return 0;
-        }
-    }
-
-    private int getContextClientVersion() {
-        Intent intent = getIntent();
-        if (intent != null) {
-            return intent.getIntExtra(CONTEXT_CLIENT_VERSION_EXTRA, 0);
-        } else {
-            return 0;
-        }
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        mView.onResume();
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        mView.onPause();
-    }
-
-    public void waitToFinishDrawing() throws InterruptedException {
-        if (!mFinishedDrawing.await(3, TimeUnit.SECONDS)) {
-            throw new IllegalStateException("Coudn't finish drawing frames!");
-        }
-    }
-}
diff --git a/tests/src/android/opengl/cts/GLSurfaceViewStubActivity.java b/tests/src/android/opengl/cts/GLSurfaceViewStubActivity.java
deleted file mode 100644
index 85ad172..0000000
--- a/tests/src/android/opengl/cts/GLSurfaceViewStubActivity.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.opengl.cts;
-
-import android.app.Activity;
-import android.opengl.GLSurfaceView;
-import android.os.Bundle;
-import android.view.Window;
-
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.opengles.GL10;
-
-/**
- * A minimal activity for testing {@link android.opengl.GLSurfaceView}.
- * Also accepts non-blank renderers to allow its use for more complex tests.
- */
-public class GLSurfaceViewStubActivity extends Activity {
-
-    private static class Renderer implements GLSurfaceView.Renderer {
-
-        public void onDrawFrame(GL10 gl) {
-            // Do nothing.
-        }
-
-        public void onSurfaceChanged(GL10 gl, int width, int height) {
-            // Do nothing.
-        }
-
-        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
-            // Do nothing.
-        }
-    }
-
-    private GLSurfaceView mView;
-
-    /** To override the blank renderer, or other settings, these
-     * static set* methods must be called before onCreate() is called.
-     * If using ActivityInstrumentationTestCase2, that means the set
-     * methods need to be called before calling getActivity in the
-     * test setUp().
-     */
-    private static GLSurfaceView.Renderer mRenderer = null;
-    public static void setRenderer(GLSurfaceView.Renderer renderer) {
-        mRenderer = renderer;
-    }
-    public static void resetRenderer() {
-        mRenderer = null;
-    }
-
-    private static int mRenderMode = 0;
-    private static boolean mRenderModeSet = false;
-    public static void setRenderMode(int renderMode) {
-        mRenderModeSet = true;
-        mRenderMode = renderMode;
-    }
-    public static void resetRenderMode() {
-        mRenderModeSet = false;
-        mRenderMode = 0;
-    }
-
-    private static int mGlVersion = 0;
-    private static boolean mGlVersionSet = false;
-    public static void setGlVersion(int glVersion) {
-        mGlVersionSet = true;
-        mGlVersion = glVersion;
-    }
-    public static void resetGlVersion() {
-        mGlVersionSet = false;
-        mGlVersion = 0;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mView = new GLSurfaceView(this);
-        // Only set this if explicitly asked for
-        if (mGlVersionSet) {
-            mView.setEGLContextClientVersion(mGlVersion);
-        }
-        // Use no-op renderer by default
-        if (mRenderer == null) {
-            mView.setRenderer(new Renderer());
-        } else {
-            mView.setRenderer(mRenderer);
-        }
-        // Only set this if explicitly asked for
-        if (mRenderModeSet) {
-            mView.setRenderMode(mRenderMode);
-        }
-        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
-        setContentView(mView);
-    }
-
-    public GLSurfaceView getView() {
-        return mView;
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        mView.onResume();
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        mView.onPause();
-    }
-}
diff --git a/tests/src/android/opengl/cts/OpenGlEsVersionStubActivity.java b/tests/src/android/opengl/cts/OpenGlEsVersionStubActivity.java
deleted file mode 100644
index 2b96c5d..0000000
--- a/tests/src/android/opengl/cts/OpenGlEsVersionStubActivity.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.opengl.cts;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.opengl.GLES31;
-import android.opengl.GLES31Ext;
-import android.opengl.GLSurfaceView;
-import android.os.Bundle;
-import android.util.Log;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.opengles.GL10;
-
-/**
- * {@link Activity} that queries the device's display attributes to determine what version of
- * OpenGL ES is supported and returns what the GL version string reports.
- */
-public class OpenGlEsVersionStubActivity extends Activity {
-    private static String TAG = "OpenGlEsVersionStubActivity";
-
-    private static final String EGL_CONTEXT_CLIENT_VERSION = "eglContextClientVersion";
-
-    /** Timeout to wait for the surface to be created and the version queried. */
-    private static final int TIMEOUT_SECONDS = 10;
-
-    /** Version string reported by glGetString. */
-    private String mVersionString;
-
-    /** Extensions string reported by glGetString. */
-    private String mExtensionsString;
-
-    /** Whether GL_ANDROID_extension_pack_es31a is correctly supported. */
-    private boolean mAepEs31Support = false;
-
-    /** Latch that is unlocked when the activity is done finding the version. */
-    private CountDownLatch mSurfaceCreatedLatch = new CountDownLatch(1);
-
-    public static Intent createIntent(int eglContextClientVersion) {
-        Intent intent = new Intent(Intent.ACTION_MAIN);
-        intent.putExtra(EGL_CONTEXT_CLIENT_VERSION, eglContextClientVersion);
-        return intent;
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        GLSurfaceView view = new GLSurfaceView(this);
-
-        Intent intent = getIntent();
-        int eglContextClientVersion = intent.getIntExtra(EGL_CONTEXT_CLIENT_VERSION, -1);
-        if (eglContextClientVersion > 0) {
-            view.setEGLContextClientVersion(eglContextClientVersion);
-        }
-
-        view.setRenderer(new Renderer());
-        setContentView(view);
-    }
-
-    public String getVersionString() throws InterruptedException {
-        mSurfaceCreatedLatch.await(TIMEOUT_SECONDS, TimeUnit.SECONDS);
-        synchronized (this) {
-            return mVersionString;
-        }
-    }
-
-    public String getExtensionsString() throws InterruptedException {
-        mSurfaceCreatedLatch.await(TIMEOUT_SECONDS, TimeUnit.SECONDS);
-        synchronized (this) {
-            return mExtensionsString;
-        }
-    }
-
-    public boolean getAepEs31Support() throws InterruptedException {
-        mSurfaceCreatedLatch.await(TIMEOUT_SECONDS, TimeUnit.SECONDS);
-        synchronized (this) {
-            return mAepEs31Support;
-        }
-    }
-
-    public static boolean hasExtension(String extensions, String name) {
-        int start = extensions.indexOf(name);
-        while (start >= 0) {
-            // check that we didn't find a prefix of a longer extension name
-            int end = start + name.length();
-            if (end == extensions.length() || extensions.charAt(end) == ' ') {
-                return true;
-            }
-            start = extensions.indexOf(name, end);
-        }
-        return false;
-    }
-
-    private class Renderer implements GLSurfaceView.Renderer {
-        /**
-         * These shaders test at least one feature of each of the underlying extension, to verify
-         * that enabling GL_ANDROID_extension_pack_es31a correctly enables all of them.
-         */
-        private final String mAepEs31VertexShader =
-                "#version 310 es\n" +
-                "#extension GL_ANDROID_extension_pack_es31a : require\n" +
-                "void main() {\n" +
-                "  gl_Position = vec4(1, 0, 0, 1);\n" +
-                "}\n";
-
-        private final String mAepEs31TessellationControlShader =
-                "#version 310 es\n" +
-                "#extension GL_ANDROID_extension_pack_es31a : require\n" +
-                "layout(vertices = 3) out;\n" +  // GL_EXT_tessellation_shader
-                "void main() {\n" +
-                "  gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n" +  // GL_EXT_shader_io_blocks
-                "  if (gl_InvocationID == 0) {\n" +
-                "    gl_BoundingBoxEXT[0] = gl_in[0].gl_Position;\n" +  // GL_EXT_primitive_bounding_box
-                "    gl_BoundingBoxEXT[1] = gl_in[1].gl_Position;\n" +
-                "  }\n" +
-                "}\n";
-
-        private final String mAepEs31TessellationEvaluationShader =
-                "#version 310 es\n" +
-                "#extension GL_ANDROID_extension_pack_es31a : require\n" +
-                "layout(triangles, equal_spacing, cw) in;\n" +
-                "void main() {\n" +
-                "  gl_Position = gl_in[0].gl_Position * gl_TessCoord.x +\n" +
-                "      gl_in[1].gl_Position * gl_TessCoord.y +\n" +
-                "      gl_in[2].gl_Position * gl_TessCoord.z;\n" +
-                "}\n";
-
-        private final String mAepEs31GeometryShader =
-                "#version 310 es\n" +
-                "#extension GL_ANDROID_extension_pack_es31a : require\n" +
-                "layout(triangles) in;\n" +  // GL_EXT_geometry_shader
-                "layout(triangle_strip, max_vertices = 3) out;\n" +
-                "sample out vec4 perSampleColor;\n" +
-                "void main() {\n" +
-                "  for (int i = 0; i < gl_in.length(); ++i) {\n" +
-                "    gl_Position = gl_in[i].gl_Position;\n" +
-                "    perSampleColor = gl_in[i].gl_Position;\n" +
-                "    EmitVertex();\n" +
-                "  }\n" +
-                "}\n";
-
-        private final String mAepEs31FragmentShader =
-                "#version 310 es\n" +
-                "#extension GL_ANDROID_extension_pack_es31a : require\n" +
-                "precision mediump float;\n" +
-                "layout(blend_support_all_equations) out;\n" +  // GL_KHR_blend_equation_advanced
-                "sample in vec4 perSampleColor;\n" +  // GL_OES_shader_multisample_interpolation
-                "layout(r32ui) coherent uniform mediump uimage2D image;\n" +
-                "uniform mediump sampler2DMSArray mySamplerMSArray;\n" +  // GL_OES_texture_storage_multisample_2d_array
-                "uniform mediump samplerBuffer mySamplerBuffer;\n" +  // GL_EXT_texture_buffer
-                "uniform mediump samplerCubeArray mySamplerCubeArray;\n" +  // GL_EXT_texture_cube_map_array
-                "out vec4 color;\n" +
-                "void main() {\n" +
-                "  imageAtomicAdd(image, ivec2(1, 1), 1u);\n" +  // GL_OES_shader_image_atomic
-                "  vec4 color = vec4(gl_SamplePosition.x, 0, 0, 1);\n" +  // GL_OES_sample_variables
-                "  vec4 color2 = texelFetch(mySamplerMSArray, ivec3(1, 1, 1), 3);\n" +
-                "  vec4 color3 = texelFetch(mySamplerBuffer, 3);\n" +
-                "  vec4 color4 = texture(mySamplerCubeArray, vec4(1, 1, 1, 1));\n" +
-                "  color = fma(color + color2, color3 + color4, perSampleColor);" +  // GL_EXT_gpu_shader5
-                "}\n";
-
-        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
-            synchronized (OpenGlEsVersionStubActivity.this) {
-                try {
-                    mVersionString = gl.glGetString(GL10.GL_VERSION);
-                    mExtensionsString = gl.glGetString(GL10.GL_EXTENSIONS);
-                    if (hasExtension(mExtensionsString, "ANDROID_extension_pack_es31a"))
-                        mAepEs31Support = checkAepEs31Support();
-                } finally {
-                    mSurfaceCreatedLatch.countDown();
-                }
-            }
-        }
-
-        public void onSurfaceChanged(GL10 gl, int width, int height) {
-        }
-
-        public void onDrawFrame(GL10 gl) {
-        }
-
-        private boolean compileShaderAndAttach(int program, int shaderType, String source) {
-            int shader = GLES31.glCreateShader(shaderType);
-            if (shader == 0) {
-                Log.e(TAG, "Unable to create shaders of type " + shaderType);
-                return false;
-            }
-            GLES31.glShaderSource(shader, source);
-            GLES31.glCompileShader(shader);
-            int[] compiled = new int[1];
-            GLES31.glGetShaderiv(shader, GLES31.GL_COMPILE_STATUS, compiled, 0);
-            if (compiled[0] == 0) {
-                Log.e(TAG, "Unable to compile shader " + shaderType + ":");
-                Log.e(TAG, GLES31.glGetShaderInfoLog(shader));
-                GLES31.glDeleteShader(shader);
-                return false;
-            }
-            GLES31.glAttachShader(program, shader);
-            GLES31.glDeleteShader(shader);
-            return true;
-        }
-
-        private boolean checkAepEs31Support() {
-            final String requiredList[] = {
-                "EXT_copy_image",
-                "EXT_draw_buffers_indexed",
-                "EXT_geometry_shader",
-                "EXT_gpu_shader5",
-                "EXT_primitive_bounding_box",
-                "EXT_shader_io_blocks",
-                "EXT_tessellation_shader",
-                "EXT_texture_border_clamp",
-                "EXT_texture_buffer",
-                "EXT_texture_cube_map_array",
-                "EXT_texture_sRGB_decode",
-                "KHR_blend_equation_advanced",
-                "KHR_debug",
-                "KHR_texture_compression_astc_ldr",
-                "OES_sample_shading",
-                "OES_sample_variables",
-                "OES_shader_image_atomic",
-                "OES_shader_multisample_interpolation",
-                "OES_texture_stencil8",
-                "OES_texture_storage_multisample_2d_array"
-            };
-
-            for (int i = 0; i < requiredList.length; ++i) {
-                if (!hasExtension(mExtensionsString, requiredList[i])) {
-                    Log.e(TAG,"ANDROID_extension_pack_es31a is present but extension " +
-                            requiredList[i] + " is missing");
-                    return false;
-                }
-            }
-
-            int[] value = new int[1];
-            GLES31.glGetIntegerv(GLES31.GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS, value, 0);
-            if (value[0] < 1) {
-                Log.e(TAG, "ANDROID_extension_pack_es31a is present, but the " +
-                        "GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS value is " + value[0] + " < 1");
-                return false;
-            }
-            GLES31.glGetIntegerv(GLES31.GL_MAX_FRAGMENT_ATOMIC_COUNTERS, value, 0);
-            if (value[0] < 8) {
-                Log.e(TAG, "ANDROID_extension_pack_es31a is present, but the " +
-                        "GL_MAX_FRAGMENT_ATOMIC_COUNTERS value is " + value[0] + " < 8");
-                return false;
-            }
-            GLES31.glGetIntegerv(GLES31.GL_MAX_FRAGMENT_IMAGE_UNIFORMS, value, 0);
-            if (value[0] < 4) {
-                Log.e(TAG, "ANDROID_extension_pack_es31a is present, but the " +
-                        "GL_MAX_FRAGMENT_IMAGE_UNIFORMS value is " + value[0] + " < 4");
-                return false;
-            }
-            GLES31.glGetIntegerv(GLES31.GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, value, 0);
-            if (value[0] < 4) {
-                Log.e(TAG, "ANDROID_extension_pack_es31a is present, but the " +
-                        "GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS value is " + value[0] + " < 4");
-                return false;
-            }
-
-            int program = GLES31.glCreateProgram();
-            try {
-                if (!compileShaderAndAttach(program, GLES31.GL_VERTEX_SHADER, mAepEs31VertexShader) ||
-                    !compileShaderAndAttach(program, GLES31Ext.GL_TESS_CONTROL_SHADER_EXT, mAepEs31TessellationControlShader) ||
-                    !compileShaderAndAttach(program, GLES31Ext.GL_TESS_EVALUATION_SHADER_EXT, mAepEs31TessellationEvaluationShader) ||
-                    !compileShaderAndAttach(program, GLES31Ext.GL_GEOMETRY_SHADER_EXT, mAepEs31GeometryShader) ||
-                    !compileShaderAndAttach(program, GLES31.GL_FRAGMENT_SHADER, mAepEs31FragmentShader))
-                    return false;
-
-                GLES31.glLinkProgram(program);
-                GLES31.glGetProgramiv(program, GLES31.GL_LINK_STATUS, value, 0);
-                if (value[0] == 0) {
-                    Log.e(TAG, "Unable to link program :");
-                    Log.e(TAG, GLES31.glGetProgramInfoLog(program));
-                    return false;
-                }
-            } finally {
-                GLES31.glDeleteProgram(program);
-            }
-            return true;
-        }
-    }
-}
diff --git a/tests/src/android/os/cts/TestThread.java b/tests/src/android/os/cts/TestThread.java
deleted file mode 100644
index 1a28a20..0000000
--- a/tests/src/android/os/cts/TestThread.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.os.cts;
-
-/**
- * Thread class for executing a Runnable containing assertions in a separate thread.
- * Uncaught exceptions in the Runnable are rethrown in the context of the the thread
- * calling the <code>runTest()</code> method.
- */
-public final class TestThread extends Thread {
-    private Throwable mThrowable;
-    private Runnable mTarget;
-
-    public TestThread(Runnable target) {
-        mTarget = target;
-    }
-
-    @Override
-    public final void run() {
-        try {
-            mTarget.run();
-        } catch (Throwable t) {
-            mThrowable = t;
-        }
-    }
-
-    /**
-     * Run the target Runnable object and wait until the test finish or throw
-     * out Exception if test fail.
-     *
-     * @param runTime
-     * @throws Throwable
-     */
-    public void runTest(long runTime) throws Throwable {
-        start();
-        joinAndCheck(runTime);
-    }
-
-    /**
-     * Get the Throwable object which is thrown when test running
-     * @return  The Throwable object
-     */
-    public Throwable getThrowable() {
-        return mThrowable;
-    }
-
-    /**
-     * Set the Throwable object which is thrown when test running
-     * @param t The Throwable object
-     */
-    public void setThrowable(Throwable t) {
-        mThrowable = t;
-    }
-
-    /**
-     * Wait for the test thread to complete and throw the stored exception if there is one.
-     *
-     * @param runTime The time to wait for the test thread to complete.
-     * @throws Throwable
-     */
-    public void joinAndCheck(long runTime) throws Throwable {
-        this.join(runTime);
-        if (this.isAlive()) {
-            this.interrupt();
-            this.join(runTime);
-            throw new Exception("Thread did not finish within allotted time.");
-        }
-        checkException();
-    }
-
-    /**
-     * Check whether there is an exception when running Runnable object.
-     * @throws Throwable
-     */
-    public void checkException() throws Throwable {
-        if (mThrowable != null) {
-            throw mThrowable;
-        }
-    }
-}
diff --git a/tests/src/android/webkit/cts/WebViewOnUiThread.java b/tests/src/android/webkit/cts/WebViewOnUiThread.java
deleted file mode 100644
index 03059a1..0000000
--- a/tests/src/android/webkit/cts/WebViewOnUiThread.java
+++ /dev/null
@@ -1,998 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.webkit.cts;
-
-import android.cts.util.PollingCheck;
-import android.graphics.Bitmap;
-import android.graphics.Picture;
-import android.graphics.Rect;
-import android.os.Bundle;
-import android.os.Looper;
-import android.os.Message;
-import android.os.SystemClock;
-import android.print.PrintDocumentAdapter;
-import android.test.InstrumentationTestCase;
-import android.util.DisplayMetrics;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewParent;
-import android.webkit.DownloadListener;
-import android.webkit.CookieManager;
-import android.webkit.ValueCallback;
-import android.webkit.WebBackForwardList;
-import android.webkit.WebChromeClient;
-import android.webkit.WebSettings;
-import android.webkit.WebView.HitTestResult;
-import android.webkit.WebView.PictureListener;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-import junit.framework.Assert;
-
-import java.io.File;
-import java.util.concurrent.Callable;
-import java.util.Map;
-
-/**
- * Many tests need to run WebView code in the UI thread. This class
- * wraps a WebView so that calls are ensured to arrive on the UI thread.
- *
- * All methods may be run on either the UI thread or test thread.
- */
-public class WebViewOnUiThread {
-    /**
-     * The maximum time, in milliseconds (10 seconds) to wait for a load
-     * to be triggered.
-     */
-    private static final long LOAD_TIMEOUT = 10000;
-
-    /**
-     * Set to true after onPageFinished is called.
-     */
-    private boolean mLoaded;
-
-    /**
-     * Set to true after onNewPicture is called. Reset when onPageStarted
-     * is called.
-     */
-    private boolean mNewPicture;
-
-    /**
-     * The progress, in percentage, of the page load. Valid values are between
-     * 0 and 100.
-     */
-    private int mProgress;
-
-    /**
-     * The test that this class is being used in. Used for runTestOnUiThread.
-     */
-    private InstrumentationTestCase mTest;
-
-    /**
-     * The WebView that calls will be made on.
-     */
-    private WebView mWebView;
-
-    /**
-     * Initializes the webView with a WebViewClient, WebChromeClient,
-     * and PictureListener to prepare for loadUrlAndWaitForCompletion.
-     *
-     * A new WebViewOnUiThread should be called during setUp so as to
-     * reinitialize between calls.
-     *
-     * @param test The test in which this is being run.
-     * @param webView The webView that the methods should call.
-     * @see loadUrlAndWaitForCompletion
-     */
-    public WebViewOnUiThread(InstrumentationTestCase test, WebView webView) {
-        mTest = test;
-        mWebView = webView;
-        final WebViewClient webViewClient = new WaitForLoadedClient(this);
-        final WebChromeClient webChromeClient = new WaitForProgressClient(this);
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setWebViewClient(webViewClient);
-                mWebView.setWebChromeClient(webChromeClient);
-                mWebView.setPictureListener(new WaitForNewPicture());
-            }
-        });
-    }
-
-    /**
-     * Called after a test is complete and the WebView should be disengaged from
-     * the tests.
-     */
-    public void cleanUp() {
-        clearHistory();
-        clearCache(true);
-        setPictureListener(null);
-        setWebChromeClient(null);
-        setWebViewClient(null);
-    }
-
-    /**
-     * Called from WaitForNewPicture, this is used to indicate that
-     * the page has been drawn.
-     */
-    synchronized public void onNewPicture() {
-        mNewPicture = true;
-        this.notifyAll();
-    }
-
-    /**
-     * Called from WaitForLoadedClient, this is used to clear the picture
-     * draw state so that draws before the URL begins loading don't count.
-     */
-    synchronized public void onPageStarted() {
-        mNewPicture = false; // Earlier paints won't count.
-    }
-
-    /**
-     * Called from WaitForLoadedClient, this is used to indicate that
-     * the page is loaded, but not drawn yet.
-     */
-    synchronized public void onPageFinished() {
-        mLoaded = true;
-        this.notifyAll();
-    }
-
-    /**
-     * Called from the WebChrome client, this sets the current progress
-     * for a page.
-     * @param progress The progress made so far between 0 and 100.
-     */
-    synchronized public void onProgressChanged(int progress) {
-        mProgress = progress;
-        this.notifyAll();
-    }
-
-    public void setWebViewClient(final WebViewClient webViewClient) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setWebViewClient(webViewClient);
-            }
-        });
-    }
-
-    public void setWebChromeClient(final WebChromeClient webChromeClient) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setWebChromeClient(webChromeClient);
-            }
-        });
-    }
-
-    public void setPictureListener(final PictureListener pictureListener) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setPictureListener(pictureListener);
-            }
-        });
-    }
-
-    public void setNetworkAvailable(final boolean available) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setNetworkAvailable(available);
-            }
-        });
-    }
-
-    public void setDownloadListener(final DownloadListener listener) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setDownloadListener(listener);
-            }
-        });
-    }
-
-    public void setBackgroundColor(final int color) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setBackgroundColor(color);
-            }
-        });
-    }
-
-    public void clearCache(final boolean includeDiskFiles) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.clearCache(includeDiskFiles);
-            }
-        });
-    }
-
-    public void clearHistory() {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.clearHistory();
-            }
-        });
-    }
-
-    public void requestFocus() {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.requestFocus();
-            }
-        });
-    }
-
-    public boolean canZoomIn() {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.canZoomIn();
-            }
-        });
-    }
-
-    public boolean canZoomOut() {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.canZoomOut();
-            }
-        });
-    }
-
-    public boolean zoomIn() {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.zoomIn();
-            }
-        });
-    }
-
-    public boolean zoomOut() {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.zoomOut();
-            }
-        });
-    }
-
-    public void zoomBy(final float zoomFactor) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.zoomBy(zoomFactor);
-            }
-        });
-    }
-
-    public void setFindListener(final WebView.FindListener listener) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setFindListener(listener);
-            }
-        });
-    }
-
-    public void removeJavascriptInterface(final String interfaceName) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.removeJavascriptInterface(interfaceName);
-            }
-        });
-    }
-
-    public void addJavascriptInterface(final Object object, final String name) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.addJavascriptInterface(object, name);
-            }
-        });
-    }
-
-    public void flingScroll(final int vx, final int vy) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.flingScroll(vx, vy);
-            }
-        });
-    }
-
-    public void requestFocusNodeHref(final Message hrefMsg) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.requestFocusNodeHref(hrefMsg);
-            }
-        });
-    }
-
-    public void requestImageRef(final Message msg) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.requestImageRef(msg);
-            }
-        });
-    }
-
-    public void setInitialScale(final int scaleInPercent) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.setInitialScale(scaleInPercent);
-            }
-        });
-    }
-
-    public void clearSslPreferences() {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.clearSslPreferences();
-            }
-        });
-    }
-
-    public void clearClientCertPreferences(final Runnable onCleared) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                WebView.clearClientCertPreferences(onCleared);
-            }
-        });
-    }
-
-    public void resumeTimers() {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.resumeTimers();
-            }
-        });
-    }
-
-    public void findNext(final boolean forward) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.findNext(forward);
-            }
-        });
-    }
-
-    public void clearMatches() {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.clearMatches();
-            }
-        });
-    }
-
-    /**
-     * Calls loadUrl on the WebView and then waits onPageFinished,
-     * onNewPicture and onProgressChange to reach 100.
-     * Test fails if the load timeout elapses.
-     * @param url The URL to load.
-     */
-    public void loadUrlAndWaitForCompletion(final String url) {
-        callAndWait(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.loadUrl(url);
-            }
-        });
-    }
-
-    /**
-     * Calls loadUrl on the WebView and then waits onPageFinished,
-     * onNewPicture and onProgressChange to reach 100.
-     * Test fails if the load timeout elapses.
-     * @param url The URL to load.
-     * @param extraHeaders The additional headers to be used in the HTTP request.
-     */
-    public void loadUrlAndWaitForCompletion(final String url,
-            final Map<String, String> extraHeaders) {
-        callAndWait(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.loadUrl(url, extraHeaders);
-            }
-        });
-    }
-
-    public void loadUrl(final String url) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.loadUrl(url);
-            }
-        });
-    }
-
-    public void stopLoading() {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.stopLoading();
-            }
-        });
-    }
-
-    public void postUrlAndWaitForCompletion(final String url, final byte[] postData) {
-        callAndWait(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.postUrl(url, postData);
-            }
-        });
-    }
-
-    public void loadDataAndWaitForCompletion(final String data,
-            final String mimeType, final String encoding) {
-        callAndWait(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.loadData(data, mimeType, encoding);
-            }
-        });
-    }
-
-    public void loadDataWithBaseURLAndWaitForCompletion(final String baseUrl,
-            final String data, final String mimeType, final String encoding,
-            final String historyUrl) {
-        callAndWait(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding,
-                        historyUrl);
-            }
-        });
-    }
-
-    /**
-     * Reloads a page and waits for it to complete reloading. Use reload
-     * if it is a form resubmission and the onFormResubmission responds
-     * by telling WebView not to resubmit it.
-     */
-    public void reloadAndWaitForCompletion() {
-        callAndWait(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.reload();
-            }
-        });
-    }
-
-    /**
-     * Reload the previous URL. Use reloadAndWaitForCompletion unless
-     * it is a form resubmission and the onFormResubmission responds
-     * by telling WebView not to resubmit it.
-     */
-    public void reload() {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.reload();
-            }
-        });
-    }
-
-    /**
-     * Use this only when JavaScript causes a page load to wait for the
-     * page load to complete. Otherwise use loadUrlAndWaitForCompletion or
-     * similar functions.
-     */
-    public void waitForLoadCompletion() {
-        waitForCriteria(LOAD_TIMEOUT,
-                new Callable<Boolean>() {
-                    @Override
-                    public Boolean call() {
-                        return isLoaded();
-                    }
-                });
-        clearLoad();
-    }
-
-    private void waitForCriteria(long timeout, Callable<Boolean> doneCriteria) {
-        if (isUiThread()) {
-            waitOnUiThread(timeout, doneCriteria);
-        } else {
-            waitOnTestThread(timeout, doneCriteria);
-        }
-    }
-
-    public String getTitle() {
-        return getValue(new ValueGetter<String>() {
-            @Override
-            public String capture() {
-                return mWebView.getTitle();
-            }
-        });
-    }
-
-    public WebSettings getSettings() {
-        return getValue(new ValueGetter<WebSettings>() {
-            @Override
-            public WebSettings capture() {
-                return mWebView.getSettings();
-            }
-        });
-    }
-
-    public WebBackForwardList copyBackForwardList() {
-        return getValue(new ValueGetter<WebBackForwardList>() {
-            @Override
-            public WebBackForwardList capture() {
-                return mWebView.copyBackForwardList();
-            }
-        });
-    }
-
-    public Bitmap getFavicon() {
-        return getValue(new ValueGetter<Bitmap>() {
-            @Override
-            public Bitmap capture() {
-                return mWebView.getFavicon();
-            }
-        });
-    }
-
-    public String getUrl() {
-        return getValue(new ValueGetter<String>() {
-            @Override
-            public String capture() {
-                return mWebView.getUrl();
-            }
-        });
-    }
-
-    public int getProgress() {
-        return getValue(new ValueGetter<Integer>() {
-            @Override
-            public Integer capture() {
-                return mWebView.getProgress();
-            }
-        });
-    }
-
-    public int getHeight() {
-        return getValue(new ValueGetter<Integer>() {
-            @Override
-            public Integer capture() {
-                return mWebView.getHeight();
-            }
-        });
-    }
-
-    public int getContentHeight() {
-        return getValue(new ValueGetter<Integer>() {
-            @Override
-            public Integer capture() {
-                return mWebView.getContentHeight();
-            }
-        });
-    }
-
-    public boolean savePicture(final Bundle b, final File dest) {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.savePicture(b, dest);
-            }
-        });
-    }
-
-    public boolean pageUp(final boolean top) {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.pageUp(top);
-            }
-        });
-    }
-
-    public boolean pageDown(final boolean bottom) {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.pageDown(bottom);
-            }
-        });
-    }
-
-    public int[] getLocationOnScreen() {
-        final int[] location = new int[2];
-        return getValue(new ValueGetter<int[]>() {
-            @Override
-            public int[] capture() {
-                mWebView.getLocationOnScreen(location);
-                return location;
-            }
-        });
-    }
-
-    public float getScale() {
-        return getValue(new ValueGetter<Float>() {
-            @Override
-            public Float capture() {
-                return mWebView.getScale();
-            }
-        });
-    }
-
-    public boolean requestFocus(final int direction,
-            final Rect previouslyFocusedRect) {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.requestFocus(direction, previouslyFocusedRect);
-            }
-        });
-    }
-
-    public HitTestResult getHitTestResult() {
-        return getValue(new ValueGetter<HitTestResult>() {
-            @Override
-            public HitTestResult capture() {
-                return mWebView.getHitTestResult();
-            }
-        });
-    }
-
-    public int getScrollX() {
-        return getValue(new ValueGetter<Integer>() {
-            @Override
-            public Integer capture() {
-                return mWebView.getScrollX();
-            }
-        });
-    }
-
-    public int getScrollY() {
-        return getValue(new ValueGetter<Integer>() {
-            @Override
-            public Integer capture() {
-                return mWebView.getScrollY();
-            }
-        });
-    }
-
-    public final DisplayMetrics getDisplayMetrics() {
-        return getValue(new ValueGetter<DisplayMetrics>() {
-            @Override
-            public DisplayMetrics capture() {
-                return mWebView.getContext().getResources().getDisplayMetrics();
-            }
-        });
-    }
-
-    public boolean requestChildRectangleOnScreen(final View child,
-            final Rect rect,
-            final boolean immediate) {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return mWebView.requestChildRectangleOnScreen(child, rect,
-                        immediate);
-            }
-        });
-    }
-
-    public int findAll(final String find) {
-        return getValue(new ValueGetter<Integer>() {
-            @Override
-            public Integer capture() {
-                return mWebView.findAll(find);
-            }
-        });
-    }
-
-    public Picture capturePicture() {
-        return getValue(new ValueGetter<Picture>() {
-            @Override
-            public Picture capture() {
-                return mWebView.capturePicture();
-            }
-        });
-    }
-
-    public void evaluateJavascript(final String script, final ValueCallback<String> result) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                mWebView.evaluateJavascript(script, result);
-            }
-        });
-    }
-
-    public WebView createWebView() {
-        return getValue(new ValueGetter<WebView>() {
-            @Override
-            public WebView capture() {
-                return new WebView(mWebView.getContext());
-            }
-        });
-    }
-
-    public PrintDocumentAdapter createPrintDocumentAdapter() {
-        return getValue(new ValueGetter<PrintDocumentAdapter>() {
-            @Override
-            public PrintDocumentAdapter capture() {
-                return mWebView.createPrintDocumentAdapter();
-            }
-        });
-    }
-
-    public void setLayoutHeightToMatchParent() {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                ViewParent parent = mWebView.getParent();
-                if (parent instanceof ViewGroup) {
-                    ((ViewGroup) parent).getLayoutParams().height =
-                        ViewGroup.LayoutParams.MATCH_PARENT;
-                }
-                mWebView.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
-                mWebView.requestLayout();
-            }
-        });
-    }
-
-    public void setAcceptThirdPartyCookies(final boolean accept) {
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView, accept);
-            }
-        });
-    }
-
-    public boolean acceptThirdPartyCookies() {
-        return getValue(new ValueGetter<Boolean>() {
-            @Override
-            public Boolean capture() {
-                return CookieManager.getInstance().acceptThirdPartyCookies(mWebView);
-            }
-        });
-    }
-
-    /**
-     * Helper for running code on the UI thread where an exception is
-     * a test failure. If this is already the UI thread then it runs
-     * the code immediately.
-     *
-     * @see runTestOnUiThread
-     * @param r The code to run in the UI thread
-     */
-    public void runOnUiThread(Runnable r) {
-        try {
-            if (isUiThread()) {
-                r.run();
-            } else {
-                mTest.runTestOnUiThread(r);
-            }
-        } catch (Throwable t) {
-            Assert.fail("Unexpected error while running on UI thread: "
-                    + t.getMessage());
-        }
-    }
-
-    /**
-     * Accessor for underlying WebView.
-     * @return The WebView being wrapped by this class.
-     */
-    public WebView getWebView() {
-        return mWebView;
-    }
-
-    private<T> T getValue(ValueGetter<T> getter) {
-        runOnUiThread(getter);
-        return getter.getValue();
-    }
-
-    private abstract class ValueGetter<T> implements Runnable {
-        private T mValue;
-
-        @Override
-        public void run() {
-            mValue = capture();
-        }
-
-        protected abstract T capture();
-
-        public T getValue() {
-           return mValue;
-        }
-    }
-
-    /**
-     * Returns true if the current thread is the UI thread based on the
-     * Looper.
-     */
-    private static boolean isUiThread() {
-        return (Looper.myLooper() == Looper.getMainLooper());
-    }
-
-    /**
-     * @return Whether or not the load has finished.
-     */
-    private synchronized boolean isLoaded() {
-        return mLoaded && mNewPicture && mProgress == 100;
-    }
-
-    /**
-     * Makes a WebView call, waits for completion and then resets the
-     * load state in preparation for the next load call.
-     * @param call The call to make on the UI thread prior to waiting.
-     */
-    private void callAndWait(Runnable call) {
-        Assert.assertTrue("WebViewOnUiThread.load*AndWaitForCompletion calls "
-                + "may not be mixed with load* calls directly on WebView "
-                + "without calling waitForLoadCompletion after the load",
-                !isLoaded());
-        clearLoad(); // clear any extraneous signals from a previous load.
-        runOnUiThread(call);
-        waitForLoadCompletion();
-    }
-
-    /**
-     * Called whenever a load has been completed so that a subsequent call to
-     * waitForLoadCompletion doesn't return immediately.
-     */
-    synchronized private void clearLoad() {
-        mLoaded = false;
-        mNewPicture = false;
-        mProgress = 0;
-    }
-
-    /**
-     * Uses a polling mechanism, while pumping messages to check when the
-     * criteria is met.
-     */
-    private void waitOnUiThread(long timeout, final Callable<Boolean> doneCriteria) {
-        new PollingCheck(timeout) {
-            @Override
-            protected boolean check() {
-                pumpMessages();
-                try {
-                    return doneCriteria.call();
-                } catch (Exception e) {
-                    Assert.fail("Unexpected error while checking the criteria: "
-                            + e.getMessage());
-                    return true;
-                }
-            }
-        }.run();
-    }
-
-    /**
-     * Uses a wait/notify to check when the criteria is met.
-     */
-    private synchronized void waitOnTestThread(long timeout, Callable<Boolean> doneCriteria) {
-        try {
-            long waitEnd = SystemClock.uptimeMillis() + timeout;
-            long timeRemaining = timeout;
-            while (!doneCriteria.call() && timeRemaining > 0) {
-                this.wait(timeRemaining);
-                timeRemaining = waitEnd - SystemClock.uptimeMillis();
-            }
-            Assert.assertTrue("Action failed to complete before timeout", doneCriteria.call());
-        } catch (InterruptedException e) {
-            // We'll just drop out of the loop and fail
-        } catch (Exception e) {
-            Assert.fail("Unexpected error while checking the criteria: "
-                    + e.getMessage());
-        }
-    }
-
-    /**
-     * Pumps all currently-queued messages in the UI thread and then exits.
-     * This is useful to force processing while running tests in the UI thread.
-     */
-    private void pumpMessages() {
-        class ExitLoopException extends RuntimeException {
-        }
-
-        // Force loop to exit when processing this. Loop.quit() doesn't
-        // work because this is the main Loop.
-        mWebView.getHandler().post(new Runnable() {
-            @Override
-            public void run() {
-                throw new ExitLoopException(); // exit loop!
-            }
-        });
-        try {
-            // Pump messages until our message gets through.
-            Looper.loop();
-        } catch (ExitLoopException e) {
-        }
-    }
-
-    /**
-     * A WebChromeClient used to capture the onProgressChanged for use
-     * in waitFor functions. If a test must override the WebChromeClient,
-     * it can derive from this class or call onProgressChanged
-     * directly.
-     */
-    public static class WaitForProgressClient extends WebChromeClient {
-        private WebViewOnUiThread mOnUiThread;
-
-        public WaitForProgressClient(WebViewOnUiThread onUiThread) {
-            mOnUiThread = onUiThread;
-        }
-
-        @Override
-        public void onProgressChanged(WebView view, int newProgress) {
-            super.onProgressChanged(view, newProgress);
-            mOnUiThread.onProgressChanged(newProgress);
-        }
-    }
-
-    /**
-     * A WebViewClient that captures the onPageFinished for use in
-     * waitFor functions. Using initializeWebView sets the WaitForLoadedClient
-     * into the WebView. If a test needs to set a specific WebViewClient and
-     * needs the waitForCompletion capability then it should derive from
-     * WaitForLoadedClient or call WebViewOnUiThread.onPageFinished.
-     */
-    public static class WaitForLoadedClient extends WebViewClient {
-        private WebViewOnUiThread mOnUiThread;
-
-        public WaitForLoadedClient(WebViewOnUiThread onUiThread) {
-            mOnUiThread = onUiThread;
-        }
-
-        @Override
-        public void onPageFinished(WebView view, String url) {
-            super.onPageFinished(view, url);
-            mOnUiThread.onPageFinished();
-        }
-
-        @Override
-        public void onPageStarted(WebView view, String url, Bitmap favicon) {
-            super.onPageStarted(view, url, favicon);
-            mOnUiThread.onPageStarted();
-        }
-    }
-
-    /**
-     * A PictureListener that captures the onNewPicture for use in
-     * waitForLoadCompletion. Using initializeWebView sets the PictureListener
-     * into the WebView. If a test needs to set a specific PictureListener and
-     * needs the waitForCompletion capability then it should call
-     * WebViewOnUiThread.onNewPicture.
-     */
-    private class WaitForNewPicture implements PictureListener {
-        @Override
-        public void onNewPicture(WebView view, Picture picture) {
-            WebViewOnUiThread.this.onNewPicture();
-        }
-    }
-}
diff --git a/tests/webgl/Android.mk b/tests/webgl/Android.mk
index 624d82a..ce22dd8 100755
--- a/tests/webgl/Android.mk
+++ b/tests/webgl/Android.mk
@@ -24,8 +24,7 @@
 
 LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)\
-		../src/android/webkit/cts/NullWebViewUtils.java
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 # Must match the package name in CtsTestCaseList.mk
 LOCAL_PACKAGE_NAME := CtsWebGLTestCases
diff --git a/tests/webgl/src/android/webgl/WebGLActivity.java b/tests/webgl/src/android/webgl/WebGLActivity.java
index f851a76..e88de16 100644
--- a/tests/webgl/src/android/webgl/WebGLActivity.java
+++ b/tests/webgl/src/android/webgl/WebGLActivity.java
@@ -21,11 +21,11 @@
 import android.content.res.Resources;
 import android.os.Bundle;
 import android.util.Log;
+import android.webgl.cts.NullWebViewUtils;
 import android.webgl.cts.R;
 import android.webkit.WebView;
 import android.webkit.JavascriptInterface;
 import android.webkit.WebViewClient;
-import android.webkit.cts.NullWebViewUtils;
 import android.widget.Toast;
 import java.lang.Override;
 import java.io.InputStream;
diff --git a/tests/src/android/webkit/cts/NullWebViewUtils.java b/tests/webgl/src/android/webgl/cts/NullWebViewUtils.java
similarity index 98%
rename from tests/src/android/webkit/cts/NullWebViewUtils.java
rename to tests/webgl/src/android/webgl/cts/NullWebViewUtils.java
index c52219f..861cc22 100644
--- a/tests/src/android/webkit/cts/NullWebViewUtils.java
+++ b/tests/webgl/src/android/webgl/cts/NullWebViewUtils.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.webkit.cts;
+package android.webgl.cts;
 
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -85,4 +85,4 @@
                     !checkCauseWasUnsupportedOperation(mPendingException);
         }
     }
-}
\ No newline at end of file
+}
