Merge changes I00772405,Id9a6c59d am: 6afea5ae88 am: 5a345c0c33
am: aa09038804

Change-Id: I420b89d9e9c640cc8c37ea33cc8e3311cf241a6f
diff --git a/java/com/android/dialer/voicemail/settings/RecordButton.java b/java/com/android/dialer/voicemail/settings/RecordButton.java
index d626370..ac64cde 100644
--- a/java/com/android/dialer/voicemail/settings/RecordButton.java
+++ b/java/com/android/dialer/voicemail/settings/RecordButton.java
@@ -18,10 +18,12 @@
 
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.support.v4.content.ContextCompat;
 import android.util.AttributeSet;
 import android.widget.Button;
@@ -94,6 +96,8 @@
     recordedDrawable = ContextCompat.getDrawable(getContext(), R.drawable.start_playback_drawable);
     playingDrawable = ContextCompat.getDrawable(getContext(), R.drawable.stop_playback_drawable);
 
+    fixQuantumIconTint(Color.WHITE);
+
     mainTrackPaint = getBasePaint(R.color.dialer_call_green);
     secondaryTrackPaint = getBasePaint(R.color.dialer_call_green);
     secondaryTrackPaint.setAlpha(secondaryTrackAlpha);
@@ -101,6 +105,16 @@
     setState(RecordVoicemailGreetingActivity.RECORD_GREETING_INIT);
   }
 
+  private void fixQuantumIconTint(int color) {
+    Drawable playArrow = ((LayerDrawable) recordedDrawable).findDrawableByLayerId(R.id.play_icon);
+    playArrow.mutate().setTint(color);
+    ((LayerDrawable) recordedDrawable).setDrawableByLayerId(R.id.play_icon, playArrow);
+
+    Drawable micIcon = ((LayerDrawable) readyDrawable).findDrawableByLayerId(R.id.record_icon);
+    micIcon.mutate().setTint(color);
+    ((LayerDrawable) readyDrawable).setDrawableByLayerId(R.id.record_icon, micIcon);
+  }
+
   /** Returns Paint with base attributes for drawing the main and secondary tracks */
   private Paint getBasePaint(int id) {
     Paint paint = new Paint();
diff --git a/java/com/android/dialer/voicemail/settings/res/drawable/start_playback_drawable.xml b/java/com/android/dialer/voicemail/settings/res/drawable/start_playback_drawable.xml
index 2a7ec4a..9791746 100644
--- a/java/com/android/dialer/voicemail/settings/res/drawable/start_playback_drawable.xml
+++ b/java/com/android/dialer/voicemail/settings/res/drawable/start_playback_drawable.xml
@@ -21,6 +21,7 @@
     </shape>
   </item>
   <item
+      android:id="@+id/play_icon"
       android:top="24dp"
       android:bottom="24dp"
       android:left="24dp"
diff --git a/java/com/android/dialer/voicemail/settings/res/drawable/start_recording_drawable.xml b/java/com/android/dialer/voicemail/settings/res/drawable/start_recording_drawable.xml
index 42d27fc..8a4d9e7 100644
--- a/java/com/android/dialer/voicemail/settings/res/drawable/start_recording_drawable.xml
+++ b/java/com/android/dialer/voicemail/settings/res/drawable/start_recording_drawable.xml
@@ -21,6 +21,7 @@
     </shape>
   </item>
   <item
+      android:id="@+id/record_icon"
       android:top="24dp"
       android:bottom="24dp"
       android:left="24dp"
diff --git a/java/com/android/incallui/calllocation/impl/LocationHelper.java b/java/com/android/incallui/calllocation/impl/LocationHelper.java
index 7fbd60d..5c105e4 100644
--- a/java/com/android/incallui/calllocation/impl/LocationHelper.java
+++ b/java/com/android/incallui/calllocation/impl/LocationHelper.java
@@ -49,6 +49,7 @@
   public static final int LOCATION_STATUS_STALE = 2;
   public static final int LOCATION_STATUS_INACCURATE = 3;
   public static final int LOCATION_STATUS_NO_LOCATION = 4;
+  public static final int LOCATION_STATUS_MOCK = 5;
 
   /** Possible return values for {@code checkLocation()} */
   @IntDef({
@@ -56,7 +57,8 @@
     LOCATION_STATUS_OK,
     LOCATION_STATUS_STALE,
     LOCATION_STATUS_INACCURATE,
-    LOCATION_STATUS_NO_LOCATION
+    LOCATION_STATUS_NO_LOCATION,
+    LOCATION_STATUS_MOCK
   })
   @Retention(RetentionPolicy.SOURCE)
   public @interface LocationStatus {}
@@ -118,6 +120,11 @@
       return LOCATION_STATUS_INACCURATE;
     }
 
+    if (location.isFromMockProvider()) {
+      LogUtil.i("LocationHelper.checkLocation", "from mock provider");
+      return LOCATION_STATUS_MOCK;
+    }
+
     return LOCATION_STATUS_OK;
   }