Do nothing for ContentResolver.registerContentObserver
ContentResolver.registerContentObserver is called with a user handle
argument from TextClock. We override this version of the method in
BridgeContentResolver to ensure this call does not trigger an exception.
Bug: 150151293
Test: RenderTests.testTextClock added
Change-Id: I33d03f47d90c4dc78e13db91b8905d2196813c58
(cherry picked from commit 4ca6dcadaecc6fcc323548aaede9248fd493ef5f)
diff --git a/bridge/src/com/android/layoutlib/bridge/android/BridgeContentResolver.java b/bridge/src/com/android/layoutlib/bridge/android/BridgeContentResolver.java
index 8d259d7..80a50a7 100644
--- a/bridge/src/com/android/layoutlib/bridge/android/BridgeContentResolver.java
+++ b/bridge/src/com/android/layoutlib/bridge/android/BridgeContentResolver.java
@@ -90,6 +90,15 @@
* Stub for the layoutlib bridge content resolver.
*/
@Override
+ public void registerContentObserver(Uri uri, boolean notifyForDescendents,
+ ContentObserver observer, int userHandle) {
+ // pass
+ }
+
+ /**
+ * Stub for the layoutlib bridge content resolver.
+ */
+ @Override
public void unregisterContentObserver(ContentObserver observer) {
// pass
}
diff --git a/bridge/tests/res/testApp/MyApplication/golden/textclock.png b/bridge/tests/res/testApp/MyApplication/golden/textclock.png
new file mode 100644
index 0000000..e33047d
--- /dev/null
+++ b/bridge/tests/res/testApp/MyApplication/golden/textclock.png
Binary files differ
diff --git a/bridge/tests/src/com/android/layoutlib/bridge/intensive/RenderTests.java b/bridge/tests/src/com/android/layoutlib/bridge/intensive/RenderTests.java
index 4f3c5cf..5118426 100644
--- a/bridge/tests/src/com/android/layoutlib/bridge/intensive/RenderTests.java
+++ b/bridge/tests/src/com/android/layoutlib/bridge/intensive/RenderTests.java
@@ -1732,4 +1732,37 @@
assertNotNull(image);
}
}
+
+ /**
+ * Tests that the TextClock widget renders without error
+ * <p/>
+ * http://b/150151293
+ */
+ @Test
+ public void testTextClock() throws ClassNotFoundException {
+ String layout =
+ "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" +
+ " android:padding=\"16dp\"\n" +
+ " android:orientation=\"horizontal\"\n" +
+ " android:layout_width=\"fill_parent\"\n" +
+ " android:layout_height=\"fill_parent\">\n" +
+ " <TextClock\n" +
+ " android:layout_height=\"wrap_content\"\n" +
+ " android:layout_width=\"wrap_content\"\n" +
+ " android:text=\"12:34\"" +
+ " android:textSize=\"18sp\" />\n" +
+ "</LinearLayout>\n";
+ LayoutPullParser parser = LayoutPullParser.createFromString(layout);
+ // Create LayoutLibCallback.
+ LayoutLibTestCallback layoutLibCallback =
+ new LayoutLibTestCallback(getLogger(), mDefaultClassLoader);
+ layoutLibCallback.initResources();
+ SessionParams params = getSessionParamsBuilder()
+ .setParser(parser)
+ .setCallback(layoutLibCallback)
+ .disableDecoration()
+ .build();
+
+ renderAndVerify(params, "textclock.png");
+ }
}