Merge "Benchmarks can be rendered onscreen or off. Also added a script to plot results." into jb-mr2-dev
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/AmbiguousContentProvider.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/AmbiguousContentProvider.java
index 3536979..09ddbc2 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/AmbiguousContentProvider.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/AmbiguousContentProvider.java
@@ -20,6 +20,10 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+
+import java.io.File;
+import java.io.FileNotFoundException;
/**
* Empty content provider, manifest did not declare exported=true nor exported=false.
@@ -58,4 +62,10 @@
String[] selectionArgs) {
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ return ParcelFileDescriptor.open(
+ new File("/dev/null"), ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProvider.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProvider.java
index 900664f..aea874b 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProvider.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProvider.java
@@ -20,6 +20,10 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+
+import java.io.File;
+import java.io.FileNotFoundException;
/**
* Empty content provider, all permissions are enforced in manifest
@@ -58,4 +62,10 @@
String[] selectionArgs) {
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ return ParcelFileDescriptor.open(
+ new File("/dev/null"), ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderGranting.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderGranting.java
index 97bd827..bb88c34 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderGranting.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderGranting.java
@@ -20,6 +20,10 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+
+import java.io.File;
+import java.io.FileNotFoundException;
/**
* Empty content provider, all permissions are enforced in manifest
@@ -58,4 +62,10 @@
String[] selectionArgs) {
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ return ParcelFileDescriptor.open(
+ new File("/dev/null"), ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderPath.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderPath.java
index 4f301a3..13151f5 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderPath.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderPath.java
@@ -4,6 +4,10 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+
+import java.io.File;
+import java.io.FileNotFoundException;
/**
* Empty content provider, all permissions are enforced in manifest
@@ -42,4 +46,10 @@
String[] selectionArgs) {
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ return ParcelFileDescriptor.open(
+ new File("/dev/null"), ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderPathRestricting.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderPathRestricting.java
index 3206206..41dd889 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderPathRestricting.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PermissionContentProviderPathRestricting.java
@@ -20,6 +20,10 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+
+import java.io.File;
+import java.io.FileNotFoundException;
/**
* Empty content provider, all permissions are enforced in manifest
@@ -58,4 +62,10 @@
String[] selectionArgs) {
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ return ParcelFileDescriptor.open(
+ new File("/dev/null"), ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PrivateContentProvider.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PrivateContentProvider.java
index 64ec6e7..6ce5239 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PrivateContentProvider.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PrivateContentProvider.java
@@ -20,6 +20,10 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+
+import java.io.File;
+import java.io.FileNotFoundException;
/**
* Empty content provider, all permissions are enforced in manifest
@@ -58,4 +62,10 @@
String[] selectionArgs) {
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ return ParcelFileDescriptor.open(
+ new File("/dev/null"), ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PrivateContentProviderGranting.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PrivateContentProviderGranting.java
index f9ae96b..372b399 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PrivateContentProviderGranting.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/PrivateContentProviderGranting.java
@@ -20,6 +20,10 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+
+import java.io.File;
+import java.io.FileNotFoundException;
/**
* Empty content provider, all permissions are enforced in manifest
@@ -58,4 +62,10 @@
String[] selectionArgs) {
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ return ParcelFileDescriptor.open(
+ new File("/dev/null"), ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/src/com/android/cts/permissiondeclareappcompat/AmbiguousContentProvider.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/src/com/android/cts/permissiondeclareappcompat/AmbiguousContentProvider.java
index 8665b70..9727047 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/src/com/android/cts/permissiondeclareappcompat/AmbiguousContentProvider.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/src/com/android/cts/permissiondeclareappcompat/AmbiguousContentProvider.java
@@ -20,6 +20,10 @@
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+
+import java.io.File;
+import java.io.FileNotFoundException;
/**
* Empty content provider, all permissions are enforced in manifest
@@ -58,4 +62,10 @@
String[] selectionArgs) {
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ return ParcelFileDescriptor.open(
+ new File("/dev/null"), ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
index a6495a9..8f40cf1 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
@@ -19,6 +19,7 @@
import android.content.BroadcastReceiver;
import android.content.ClipData;
import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
@@ -28,6 +29,8 @@
import android.test.AndroidTestCase;
import android.util.Log;
+import java.io.IOException;
+
/**
* Tests that signature-enforced permissions cannot be accessed by apps signed
* with different certs than app that declares the permission.
@@ -88,18 +91,71 @@
}
}
- private void assertWritingContentUriNotAllowed(Uri uri, String msg) {
+ private void assertOpenFileDescriptorModeNotAllowed(Uri uri, String msg, String mode) {
try {
- getContext().getContentResolver().insert(uri, new ContentValues());
+ getContext().getContentResolver().openFileDescriptor(uri, mode).close();
fail("expected SecurityException writing " + uri + ": " + msg);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
} catch (SecurityException expected) {
assertNotNull("security exception's error message.", expected.getMessage());
}
}
- private void assertWritingContentUriAllowed(Uri uri) {
+ private void assertWritingContentUriNotAllowed(Uri uri, String msg) {
+ final ContentResolver resolver = getContext().getContentResolver();
try {
- getContext().getContentResolver().insert(uri, new ContentValues());
+ resolver.insert(uri, new ContentValues());
+ fail("expected SecurityException inserting " + uri + ": " + msg);
+ } catch (SecurityException expected) {
+ assertNotNull("security exception's error message.", expected.getMessage());
+ }
+
+ try {
+ resolver.update(uri, new ContentValues(), null, null);
+ fail("expected SecurityException updating " + uri + ": " + msg);
+ } catch (SecurityException expected) {
+ assertNotNull("security exception's error message.", expected.getMessage());
+ }
+
+ try {
+ resolver.delete(uri, null, null);
+ fail("expected SecurityException deleting " + uri + ": " + msg);
+ } catch (SecurityException expected) {
+ assertNotNull("security exception's error message.", expected.getMessage());
+ }
+
+ try {
+ getContext().getContentResolver().openOutputStream(uri).close();
+ fail("expected SecurityException writing " + uri + ": " + msg);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ } catch (SecurityException expected) {
+ assertNotNull("security exception's error message.", expected.getMessage());
+ }
+
+ assertOpenFileDescriptorModeNotAllowed(uri, msg, "w");
+ assertOpenFileDescriptorModeNotAllowed(uri, msg, "wt");
+ assertOpenFileDescriptorModeNotAllowed(uri, msg, "wa");
+ assertOpenFileDescriptorModeNotAllowed(uri, msg, "rw");
+ assertOpenFileDescriptorModeNotAllowed(uri, msg, "rwt");
+ }
+
+ private void assertWritingContentUriAllowed(Uri uri) {
+ final ContentResolver resolver = getContext().getContentResolver();
+ try {
+ resolver.insert(uri, new ContentValues());
+ resolver.update(uri, new ContentValues(), null, null);
+ resolver.delete(uri, null, null);
+
+ resolver.openOutputStream(uri).close();
+ resolver.openFileDescriptor(uri, "w").close();
+ resolver.openFileDescriptor(uri, "wt").close();
+ resolver.openFileDescriptor(uri, "wa").close();
+ resolver.openFileDescriptor(uri, "rw").close();
+ resolver.openFileDescriptor(uri, "rwt").close();
+ } catch (IOException e) {
+ fail("unexpected IOException writing " + uri + ": " + e.getMessage());
} catch (SecurityException e) {
fail("unexpected SecurityException writing " + uri + ": " + e.getMessage());
}
diff --git a/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/AlmostFullTest.java b/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/AlmostFullTest.java
index 89c2f7c..5161697 100644
--- a/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/AlmostFullTest.java
+++ b/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/AlmostFullTest.java
@@ -17,18 +17,11 @@
package com.android.pts.filesystemperf;
import android.cts.util.TimeoutReq;
-import com.android.pts.util.MeasureRun;
-import com.android.pts.util.MeasureTime;
-import com.android.pts.util.PtsAndroidTestCase;
-import com.android.pts.util.ReportLog;
-import com.android.pts.util.Stat;
-import com.android.pts.util.SystemUtil;
-
import android.util.Log;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
+import com.android.pts.util.PtsAndroidTestCase;
+import com.android.pts.util.SystemUtil;
+
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -57,7 +50,8 @@
super.setUp();
if (mDiskFilled.compareAndSet(false, true)) {
Log.i(TAG, "Filling disk");
- // initial fill done in two stage as disk can be filled by other components
+ // initial fill done in two stage as disk can be filled by other
+ // components
long freeDisk = SystemUtil.getFreeDiskSize(getContext());
long diskToFill = freeDisk - FREE_SPACE_FINAL;
Log.i(TAG, "free disk " + freeDisk + ", to fill " + diskToFill);
@@ -106,8 +100,8 @@
BUFFER_SIZE, NUMBER_REPETITION);
}
- //TODO: file size too small and caching will give wrong better result.
- // needs to flush cache by reading big files per each read.
+ // TODO: file size too small and caching will give wrong better result.
+ // needs to flush cache by reading big files per each read.
@TimeoutReq(minutes = 60)
public void testRandomRead() throws Exception {
final int BUFFER_SIZE = 4 * 1024;
diff --git a/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/RandomRWTest.java b/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/RandomRWTest.java
index 537d900..e52af08 100644
--- a/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/RandomRWTest.java
+++ b/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/RandomRWTest.java
@@ -17,16 +17,8 @@
package com.android.pts.filesystemperf;
import android.cts.util.TimeoutReq;
-import com.android.pts.util.MeasureRun;
-import com.android.pts.util.PtsAndroidTestCase;
-import com.android.pts.util.ReportLog;
-import com.android.pts.util.Stat;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.util.Random;
+import com.android.pts.util.PtsAndroidTestCase;
public class RandomRWTest extends PtsAndroidTestCase {
diff --git a/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java b/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
index 1db04ea..622055c 100644
--- a/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
+++ b/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
@@ -90,6 +90,10 @@
expectedMinimumMemory = isXLarge ? 128 : 64;
break;
+ case DisplayMetrics.DENSITY_XXHIGH:
+ expectedMinimumMemory = isXLarge ? 256 : 128;
+ break;
+
default:
throw new IllegalArgumentException("No memory requirement specified "
+ " for screen density " + screenDensity);
diff --git a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
index 937d8f8..6f26b6e 100644
--- a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
+++ b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
@@ -52,6 +52,7 @@
allowedDensities.add(DisplayMetrics.DENSITY_TV);
allowedDensities.add(DisplayMetrics.DENSITY_HIGH);
allowedDensities.add(DisplayMetrics.DENSITY_XHIGH);
+ allowedDensities.add(DisplayMetrics.DENSITY_XXHIGH);
assertTrue("DisplayMetrics#densityDpi must be one of the DisplayMetrics.DENSITY_* values: "
+ allowedDensities, allowedDensities.contains(metrics.densityDpi));
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index e7f02b5..4eb47c2 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -618,12 +618,20 @@
return retval;
}
+ public void testSystemMountedRO() throws IOException {
+ assertSystemMountedROIn("/proc/self/mounts");
+ }
+
+ public void testSystemMountedRO_init() throws IOException {
+ assertSystemMountedROIn("/proc/1/mounts");
+ }
+
/**
- * Scan through /proc/self/mounts, looking for the /system line. If the line
+ * Scan through {@code filename}, looking for the /system line. If the line
* has "ro" in the 4th column, then we know the filesystem is mounted read-only.
*/
- public void testSystemMountedRO() throws IOException {
- BufferedReader br = new BufferedReader(new FileReader("/proc/self/mounts"));
+ private static void assertSystemMountedROIn(String filename) throws IOException {
+ BufferedReader br = new BufferedReader(new FileReader(filename));
String line;
boolean foundSystem = false;
while((line = br.readLine()) != null) {
diff --git a/tests/tests/util/src/android/util/cts/DisplayMetricsTest.java b/tests/tests/util/src/android/util/cts/DisplayMetricsTest.java
index 821bb09..d7c1895 100644
--- a/tests/tests/util/src/android/util/cts/DisplayMetricsTest.java
+++ b/tests/tests/util/src/android/util/cts/DisplayMetricsTest.java
@@ -37,8 +37,8 @@
assertEquals(0, outMetrics.widthPixels);
assertEquals(0, outMetrics.heightPixels);
// according to Android enmulator doc UI -scale confine density should between 0.1 to 3
- assertTrue((0.1 < outMetrics.density) && (outMetrics.density < 3));
- assertTrue((0.1 < outMetrics.scaledDensity) && (outMetrics.scaledDensity < 3));
+ assertTrue((0.1 <= outMetrics.density) && (outMetrics.density <= 3));
+ assertTrue((0.1 <= outMetrics.scaledDensity) && (outMetrics.scaledDensity <= 3));
assertTrue(0 < outMetrics.xdpi);
assertTrue(0 < outMetrics.ydpi);
@@ -49,8 +49,8 @@
assertEquals(display.getHeight(), metrics.heightPixels);
assertEquals(display.getWidth(), metrics.widthPixels);
// according to Android enmulator doc UI -scale confine density should between 0.1 to 3
- assertTrue((0.1 < metrics.density) && (metrics.density < 3));
- assertTrue((0.1 < metrics.scaledDensity) && (metrics.scaledDensity < 3));
+ assertTrue((0.1 <= metrics.density) && (metrics.density <= 3));
+ assertTrue((0.1 <= metrics.scaledDensity) && (metrics.scaledDensity <= 3));
assertTrue(0 < metrics.xdpi);
assertTrue(0 < metrics.ydpi);
}
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
index 9f8712e..b9c338b 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
@@ -576,34 +576,14 @@
}.run();
}
- // Ideally the test cases that test if the database can be enabled and disabled
- // properly should be combined into one. However, it seems that for some
- // non-obvious reason the webview does not support such a sequence reliably (in
- // particular it seems to fail when database is first disabled explicitly and
- // then after loading the page it is enabled and another url is loaded).
+ // Ideally, we need a test case for the enabled case. However, it seems that
+ // enabling the database should happen prior to navigating the first url due to
+ // some internal limitations of webview. For this reason, we only provide a
+ // test case for "disabled" behavior.
// Also loading as data rather than using URL should work, but it causes a
// security exception in JS, most likely due to cross domain access. So we load
// using a URL. Finally, it looks like enabling database requires creating a
// webChromeClient and listening to Quota callbacks, which is not documented.
- public void testDatabaseEnabled() throws Throwable {
- // Verify that websql database works when enabled.
- startWebServer();
-
- mOnUiThread.setWebChromeClient(new ChromeClient(mOnUiThread) {
- @Override
- public void onExceededDatabaseQuota(String url, String databaseId, long quota,
- long estimatedSize, long total, WebStorage.QuotaUpdater updater) {
- updater.updateQuota(estimatedSize);
- }
- });
- mSettings.setJavaScriptEnabled(true);
- mSettings.setDatabaseEnabled(true);
- final String url = mWebServer.getAssetUrl(TestHtmlConstants.DATABASE_ACCESS_URL);
- mSettings.setDatabasePath(getActivity().getDir("db", 0).getPath());
- mOnUiThread.loadUrlAndWaitForCompletion(url);
- assertEquals("Has database", mOnUiThread.getTitle());
- }
-
public void testDatabaseDisabled() throws Throwable {
// Verify that websql database does not work when disabled.
startWebServer();
diff --git a/tests/tests/widget/src/android/widget/cts/ToastTest.java b/tests/tests/widget/src/android/widget/cts/ToastTest.java
index 9586731..9c7846b 100644
--- a/tests/tests/widget/src/android/widget/cts/ToastTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ToastTest.java
@@ -28,6 +28,7 @@
import android.test.UiThreadTest;
import android.view.Gravity;
import android.view.View;
+import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.Toast;
@@ -39,6 +40,8 @@
private Toast mToast;
private Activity mActivity;
private Instrumentation mInstrumentation;
+ private boolean mLayoutDone;
+ private ViewTreeObserver.OnGlobalLayoutListener mLayoutListener;
public ToastTest() {
super("com.android.cts.stub", StubActivity.class);
@@ -51,6 +54,12 @@
mActivity = getActivity();
mInstrumentation = getInstrumentation();
mToast = new Toast(mActivity);
+ mLayoutDone = false;
+ mLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
+ public void onGlobalLayout() {
+ mLayoutDone = true;
+ }
+ };
}
public void testConstructor() {
@@ -89,6 +98,21 @@
assertNull(view.getParent());
}
+ private void registerLayoutListener(final View view) {
+ mLayoutDone = false;
+ view.getViewTreeObserver().addOnGlobalLayoutListener(mLayoutListener);
+ }
+
+ private void assertLayoutDone(final View view) {
+ new PollingCheck(TIME_OUT) {
+ @Override
+ protected boolean check() {
+ return mLayoutDone;
+ }
+ }.run();
+ view.getViewTreeObserver().removeOnGlobalLayoutListener(mLayoutListener);
+ }
+
public void testShow() {
mActivity.runOnUiThread(new Runnable() {
public void run() {
@@ -173,7 +197,6 @@
assertSame(imageView, mToast.getView());
assertShowAndHide(imageView);
}
-
public void testAccessDuration() {
long start = SystemClock.uptimeMillis();
mActivity.runOnUiThread(new Runnable() {
@@ -222,6 +245,7 @@
public void run() {
mToast.setMargin(horizontal1, vertical1);
mToast.show();
+ registerLayoutListener(mToast.getView());
}
});
mInstrumentation.waitForIdleSync();
@@ -232,6 +256,7 @@
WindowManager.LayoutParams params1 = (WindowManager.LayoutParams) view.getLayoutParams();
assertEquals(horizontal1, params1.horizontalMargin);
assertEquals(vertical1, params1.verticalMargin);
+ assertLayoutDone(view);
int[] xy1 = new int[2];
view.getLocationOnScreen(xy1);
assertShowAndHide(view);
@@ -242,6 +267,7 @@
public void run() {
mToast.setMargin(horizontal2, vertical2);
mToast.show();
+ registerLayoutListener(mToast.getView());
}
});
mInstrumentation.waitForIdleSync();
@@ -253,6 +279,7 @@
assertEquals(horizontal2, params2.horizontalMargin);
assertEquals(vertical2, params2.verticalMargin);
+ assertLayoutDone(view);
int[] xy2 = new int[2];
view.getLocationOnScreen(xy2);
assertShowAndHide(view);
@@ -267,6 +294,7 @@
mToast = Toast.makeText(mActivity, TEST_TOAST_TEXT, Toast.LENGTH_SHORT);
mToast.setGravity(Gravity.CENTER, 0, 0);
mToast.show();
+ registerLayoutListener(mToast.getView());
}
});
mInstrumentation.waitForIdleSync();
@@ -275,6 +303,7 @@
assertEquals(Gravity.CENTER, mToast.getGravity());
assertEquals(0, mToast.getXOffset());
assertEquals(0, mToast.getYOffset());
+ assertLayoutDone(view);
int[] centerXY = new int[2];
view.getLocationOnScreen(centerXY);
assertShowAndHide(view);
@@ -283,6 +312,7 @@
public void run() {
mToast.setGravity(Gravity.BOTTOM, 0, 0);
mToast.show();
+ registerLayoutListener(mToast.getView());
}
});
mInstrumentation.waitForIdleSync();
@@ -291,6 +321,7 @@
assertEquals(Gravity.BOTTOM, mToast.getGravity());
assertEquals(0, mToast.getXOffset());
assertEquals(0, mToast.getYOffset());
+ assertLayoutDone(view);
int[] bottomXY = new int[2];
view.getLocationOnScreen(bottomXY);
assertShowAndHide(view);
@@ -306,6 +337,7 @@
public void run() {
mToast.setGravity(Gravity.BOTTOM, xOffset, yOffset);
mToast.show();
+ registerLayoutListener(mToast.getView());
}
});
mInstrumentation.waitForIdleSync();
@@ -314,6 +346,7 @@
assertEquals(Gravity.BOTTOM, mToast.getGravity());
assertEquals(xOffset, mToast.getXOffset());
assertEquals(yOffset, mToast.getYOffset());
+ assertLayoutDone(view);
int[] bottomOffsetXY = new int[2];
view.getLocationOnScreen(bottomOffsetXY);
assertShowAndHide(view);