leanback: make description view GONE for empty text

Bug: 33484449
Test: testRowHeaderPresenter
Change-Id: I352c13b9085d6ea3cc040ce313b18d26fe6ff1c7
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/RowHeaderPresenter.java b/v17/leanback/src/android/support/v17/leanback/widget/RowHeaderPresenter.java
index 66dc12d..0d2b45e 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/RowHeaderPresenter.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/RowHeaderPresenter.java
@@ -18,6 +18,7 @@
 import android.graphics.Paint;
 import android.support.annotation.RestrictTo;
 import android.support.v17.leanback.R;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -125,6 +126,11 @@
         } else {
             vh.mTitleView.setText(headerItem.getName());
             if (vh.mDescriptionView != null) {
+                if (TextUtils.isEmpty(headerItem.getDescription())) {
+                    vh.mDescriptionView.setVisibility(View.GONE);
+                } else {
+                    vh.mDescriptionView.setVisibility(View.VISIBLE);
+                }
                 vh.mDescriptionView.setText(headerItem.getDescription());
             }
             viewHolder.view.setContentDescription(headerItem.getContentDescription());
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/widget/PresenterTest.java b/v17/leanback/tests/java/android/support/v17/leanback/widget/PresenterTest.java
index 8923d36..738c3e7 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/widget/PresenterTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/widget/PresenterTest.java
@@ -107,6 +107,30 @@
     }
 
     @Test
+    public void testRowHeaderPresenter() {
+        RowHeaderPresenter p = new RowHeaderPresenter();
+        p.setNullItemVisibilityGone(true);
+        RowHeaderPresenter.ViewHolder vh = (RowHeaderPresenter.ViewHolder)
+                p.onCreateViewHolder(new FrameLayout(mContext));
+        p.onBindViewHolder(vh, null);
+        assertEquals("Header visibility", View.GONE, vh.view.getVisibility());
+        p.onBindViewHolder(vh, new Row(null));
+        assertEquals("Header visibility", View.GONE, vh.view.getVisibility());
+
+        p.onBindViewHolder(vh, new Row(new HeaderItem("")));
+        assertEquals("Header visibility", View.VISIBLE, vh.view.getVisibility());
+        assertEquals("Header Description visibility", View.GONE,
+                vh.mDescriptionView.getVisibility());
+
+        HeaderItem item = new HeaderItem("");
+        item.setDescription("description");
+        p.onBindViewHolder(vh, new Row(item));
+        assertEquals("Header visibility", View.VISIBLE, vh.view.getVisibility());
+        assertEquals("Header Description visibility", View.VISIBLE,
+                vh.mDescriptionView.getVisibility());
+    }
+
+    @Test
     public void testPlaybackControlsRowPresenter() {
         Context context = new ContextThemeWrapper(mContext, R.style.Theme_Leanback);
         Presenter detailsPresenter = new AbstractDetailsDescriptionPresenter() {