Merge "Make TextViewCompat#setTextAppearance work with fonts" into oc-support-26.0-dev
diff --git a/compat/java/android/support/v4/content/res/ResourcesCompat.java b/compat/java/android/support/v4/content/res/ResourcesCompat.java
index 134149d..9a4b258 100644
--- a/compat/java/android/support/v4/content/res/ResourcesCompat.java
+++ b/compat/java/android/support/v4/content/res/ResourcesCompat.java
@@ -27,6 +27,7 @@
 import android.content.res.XmlResourceParser;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.support.annotation.ColorInt;
 import android.support.annotation.ColorRes;
 import android.support.annotation.DrawableRes;
@@ -36,7 +37,6 @@
 import android.support.annotation.RestrictTo;
 import android.support.v4.content.res.FontResourcesParserCompat.FamilyResourceEntry;
 import android.support.v4.graphics.TypefaceCompat;
-import android.support.v4.os.BuildCompat;
 import android.util.Log;
 import android.util.TypedValue;
 
@@ -194,7 +194,7 @@
         if (context.isRestricted()) {
             return null;
         }
-        if (BuildCompat.isAtLeastO()) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
             // Use framework support.
             return context.getResources().getFont(id);
         }
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java b/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
index afc951a..d8c4f16 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
@@ -238,7 +238,12 @@
                 mView.setTextColor(textColor);
             }
         }
+
+        updateTypefaceAndStyle(context, a);
         a.recycle();
+        if (mFontTypeface != null) {
+            mView.setTypeface(mFontTypeface, mStyle);
+        }
     }
 
     void setAllCaps(boolean allCaps) {
diff --git a/v7/appcompat/tests/res/layout/appcompat_textview_activity.xml b/v7/appcompat/tests/res/layout/appcompat_textview_activity.xml
index 056f2dc..5ef371a 100644
--- a/v7/appcompat/tests/res/layout/appcompat_textview_activity.xml
+++ b/v7/appcompat/tests/res/layout/appcompat_textview_activity.xml
@@ -213,6 +213,12 @@
             android:layout_height="wrap_content"
             android:textStyle="italic" />
 
+        <android.support.v7.widget.AppCompatTextView
+            android:id="@+id/textview_simple"
+            android:text="@string/sample_text1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+
     </LinearLayout>
 
 </ScrollView>
diff --git a/v7/appcompat/tests/res/values/styles.xml b/v7/appcompat/tests/res/values/styles.xml
index 05e2fa5..81f8493 100644
--- a/v7/appcompat/tests/res/values/styles.xml
+++ b/v7/appcompat/tests/res/values/styles.xml
@@ -65,4 +65,9 @@
     <style name="TextView_TextStyleOverride">
         <item name="android:textStyle">italic</item>
     </style>
+
+    <style name="TextView_FontResourceWithStyle">
+        <item name="fontFamily">@font/samplexmlfont</item>
+        <item name="android:textStyle">italic</item>
+    </style>
 </resources>
diff --git a/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java b/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
index cddf5e5..d1b00ad 100644
--- a/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
+++ b/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
@@ -28,9 +28,11 @@
 import android.graphics.Color;
 import android.graphics.Typeface;
 import android.os.Build;
+import android.support.test.annotation.UiThreadTest;
 import android.support.test.filters.SmallTest;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.content.res.ResourcesCompat;
+import android.support.v4.widget.TextViewCompat;
 import android.support.v7.appcompat.test.R;
 import android.widget.TextView;
 
@@ -232,4 +234,14 @@
 
         assertEquals(Typeface.ITALIC, textView.getTypeface().getStyle());
     }
+
+    @Test
+    @UiThreadTest
+    public void testFontResources_setTextAppearance() {
+        TextView textView = mContainer.findViewById(R.id.textview_simple);
+
+        TextViewCompat.setTextAppearance(textView, R.style.TextView_FontResourceWithStyle);
+
+        assertNotEquals(Typeface.DEFAULT, textView.getTypeface());
+    }
 }