Backport ContactsContract methods (1/2)

Another change is using onPull(float) on pre-L since onPull(float, float)
was added in API level 21.

Bug: 25629359
Change-Id: I06cf84a640866869094ba3a4561ef80dd47c140b
diff --git a/src/com/android/contacts/compat/EdgeEffectCompat.java b/src/com/android/contacts/compat/EdgeEffectCompat.java
new file mode 100644
index 0000000..92999a0
--- /dev/null
+++ b/src/com/android/contacts/compat/EdgeEffectCompat.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts.compat;
+
+import android.widget.EdgeEffect;
+import com.android.contacts.common.compat.CompatUtils;
+
+/**
+ * Compatibility class for {@link android.widget.EdgeEffect}
+ * The android.support.v4.widget.EdgeEffectCompat doesn't support customized color, so we write
+ * our own and keep using EdgeEffect to customize color.
+ */
+public class EdgeEffectCompat {
+    /**
+     * Compatibility method for {@link EdgeEffect#onPull(float, float)}, which is only available
+     * on Lollipop+.
+     */
+    public static void onPull(EdgeEffect edgeEffect, float deltaDistance, float displacement) {
+        if (CompatUtils.isLollipopCompatible()) {
+            edgeEffect.onPull(deltaDistance, displacement);
+        } else {
+            edgeEffect.onPull(deltaDistance);
+        }
+    }
+}
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 690cd51..516958e 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -109,6 +109,7 @@
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.activity.RequestPermissionsActivity;
 import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.EventCompat;
 import com.android.contacts.common.dialog.CallSubjectDialog;
 import com.android.contacts.common.editor.SelectAccountDialogFragment;
 import com.android.contacts.common.interactions.TouchPointManager;
@@ -1803,7 +1804,7 @@
             }
             header = res.getString(R.string.header_event_entry);
             if (event.hasKindTypeColumn(kind)) {
-                subHeader = Event.getTypeLabel(res, event.getKindTypeColumn(kind),
+                subHeader = EventCompat.getTypeLabel(res, event.getKindTypeColumn(kind),
                         event.getLabel()).toString();
             }
             text = DateUtils.formatDate(context, dataString);
diff --git a/src/com/android/contacts/widget/MultiShrinkScroller.java b/src/com/android/contacts/widget/MultiShrinkScroller.java
index e7ca823..1fbd3ae 100644
--- a/src/com/android/contacts/widget/MultiShrinkScroller.java
+++ b/src/com/android/contacts/widget/MultiShrinkScroller.java
@@ -2,6 +2,7 @@
 
 import com.android.contacts.R;
 import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.compat.EdgeEffectCompat;
 import com.android.contacts.quickcontact.ExpandingEntryCardView;
 import com.android.contacts.test.NeededForReflection;
 import com.android.contacts.util.SchedulingUtils;
@@ -501,7 +502,8 @@
                     if (delta > distanceFromMaxScrolling) {
                         // The ScrollView is being pulled upwards while there is no more
                         // content offscreen, and the view port is already fully expanded.
-                        mEdgeGlowBottom.onPull(delta / getHeight(), 1 - event.getX() / getWidth());
+                        EdgeEffectCompat.onPull(mEdgeGlowBottom, delta / getHeight(),
+                                1 - event.getX() / getWidth());
                     }
 
                     if (!mEdgeGlowBottom.isFinished()) {