Merge "Increase visibility of Transition.areValuesChanged() to protected to allow subclasses outside the android.transition package to override it."
diff --git a/api/current.txt b/api/current.txt
index 118223c..7539ae6 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -31807,6 +31807,7 @@
     method public android.transition.Transition addTarget(java.lang.String);
     method public android.transition.Transition addTarget(java.lang.Class);
     method public android.transition.Transition addTarget(android.view.View);
+    method protected boolean areValuesChanged(android.transition.TransitionValues, android.transition.TransitionValues);
     method public boolean canRemoveViews();
     method public abstract void captureEndValues(android.transition.TransitionValues);
     method public abstract void captureStartValues(android.transition.TransitionValues);
diff --git a/api/system-current.txt b/api/system-current.txt
index 903c40c..845d455 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -33966,6 +33966,7 @@
     method public android.transition.Transition addTarget(java.lang.String);
     method public android.transition.Transition addTarget(java.lang.Class);
     method public android.transition.Transition addTarget(android.view.View);
+    method protected boolean areValuesChanged(android.transition.TransitionValues, android.transition.TransitionValues);
     method public boolean canRemoveViews();
     method public abstract void captureEndValues(android.transition.TransitionValues);
     method public abstract void captureStartValues(android.transition.TransitionValues);
diff --git a/core/java/android/transition/Transition.java b/core/java/android/transition/Transition.java
index 2705bcf..c942042 100644
--- a/core/java/android/transition/Transition.java
+++ b/core/java/android/transition/Transition.java
@@ -1762,7 +1762,17 @@
         runAnimators();
     }
 
-    boolean areValuesChanged(TransitionValues oldValues, TransitionValues newValues) {
+    /**
+     * Returns whether transition values have changed between the start scene and the end scene
+     * (thus determining whether animation is required). The default implementation compares the
+     * property values returned from {@link #getTransitionProperties()}, or all property values if
+     * {@code getTransitionProperties()} returns null. Subclasses may override this method to
+     * provide logic more specific to their transition implementation.
+     *
+     * @param oldValues the first set of values, may be {@code null}
+     * @param newValues the second set of values, may be {@code null}
+     */
+    protected boolean areValuesChanged(TransitionValues oldValues, TransitionValues newValues) {
         boolean valuesChanged = false;
         // if oldValues null, then transition didn't care to stash values,
         // and won't get canceled
diff --git a/core/java/android/transition/Visibility.java b/core/java/android/transition/Visibility.java
index 8779229..26dca43 100644
--- a/core/java/android/transition/Visibility.java
+++ b/core/java/android/transition/Visibility.java
@@ -182,7 +182,7 @@
         return visibility == View.VISIBLE && parent != null;
     }
 
-    private VisibilityInfo getVisibilityChangeInfo(TransitionValues startValues,
+    private static VisibilityInfo getVisibilityChangeInfo(TransitionValues startValues,
             TransitionValues endValues) {
         final VisibilityInfo visInfo = new VisibilityInfo();
         visInfo.visibilityChange = false;
@@ -484,7 +484,7 @@
     }
 
     @Override
-    boolean areValuesChanged(TransitionValues oldValues, TransitionValues newValues) {
+    protected boolean areValuesChanged(TransitionValues oldValues, TransitionValues newValues) {
         if (oldValues == null && newValues == null) {
             return false;
         }