Merge "Fix bug #11586041 Regression: text truncation in Clock" into klp-dev
diff --git a/tests/res/drawable/padding_0.9.png b/tests/res/drawable/padding_0.9.png
new file mode 100644
index 0000000..0127bf4
--- /dev/null
+++ b/tests/res/drawable/padding_0.9.png
Binary files differ
diff --git a/tests/res/layout/view_layout.xml b/tests/res/layout/view_layout.xml
index 4443ba8..cb444a5 100644
--- a/tests/res/layout/view_layout.xml
+++ b/tests/res/layout/view_layout.xml
@@ -50,4 +50,39 @@
         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="0dp"
+            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="0dp"
+            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="0dp"
+            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="0dp"
+            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" />
+
 </LinearLayout>
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index 5913892..5e0dbe9 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -2744,6 +2744,103 @@
         assertFalse(view.isPaddingOffsetRequired());
     }
 
+    @UiThreadTest
+    public void testPadding() {
+        MockView view = (MockView) mActivity.findViewById(R.id.mock_view_padding_full);
+        Drawable background = view.getBackground();
+        Rect backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:padding="0dp" and that should be the resulting padding
+        assertEquals(0, view.getPaddingLeft());
+        assertEquals(0, view.getPaddingTop());
+        assertEquals(0, view.getPaddingRight());
+        assertEquals(0, view.getPaddingBottom());
+
+        // LEFT case
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_left);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:paddingLeft="0dp" and that should be the resulting padding
+        assertEquals(0, view.getPaddingLeft());
+        assertEquals(backgroundPadding.top, view.getPaddingTop());
+        assertEquals(backgroundPadding.right, view.getPaddingRight());
+        assertEquals(backgroundPadding.bottom, view.getPaddingBottom());
+
+        // RIGHT case
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_right);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:paddingRight="0dp" and that should be the resulting padding
+        assertEquals(backgroundPadding.left, view.getPaddingLeft());
+        assertEquals(backgroundPadding.top, view.getPaddingTop());
+        assertEquals(0, view.getPaddingRight());
+        assertEquals(backgroundPadding.bottom, view.getPaddingBottom());
+
+        // TOP case
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_top);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:paddingTop="0dp" and that should be the resulting padding
+        assertEquals(backgroundPadding.left, view.getPaddingLeft());
+        assertEquals(0, view.getPaddingTop());
+        assertEquals(backgroundPadding.right, view.getPaddingRight());
+        assertEquals(backgroundPadding.bottom, view.getPaddingBottom());
+
+        // BOTTOM case
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_bottom);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:paddingBottom="0dp" and that should be the resulting padding
+        assertEquals(backgroundPadding.left, view.getPaddingLeft());
+        assertEquals(backgroundPadding.top, view.getPaddingTop());
+        assertEquals(backgroundPadding.right, view.getPaddingRight());
+        assertEquals(0, view.getPaddingBottom());
+    }
+
     public void testGetWindowVisibleDisplayFrame() {
         Rect outRect = new Rect();
         View view = new View(mActivity);