Fix and suppress an assortment of ErrorProne warnings.
Test: ./gradlew assembleErrorProne now has fewer warnings
Change-Id: I445c7dfd36b33243771eb7821562ca468851ad8a
diff --git a/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy b/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
index 8976080..77a58f8 100644
--- a/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
+++ b/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
@@ -17,7 +17,6 @@
package android.support
import com.android.build.gradle.LibraryExtension
-import com.android.build.gradle.api.AndroidSourceSet
import com.android.build.gradle.api.LibraryVariant
import com.android.builder.core.BuilderConstants
import com.google.common.collect.ImmutableMap
@@ -184,12 +183,13 @@
if (libraryVariant.getBuildType().getName().equals("errorProne")) {
libraryVariant.getJavaCompile().setToolChain(toolChain);
- // TODO(aurimas): remove this once all these warnings are fixed.
libraryVariant.getJavaCompile().options.compilerArgs += [
- '-Xep:ArrayToString:WARN',
+ // TODO(aurimas): remove this once all these warnings are fixed.
'-Xep:RectIntersectReturnValueIgnored:WARN',
- '-Xep:FallThrough:WARN',
- '-XDcompilePolicy=simple' // Workaround for b/36098770
+ '-XDcompilePolicy=simple', // Workaround for b/36098770
+
+ // Enforce the following checks.
+ '-Xep:MissingOverride:ERROR',
]
}
}
diff --git a/compat/java/android/support/v4/graphics/TypefaceCompatBaseImpl.java b/compat/java/android/support/v4/graphics/TypefaceCompatBaseImpl.java
index dd40b45..ffc57a1 100644
--- a/compat/java/android/support/v4/graphics/TypefaceCompatBaseImpl.java
+++ b/compat/java/android/support/v4/graphics/TypefaceCompatBaseImpl.java
@@ -165,6 +165,7 @@
}
@Nullable
+ @Override
public Typeface createFromFontFamilyFilesResourceEntry(
FontFamilyFilesResourceEntry filesEntry, Resources resources, int id, int style) {
Typeface typeface = createFromResources(filesEntry, resources, id, style);
diff --git a/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java b/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
index 53f43ef..d6ee9bc 100644
--- a/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
+++ b/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
@@ -544,6 +544,7 @@
*
* @see #wrap(Drawable)
*/
+ @SuppressWarnings("TypeParameterUnusedInFormals")
public static <T extends Drawable> T unwrap(@NonNull Drawable drawable) {
if (drawable instanceof DrawableWrapper) {
return (T) ((DrawableWrapper) drawable).getWrappedDrawable();
diff --git a/compat/java/android/support/v4/os/LocaleListInterface.java b/compat/java/android/support/v4/os/LocaleListInterface.java
index 9332d51..ce310e6 100644
--- a/compat/java/android/support/v4/os/LocaleListInterface.java
+++ b/compat/java/android/support/v4/os/LocaleListInterface.java
@@ -46,10 +46,13 @@
@IntRange(from = -1)
int indexOf(Locale locale);
- boolean equals(Object other);
+ @Override
+ boolean equals(Object other);
+ @Override
int hashCode();
+ @Override
String toString();
String toLanguageTags();
diff --git a/compat/java/android/support/v4/provider/FontsContractCompat.java b/compat/java/android/support/v4/provider/FontsContractCompat.java
index b2ca184..c465a4c 100644
--- a/compat/java/android/support/v4/provider/FontsContractCompat.java
+++ b/compat/java/android/support/v4/provider/FontsContractCompat.java
@@ -184,6 +184,7 @@
try {
return sBackgroundThread.postAndWait(new Callable<Typeface>() {
+ @Override
public Typeface call() throws Exception {
FontFamilyResult result = fetchFonts(context, null, request);
if (result.getStatusCode() == FontFamilyResult.STATUS_OK) {
diff --git a/compat/java/android/support/v4/util/ArraySet.java b/compat/java/android/support/v4/util/ArraySet.java
index ae6c3e6..ab080fa 100644
--- a/compat/java/android/support/v4/util/ArraySet.java
+++ b/compat/java/android/support/v4/util/ArraySet.java
@@ -156,6 +156,7 @@
return ~end;
}
+ @SuppressWarnings("ArrayToString")
private void allocArrays(final int size) {
if (size == (BASE_SIZE * 2)) {
synchronized (ArraySet.class) {
@@ -195,6 +196,7 @@
mArray = new Object[size];
}
+ @SuppressWarnings("ArrayToString")
private static void freeArrays(final int[] hashes, final Object[] array, final int size) {
if (hashes.length == (BASE_SIZE * 2)) {
synchronized (ArraySet.class) {
diff --git a/compat/java/android/support/v4/util/SimpleArrayMap.java b/compat/java/android/support/v4/util/SimpleArrayMap.java
index aab757b..06e68f0 100644
--- a/compat/java/android/support/v4/util/SimpleArrayMap.java
+++ b/compat/java/android/support/v4/util/SimpleArrayMap.java
@@ -159,6 +159,7 @@
return ~end;
}
+ @SuppressWarnings("ArrayToString")
private void allocArrays(final int size) {
if (size == (BASE_SIZE*2)) {
synchronized (ArrayMap.class) {
@@ -194,6 +195,7 @@
mArray = new Object[size<<1];
}
+ @SuppressWarnings("ArrayToString")
private static void freeArrays(final int[] hashes, final Object[] array, final int size) {
if (hashes.length == (BASE_SIZE*2)) {
synchronized (ArrayMap.class) {
diff --git a/compat/jellybean/android/support/v4/app/NotificationCompatJellybean.java b/compat/jellybean/android/support/v4/app/NotificationCompatJellybean.java
index 709e3d4..bf313a0 100644
--- a/compat/jellybean/android/support/v4/app/NotificationCompatJellybean.java
+++ b/compat/jellybean/android/support/v4/app/NotificationCompatJellybean.java
@@ -347,6 +347,7 @@
}
}
+ @SuppressWarnings("LiteralClassName")
private static boolean ensureActionReflectionReadyLocked() {
if (sActionsAccessFailed) {
return false;
diff --git a/core-ui/java/android/support/v4/widget/DrawerLayout.java b/core-ui/java/android/support/v4/widget/DrawerLayout.java
index 8b1ce1e..fe35212 100644
--- a/core-ui/java/android/support/v4/widget/DrawerLayout.java
+++ b/core-ui/java/android/support/v4/widget/DrawerLayout.java
@@ -1273,8 +1273,9 @@
}
mScrimOpacity = scrimOpacity;
- // "|" used on purpose; both need to run.
- if (mLeftDragger.continueSettling(true) | mRightDragger.continueSettling(true)) {
+ boolean leftDraggerSettling = mLeftDragger.continueSettling(true);
+ boolean rightDraggerSettling = mRightDragger.continueSettling(true);
+ if (leftDraggerSettling || rightDraggerSettling) {
ViewCompat.postInvalidateOnAnimation(this);
}
}
@@ -1430,6 +1431,7 @@
return false;
}
+ @SuppressWarnings("ShortCircuitBoolean")
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getActionMasked();
diff --git a/design/src/android/support/design/widget/CollapsingTextHelper.java b/design/src/android/support/design/widget/CollapsingTextHelper.java
index f2b1a7f..a33cabc 100644
--- a/design/src/android/support/design/widget/CollapsingTextHelper.java
+++ b/design/src/android/support/design/widget/CollapsingTextHelper.java
@@ -271,14 +271,14 @@
}
void setCollapsedTypeface(Typeface typeface) {
- if (mCollapsedTypeface != typeface) {
+ if (areTypefacesDifferent(mCollapsedTypeface, typeface)) {
mCollapsedTypeface = typeface;
recalculate();
}
}
void setExpandedTypeface(Typeface typeface) {
- if (mExpandedTypeface != typeface) {
+ if (areTypefacesDifferent(mExpandedTypeface, typeface)) {
mExpandedTypeface = typeface;
recalculate();
}
@@ -542,6 +542,10 @@
ViewCompat.postInvalidateOnAnimation(mView);
}
+ private boolean areTypefacesDifferent(Typeface first, Typeface second) {
+ return (first != null && !first.equals(second)) || (first == null && second != null);
+ }
+
private void calculateUsingTextSize(final float textSize) {
if (mText == null) return;
@@ -555,14 +559,14 @@
if (isClose(textSize, mCollapsedTextSize)) {
newTextSize = mCollapsedTextSize;
mScale = 1f;
- if (mCurrentTypeface != mCollapsedTypeface) {
+ if (areTypefacesDifferent(mCurrentTypeface, mCollapsedTypeface)) {
mCurrentTypeface = mCollapsedTypeface;
updateDrawText = true;
}
availableWidth = collapsedWidth;
} else {
newTextSize = mExpandedTextSize;
- if (mCurrentTypeface != mExpandedTypeface) {
+ if (areTypefacesDifferent(mCurrentTypeface, mExpandedTypeface)) {
mCurrentTypeface = mExpandedTypeface;
updateDrawText = true;
}
diff --git a/design/src/android/support/design/widget/CoordinatorLayout.java b/design/src/android/support/design/widget/CoordinatorLayout.java
index 6528592..5ee3b32 100644
--- a/design/src/android/support/design/widget/CoordinatorLayout.java
+++ b/design/src/android/support/design/widget/CoordinatorLayout.java
@@ -1781,6 +1781,7 @@
mNestedScrollingTarget = null;
}
+ @Override
public void onNestedScroll(View target, int dxConsumed, int dyConsumed,
int dxUnconsumed, int dyUnconsumed) {
onNestedScroll(target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed,
diff --git a/design/src/android/support/design/widget/TextInputLayout.java b/design/src/android/support/design/widget/TextInputLayout.java
index 3993efe..bd02bc3 100644
--- a/design/src/android/support/design/widget/TextInputLayout.java
+++ b/design/src/android/support/design/widget/TextInputLayout.java
@@ -291,7 +291,8 @@
* @param typeface typeface to use, or {@code null} to use the default.
*/
public void setTypeface(@Nullable Typeface typeface) {
- if (typeface != mTypeface) {
+ if ((mTypeface != null && !mTypeface.equals(typeface))
+ || (mTypeface == null && typeface != null)) {
mTypeface = typeface;
mCollapsingTextHelper.setTypefaces(typeface);
diff --git a/v13/java/android/support/v13/app/FragmentPagerAdapter.java b/v13/java/android/support/v13/app/FragmentPagerAdapter.java
index a62d14c..082f883 100644
--- a/v13/java/android/support/v13/app/FragmentPagerAdapter.java
+++ b/v13/java/android/support/v13/app/FragmentPagerAdapter.java
@@ -87,6 +87,7 @@
}
}
+ @SuppressWarnings("ReferenceEquality")
@Override
public Object instantiateItem(ViewGroup container, int position) {
if (mCurTransaction == null) {
@@ -125,6 +126,7 @@
mCurTransaction.detach((Fragment)object);
}
+ @SuppressWarnings("ReferenceEquality")
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
Fragment fragment = (Fragment)object;
diff --git a/v13/java/android/support/v13/app/FragmentStatePagerAdapter.java b/v13/java/android/support/v13/app/FragmentStatePagerAdapter.java
index 2f51156..8907fec 100644
--- a/v13/java/android/support/v13/app/FragmentStatePagerAdapter.java
+++ b/v13/java/android/support/v13/app/FragmentStatePagerAdapter.java
@@ -148,6 +148,7 @@
mCurTransaction.remove(fragment);
}
+ @SuppressWarnings("ReferenceEquality")
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
Fragment fragment = (Fragment)object;
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java b/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
index 51b3c34..3d9647a 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
@@ -185,6 +185,7 @@
getDelegate().onStop();
}
+ @SuppressWarnings("TypeParameterUnusedInFormals")
@Override
public <T extends View> T findViewById(@IdRes int id) {
return getDelegate().findViewById(id);
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java b/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
index b5144cd..a2fac6f 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
@@ -292,6 +292,7 @@
*
* @return The view if found or null otherwise.
*/
+ @SuppressWarnings("TypeParameterUnusedInFormals")
@Nullable
public abstract <T extends View> T findViewById(@IdRes int id);
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplV9.java b/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplV9.java
index 1b9dd79..1daee3d 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplV9.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplV9.java
@@ -226,6 +226,7 @@
invalidateOptionsMenu();
}
+ @SuppressWarnings("TypeParameterUnusedInFormals")
@Nullable
@Override
public <T extends View> T findViewById(@IdRes int id) {
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatDialog.java b/v7/appcompat/src/android/support/v7/app/AppCompatDialog.java
index f41e4b0..076b1ef 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatDialog.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatDialog.java
@@ -93,6 +93,7 @@
getDelegate().setContentView(view, params);
}
+ @SuppressWarnings("TypeParameterUnusedInFormals")
@Nullable
@Override
public <T extends View> T findViewById(@IdRes int id) {
diff --git a/v7/appcompat/src/android/support/v7/app/ToolbarActionBar.java b/v7/appcompat/src/android/support/v7/app/ToolbarActionBar.java
index 57ba846..79059c7 100644
--- a/v7/appcompat/src/android/support/v7/app/ToolbarActionBar.java
+++ b/v7/appcompat/src/android/support/v7/app/ToolbarActionBar.java
@@ -257,7 +257,7 @@
@Override
public void setDisplayOptions(@DisplayOptions int options, @DisplayOptions int mask) {
final int currentOptions = mDecorToolbar.getDisplayOptions();
- mDecorToolbar.setDisplayOptions(options & mask | currentOptions & ~mask);
+ mDecorToolbar.setDisplayOptions((options & mask) | (currentOptions & ~mask));
}
@Override
diff --git a/v7/appcompat/src/android/support/v7/app/TwilightCalculator.java b/v7/appcompat/src/android/support/v7/app/TwilightCalculator.java
index f048e55..02fe5e8 100644
--- a/v7/appcompat/src/android/support/v7/app/TwilightCalculator.java
+++ b/v7/appcompat/src/android/support/v7/app/TwilightCalculator.java
@@ -46,6 +46,7 @@
private static final float J0 = 0.0009f;
// correction for civil twilight
+ @SuppressWarnings("FloatingPointLiteralPrecision")
private static final float ALTIDUTE_CORRECTION_CIVIL_TWILIGHT = -0.104719755f;
// coefficients for calculating Equation of Center.
@@ -53,6 +54,7 @@
private static final float C2 = 0.000349066f;
private static final float C3 = 0.000005236f;
+ @SuppressWarnings("FloatingPointLiteralPrecision")
private static final float OBLIQUITY = 0.40927971f;
// Java time on Jan 1, 2000 12:00 UTC.
@@ -82,6 +84,7 @@
* @param latitude latitude in degrees.
* @param longitude latitude in degrees.
*/
+ @SuppressWarnings("FloatingPointLiteralPrecision")
public void calculateTwilight(long time, double latitude, double longitude) {
final float daysSince2000 = (float) (time - UTC_2000) / DateUtils.DAY_IN_MILLIS;
diff --git a/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java b/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
index 5f4cf95..5142224 100644
--- a/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
+++ b/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
@@ -386,7 +386,7 @@
final float barThickness = mPaint.getStrokeWidth();
final int remainingSpace = (int) (bounds.height() - barThickness * 3 - mBarGap * 2);
float yOffset = (remainingSpace / 4) * 2; // making sure it is a multiple of 2.
- yOffset += barThickness * 1.5 + mBarGap;
+ yOffset += barThickness * 1.5f + mBarGap;
canvas.translate(bounds.centerX(), yOffset);
if (mSpin) {
diff --git a/v7/appcompat/src/android/support/v7/view/SupportMenuInflater.java b/v7/appcompat/src/android/support/v7/view/SupportMenuInflater.java
index 40db06f..0cc5722 100644
--- a/v7/appcompat/src/android/support/v7/view/SupportMenuInflater.java
+++ b/v7/appcompat/src/android/support/v7/view/SupportMenuInflater.java
@@ -539,7 +539,7 @@
return itemAdded;
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({"unchecked", "TypeParameterUnusedInFormals"})
private <T> T newInstance(String className, Class<?>[] constructorSignature,
Object[] arguments) {
try {
diff --git a/v7/appcompat/src/android/support/v7/view/menu/ActionMenuItemView.java b/v7/appcompat/src/android/support/v7/view/menu/ActionMenuItemView.java
index 67aa1b8..cc20211 100644
--- a/v7/appcompat/src/android/support/v7/view/menu/ActionMenuItemView.java
+++ b/v7/appcompat/src/android/support/v7/view/menu/ActionMenuItemView.java
@@ -218,12 +218,12 @@
if (width > mMaxIconSize) {
final float scale = (float) mMaxIconSize / width;
width = mMaxIconSize;
- height *= scale;
+ height = (int) (width * scale);
}
if (height > mMaxIconSize) {
final float scale = (float) mMaxIconSize / height;
height = mMaxIconSize;
- width *= scale;
+ width = (int) (width * scale);
}
icon.setBounds(0, 0, width, height);
}
diff --git a/v7/appcompat/src/android/support/v7/widget/ActionMenuView.java b/v7/appcompat/src/android/support/v7/widget/ActionMenuView.java
index 517771b..76e06da 100644
--- a/v7/appcompat/src/android/support/v7/widget/ActionMenuView.java
+++ b/v7/appcompat/src/android/support/v7/widget/ActionMenuView.java
@@ -788,7 +788,7 @@
}
}
- private class ActionMenuPresenterCallback implements ActionMenuPresenter.Callback {
+ private static class ActionMenuPresenterCallback implements ActionMenuPresenter.Callback {
ActionMenuPresenterCallback() {
}
diff --git a/v7/appcompat/src/android/support/v7/widget/ActivityChooserModel.java b/v7/appcompat/src/android/support/v7/widget/ActivityChooserModel.java
index 2aa4cb5..698f1a3 100644
--- a/v7/appcompat/src/android/support/v7/widget/ActivityChooserModel.java
+++ b/v7/appcompat/src/android/support/v7/widget/ActivityChooserModel.java
@@ -849,7 +849,7 @@
/**
* Represents an activity.
*/
- public final class ActivityResolveInfo implements Comparable<ActivityResolveInfo> {
+ public static final class ActivityResolveInfo implements Comparable<ActivityResolveInfo> {
/**
* The {@link ResolveInfo} of the activity.
@@ -912,7 +912,7 @@
/**
* Default activity sorter implementation.
*/
- private final class DefaultSorter implements ActivitySorter {
+ private static final class DefaultSorter implements ActivitySorter {
private static final float WEIGHT_DECAY_COEFFICIENT = 0.95f;
private final Map<ComponentName, ActivityResolveInfo> mPackageNameToActivityMap =
diff --git a/v7/appcompat/src/android/support/v7/widget/ActivityChooserView.java b/v7/appcompat/src/android/support/v7/widget/ActivityChooserView.java
index c9e2e1b..94624ad 100644
--- a/v7/appcompat/src/android/support/v7/widget/ActivityChooserView.java
+++ b/v7/appcompat/src/android/support/v7/widget/ActivityChooserView.java
@@ -539,7 +539,7 @@
// Default activity button.
final int activityCount = mAdapter.getActivityCount();
final int historySize = mAdapter.getHistorySize();
- if (activityCount==1 || activityCount > 1 && historySize > 0) {
+ if (activityCount == 1 || (activityCount > 1 && historySize > 0)) {
mDefaultActivityButton.setVisibility(VISIBLE);
ResolveInfo activity = mAdapter.getDefaultActivity();
PackageManager packageManager = getContext().getPackageManager();
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java b/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
index 0b8895c..bf05f4d 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
@@ -49,7 +49,7 @@
}
@Override
- protected void onDraw(Canvas canvas) {
+ protected synchronized void onDraw(Canvas canvas) {
super.onDraw(canvas);
mAppCompatSeekBarHelper.drawTickMarks(canvas);
}
diff --git a/v7/appcompat/src/android/support/v7/widget/ButtonBarLayout.java b/v7/appcompat/src/android/support/v7/widget/ButtonBarLayout.java
index cc68d11..b47a568 100644
--- a/v7/appcompat/src/android/support/v7/widget/ButtonBarLayout.java
+++ b/v7/appcompat/src/android/support/v7/widget/ButtonBarLayout.java
@@ -129,7 +129,7 @@
final int secondVisible = getNextVisibleChildIndex(firstVisible + 1);
if (secondVisible >= 0) {
minHeight += getChildAt(secondVisible).getPaddingTop()
- + PEEK_BUTTON_DP * getResources().getDisplayMetrics().density;
+ + (int) (PEEK_BUTTON_DP * getResources().getDisplayMetrics().density);
}
} else {
minHeight += getPaddingBottom();
diff --git a/v7/appcompat/src/android/support/v7/widget/LinearLayoutCompat.java b/v7/appcompat/src/android/support/v7/widget/LinearLayoutCompat.java
index c7a3aee..6abdb75 100644
--- a/v7/appcompat/src/android/support/v7/widget/LinearLayoutCompat.java
+++ b/v7/appcompat/src/android/support/v7/widget/LinearLayoutCompat.java
@@ -771,7 +771,7 @@
// shrink them if they extend beyond our current bounds. If we skipped
// measurement on any children, we need to measure them now.
int delta = heightSize - mTotalLength;
- if (skippedMeasure || delta != 0 && totalWeight > 0.0f) {
+ if (skippedMeasure || (delta != 0 && totalWeight > 0.0f)) {
float weightSum = mWeightSum > 0.0f ? mWeightSum : totalWeight;
mTotalLength = 0;
@@ -1155,7 +1155,7 @@
// shrink them if they extend beyond our current bounds. If we skipped
// measurement on any children, we need to measure them now.
int delta = widthSize - mTotalLength;
- if (skippedMeasure || delta != 0 && totalWeight > 0.0f) {
+ if (skippedMeasure || (delta != 0 && totalWeight > 0.0f)) {
float weightSum = mWeightSum > 0.0f ? mWeightSum : totalWeight;
maxAscent[0] = maxAscent[1] = maxAscent[2] = maxAscent[3] = -1;
diff --git a/v7/appcompat/src/android/support/v7/widget/SwitchCompat.java b/v7/appcompat/src/android/support/v7/widget/SwitchCompat.java
index 72c20b5..44916ca 100644
--- a/v7/appcompat/src/android/support/v7/widget/SwitchCompat.java
+++ b/v7/appcompat/src/android/support/v7/widget/SwitchCompat.java
@@ -168,7 +168,7 @@
/** Bottom bound for drawing the switch track and thumb. */
private int mSwitchBottom;
- private TextPaint mTextPaint;
+ private final TextPaint mTextPaint;
private ColorStateList mTextColors;
private Layout mOnLayout;
private Layout mOffLayout;
@@ -386,9 +386,10 @@
* {@link #setSwitchTypeface(Typeface, int)} to get the appearance
* that you actually want.
*/
- public void setSwitchTypeface(Typeface tf) {
- if (mTextPaint.getTypeface() != tf) {
- mTextPaint.setTypeface(tf);
+ public void setSwitchTypeface(Typeface typeface) {
+ if ((mTextPaint.getTypeface() != null && !mTextPaint.getTypeface().equals(typeface))
+ || (mTextPaint.getTypeface() == null && typeface != null)) {
+ mTextPaint.setTypeface(typeface);
requestLayout();
invalidate();
diff --git a/v7/appcompat/src/android/support/v7/widget/Toolbar.java b/v7/appcompat/src/android/support/v7/widget/Toolbar.java
index bd770c2..45e2583 100644
--- a/v7/appcompat/src/android/support/v7/widget/Toolbar.java
+++ b/v7/appcompat/src/android/support/v7/widget/Toolbar.java
@@ -1792,8 +1792,8 @@
final View bottomChild = layoutSubtitle ? mSubtitleTextView : mTitleTextView;
final LayoutParams toplp = (LayoutParams) topChild.getLayoutParams();
final LayoutParams bottomlp = (LayoutParams) bottomChild.getLayoutParams();
- final boolean titleHasWidth = layoutTitle && mTitleTextView.getMeasuredWidth() > 0
- || layoutSubtitle && mSubtitleTextView.getMeasuredWidth() > 0;
+ final boolean titleHasWidth = (layoutTitle && (mTitleTextView.getMeasuredWidth() > 0))
+ || (layoutSubtitle && mSubtitleTextView.getMeasuredWidth() > 0);
switch (mGravity & Gravity.VERTICAL_GRAVITY_MASK) {
case Gravity.TOP:
diff --git a/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java b/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
index cb8c141..057d575 100644
--- a/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
+++ b/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
@@ -11758,6 +11758,7 @@
* to
* preserve cross functionality and avoid conflicts.
*/
+ @SuppressWarnings("TypeParameterUnusedInFormals")
public <T> T get(int resourceId) {
if (mData == null) {
return null;