diff --git a/Android.mk b/Android.mk
index beccd86..2da71a5 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,25 +1,13 @@
 # Local modifications:
-# * removed com.google.android.backup.api_key. This should be added to
-#      the manifest in the top level directory.
 # * removed com.google.android.geo.API_KEY key. This should be added to
 #      the manifest files in java/com/android/incallui/calllocation/impl/
 #      and /java/com/android/incallui/maps/impl/
 # * b/62417801 modify translation string naming convention:
 #      $ find . -type d | grep 262 | rename 's/(values)\-([a-zA-Z\+\-]+)\-(mcc262-mnc01)/$1-$3-$2/'
-# * b/62343966 include manually generated GRPC service class:
-#      $ protoc --plugin=protoc-gen-grpc-java=prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \
-#               --grpc-java_out=lite:"packages/apps/Dialer/java/com/android/voicemail/impl/" \
-#               --proto_path="packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/" "packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto"
 # * b/37077388 temporarily disable proguard with javac
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
-ifeq ($(TARGET_BUILD_APPS),)
-support_library_root_dir := frameworks/support
-else
-support_library_root_dir := prebuilts/sdk/current/support
-endif
-
 # The base directory for Dialer sources.
 BASE_DIR := java/com/android
 
@@ -63,210 +51,82 @@
 	$(BASE_DIR)/dialer/binary/google/GoogleStubDialerRootComponent.java \
 	$(BASE_DIR)/dialer/binary/google/GoogleStubDialerApplication.java
 
-# All Dialers resources.
-# find . -type d -name "res" | uniq | sort
-RES_DIRS := \
-	assets/product/res \
-	assets/quantum/res \
-	$(BASE_DIR)/contacts/common/res \
-	$(BASE_DIR)/dialer/about/res \
-	$(BASE_DIR)/dialer/app/res \
-	$(BASE_DIR)/dialer/app/voicemail/error/res \
-	$(BASE_DIR)/dialer/blocking/res \
-	$(BASE_DIR)/dialer/callcomposer/camera/camerafocus/res \
-	$(BASE_DIR)/dialer/callcomposer/cameraui/res \
-	$(BASE_DIR)/dialer/callcomposer/res \
-	$(BASE_DIR)/dialer/calldetails/res \
-	$(BASE_DIR)/dialer/calllog/ui/res \
-	$(BASE_DIR)/dialer/calllogutils/res \
-	$(BASE_DIR)/dialer/common/res \
-	$(BASE_DIR)/dialer/contactactions/res \
-	$(BASE_DIR)/dialer/contactsfragment/res \
-	$(BASE_DIR)/dialer/dialpadview/res \
-	$(BASE_DIR)/dialer/enrichedcall/simulator/res \
-	$(BASE_DIR)/dialer/interactions/res \
-	$(BASE_DIR)/dialer/main/impl/res \
-	$(BASE_DIR)/dialer/notification/res \
-	$(BASE_DIR)/dialer/oem/res \
-	$(BASE_DIR)/dialer/phonenumberutil/res \
-	$(BASE_DIR)/dialer/postcall/res \
-	$(BASE_DIR)/dialer/searchfragment/common/res \
-	$(BASE_DIR)/dialer/searchfragment/list/res \
-	$(BASE_DIR)/dialer/searchfragment/nearbyplaces/res \
-	$(BASE_DIR)/dialershared/bubble/res \
-	$(BASE_DIR)/dialer/shortcuts/res \
-	$(BASE_DIR)/dialer/speeddial/res \
-	$(BASE_DIR)/dialer/theme/res \
-	$(BASE_DIR)/dialer/util/res \
-	$(BASE_DIR)/dialer/voicemailstatus/res \
-	$(BASE_DIR)/dialer/widget/res \
-	$(BASE_DIR)/incallui/answer/impl/affordance/res \
-	$(BASE_DIR)/incallui/answer/impl/answermethod/res \
-	$(BASE_DIR)/incallui/answer/impl/hint/res \
-	$(BASE_DIR)/incallui/answer/impl/res \
-	$(BASE_DIR)/incallui/audioroute/res \
-	$(BASE_DIR)/incallui/autoresizetext/res \
-	$(BASE_DIR)/incallui/calllocation/impl/res \
-	$(BASE_DIR)/incallui/commontheme/res \
-	$(BASE_DIR)/incallui/contactgrid/res \
-	$(BASE_DIR)/incallui/disconnectdialog/res \
-	$(BASE_DIR)/incallui/hold/res \
-	$(BASE_DIR)/incallui/incall/impl/res \
-	$(BASE_DIR)/incallui/res \
-	$(BASE_DIR)/incallui/sessiondata/res \
-	$(BASE_DIR)/incallui/speakerbuttonlogic/res \
-	$(BASE_DIR)/incallui/telecomeventui/res \
-	$(BASE_DIR)/incallui/video/impl/res \
-	$(BASE_DIR)/incallui/video/protocol/res \
-	$(BASE_DIR)/voicemail/impl/configui/res \
-	$(BASE_DIR)/voicemail/impl/res \
+EXCLUDE_RESOURCE_DIRECTORIES := \
+	java/com/android/incallui/maps/impl/res \
 
+# All Dialers resources.
+RES_DIRS := $(call all-subdir-named-dirs,res,.)
+RES_DIRS := $(filter-out $(EXCLUDE_RESOURCE_DIRECTORIES),$(RES_DIRS))
+
+EXCLUDE_MANIFESTS := \
+	$(BASE_DIR)/dialer/binary/aosp/testing/AndroidManifest.xml \
+	$(BASE_DIR)/dialer/binary/google/AndroidManifest.xml \
+	$(BASE_DIR)/incallui/calllocation/impl/AndroidManifest.xml \
+	$(BASE_DIR)/incallui/maps/impl/AndroidManifest.xml \
 
 # Dialer manifest files to merge.
-# find . -type f -name "AndroidManifest.xml" | uniq | sort
-DIALER_MANIFEST_FILES += \
-	$(BASE_DIR)/contacts/common/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/about/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/app/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/app/manifests/activities/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/app/voicemail/error/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/backup/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/blocking/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/callcomposer/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/callcomposer/camera/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/callcomposer/camera/camerafocus/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/callcomposer/cameraui/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/calldetails/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/calllog/ui/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/calllogutils/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/common/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/contactactions/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/contactsfragment/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/dialpadview/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/enrichedcall/simulator/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/interactions/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/main/impl/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/notification/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/oem/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/phonenumberutil/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/postcall/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/searchfragment/common/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/searchfragment/list/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/searchfragment/nearbyplaces/AndroidManifest.xml \
-	$(BASE_DIR)/dialershared/bubble/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/shortcuts/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/simulator/impl/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/speeddial/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/theme/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/util/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/voicemailstatus/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/widget/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/answer/impl/affordance/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/answer/impl/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/answer/impl/answermethod/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/answer/impl/hint/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/audioroute/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/autoresizetext/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/commontheme/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/contactgrid/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/disconnectdialog/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/hold/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/incall/impl/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/sessiondata/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/speakerbuttonlogic/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/telecomeventui/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/video/impl/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/video/protocol/AndroidManifest.xml \
-	$(BASE_DIR)/voicemail/AndroidManifest.xml \
-	$(BASE_DIR)/voicemail/impl/configui/AndroidManifest.xml \
-	$(BASE_DIR)/voicemail/impl/AndroidManifest.xml \
-
+DIALER_MANIFEST_FILES := $(call all-named-files-under,AndroidManifest.xml,.)
+DIALER_MANIFEST_FILES := $(filter-out $(EXCLUDE_MANIFESTS),$(DIALER_MANIFEST_FILES))
 
 # Merge all manifest files.
 LOCAL_FULL_LIBS_MANIFEST_FILES := \
 	$(addprefix $(LOCAL_PATH)/, $(DIALER_MANIFEST_FILES))
+
+# * b/62875795 include manually generated GRPC service class:
+ifeq ($(HOST_OS),linux)
+	define gen-dialer-grpc
+	$(shell cd $(LOCAL_PATH) ; \
+		../../../prebuilts/tools/linux-x86_64/protoc/bin/protoc --plugin=protoc-gen-grpc-java=../../../prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \
+		--grpc-java_out=lite:"java/com/android/voicemail/impl/" \
+		--proto_path="java/com/android/voicemail/impl/transcribe/grpc/" "java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto")
+	endef
+endif
+ifeq ($(HOST_OS),darwin)
+	define gen-dialer-grpc
+	$(shell cd $(LOCAL_PATH) ; \
+		../../../prebuilts/tools/darwin-x86_64/protoc/bin/protoc --plugin=protoc-gen-grpc-java=../../../prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-osx-x86_64.exe \
+		--grpc-java_out=lite:"java/com/android/voicemail/impl/" \
+		--proto_path="java/com/android/voicemail/impl/transcribe/grpc/" "java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto")
+	endef
+endif
+
+$(call gen-dialer-grpc)
+
 LOCAL_SRC_FILES := $(call all-java-files-under, $(SRC_DIRS))
 LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_FILES),$(LOCAL_SRC_FILES))
+# * b/62875795 include manually generated GRPC service class:
+LOCAL_SRC_FILES += java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java
 LOCAL_SRC_FILES += $(call all-proto-files-under, $(SRC_DIRS))
+
+# Backup Library
+BACKUP_LIB_SRC_DIR := ../../../external/libbackup/src/com/google/android/libraries/backup
+EXCLUDE_BACKUP_LIB_SRCS := $(call all-java-files-under, $(BACKUP_LIB_SRC_DIR)/shadow)
+LOCAL_SRC_FILES += $(call all-java-files-under, $(BACKUP_LIB_SRC_DIR))
+LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_BACKUP_LIB_SRCS),$(LOCAL_SRC_FILES))
+
 LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)
 
-LOCAL_RESOURCE_DIR := \
-	$(addprefix $(LOCAL_PATH)/, $(RES_DIRS)) \
-	$(support_library_root_dir)/design/res \
-	$(support_library_root_dir)/transition/res \
-	$(support_library_root_dir)/v7/appcompat/res \
-	$(support_library_root_dir)/v7/cardview/res \
-	$(support_library_root_dir)/v7/recyclerview/res
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(RES_DIRS))
+
+define all-dialer-manifest-extra-packages
+  $(shell cd $(LOCAL_PATH) ; \
+          find . -type f -name "AndroidManifest.xml" | uniq | sort | cut -c 8- | rev | cut -c 21- | rev | sed 's/\//./g')
+endef
+
+EXCLUDE_EXTRA_PACKAGES := \
+	com.android.dialer.binary.aosp.testing \
+	com.android.dialer.binary.google \
+	com.android.incallui.calllocation.impl \
+	com.android.incallui.maps.impl \
 
 # We specify each package explicitly to glob resource files.
-LOCAL_AAPT_FLAGS := \
+LOCAL_AAPT_FLAGS := $(call all-dialer-manifest-extra-packages)
+LOCAL_AAPT_FLAGS := $(filter-out $(EXCLUDE_EXTRA_PACKAGES),$(LOCAL_AAPT_FLAGS))
+LOCAL_AAPT_FLAGS := $(addprefix --extra-packages , $(LOCAL_AAPT_FLAGS))
+LOCAL_AAPT_FLAGS += \
 	--auto-add-overlay \
-	--extra-packages com.android.contacts.common \
-	--extra-packages com.android.dialer.about \
-	--extra-packages com.android.dialer.app \
-	--extra-packages com.android.dialer.app.voicemail.error \
-	--extra-packages com.android.dialer.blocking \
-	--extra-packages com.android.dialer.callcomposer \
-	--extra-packages com.android.dialer.callcomposer \
-	--extra-packages com.android.dialer.callcomposer.camera \
-	--extra-packages com.android.dialer.callcomposer.camera.camerafocus \
-	--extra-packages com.android.dialer.callcomposer.cameraui \
-	--extra-packages com.android.dialer.calldetails \
-	--extra-packages com.android.dialer.calllog.ui \
-	--extra-packages com.android.dialer.calllogutils \
-	--extra-packages com.android.dialer.common \
-        --extra-packages com.android.dialer.contactactions \
-	--extra-packages com.android.dialer.contactsfragment \
-	--extra-packages com.android.dialer.dialpadview \
-	--extra-packages com.android.dialer.enrichedcall.simulator \
-	--extra-packages com.android.dialer.interactions \
-	--extra-packages com.android.dialer.main.impl \
-	--extra-packages com.android.dialer.notification \
-	--extra-packages com.android.dialer.oem \
-	--extra-packages com.android.dialer.phonenumberutil \
-	--extra-packages com.android.dialer.postcall \
-	--extra-packages com.android.dialer.searchfragment.common \
-	--extra-packages com.android.dialer.searchfragment.list \
-	--extra-packages com.android.dialer.searchfragment.nearbyplaces \
-	--extra-packages com.android.dialershared.bubble \
-	--extra-packages com.android.dialer.shortcuts \
-	--extra-packages com.android.dialer.speeddial \
-	--extra-packages com.android.dialer.theme \
-	--extra-packages com.android.dialer.util \
-	--extra-packages com.android.dialer.voicemailstatus \
-	--extra-packages com.android.dialer.widget \
-	--extra-packages com.android.incallui \
-	--extra-packages com.android.incallui.answer.impl \
-	--extra-packages com.android.incallui.answer.impl.affordance \
-	--extra-packages com.android.incallui.answer.impl.affordance \
-	--extra-packages com.android.incallui.answer.impl.answermethod \
-	--extra-packages com.android.incallui.answer.impl.hint \
-	--extra-packages com.android.incallui.audioroute \
-	--extra-packages com.android.incallui.autoresizetext \
-	--extra-packages com.android.incallui.calllocation \
-	--extra-packages com.android.incallui.calllocation.impl \
-	--extra-packages com.android.incallui.commontheme \
-	--extra-packages com.android.incallui.contactgrid \
-	--extra-packages com.android.incallui.disconnectdialog \
-	--extra-packages com.android.incallui.hold \
-	--extra-packages com.android.incallui.incall.impl \
-	--extra-packages com.android.incallui.maps.impl \
-	--extra-packages com.android.incallui.sessiondata \
-	--extra-packages com.android.incallui.speakerbuttonlogic \
-	--extra-packages com.android.incallui.telecomeventui \
-	--extra-packages com.android.incallui.video \
-	--extra-packages com.android.incallui.video.impl \
-	--extra-packages com.android.phone.common \
-	--extra-packages com.android.voicemail \
-	--extra-packages com.android.voicemail.impl.configui \
-	--extra-packages com.android.voicemail.impl \
-	--extra-packages com.android.voicemail.impl.fetch \
-	--extra-packages com.android.voicemail.impl.settings \
-	--extra-packages com.android.voicemail.settings \
 	--extra-packages me.leolin.shortcutbadger \
 
-
 LOCAL_STATIC_JAVA_LIBRARIES := \
 	android-common \
 	android-support-dynamic-animation \
@@ -276,12 +136,12 @@
 	dialer-disklrucache-target \
 	dialer-gifdecoder-target \
 	dialer-glide-target \
-        dialer-grpc-all-target \
-        dialer-grpc-context-target \
-        dialer-grpc-core-target \
+	dialer-grpc-all-target \
+	dialer-grpc-context-target \
+	dialer-grpc-core-target \
 	dialer-grpc-okhttp-target \
 	dialer-grpc-protobuf-lite-target \
-        dialer-grpc-stub-target \
+	dialer-grpc-stub-target \
 	dialer-guava-target \
 	dialer-javax-annotation-api-target \
 	dialer-javax-inject-target \
@@ -290,10 +150,10 @@
 	dialer-mime4j-dom-target \
 	jsr305 \
 	libphonenumber \
-	okhttp \
 	volley \
 
 LOCAL_STATIC_ANDROID_LIBRARIES := \
+	android-support-core-ui \
 	android-support-design \
 	android-support-transition \
 	android-support-v13 \
@@ -331,13 +191,14 @@
 
 LOCAL_PROGUARD_ENABLED := disabled
 ifdef LOCAL_JACK_ENABLED
+
+define all-dialer-proguard-flags
+  $(shell cd $(LOCAL_PATH) ; \
+          find . -type f -name "proguard.*flags" | uniq | sort | cut -c 3-)
+endef
+
 # Proguard includes
-LOCAL_PROGUARD_FLAG_FILES := \
-    java/com/android/dialer/common/proguard.flags \
-    java/com/android/dialer/proguard/proguard_base.flags \
-    java/com/android/dialer/proguard/proguard.flags \
-    java/com/android/dialer/proguard/proguard_release.flags \
-    java/com/android/incallui/answer/impl/proguard.flags
+LOCAL_PROGUARD_FLAG_FILES := $(call all-dialer-proguard-flags)
 LOCAL_PROGUARD_ENABLED := custom
 
 LOCAL_PROGUARD_ENABLED += optimization
@@ -365,6 +226,10 @@
 DIALER_MANIFEST_FILES :=
 PROCESSOR_LIBRARIES_TARGET :=
 PROCESSOR_JARS :=
+EXCLUDE_MANIFESTS :=
+EXCLUDE_EXTRA_PACKAGES :=
+BACKUP_LIB_SRC_DIR :=
+EXCLUDE_BACKUP_LIB_SRCS :=
 
 # Create references to prebuilt libraries.
 include $(CLEAR_VARS)
@@ -557,4 +422,4 @@
 
 include $(BUILD_PREBUILT)
 
-include $(CLEAR_VARS)
\ No newline at end of file
+include $(CLEAR_VARS)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 5420ec0..ca18feb 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -16,8 +16,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   coreApp="true"
   package="com.android.dialer"
-  android:versionCode="150000"
-  android:versionName="11.0">
+  android:versionCode="160000"
+  android:versionName="12.0">
 
   <uses-sdk
     android:minSdkVersion="23"
@@ -103,17 +103,12 @@
   <uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
 
   <application
-    android:backupAgent='com.android.dialer.backup.DialerBackupAgent'
-    android:fullBackupOnly="true"
-    android:restoreAnyVersion="true"
     android:hardwareAccelerated="true"
     android:icon="@mipmap/ic_launcher_phone"
     android:label="@string/applicationLabel"
     android:name="com.android.dialer.binary.aosp.AospDialerApplication"
     android:supportsRtl="true"
     android:usesCleartextTraffic="false">
-
-
   </application>
 
 </manifest>
diff --git a/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml
new file mode 100644
index 0000000..bea0d5c
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z"/>
+</vector>
diff --git a/java/com/android/contacts/common/Bindings.java b/java/com/android/contacts/common/Bindings.java
deleted file mode 100644
index 29cf795..0000000
--- a/java/com/android/contacts/common/Bindings.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2016 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.common;
-
-import android.content.Context;
-import com.android.contacts.common.bindings.ContactsCommonBindings;
-import com.android.contacts.common.bindings.ContactsCommonBindingsFactory;
-import com.android.contacts.common.bindings.ContactsCommonBindingsStub;
-import java.util.Objects;
-
-/** Accessor for the contacts common bindings. */
-public class Bindings {
-
-  private static ContactsCommonBindings instance;
-
-  private Bindings() {}
-
-  public static ContactsCommonBindings get(Context context) {
-    Objects.requireNonNull(context);
-    if (instance != null) {
-      return instance;
-    }
-
-    Context application = context.getApplicationContext();
-    if (application instanceof ContactsCommonBindingsFactory) {
-      instance = ((ContactsCommonBindingsFactory) application).newContactsCommonBindings();
-    }
-
-    if (instance == null) {
-      instance = new ContactsCommonBindingsStub();
-    }
-    return instance;
-  }
-
-  public static void setForTesting(ContactsCommonBindings testInstance) {
-    instance = testInstance;
-  }
-}
diff --git a/java/com/android/contacts/common/bindings/ContactsCommonBindings.java b/java/com/android/contacts/common/bindings/ContactsCommonBindings.java
deleted file mode 100644
index 44be53b..0000000
--- a/java/com/android/contacts/common/bindings/ContactsCommonBindings.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2016 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.common.bindings;
-
-import android.support.annotation.Nullable;
-
-/** Allows the container application to customize the contacts common library. */
-public interface ContactsCommonBindings {
-
-  /** Builds a user agent string for the current application. */
-  @Nullable
-  String getUserAgent();
-}
diff --git a/java/com/android/contacts/common/bindings/ContactsCommonBindingsFactory.java b/java/com/android/contacts/common/bindings/ContactsCommonBindingsFactory.java
deleted file mode 100644
index 8958ad9..0000000
--- a/java/com/android/contacts/common/bindings/ContactsCommonBindingsFactory.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2016 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.common.bindings;
-
-/**
- * This interface should be implementated by the Application subclass. It allows the contacts common
- * module to get references to the ContactsCommonBindings.
- */
-public interface ContactsCommonBindingsFactory {
-
-  ContactsCommonBindings newContactsCommonBindings();
-}
diff --git a/java/com/android/contacts/common/bindings/ContactsCommonBindingsStub.java b/java/com/android/contacts/common/bindings/ContactsCommonBindingsStub.java
deleted file mode 100644
index f2e21b1..0000000
--- a/java/com/android/contacts/common/bindings/ContactsCommonBindingsStub.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2016 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.common.bindings;
-
-import android.support.annotation.Nullable;
-
-/** Default implementation for contacts common bindings. */
-public class ContactsCommonBindingsStub implements ContactsCommonBindings {
-
-  @Override
-  @Nullable
-  public String getUserAgent() {
-    return null;
-  }
-}
diff --git a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
index 2d77dc7..172fb11 100644
--- a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
+++ b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
@@ -23,7 +23,7 @@
 /** Compatibility class for {@link android.telecom.TelecomManager}. */
 public class TelecomManagerCompat {
 
-  // TODO: remove once this is available in android.telecom.Call
+  // TODO(mdooley): remove once this is available in android.telecom.Call
   // b/33779976
   public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS =
       "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
@@ -37,7 +37,7 @@
 
   // This is a hidden constant in android.telecom.DisconnectCause. Telecom sets this as a disconnect
   // reason if it wants us to prompt the user that the video call is not available.
-  // TODO: Reference it to constant in android.telecom.DisconnectCause.
+  // TODO(wangqi): Reference it to constant in android.telecom.DisconnectCause.
   public static final String REASON_IMS_ACCESS_BLOCKED = "REASON_IMS_ACCESS_BLOCKED";
 
   /**
diff --git a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
index d5e6135..5d10720 100644
--- a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
+++ b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
@@ -20,6 +20,9 @@
 import android.content.ContentResolver;
 import android.database.Cursor;
 import android.net.Uri;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * An {@AsyncQueryHandler} that will never return a null cursor.
@@ -27,6 +30,8 @@
  * <p>Instead, will return a {@link Cursor} with 0 records.
  */
 public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
+  private static final AtomicInteger pendingQueryCount = new AtomicInteger();
+  @Nullable private static PendingQueryCountChangedListener pendingQueryCountChangedListener;
 
   public NoNullCursorAsyncQueryHandler(ContentResolver cr) {
     super(cr);
@@ -41,6 +46,11 @@
       String selection,
       String[] selectionArgs,
       String orderBy) {
+    pendingQueryCount.getAndIncrement();
+    if (pendingQueryCountChangedListener != null) {
+      pendingQueryCountChangedListener.onPendingQueryCountChanged();
+    }
+
     final CookieWithProjection projectionCookie = new CookieWithProjection(cookie, projection);
     super.startQuery(token, projectionCookie, uri, projection, selection, selectionArgs, orderBy);
   }
@@ -55,10 +65,31 @@
       cursor = new EmptyCursor(projectionCookie.projection);
     }
     onNotNullableQueryComplete(token, projectionCookie.originalCookie, cursor);
+
+    pendingQueryCount.getAndDecrement();
+    if (pendingQueryCountChangedListener != null) {
+      pendingQueryCountChangedListener.onPendingQueryCountChanged();
+    }
   }
 
   protected abstract void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor);
 
+  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+  public static void setPendingQueryCountChangedListener(
+      @Nullable PendingQueryCountChangedListener listener) {
+    pendingQueryCountChangedListener = listener;
+  }
+
+  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+  public static int getPendingQueryCount() {
+    return pendingQueryCount.get();
+  }
+
+  /** Callback to listen for changes in the number of queries that have not completed. */
+  public interface PendingQueryCountChangedListener {
+    void onPendingQueryCountChanged();
+  }
+
   /** Class to add projection to an existing cookie. */
   private static class CookieWithProjection {
 
diff --git a/java/com/android/contacts/common/dialog/CallSubjectDialog.java b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
index 88fac02..5c2ae2f 100644
--- a/java/com/android/contacts/common/dialog/CallSubjectDialog.java
+++ b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
@@ -43,13 +43,13 @@
 import android.widget.ListView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.R;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.dialer.animation.AnimUtils;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.util.ViewUtil;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
diff --git a/java/com/android/contacts/common/list/ContactEntryListAdapter.java b/java/com/android/contacts/common/list/ContactEntryListAdapter.java
index 7335297..117825d 100644
--- a/java/com/android/contacts/common/list/ContactEntryListAdapter.java
+++ b/java/com/android/contacts/common/list/ContactEntryListAdapter.java
@@ -32,8 +32,6 @@
 import android.widget.QuickContactBadge;
 import android.widget.SectionIndexer;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.R;
 import com.android.contacts.common.compat.DirectoryCompat;
@@ -41,6 +39,8 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.CompatUtils;
 import com.android.dialer.configprovider.ConfigProviderBindings;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
 import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
 import java.util.HashSet;
diff --git a/java/com/android/contacts/common/list/ContactEntryListFragment.java b/java/com/android/contacts/common/list/ContactEntryListFragment.java
index 04658be..94551a8 100644
--- a/java/com/android/contacts/common/list/ContactEntryListFragment.java
+++ b/java/com/android/contacts/common/list/ContactEntryListFragment.java
@@ -43,10 +43,10 @@
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ListView;
 import com.android.common.widget.CompositeCursorAdapter.Partition;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.preference.ContactsPreferences;
 import com.android.contacts.common.util.ContactListViewUtils;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.performancereport.PerformanceReport;
 import java.lang.ref.WeakReference;
 import java.util.Locale;
diff --git a/java/com/android/contacts/common/list/ContactListAdapter.java b/java/com/android/contacts/common/list/ContactListAdapter.java
index 6cd3118..721609d 100644
--- a/java/com/android/contacts/common/list/ContactListAdapter.java
+++ b/java/com/android/contacts/common/list/ContactListAdapter.java
@@ -23,9 +23,9 @@
 import android.provider.ContactsContract.Directory;
 import android.provider.ContactsContract.SearchSnippets;
 import android.view.ViewGroup;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.R;
 import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
 
 /**
  * A cursor adapter for the {@link ContactsContract.Contacts#CONTENT_TYPE} content type. Also
diff --git a/java/com/android/contacts/common/list/ContactTileView.java b/java/com/android/contacts/common/list/ContactTileView.java
index 15582d6..4635641 100644
--- a/java/com/android/contacts/common/list/ContactTileView.java
+++ b/java/com/android/contacts/common/list/ContactTileView.java
@@ -23,13 +23,13 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.MoreContactUtils;
 import com.android.contacts.common.R;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
 
 /** A ContactTile displays a contact's picture and name */
 public abstract class ContactTileView extends FrameLayout {
diff --git a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
index ae15eb2..71d9dad 100644
--- a/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/java/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -31,25 +31,25 @@
 import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.R;
 import com.android.contacts.common.compat.CallableCompat;
 import com.android.contacts.common.compat.DirectoryCompat;
 import com.android.contacts.common.compat.PhoneCompat;
 import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.contacts.common.list.ContactListItemView.CallToAction;
 import com.android.contacts.common.preference.ContactsPreferences;
 import com.android.contacts.common.util.Constants;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.lightbringer.LightbringerComponent;
-import com.android.dialer.location.GeoUtil;
+import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.util.CallUtil;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -381,7 +381,7 @@
         text = phoneLabel;
       } else {
         final String phoneNumber = cursor.getString(PhoneQuery.PHONE_NUMBER);
-        text = GeoUtil.getGeocodedLocationFor(mContext, phoneNumber);
+        text = PhoneNumberHelper.getGeoDescription(mContext, phoneNumber);
       }
     }
     view.setPhoneNumber(text);
@@ -407,7 +407,7 @@
     if (action == ContactListItemView.NONE) {
       EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager();
       EnrichedCallCapabilities capabilities = manager.getCapabilities(number);
-      if (capabilities != null && capabilities.supportsCallComposer()) {
+      if (capabilities != null && capabilities.isCallComposerCapable()) {
         action = ContactListItemView.CALL_AND_SHARE;
       } else if (capabilities == null
           && getQueryString() != null
diff --git a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
index de7903e..2ab1217 100644
--- a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
+++ b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
@@ -278,7 +278,7 @@
   @MainThread
   public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
     Assert.isMainThread();
-    // TODO: define and verify behavior for "Nearby places", corp directories,
+    // TODO(strongarm): define and verify behavior for "Nearby places", corp directories,
     // and dividers listed in UI between these categories
     if (mCursorReranker != null
         && data != null
@@ -353,7 +353,7 @@
         if (view.getCallToAction() != ContactListItemView.NONE
             || view.getPhoneNumber() == null
             || manager.getCapabilities(view.getPhoneNumber()) == null
-            || !manager.getCapabilities(view.getPhoneNumber()).supportsCallComposer()) {
+            || !manager.getCapabilities(view.getPhoneNumber()).isCallComposerCapable()) {
           continue;
         }
         view.setCallToAction(ContactListItemView.CALL_AND_SHARE, listener, view.getPosition());
diff --git a/java/com/android/contacts/common/model/ContactLoader.java b/java/com/android/contacts/common/model/ContactLoader.java
index 7ef3b73..d2c7577 100644
--- a/java/com/android/contacts/common/model/ContactLoader.java
+++ b/java/com/android/contacts/common/model/ContactLoader.java
@@ -44,10 +44,10 @@
 import com.android.contacts.common.model.dataitem.PhotoDataItem;
 import com.android.contacts.common.util.Constants;
 import com.android.contacts.common.util.ContactLoaderUtils;
-import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.UriUtils;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -731,6 +731,7 @@
         intent.setClassName(servicePackageName, serviceName);
         intent.setAction(Intent.ACTION_VIEW);
         intent.setDataAndType(uri, RawContacts.CONTENT_ITEM_TYPE);
+        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
         try {
           context.startService(intent);
         } catch (Exception e) {
diff --git a/java/com/android/contacts/common/preference/ContactsPreferences.java b/java/com/android/contacts/common/preference/ContactsPreferences.java
index 7f0d99a..2bdf5c8 100644
--- a/java/com/android/contacts/common/preference/ContactsPreferences.java
+++ b/java/com/android/contacts/common/preference/ContactsPreferences.java
@@ -27,6 +27,7 @@
 import android.text.TextUtils;
 import com.android.contacts.common.R;
 import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.dialer.strictmode.DialerStrictMode;
 
 /** Manages user preferences for contacts. */
 public class ContactsPreferences implements OnSharedPreferenceChangeListener {
@@ -77,11 +78,11 @@
     maybeMigrateSystemSettings();
   }
 
-  public boolean isSortOrderUserChangeable() {
+  private boolean isSortOrderUserChangeable() {
     return mContext.getResources().getBoolean(R.bool.config_sort_order_user_changeable);
   }
 
-  public int getDefaultSortOrder() {
+  private int getDefaultSortOrder() {
     if (mContext.getResources().getBoolean(R.bool.config_default_sort_order_primary)) {
       return SORT_ORDER_PRIMARY;
     } else {
@@ -103,14 +104,14 @@
     mSortOrder = sortOrder;
     final Editor editor = mPreferences.edit();
     editor.putInt(SORT_ORDER_KEY, sortOrder);
-    editor.commit();
+    DialerStrictMode.bypass(editor::commit);
   }
 
-  public boolean isDisplayOrderUserChangeable() {
+  private boolean isDisplayOrderUserChangeable() {
     return mContext.getResources().getBoolean(R.bool.config_display_order_user_changeable);
   }
 
-  public int getDefaultDisplayOrder() {
+  private int getDefaultDisplayOrder() {
     if (mContext.getResources().getBoolean(R.bool.config_default_display_order_primary)) {
       return DISPLAY_ORDER_PRIMARY;
     } else {
@@ -132,14 +133,14 @@
     mDisplayOrder = displayOrder;
     final Editor editor = mPreferences.edit();
     editor.putInt(DISPLAY_ORDER_KEY, displayOrder);
-    editor.commit();
+    DialerStrictMode.bypass(editor::commit);
   }
 
-  public boolean isDefaultAccountUserChangeable() {
+  private boolean isDefaultAccountUserChangeable() {
     return mContext.getResources().getBoolean(R.bool.config_default_account_user_changeable);
   }
 
-  public String getDefaultAccount() {
+  private String getDefaultAccount() {
     if (!isDefaultAccountUserChangeable()) {
       return mDefaultAccount;
     }
@@ -153,7 +154,7 @@
     return mDefaultAccount;
   }
 
-  public void setDefaultAccount(AccountWithDataSet accountWithDataSet) {
+  private void setDefaultAccount(AccountWithDataSet accountWithDataSet) {
     mDefaultAccount = accountWithDataSet == null ? null : accountWithDataSet.name;
     final Editor editor = mPreferences.edit();
     if (TextUtils.isEmpty(mDefaultAccount)) {
@@ -162,7 +163,7 @@
       editor.putString(mDefaultAccountKey, accountWithDataSet.stringify());
     }
     editor.putBoolean(mDefaultAccountSavedKey, true);
-    editor.commit();
+    DialerStrictMode.bypass(editor::commit);
   }
 
   public void registerChangeListener(ChangeListener listener) {
diff --git a/java/com/android/contacts/common/res/drawable/ic_work_profile.xml b/java/com/android/contacts/common/res/drawable/ic_work_profile.xml
index fc21100..4452885 100644
--- a/java/com/android/contacts/common/res/drawable/ic_work_profile.xml
+++ b/java/com/android/contacts/common/res/drawable/ic_work_profile.xml
@@ -1,16 +1,26 @@
-<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2017 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.
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-  android:height="16dp"
-  android:viewportHeight="48"
-  android:viewportWidth="48"
-  android:width="16dp">
+        android:width="16dp"
+        android:height="16dp"
+        android:viewportWidth="16.0"
+        android:viewportHeight="16.0">
 
 
-  <path
-    android:fillColor="#757575"
-    android:pathData="M28 33h-8v-3H6v8c0 2.2 1.8 4 4 4h28c2.2 0 4-1.8
-4-4v-8H28v3zm12-21h-7V9l-3-3H18l-3 3.1V12H8c-2.2 0-4 1.8-4 4v8c0 2.2 1.8 4 4
-4h12v-3h8v3h12c2.2 0 4-1.8 4-4v-8c0-2.2-1.8-4-4-4zm-10 0H18V9h12v3z"/>
-  <path
-    android:pathData="M0 0h48v48H0z"/>
+    <path
+        android:pathData="M13.33,4h-2.67V2.67c0,-0.74 -0.59,-1.33 -1.33,-1.33H6.67c-0.74,0 -1.33,0.59 -1.33,1.33V4H2.67C1.93,4 1.34,4.59 1.34,5.33l-0.01,7.33c0,0.74 0.59,1.33 1.33,1.33h10.67c0.74,0 1.33,-0.59 1.33,-1.33V5.33C14.67,4.59 14.07,4 13.33,4zM8,10c-0.73,0 -1.33,-0.6 -1.33,-1.33S7.27,7.33 8,7.33s1.33,0.6 1.33,1.33S8.73,10 8,10zM9.33,4H6.67V2.67h2.67V4z"
+        android:fillColor="#757575"/>
 </vector>
diff --git a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
index 842ac87..122d0fe 100644
--- a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
+++ b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
@@ -64,7 +64,7 @@
     <string name="sms_mms" msgid="5187888900503248542">"傳送短訊至 MMS 電話號碼"</string>
     <string name="sms_by_shortcut" msgid="8005496406639963582">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (訊息)"</string>
     <string name="clearFrequentsConfirmation_title" msgid="7465690215775790243">"清除常用聯絡人？"</string>
-    <string name="clearFrequentsConfirmation" msgid="5750611450893399198">"您將清除「通訊錄」應用程式和「電話」應用程式中的常用聯絡人名單，並強制電子郵件應用程式重新取得您的寄件偏好設定。"</string>
+    <string name="clearFrequentsConfirmation" msgid="5750611450893399198">"您將清除「通訊錄」應用程式和「電話」應用程式中的常用聯絡人名單，並強制電子郵件應用程式重新取得您的寄件喜好設定。"</string>
     <string name="clearFrequentsProgress_title" msgid="2057183487226039454">"正在清除常用聯絡人…"</string>
     <string name="status_available" msgid="2648156525685472626">"在線"</string>
     <string name="status_away" msgid="2298688367552893953">"離開"</string>
diff --git a/java/com/android/contacts/common/res/values/colors.xml b/java/com/android/contacts/common/res/values/colors.xml
index 434d193..ca87341 100644
--- a/java/com/android/contacts/common/res/values/colors.xml
+++ b/java/com/android/contacts/common/res/values/colors.xml
@@ -20,8 +20,6 @@
 
   <color name="focus_color">#44ff0000</color>
 
-  <color name="spam_contact_background">#A52714</color>
-
   <!-- Color of ripples used for views with dark backgrounds -->
   <color name="dialer_ripple_material_dark">#a0ffffff</color>
 
@@ -59,24 +57,6 @@
   <color name="textColorIconOverlay">#fff</color>
   <color name="textColorIconOverlayShadow">#000</color>
 
-
-  <array name="letter_tile_colors">
-    <item>#DB4437</item>
-    <item>#E91E63</item>
-    <item>#9C27B0</item>
-    <item>#673AB7</item>
-    <item>#3F51B5</item>
-    <item>#4285F4</item>
-    <item>#039BE5</item>
-    <item>#0097A7</item>
-    <item>#009688</item>
-    <item>#0F9D58</item>
-    <item>#689F38</item>
-    <item>#EF6C00</item>
-    <item>#FF5722</item>
-    <item>#757575</item>
-  </array>
-
   <!-- Darker versions of letter_tile_colors, two shades darker. These colors are used
       for settings secondary activity colors. -->
   <array name="letter_tile_colors_dark">
@@ -103,11 +83,6 @@
           this is Blue Grey 700 -->
   <color name="quickcontact_default_photo_tint_color_dark">#455A64</color>
 
-
-  <color name="letter_tile_default_color">#cccccc</color>
-
-  <color name="letter_tile_font_color">#ffffff</color>
-
   <color name="contactscommon_actionbar_background_color">@color/dialer_theme_color</color>
   <!-- Color for icons in the actionbar -->
   <color name="actionbar_icon_color">#ffffff</color>
diff --git a/java/com/android/contacts/common/res/values/dimens.xml b/java/com/android/contacts/common/res/values/dimens.xml
index 26f095f..74e1547 100644
--- a/java/com/android/contacts/common/res/values/dimens.xml
+++ b/java/com/android/contacts/common/res/values/dimens.xml
@@ -83,12 +83,6 @@
   <dimen name="contact_phone_list_empty_description_size">20sp</dimen>
   <dimen name="contact_phone_list_empty_description_padding">10dip</dimen>
 
-  <!-- Dimensions for contact letter tiles -->
-  <dimen name="tile_letter_font_size">40dp</dimen>
-  <dimen name="tile_letter_font_size_small">20dp</dimen>
-  <dimen name="tile_divider_width">1dp</dimen>
-  <item name="letter_to_tile_ratio" type="dimen">67%</item>
-
   <!-- Height of the floating action button -->
   <dimen name="floating_action_button_height">56dp</dimen>
   <!-- Width of the floating action button -->
diff --git a/java/com/android/contacts/common/res/values/strings.xml b/java/com/android/contacts/common/res/values/strings.xml
index 85866f7..f83f16b 100644
--- a/java/com/android/contacts/common/res/values/strings.xml
+++ b/java/com/android/contacts/common/res/values/strings.xml
@@ -182,13 +182,6 @@
     <item quantity="other"><xliff:g id="count">%d</xliff:g> found</item>
   </plurals>
 
-  <!-- String describing the text for photo of a contact in a contacts list.
-
-      Note: AccessibilityServices use this attribute to announce what the view represents.
-            This is especially valuable for views without textual representation like ImageView.
-  -->
-  <string name="description_quick_contact_for">Quick contact for <xliff:g id="name">%1$s</xliff:g></string>
-
   <!-- Shown as the display name for a person when the name is missing or unknown. [CHAR LIMIT=18]-->
   <string name="missing_name">(No name)</string>
 
diff --git a/java/com/android/dialer/about/res/raw/third_party_license_metadata b/java/com/android/dialer/about/res/raw/third_party_license_metadata
old mode 100644
new mode 100755
diff --git a/java/com/android/dialer/about/res/raw/third_party_licenses b/java/com/android/dialer/about/res/raw/third_party_licenses
old mode 100644
new mode 100755
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index b6025d3..7e62065 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -287,7 +287,7 @@
           }
           mSearchQuery = newText;
 
-          // TODO: show p13n when newText is empty.
+          // TODO(calderwoodra): show p13n when newText is empty.
           // Show search fragment only when the query string is changed to non-empty text.
           if (!TextUtils.isEmpty(newText)) {
             // Call enterSearchUi only if we are switching search modes, or showing a search
@@ -598,7 +598,7 @@
         new P13nRefreshCompleteListener() {
           @Override
           public void onP13nRefreshComplete() {
-            // TODO: make zero-query search results visible
+            // TODO(strongarm): make zero-query search results visible
           }
         });
     Trace.endSection();
@@ -678,6 +678,7 @@
       mListsFragment.addOnPageChangeListener(this);
     } else if (fragment instanceof NewSearchFragment) {
       mNewSearchFragment = (NewSearchFragment) fragment;
+      updateSearchFragmentPosition();
     }
     if (fragment instanceof SearchFragment) {
       final SearchFragment searchFragment = (SearchFragment) fragment;
@@ -854,7 +855,7 @@
 
     Assert.isNotNull(mListsFragment.getView()).animate().alpha(0).withLayer();
 
-    //adjust the title, so the user will know where we're at when the activity start/resumes.
+    // adjust the title, so the user will know where we're at when the activity start/resumes.
     setTitle(R.string.launcherDialpadActivityLabel);
   }
 
@@ -916,7 +917,7 @@
         exitSearchUi();
       }
     }
-    //reset the title to normal.
+    // reset the title to normal.
     setTitle(R.string.launcherActivityLabel);
   }
 
@@ -951,6 +952,12 @@
       // available immediately which is required to update position. By forcing an animation,
       // position will be updated after a delay by when the dialpad height would be available.
       fragment.updatePosition(true /* animate */);
+    } else if (mNewSearchFragment != null) {
+      int animationDuration = getResources().getInteger(R.integer.dialpad_slide_in_duration);
+      int shadowHeight = getResources().getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
+      int start = isDialpadShown() ? mActionBarHeight - shadowHeight : 0;
+      int end = isDialpadShown() ? 0 : mActionBarHeight - shadowHeight;
+      mNewSearchFragment.animatePosition(start, end, animationDuration);
     }
   }
 
@@ -1171,7 +1178,7 @@
       }
       transaction.add(R.id.dialtacts_frame, fragment, tag);
     } else {
-      // TODO: if this is a transition from dialpad to searchbar, animate fragment
+      // TODO(calderwoodra): if this is a transition from dialpad to searchbar, animate fragment
       // down, and vice versa. Perhaps just add a coordinator behavior with the search bar.
       transaction.show(fragment);
     }
@@ -1184,7 +1191,7 @@
       ((SearchFragment) fragment)
           .setShowEmptyListForNullQuery(mP13nRanker.shouldShowEmptyListForNullQuery());
     } else {
-      // TODO: add p13n ranker to new search.
+      // TODO(calderwoodra): add p13n ranker to new search.
     }
 
     if (!smartDialSearch && !useNewSearch) {
diff --git a/java/com/android/dialer/app/SpecialCharSequenceMgr.java b/java/com/android/dialer/app/SpecialCharSequenceMgr.java
index 20222d6..fd67f47 100644
--- a/java/com/android/dialer/app/SpecialCharSequenceMgr.java
+++ b/java/com/android/dialer/app/SpecialCharSequenceMgr.java
@@ -39,7 +39,6 @@
 import android.widget.EditText;
 import android.widget.Toast;
 import com.android.common.io.MoreCloseables;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
 import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
@@ -47,6 +46,7 @@
 import com.android.dialer.calllogutils.PhoneAccountUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.telecom.TelecomUtil;
 import java.util.ArrayList;
diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java
index 35e05bc..c9e655d 100644
--- a/java/com/android/dialer/app/calllog/CallLogActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogActivity.java
@@ -32,10 +32,8 @@
 import com.android.contacts.common.list.ViewPagerTabs;
 import com.android.dialer.app.DialtactsActivity;
 import com.android.dialer.app.R;
-import com.android.dialer.app.calllog.ClearCallLogDialog.Listener;
 import com.android.dialer.calldetails.CallDetailsActivity;
 import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.logging.UiAction;
@@ -46,7 +44,7 @@
 
 /** Activity for viewing call history. */
 public class CallLogActivity extends TransactionSafeActivity
-    implements ViewPager.OnPageChangeListener, Listener {
+    implements ViewPager.OnPageChangeListener {
 
   private static final int TAB_INDEX_ALL = 0;
   private static final int TAB_INDEX_MISSED = 1;
@@ -148,7 +146,7 @@
       startActivity(intent);
       return true;
     } else if (item.getItemId() == R.id.delete_all) {
-      ClearCallLogDialog.show(getFragmentManager(), this);
+      ClearCallLogDialog.show(getFragmentManager());
       return true;
     }
     return super.onOptionsItemSelected(item);
@@ -184,15 +182,6 @@
   }
 
   @Override
-  public void callHistoryDeleted() {
-    if (EnrichedCallComponent.get(this).getEnrichedCallManager().hasStoredData()) {
-      Snackbar.make(
-              findViewById(R.id.calllog_frame), getString(R.string.multiple_ec_data_deleted), 5_000)
-          .show();
-    }
-  }
-
-  @Override
   public void onBackPressed() {
     PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
     super.onBackPressed();
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index e0cd170..5fcf59b 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -344,10 +344,30 @@
           // If enriched call capabilities were unknown on the initial load,
           // viewHolder.isCallComposerCapable may be unset. Check here if we have the capabilities
           // as a last attempt at getting them before showing the expanded view to the user
-          EnrichedCallCapabilities capabilities =
-              getEnrichedCallManager().getCapabilities(viewHolder.number);
-          viewHolder.isCallComposerCapable =
-              capabilities != null && capabilities.supportsCallComposer();
+          EnrichedCallCapabilities capabilities = null;
+
+          if (viewHolder.number != null) {
+            capabilities = getEnrichedCallManager().getCapabilities(viewHolder.number);
+          }
+
+          if (capabilities == null) {
+            capabilities = EnrichedCallCapabilities.NO_CAPABILITIES;
+          }
+
+          viewHolder.isCallComposerCapable = capabilities.isCallComposerCapable();
+
+          if (capabilities.isTemporarilyUnavailable()) {
+            LogUtil.i(
+                "mExpandCollapseListener.onClick",
+                "%s is temporarily unavailable, requesting capabilities",
+                LogUtil.sanitizePhoneNumber(viewHolder.number));
+            // Refresh the capabilities when temporarily unavailable, see go/ec-temp-unavailable.
+            // Similarly to when we request capabilities the first time, the 'Share and call' button
+            // won't pop in with the new capabilities. Instead the row needs to be collapsed and
+            // expanded again.
+            getEnrichedCallManager().requestCapabilities(viewHolder.number);
+          }
+
           generateAndMapNewCallDetailsEntriesHistoryResults(
               viewHolder.number,
               viewHolder.getDetailedPhoneDetails(),
@@ -454,7 +474,7 @@
    * Holds a list of URIs that are pending deletion or undo. If the activity ends before the undo
    * timeout, all of the pending URIs will be deleted.
    *
-   * <p>TODO: move this and OnVoicemailDeletedListener to somewhere like {@link
+   * <p>TODO(twyen): move this and OnVoicemailDeletedListener to somewhere like {@link
    * VisualVoicemailCallLogFragment}. The CallLogAdapter does not need to know about what to do with
    * hidden item or what to hide.
    */
@@ -879,7 +899,7 @@
       getEnrichedCallManager().requestCapabilities(number);
       return false;
     }
-    return capabilities.supportsCallComposer();
+    return capabilities.isCallComposerCapable();
   }
 
   @NonNull
@@ -977,7 +997,7 @@
   }
 
   @MainThread
-  private static CallDetailsEntries createCallDetailsEntries(Cursor cursor, int count) {
+  private CallDetailsEntries createCallDetailsEntries(Cursor cursor, int count) {
     Assert.isMainThread();
     int position = cursor.getPosition();
     CallDetailsEntries.Builder entries = CallDetailsEntries.newBuilder();
@@ -990,6 +1010,16 @@
               .setDate(cursor.getLong(CallLogQuery.DATE))
               .setDuration(cursor.getLong(CallLogQuery.DURATION))
               .setFeatures(cursor.getInt(CallLogQuery.FEATURES));
+
+      String phoneAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
+      if (getLightbringer().getPhoneAccountComponentName() != null
+          && getLightbringer()
+              .getPhoneAccountComponentName()
+              .flattenToString()
+              .equals(phoneAccountComponentName)) {
+        entry.setIsLightbringerCall(true);
+      }
+
       entries.addEntries(entry.build());
       cursor.moveToNext();
     }
diff --git a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
index b1ad0d9..78ec7a6 100644
--- a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
+++ b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
@@ -66,9 +66,8 @@
                     .update(voicemailUri, values, Voicemails.IS_READ + " = 0", null)
                 > 0) {
               uploadVoicemailLocalChangesToServer(context);
+              CallLogNotificationsService.markAllNewVoicemailsAsOld(context);
             }
-
-            CallLogNotificationsService.markAllNewVoicemailsAsOld(context);
             return null;
           }
         });
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index a4a2ba2..f7ea63c 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -50,12 +50,8 @@
 import android.widget.TextView;
 import android.widget.Toast;
 import com.android.contacts.common.ClipboardUtils;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
 import com.android.contacts.common.dialog.CallSubjectDialog;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType;
-import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.app.DialtactsActivity;
 import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener;
@@ -73,8 +69,11 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.CompatUtils;
 import com.android.dialer.configprovider.ConfigProviderBindings;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.dialercontact.SimDetails;
+import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.lettertile.LetterTileDrawable.ContactType;
 import com.android.dialer.lightbringer.Lightbringer;
 import com.android.dialer.lightbringer.LightbringerComponent;
 import com.android.dialer.logging.ContactSource;
@@ -91,6 +90,7 @@
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.CallUtil;
 import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.UriUtils;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -164,7 +164,7 @@
    * The callable phone number for the current call log entry. Cached here as the call back intent
    * is set only when the actions ViewStub is inflated.
    */
-  public String number;
+  @Nullable public String number;
   /** The post-dial numbers that are dialed following the phone number. */
   public String postDialDigits;
   /** The formatted phone number to display. */
@@ -584,8 +584,12 @@
       return;
     }
 
+    TextView callTypeOrLocationView =
+        ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text));
+
     if (canPlaceCallToNumber) {
       callButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number));
+      callTypeOrLocationView.setVisibility(View.GONE);
     }
 
     if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) {
@@ -594,13 +598,10 @@
               TextUtils.expandTemplate(
                   mContext.getString(R.string.call_log_action_call),
                   nameOrNumber == null ? "" : nameOrNumber));
-      TextView callTypeOrLocationView =
-          ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text));
+
       if (callType == Calls.VOICEMAIL_TYPE && !TextUtils.isEmpty(callTypeOrLocation)) {
         callTypeOrLocationView.setText(callTypeOrLocation);
         callTypeOrLocationView.setVisibility(View.VISIBLE);
-      } else {
-        callTypeOrLocationView.setVisibility(View.GONE);
       }
       callButtonView.setVisibility(View.VISIBLE);
     }
@@ -929,7 +930,9 @@
       contact.setNameOrNumber((String) nameOrNumber);
     }
     contact.setContactType(getContactType());
-    contact.setNumber(number);
+    if (number != null) {
+      contact.setNumber(number);
+    }
     /* second line of contact view. */
     if (!TextUtils.isEmpty(info.name)) {
       contact.setDisplayNumber(displayNumber);
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
index be1ebfb..0490b99 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
@@ -24,7 +24,13 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import android.support.annotation.WorkerThread;
+import android.telecom.PhoneAccountHandle;
+import com.android.dialer.app.voicemail.LegacyVoicemailNotificationReceiver;
+import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
 
@@ -44,7 +50,8 @@
  */
 public class CallLogNotificationsService extends IntentService {
 
-  private static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
+  @VisibleForTesting
+  static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
       "com.android.dialer.calllog.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD";
 
   private static final String ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD =
@@ -64,6 +71,10 @@
   public static final String ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION =
       "com.android.dialer.calllog.CALL_BACK_FROM_MISSED_CALL_NOTIFICATION";
 
+  /** Action mark legacy voicemail as dismissed. */
+  public static final String ACTION_LEGACY_VOICEMAIL_DISMISSED =
+      "com.android.dialer.calllog.ACTION_LEGACY_VOICEMAIL_DISMISSED";
+
   /**
    * Extra to be included with {@link #ACTION_INCOMING_POST_CALL} to represent a post call note.
    *
@@ -79,6 +90,8 @@
    */
   private static final String EXTRA_POST_CALL_NUMBER = "POST_CALL_NUMBER";
 
+  private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "PHONE_ACCOUNT_HANDLE";
+
   public static final int UNKNOWN_MISSED_CALL_COUNT = -1;
 
   public CallLogNotificationsService() {
@@ -108,6 +121,15 @@
     context.startService(serviceIntent);
   }
 
+  public static void cancelAllMissedCalls(Context context) {
+    LogUtil.enterBlock("CallLogNotificationsService.cancelAllMissedCalls");
+    DialerExecutorComponent.get(context)
+        .dialerExecutorFactory()
+        .createNonUiTaskBuilder(new CancelAllMissedCallsWorker())
+        .build()
+        .executeSerial(context);
+  }
+
   public static PendingIntent createMarkAllNewVoicemailsAsOldIntent(@NonNull Context context) {
     Intent intent = new Intent(context, CallLogNotificationsService.class);
     intent.setAction(CallLogNotificationsService.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD);
@@ -122,13 +144,6 @@
     return PendingIntent.getService(context, 0, intent, 0);
   }
 
-  public static void cancelAllMissedCalls(@NonNull Context context) {
-    LogUtil.enterBlock("CallLogNotificationsService.cancelAllMissedCalls");
-    Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
-    serviceIntent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS);
-    context.startService(serviceIntent);
-  }
-
   public static PendingIntent createCancelAllMissedCallsPendingIntent(@NonNull Context context) {
     Intent intent = new Intent(context, CallLogNotificationsService.class);
     intent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS);
@@ -143,6 +158,14 @@
     return PendingIntent.getService(context, 0, intent, 0);
   }
 
+  public static PendingIntent createLegacyVoicemailDismissedPendingIntent(
+      @NonNull Context context, PhoneAccountHandle phoneAccountHandle) {
+    Intent intent = new Intent(context, CallLogNotificationsService.class);
+    intent.setAction(ACTION_LEGACY_VOICEMAIL_DISMISSED);
+    intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+    return PendingIntent.getService(context, 0, intent, 0);
+  }
+
   @Override
   protected void onHandleIntent(Intent intent) {
     if (intent == null) {
@@ -168,15 +191,17 @@
         VoicemailQueryHandler.markSingleNewVoicemailAsRead(this, voicemailUri);
         VisualVoicemailNotifier.cancelSingleVoicemailNotification(this, voicemailUri);
         break;
+      case ACTION_LEGACY_VOICEMAIL_DISMISSED:
+        LegacyVoicemailNotificationReceiver.setDismissed(
+            this, intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE), true);
+        break;
       case ACTION_INCOMING_POST_CALL:
         String note = intent.getStringExtra(EXTRA_POST_CALL_NOTE);
         String phoneNumber = intent.getStringExtra(EXTRA_POST_CALL_NUMBER);
         MissedCallNotifier.getIstance(this).insertPostCallNotification(phoneNumber, note);
         break;
       case ACTION_CANCEL_ALL_MISSED_CALLS:
-        CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(this);
-        MissedCallNotifier.cancelAllMissedCallNotifications(this);
-        TelecomUtil.cancelMissedCallsNotification(this);
+        cancelAllMissedCalls(this);
         break;
       case ACTION_CANCEL_SINGLE_MISSED_CALL:
         Uri callUri = intent.getData();
@@ -196,4 +221,26 @@
         break;
     }
   }
+
+  @WorkerThread
+  private static void cancelAllMissedCallsBackground(Context context) {
+    LogUtil.enterBlock("CallLogNotificationsService.cancelAllMissedCallsBackground");
+    Assert.isWorkerThread();
+    CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(context);
+    MissedCallNotifier.cancelAllMissedCallNotifications(context);
+    TelecomUtil.cancelMissedCallsNotification(context);
+  }
+
+  /** Worker that cancels all missed call notifications and updates call log entries. */
+  private static class CancelAllMissedCallsWorker implements Worker<Context, Void> {
+
+    @Nullable
+    @Override
+    public Void doInBackground(@Nullable Context context) throws Throwable {
+      if (context != null) {
+        cancelAllMissedCallsBackground(context);
+      }
+      return null;
+    }
+  }
 }
diff --git a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
index 5c3d4d9..b16eb1b 100644
--- a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
+++ b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
@@ -22,76 +22,63 @@
 import android.app.DialogFragment;
 import android.app.FragmentManager;
 import android.app.ProgressDialog;
-import android.content.ContentResolver;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.DialogInterface.OnClickListener;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.design.widget.Snackbar;
 import com.android.dialer.app.R;
 import com.android.dialer.common.Assert;
+import com.android.dialer.common.concurrent.DialerExecutor;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
+import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
 
 /** Dialog that clears the call log after confirming with the user */
 public class ClearCallLogDialog extends DialogFragment {
 
-  private Listener listener;
+  private DialerExecutor<Void> clearCallLogTask;
+  private ProgressDialog progressDialog;
 
   /** Preferred way to show this dialog */
-  public static void show(FragmentManager fragmentManager, @NonNull Listener listener) {
+  public static void show(FragmentManager fragmentManager) {
     ClearCallLogDialog dialog = new ClearCallLogDialog();
-    dialog.listener = Assert.isNotNull(listener);
     dialog.show(fragmentManager, "deleteCallLog");
   }
 
   @Override
+  public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    clearCallLogTask =
+        DialerExecutorComponent.get(getContext())
+            .dialerExecutorFactory()
+            .createUiTaskBuilder(
+                getFragmentManager(),
+                "clearCallLogTask",
+                new ClearCallLogWorker(getActivity().getApplicationContext()))
+            .onSuccess(this::onSuccess)
+            .build();
+  }
+
+  @Override
   public Dialog onCreateDialog(Bundle savedInstanceState) {
-    final ContentResolver resolver = getActivity().getContentResolver();
-    final Context context = getActivity().getApplicationContext();
-    final OnClickListener okListener =
-        new OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            final ProgressDialog progressDialog =
-                ProgressDialog.show(
-                    getActivity(), getString(R.string.clearCallLogProgress_title), "", true, false);
-            progressDialog.setOwnerActivity(getActivity());
-            CallLogNotificationsService.cancelAllMissedCalls(getContext());
-            final AsyncTask<Void, Void, Void> task =
-                new AsyncTask<Void, Void, Void>() {
-                  @Override
-                  protected Void doInBackground(Void... params) {
-                    resolver.delete(Calls.CONTENT_URI, null, null);
-                    CachedNumberLookupService cachedNumberLookupService =
-                        PhoneNumberCache.get(context).getCachedNumberLookupService();
-                    if (cachedNumberLookupService != null) {
-                      cachedNumberLookupService.clearAllCacheEntries(context);
-                    }
-                    return null;
-                  }
+    OnClickListener okListener =
+        (dialog, which) -> {
+          progressDialog =
+              ProgressDialog.show(
+                  getActivity(), getString(R.string.clearCallLogProgress_title), "", true, false);
+          progressDialog.setOwnerActivity(getActivity());
+          CallLogNotificationsService.cancelAllMissedCalls(getContext());
 
-                  @Override
-                  protected void onPostExecute(Void result) {
-                    final Activity activity = progressDialog.getOwnerActivity();
+          // TODO: Once we have the API, we should configure this ProgressDialog
+          // to only show up after a certain time (e.g. 150ms)
+          progressDialog.show();
 
-                    if (activity == null || activity.isDestroyed() || activity.isFinishing()) {
-                      return;
-                    }
-
-                    listener.callHistoryDeleted();
-                    if (progressDialog != null && progressDialog.isShowing()) {
-                      progressDialog.dismiss();
-                    }
-                  }
-                };
-            // TODO: Once we have the API, we should configure this ProgressDialog
-            // to only show up after a certain time (e.g. 150ms)
-            progressDialog.show();
-            task.execute();
-          }
+          clearCallLogTask.executeSerial(null);
         };
     return new AlertDialog.Builder(getActivity())
         .setTitle(R.string.clearCallLogConfirmation_title)
@@ -103,7 +90,48 @@
         .create();
   }
 
-  interface Listener {
-    void callHistoryDeleted();
+  private static class ClearCallLogWorker implements Worker<Void, Void> {
+    private final Context appContext;
+
+    private ClearCallLogWorker(Context appContext) {
+      this.appContext = appContext;
+    }
+
+    @Nullable
+    @Override
+    public Void doInBackground(@Nullable Void unused) throws Throwable {
+      appContext.getContentResolver().delete(Calls.CONTENT_URI, null, null);
+      CachedNumberLookupService cachedNumberLookupService =
+          PhoneNumberCache.get(appContext).getCachedNumberLookupService();
+      if (cachedNumberLookupService != null) {
+        cachedNumberLookupService.clearAllCacheEntries(appContext);
+      }
+      return null;
+    }
+  }
+
+  private void onSuccess(Void unused) {
+    Assert.isNotNull(progressDialog);
+    Activity activity = progressDialog.getOwnerActivity();
+
+    if (activity == null || activity.isDestroyed() || activity.isFinishing()) {
+      return;
+    }
+
+    maybeShowEnrichedCallSnackbar(activity);
+
+    if (progressDialog != null && progressDialog.isShowing()) {
+      progressDialog.dismiss();
+    }
+  }
+
+  private void maybeShowEnrichedCallSnackbar(Activity activity) {
+    if (EnrichedCallComponent.get(activity).getEnrichedCallManager().hasStoredData()) {
+      Snackbar.make(
+              activity.findViewById(R.id.calllog_frame),
+              getString(R.string.multiple_ec_data_deleted),
+              5_000)
+          .show();
+    }
   }
 }
diff --git a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
index 428c716..c64e03e 100644
--- a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
@@ -122,7 +122,10 @@
             .setSound(pinnedTelephonyManager.getVoicemailRingtoneUri(handle))
             .setOngoing(isOngoing)
             .setOnlyAlertOnce(isRefresh)
-            .setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+            .setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle))
+            .setDeleteIntent(
+                CallLogNotificationsService.createLegacyVoicemailDismissedPendingIntent(
+                    context, handle));
 
     if (pinnedTelephonyManager.isVoicemailVibrationEnabled(handle)) {
       builder.setDefaults(Notification.DEFAULT_VIBRATE);
diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java
deleted file mode 100644
index 2424b6d..0000000
--- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2013 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.dialer.app.calllog.calllogcache;
-
-import android.content.Context;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccountHandle;
-import android.text.TextUtils;
-import android.util.ArrayMap;
-import com.android.dialer.calllogutils.PhoneAccountUtils;
-import com.android.dialer.telecom.TelecomUtil;
-import java.util.Map;
-
-/**
- * This is the CallLogCache for versions of dialer Lollipop Mr1 and above with support for multi-SIM
- * devices.
- *
- * <p>This class should not be initialized directly and instead be acquired from {@link
- * CallLogCache#getCallLogCache}.
- */
-class CallLogCacheLollipopMr1 extends CallLogCache {
-
-  private final Map<PhoneAccountHandle, String> mPhoneAccountLabelCache = new ArrayMap<>();
-  private final Map<PhoneAccountHandle, Integer> mPhoneAccountColorCache = new ArrayMap<>();
-  private final Map<PhoneAccountHandle, Boolean> mPhoneAccountCallWithNoteCache = new ArrayMap<>();
-
-  /* package */ CallLogCacheLollipopMr1(Context context) {
-    super(context);
-  }
-
-  @Override
-  public void reset() {
-    mPhoneAccountLabelCache.clear();
-    mPhoneAccountColorCache.clear();
-    mPhoneAccountCallWithNoteCache.clear();
-
-    super.reset();
-  }
-
-  @Override
-  public boolean isVoicemailNumber(
-      PhoneAccountHandle accountHandle, @Nullable CharSequence number) {
-    if (TextUtils.isEmpty(number)) {
-      return false;
-    }
-    return TelecomUtil.isVoicemailNumber(mContext, accountHandle, number.toString());
-  }
-
-  @Override
-  public String getAccountLabel(PhoneAccountHandle accountHandle) {
-    if (mPhoneAccountLabelCache.containsKey(accountHandle)) {
-      return mPhoneAccountLabelCache.get(accountHandle);
-    } else {
-      String label = PhoneAccountUtils.getAccountLabel(mContext, accountHandle);
-      mPhoneAccountLabelCache.put(accountHandle, label);
-      return label;
-    }
-  }
-
-  @Override
-  public int getAccountColor(PhoneAccountHandle accountHandle) {
-    if (mPhoneAccountColorCache.containsKey(accountHandle)) {
-      return mPhoneAccountColorCache.get(accountHandle);
-    } else {
-      Integer color = PhoneAccountUtils.getAccountColor(mContext, accountHandle);
-      mPhoneAccountColorCache.put(accountHandle, color);
-      return color;
-    }
-  }
-
-  @Override
-  public boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle) {
-    if (mPhoneAccountCallWithNoteCache.containsKey(accountHandle)) {
-      return mPhoneAccountCallWithNoteCache.get(accountHandle);
-    } else {
-      Boolean supportsCallWithNote =
-          PhoneAccountUtils.getAccountSupportsCallSubject(mContext, accountHandle);
-      mPhoneAccountCallWithNoteCache.put(accountHandle, supportsCallWithNote);
-      return supportsCallWithNote;
-    }
-  }
-}
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
index 82fc229..155a6a2 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
@@ -163,7 +163,7 @@
     if (request.isLocalRequest()) {
       info = mContactInfoHelper.lookupNumber(request.number, request.countryIso);
       if (info != null && !info.contactExists) {
-        // TODO: Maybe skip look up if it's already available in cached number lookup
+        // TODO(wangqi): Maybe skip look up if it's already available in cached number lookup
         // service.
         long start = SystemClock.elapsedRealtime();
         mContactInfoHelper.updateFromCequintCallerId(mCequintCallerIdManager, info, request.number);
diff --git a/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java b/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
index 4c8e32a..537acd0 100644
--- a/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
+++ b/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
@@ -25,10 +25,10 @@
 import android.support.annotation.VisibleForTesting;
 import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
 import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.dialer.app.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
index dbd4e86..ca12e43 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
@@ -20,9 +20,9 @@
 import android.database.Cursor;
 import android.telephony.PhoneNumberUtils;
 import android.view.View;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.dialer.app.R;
 import com.android.dialer.blocking.BlockNumberDialogFragment;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.logging.InteractionEvent;
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
index f53a458..db119ab 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
@@ -31,7 +31,6 @@
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.dialer.app.R;
 import com.android.dialer.blocking.BlockedNumbersMigrator;
 import com.android.dialer.blocking.BlockedNumbersMigrator.Listener;
@@ -40,6 +39,7 @@
 import com.android.dialer.blocking.FilteredNumbersUtil.CheckForSendToVoicemailContactListener;
 import com.android.dialer.blocking.FilteredNumbersUtil.ImportSendToVoicemailContactsListener;
 import com.android.dialer.database.FilteredNumberContract;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
 
 public class BlockedNumbersFragment extends ListFragment
diff --git a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
index d98395e..6e1d1a5 100644
--- a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
@@ -26,15 +26,15 @@
 import android.widget.QuickContactBadge;
 import android.widget.SimpleCursorAdapter;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.app.R;
 import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.util.UriUtils;
 
 public class NumbersAdapter extends SimpleCursorAdapter {
 
diff --git a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
index 313efb4..1e90eec 100644
--- a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
@@ -19,9 +19,9 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.view.View;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.dialer.app.R;
 import com.android.dialer.blocking.FilteredNumbersUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
index 05d017b..afc7c13 100644
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
@@ -45,13 +45,13 @@
 import android.widget.FrameLayout.LayoutParams;
 import android.widget.ImageView;
 import android.widget.ListView;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.ContactTileLoaderFactory;
 import com.android.contacts.common.list.ContactTileView;
 import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
 import com.android.dialer.app.R;
 import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.ViewUtil;
 import com.android.dialer.widget.EmptyContentView;
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
index 30870eb..88a6dff 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
@@ -18,20 +18,23 @@
 
 import android.content.ClipData;
 import android.content.Context;
+import android.net.Uri;
 import android.provider.ContactsContract.PinnedPositions;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.ImageView;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.MoreContactUtils;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.contacts.common.list.ContactEntry;
 import com.android.contacts.common.list.ContactTileView;
+import com.android.contacts.common.model.ContactLoader;
 import com.android.dialer.app.R;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.callintent.SpeedDialContactType;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
 
@@ -94,11 +97,11 @@
     isPinned = (entry.pinned != PinnedPositions.UNPINNED);
     isStarred = entry.isFavorite;
     if (entry != null) {
+      sendViewNotification(getContext(), entry.lookupUri);
       // Grab the phone-number to call directly. See {@link onClick()}.
       mPhoneNumberString = entry.phoneNumber;
 
-      // If this is a blank entry, don't show anything.
-      // TODO krelease: Just hide the view for now. For this to truly look like an empty row
+      // If this is a blank entry, don't show anything. For this to truly look like an empty row
       // the entire ContactTileRow needs to be hidden.
       if (entry == ContactEntry.BLANK_ENTRY) {
         setVisibility(View.INVISIBLE);
@@ -186,4 +189,22 @@
   public void setPosition(int position) {
     this.position = position;
   }
+
+  /**
+   * Send a notification using a {@link ContactLoader} to inform the sync adapter that we are
+   * viewing a particular contact, so that it can download the high-res photo.
+   */
+  private static void sendViewNotification(Context context, Uri contactUri) {
+    ContactLoader loader = new ContactLoader(context, contactUri, true /* postViewNotification */);
+    loader.registerListener(
+        0,
+        (loader1, contact) -> {
+          try {
+            loader1.reset();
+          } catch (RuntimeException e) {
+            LogUtil.e("PhoneFavoriteTileView.onLoadComplete", "error resetting loader", e);
+          }
+        });
+    loader.startLoading();
+  }
 }
diff --git a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
index dbd601a..cd5712e 100644
--- a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
+++ b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
@@ -34,13 +34,13 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.ContactTileLoaderFactory;
 import com.android.contacts.common.list.ContactEntry;
 import com.android.contacts.common.list.ContactTileView;
 import com.android.contacts.common.preference.ContactsPreferences;
 import com.android.dialer.app.R;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.lightbringer.Lightbringer;
 import com.android.dialer.lightbringer.LightbringerComponent;
 import com.android.dialer.logging.InteractionEvent;
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_add_call.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_add_call.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_current_call.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_current_call.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
old mode 100644
new mode 100755
Binary files differ
diff --git a/java/com/android/dialer/app/res/layout/call_log_activity.xml b/java/com/android/dialer/app/res/layout/call_log_activity.xml
index 4e2b188..a5e5326 100644
--- a/java/com/android/dialer/app/res/layout/call_log_activity.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_activity.xml
@@ -15,26 +15,27 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/calllog_frame"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:orientation="vertical">
+    android:id="@+id/calllog_frame"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/background_dialer_light"
+    android:orientation="vertical">
   <com.android.contacts.common.list.ViewPagerTabs
-    android:id="@+id/viewpager_header"
-    style="@style/DialtactsActionBarTabTextStyle"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/tab_height"
-    android:layout_gravity="top"
-    android:elevation="@dimen/tab_elevation"
-    android:orientation="horizontal"
-    android:textAllCaps="true"/>
+      android:id="@+id/viewpager_header"
+      style="@style/DialtactsActionBarTabTextStyle"
+      android:layout_width="match_parent"
+      android:layout_height="@dimen/tab_height"
+      android:layout_gravity="top"
+      android:elevation="@dimen/tab_elevation"
+      android:orientation="horizontal"
+      android:textAllCaps="true"/>
   <android.support.v4.view.ViewPager
-    android:id="@+id/call_log_pager"
-    android:layout_width="match_parent"
-    android:layout_height="0dp"
-    android:layout_weight="1"/>
+      android:id="@+id/call_log_pager"
+      android:layout_width="match_parent"
+      android:layout_height="0dp"
+      android:layout_weight="1"/>
   <RelativeLayout
-    android:id="@+id/floating_action_button_container"
-    android:layout_width="0dp"
-    android:layout_height="0dp"/>
+      android:id="@+id/floating_action_button_container"
+      android:layout_width="0dp"
+      android:layout_height="0dp"/>
 </LinearLayout>
diff --git a/java/com/android/dialer/app/res/layout/call_log_fragment.xml b/java/com/android/dialer/app/res/layout/call_log_fragment.xml
index bbfe4e3..efc08fb 100644
--- a/java/com/android/dialer/app/res/layout/call_log_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_fragment.xml
@@ -18,7 +18,6 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
-  android:background="@color/background_dialer_call_log"
   android:orientation="vertical">
 
   <LinearLayout
@@ -37,6 +36,7 @@
         android:paddingLeft="@dimen/select_all_icon_padding"
         android:paddingRight="@dimen/select_all_icon_padding"
         android:gravity="center_vertical"
+        android:contentDescription="@string/select_all"
         android:src="@drawable/ic_empty_check_mark_white_24dp"/>
     <TextView
         android:id="@+id/select_all_view_text"
@@ -64,7 +64,6 @@
     android:paddingBottom="@dimen/floating_action_button_list_bottom_padding"
     android:paddingStart="@dimen/call_log_horizontal_margin"
     android:paddingEnd="@dimen/call_log_horizontal_margin"
-    android:background="@color/background_dialer_call_log"
     android:clipToPadding="false"/>
 
   <com.android.dialer.widget.EmptyContentView
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
index 5046383..ec9e5a0 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
@@ -35,8 +35,7 @@
 
   <LinearLayout
     android:id="@+id/call_action"
-    style="@style/CallLogActionStyle"
-    android:paddingTop="@dimen/call_log_actions_top_padding">
+    style="@style/CallLogActionStyle">
 
     <ImageView
       style="@style/CallLogActionIconStyle"
diff --git a/java/com/android/dialer/app/res/values-bs/strings.xml b/java/com/android/dialer/app/res/values-bs/strings.xml
index fb00ce4..9d8914c 100644
--- a/java/com/android/dialer/app/res/values-bs/strings.xml
+++ b/java/com/android/dialer/app/res/values-bs/strings.xml
@@ -100,7 +100,7 @@
     <string name="description_video_call" msgid="3738199365585751727">"Videopoziv."</string>
     <string name="description_send_text_message" msgid="8450269896765568596">"Pošalji SMS kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_call_log_unheard_voicemail" msgid="2258821530650350303">"Nepreslušana govorna pošta"</string>
-    <string name="description_start_voice_search" msgid="8380022725973015261">"Pokreni glasovno pretraživanje"</string>
+    <string name="description_start_voice_search" msgid="8380022725973015261">"Pokreni glasovnu pretragu"</string>
     <string name="menu_callNumber" msgid="1540773545517152514">"Pozovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="voicemail" msgid="8899540969000957954">"Govorna pošta"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
@@ -127,7 +127,7 @@
     <string name="meid" msgid="3333779521535224028">"MEID"</string>
     <string name="simContacts_emptyLoading" msgid="6205424276735652071">"Učitavanje sa SIM kartice…"</string>
     <string name="simContacts_title" msgid="7961069730386378887">"Kontakti sa SIM kartice"</string>
-    <string name="voice_search_not_available" msgid="6546240433719732905">"Glasovno pretraživanje nije dostupno"</string>
+    <string name="voice_search_not_available" msgid="6546240433719732905">"Glasovna pretraga nije dostupna"</string>
     <string name="call_not_available" msgid="7850148370757361155">"Nije moguće uputiti poziv jer je aplikacija Telefon onemogućena."</string>
     <string name="dialer_hint_find_contact" msgid="2023214799381149808">"Traži kontakte"</string>
     <string name="block_number_search_hint" msgid="5377706079015099416">"Dodajte broj ili tražite kontakte"</string>
@@ -157,7 +157,7 @@
     <string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Dodaj u favorite"</string>
     <string name="contact_tooltip" msgid="8871614660967439999">"Dodirnite sliku da vidite sve brojeve ili dodirnite i držite da promijenite raspored."</string>
     <string name="remove_contact" msgid="2353580570488923668">"Ukloni"</string>
-    <string name="select_all" msgid="408601760696146245">"Odaberi sve"</string>
+    <string name="select_all" msgid="408601760696146245">"Izaberi sve"</string>
     <string name="call_log_action_video_call" msgid="7565549950343850819">"Videopoziv"</string>
     <string name="call_log_action_send_message" msgid="6948727362660115554">"Pošalji poruku"</string>
     <string name="call_log_action_details" msgid="2091370737371449501">"Detalji o pozivu"</string>
diff --git a/java/com/android/dialer/app/res/values-da/strings.xml b/java/com/android/dialer/app/res/values-da/strings.xml
index aabe678..81fd5dd 100644
--- a/java/com/android/dialer/app/res/values-da/strings.xml
+++ b/java/com/android/dialer/app/res/values-da/strings.xml
@@ -88,7 +88,7 @@
     <string name="actionIncomingCall" msgid="891346596090030558">"Indgående opkald"</string>
     <string name="description_entering_bulk_action_mode" msgid="6134916000015585401">"Massehandlingstilstanden startes"</string>
     <string name="description_leaving_bulk_action_mode" msgid="4355853387639765529">"Massehandlingstilstanden blev afsluttet"</string>
-    <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Valgt <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_selecting_bulk_action_mode" msgid="7228565941043117618">"Vælg <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
     <string name="description_unselecting_bulk_action_mode" msgid="6450971299622386060">"Fravalgt <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
     <string name="description_call_log_play_button" msgid="2349845005022431438">"Afspil telefonsvarerbesked"</string>
     <string name="description_view_contact" msgid="3940984937384372665">"Vis kontaktpersonen <xliff:g id="NAME">%1$s</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-sq/strings.xml b/java/com/android/dialer/app/res/values-sq/strings.xml
index 8f43ba7..ca3d522 100644
--- a/java/com/android/dialer/app/res/values-sq/strings.xml
+++ b/java/com/android/dialer/app/res/values-sq/strings.xml
@@ -236,6 +236,6 @@
     <string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> është jashtë linje dhe nuk mund të kontaktohet"</string>
     <string name="about_phone_label" msgid="582991354677973731">"Rreth"</string>
     <string name="view_conversation" msgid="7895904782094119702">"Shiko"</string>
-    <string name="ec_data_deleted" msgid="4794880345545827107">"Telefonata u fshi. Shiko dhe fshi bashkëngjitjet e ndara gjatë kësaj telefonate te Messages."</string>
-    <string name="multiple_ec_data_deleted" msgid="2971579891973176316">"Telefonatat u fshinë. Shiko dhe fshi bashkëngjitjet e ndara gjatë telefonatave te Messages."</string>
+    <string name="ec_data_deleted" msgid="4794880345545827107">"Telefonata u fshi. Shiko dhe fshi bashkëngjitjet e ndara gjatë kësaj telefonate te \"Mesazhet\"."</string>
+    <string name="multiple_ec_data_deleted" msgid="2971579891973176316">"Telefonatat u fshinë. Shiko dhe fshi bashkëngjitjet e ndara gjatë telefonatave te \"Mesazhet\"."</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ur/strings.xml b/java/com/android/dialer/app/res/values-ur/strings.xml
index f713f4c..2b6a3eb 100644
--- a/java/com/android/dialer/app/res/values-ur/strings.xml
+++ b/java/com/android/dialer/app/res/values-ur/strings.xml
@@ -236,6 +236,6 @@
     <string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> آف لائن ہے اور اس تک پہنچا نہیں جا سکتا"</string>
     <string name="about_phone_label" msgid="582991354677973731">"تفصیل"</string>
     <string name="view_conversation" msgid="7895904782094119702">"دیکھیں"</string>
-    <string name="ec_data_deleted" msgid="4794880345545827107">"کال حذف ہو گئی۔ اس کال کے دوران اشتراک کردہ منسلکہ جات کو \'پیغامات \' میں ملاحظہ کریں اور حذف کریں۔"</string>
-    <string name="multiple_ec_data_deleted" msgid="2971579891973176316">"کالیں حذف ہو گئیں۔ کالوں کے دوران اشتراک کردہ منسلکہ جات کو \'پیغامات \' میں ملاحظہ کریں اور حذف کریں۔"</string>
+    <string name="ec_data_deleted" msgid="4794880345545827107">"کال حذف ہو گئی۔ اس کال کے دوران پیغامات کے اندر اشتراک کردہ منسلکہ جات ملاحظہ کریں اور حذف کریں۔"</string>
+    <string name="multiple_ec_data_deleted" msgid="2971579891973176316">"کالیں حذف ہو گئیں۔ کالوں کے دوران پیغامات کے اندر اشتراک کردہ منسلکہ جات ملاحظہ کریں اور حذف کریں۔"</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml
index 2f6d87b..7a08dca 100644
--- a/java/com/android/dialer/app/res/values/colors.xml
+++ b/java/com/android/dialer/app/res/values/colors.xml
@@ -54,7 +54,6 @@
 
   <!-- Background color for search results and call details -->
   <color name="background_dialer_results">#f9f9f9</color>
-  <color name="background_dialer_call_log">@color/background_dialer_light</color>
 
   <!-- Color of the 1dp divider that separates favorites -->
   <color name="favorite_contacts_separator_color">#d0d0d0</color>
diff --git a/java/com/android/dialer/app/settings/DialerSettingsActivity.java b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
index 6036c85..6010f92 100644
--- a/java/com/android/dialer/app/settings/DialerSettingsActivity.java
+++ b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
@@ -31,11 +31,11 @@
 import android.telephony.TelephonyManager;
 import android.view.MenuItem;
 import android.widget.Toast;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
 import com.android.dialer.about.AboutPhoneFragment;
 import com.android.dialer.app.R;
 import com.android.dialer.blocking.FilteredNumberCompat;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
diff --git a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
index 4100521..a81d866 100644
--- a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
+++ b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
@@ -23,15 +23,15 @@
 import android.content.Intent;
 import android.os.Build;
 import android.os.Build.VERSION_CODES;
-import android.preference.PreferenceManager;
+import android.support.annotation.VisibleForTesting;
 import android.support.v4.os.BuildCompat;
-import android.support.v4.os.UserManagerCompat;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
 import com.android.dialer.app.calllog.LegacyVoicemailNotifier;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.PerAccountSharedPreferences;
+import com.android.dialer.util.DialerUtils;
 import com.android.voicemail.VoicemailComponent;
 
 /**
@@ -43,15 +43,14 @@
 public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
 
   private static final String LEGACY_VOICEMAIL_COUNT = "legacy_voicemail_count";
+  @VisibleForTesting static final String LEGACY_VOICEMAIL_DISMISSED = "legacy_voicemail_dismissed";
 
   /**
-   * Hidden extra for {@link TelephonyManager#ACTION_SHOW_VOICEMAIL_NOTIFICATION} for whether the
-   * notification is just a refresh or for a new voicemail. The phone should not play a ringtone or
-   * vibrate during a refresh if the notification is already showing.
-   *
-   * <p>TODO(b/62202833): make public
+   * Whether the notification is just a refresh or for a new voicemail. The phone should not play a
+   * ringtone or vibrate during a refresh if the notification is already showing. This is Hidden in
+   * O and public in O MR1.
    */
-  private static final String EXTRA_IS_REFRESH = "is_refresh";
+  @VisibleForTesting static final String EXTRA_IS_REFRESH = "is_refresh";
 
   @Override
   public void onReceive(Context context, Intent intent) {
@@ -72,8 +71,21 @@
     PhoneAccountHandle phoneAccountHandle =
         Assert.isNotNull(intent.getParcelableExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE));
     int count = intent.getIntExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, -1);
+    boolean isRefresh = intent.getBooleanExtra(EXTRA_IS_REFRESH, false);
+    LogUtil.i("LegacyVoicemailNotificationReceiver.onReceive", "isRefresh: " + isRefresh);
+    PerAccountSharedPreferences preferences = getSharedPreferences(context, phoneAccountHandle);
+    if (isRefresh) {
+      if (preferences.getBoolean(LEGACY_VOICEMAIL_DISMISSED, false)) {
+        LogUtil.i(
+            "LegacyVoicemailNotificationReceiver.onReceive",
+            "notification dismissed, ignoring refresh");
+        return;
+      }
+    } else {
+      setDismissed(context, phoneAccountHandle, false);
+    }
 
-    if (!hasVoicemailCountChanged(context, phoneAccountHandle, count)) {
+    if (!hasVoicemailCountChanged(preferences, count)) {
       LogUtil.i(
           "LegacyVoicemailNotificationReceiver.onReceive",
           "voicemail count hasn't changed, ignoring");
@@ -116,27 +128,24 @@
         voicemailNumber,
         callVoicemailIntent,
         voicemailSettingIntent,
-        intent.getBooleanExtra(EXTRA_IS_REFRESH, false));
+        isRefresh);
+  }
+
+  public static void setDismissed(
+      Context context, PhoneAccountHandle phoneAccountHandle, boolean dismissed) {
+    getSharedPreferences(context, phoneAccountHandle)
+        .edit()
+        .putBoolean(LEGACY_VOICEMAIL_DISMISSED, dismissed)
+        .apply();
   }
 
   private static boolean hasVoicemailCountChanged(
-      Context context, PhoneAccountHandle phoneAccountHandle, int newCount) {
-    // Need credential encrypted storage to access preferences.
-    if (!UserManagerCompat.isUserUnlocked(context)) {
-      LogUtil.i(
-          "LegacyVoicemailNotificationReceiver.onReceive",
-          "User locked, bypassing voicemail count check");
-      return true;
-    }
-
+      PerAccountSharedPreferences preferences, int newCount) {
     if (newCount == -1) {
       // Carrier does not report voicemail count
       return true;
     }
 
-    PerAccountSharedPreferences preferences =
-        new PerAccountSharedPreferences(
-            context, phoneAccountHandle, PreferenceManager.getDefaultSharedPreferences(context));
     // Carriers may send multiple notifications for the same voicemail.
     if (newCount != 0 && newCount == preferences.getInt(LEGACY_VOICEMAIL_COUNT, -1)) {
       return false;
@@ -144,4 +153,13 @@
     preferences.edit().putInt(LEGACY_VOICEMAIL_COUNT, newCount).apply();
     return true;
   }
+
+  @VisibleForTesting
+  static PerAccountSharedPreferences getSharedPreferences(
+      Context context, PhoneAccountHandle phoneAccountHandle) {
+    return new PerAccountSharedPreferences(
+        context,
+        phoneAccountHandle,
+        DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context));
+  }
 }
diff --git a/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java b/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
index 8d70cdb..d3c3820 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
@@ -86,6 +86,7 @@
     if (newIsPluggedIn) {
       newRoute = CallAudioState.ROUTE_WIRED_HEADSET;
     } else {
+      mVoicemailPlaybackPresenter.pausePlayback();
       if (mWasSpeakerOn) {
         newRoute = CallAudioState.ROUTE_SPEAKER;
       } else {
diff --git a/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java b/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
index a0bae36..bc6ffb5 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
@@ -92,7 +92,7 @@
       }
     }
     alertItem.updateStatus(statuses, this);
-    // TODO: b/30668323 support error from multiple sources.
+    // TODO(twyen): b/30668323 support error from multiple sources.
     return;
   }
 
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
index f160e02..9c1e446 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
@@ -85,7 +85,7 @@
           // When the undo button is pressed, the viewHolder we have is no longer valid because when
           // we hide the view it is binded to something else, and the layout is not updated for
           // hidden items. copy the adapter position so we can update the view upon undo.
-          // TODO: refactor this so the view holder will always be valid.
+          // TODO(twyen): refactor this so the view holder will always be valid.
           final int adapterPosition = mViewHolder.getAdapterPosition();
 
           mPresenter.pausePlayback();
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java b/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
index 3a169e4..fa637f3 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
@@ -24,9 +24,9 @@
 import android.provider.VoicemailContract.Status;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java b/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
index e3dc0b0..865d252 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
@@ -31,9 +31,9 @@
 import android.text.style.StyleSpan;
 import android.view.View;
 import android.view.View.OnClickListener;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
 import com.android.dialer.app.voicemail.error.VoicemailErrorMessage.Action;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
@@ -75,7 +75,7 @@
 
   @Nullable
   VoicemailErrorMessage maybeCreateTosMessage() {
-    // TODO: add filtering based on carrier
+    // TODO(mdooley): add filtering based on carrier
     if (hasAcceptedTos()) {
       return null;
     }
diff --git a/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java b/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
index e639eff..d3024f4 100644
--- a/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
@@ -259,7 +259,7 @@
 
   @NonNull
   private static CharSequence getCustomerSupportString(Context context, int id) {
-    // TODO: get number based on the country the user is currently in.
+    // TODO(twyen): get number based on the country the user is currently in.
     return ContactDisplayUtils.getTtsSpannedPhoneNumber(
         context.getResources(),
         id,
diff --git a/java/com/android/dialer/backup/AndroidManifest.xml b/java/com/android/dialer/backup/AndroidManifest.xml
index 1cbbe53..84992c0 100644
--- a/java/com/android/dialer/backup/AndroidManifest.xml
+++ b/java/com/android/dialer/backup/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <!--
- ~ Copyright (C) 2016 The Android Open Source Project
+ ~ Copyright (C) 2017 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.
@@ -13,14 +13,13 @@
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License
  -->
-<manifest
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.backup">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.dialer.backup">
 
-  <application
-    android:backupAgent="com.android.dialer.backup.DialerBackupAgent"
-    android:fullBackupOnly="true"
-    android:restoreAnyVersion="true"
-    />
 
-</manifest>
+  <!-- Android backup service key -->
+  <!-- https://developer.android.com/google/backup/signup.html -->
+  <meta-data
+      android:name="com.google.android.backup.api_key"
+      android:value="AEdPqrEAAAAIn3-Y3JKit1mrzfvcdbVhUiJn2ICtKfhGYLy0Bg"/>
+</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/backup/DialerBackupAgent.java b/java/com/android/dialer/backup/DialerBackupAgent.java
deleted file mode 100644
index a0baf39..0000000
--- a/java/com/android/dialer/backup/DialerBackupAgent.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright (C) 2016 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.dialer.backup;
-
-import android.annotation.TargetApi;
-import android.app.backup.BackupAgent;
-import android.app.backup.BackupDataInput;
-import android.app.backup.BackupDataOutput;
-import android.app.backup.FullBackupDataOutput;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build.VERSION_CODES;
-import android.os.ParcelFileDescriptor;
-import android.provider.CallLog;
-import android.provider.CallLog.Calls;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Voicemails;
-import android.telecom.PhoneAccountHandle;
-import android.util.Pair;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.telecom.TelecomUtil;
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * The Dialer backup agent to backup voicemails, and files under files, shared prefs and databases
- */
-public class DialerBackupAgent extends BackupAgent {
-  // File names suffix for backup/restore.
-  private static final String VOICEMAIL_BACKUP_FILE_SUFFIX = "_voicemail_backup.proto";
-  // File name formats for backup. It looks like 000000_voicemail_backup.proto, 0000001...
-  private static final String VOICEMAIL_BACKUP_FILE_FORMAT = "%06d" + VOICEMAIL_BACKUP_FILE_SUFFIX;
-  // Order by Date entries from database. We start backup from the newest.
-  private static final String ORDER_BY_DATE = "date DESC";
-  // Voicemail Uri Column
-  public static final String VOICEMAIL_URI = "voicemail_uri";
-  // Voicemail packages to backup
-  public static final String VOICEMAIL_SOURCE_PACKAGE = "com.google.android.dialer";
-
-  private long voicemailsBackedupSoFar = 0;
-  private long sizeOfVoicemailsBackedupSoFar = 0;
-  private boolean maxVoicemailBackupReached = false;
-
-  /**
-   * onBackup is used for Key/Value backup. Since we are using Dolly/Android Auto backup, we do not
-   * need to implement this method and Dolly should not be calling this. Instead Dolly will be
-   * calling onFullBackup.
-   */
-  @Override
-  public void onBackup(
-      ParcelFileDescriptor parcelFileDescriptor,
-      BackupDataOutput backupDataOutput,
-      ParcelFileDescriptor parcelFileDescriptor1)
-      throws IOException {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_BACKUP);
-    Assert.fail("Android Backup should not call DialerBackupAgent.onBackup");
-  }
-
-  /**
-   * onRestore is used for Key/Value restore. Since we are using Dolly/Android Auto backup/restore,
-   * we need to implement this method only for backwards compatibility. Dolly should be calling
-   * onFileRestore during its restore.
-   */
-  @Override
-  public void onRestore(
-      BackupDataInput backupDataInput, int i, ParcelFileDescriptor parcelFileDescriptor)
-      throws IOException {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE);
-  }
-
-  @TargetApi(VERSION_CODES.M)
-  @Override
-  public void onFullBackup(FullBackupDataOutput data) throws IOException {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_FULL_BACKUP);
-    LogUtil.i("DialerBackupAgent.onFullBackup", "performing dialer backup");
-
-    List<PhoneAccountHandle> phoneAccountsToArchive =
-        DialerBackupUtils.getPhoneAccountsToArchive(this);
-
-    if (!maxVoicemailBackupReached && !phoneAccountsToArchive.isEmpty()) {
-      voicemailsBackedupSoFar = 0;
-      sizeOfVoicemailsBackedupSoFar = 0;
-
-      LogUtil.i("DialerBackupAgent.onFullBackup", "autoBackup is enabled");
-      ContentResolver contentResolver = getContentResolver();
-      int limit = 1000;
-
-      Uri uri =
-          TelecomUtil.getCallLogUri(this)
-              .buildUpon()
-              .appendQueryParameter(Calls.LIMIT_PARAM_KEY, Integer.toString(limit))
-              .build();
-
-      LogUtil.i("DialerBackupAgent.onFullBackup", "backing up from: " + uri);
-
-      try (Cursor cursor =
-          contentResolver.query(
-              uri,
-              null,
-              String.format(
-                  "(%s = ? AND deleted = 0 AND  %s = ? AND ?)",
-                  Calls.TYPE, Voicemails.SOURCE_PACKAGE),
-              new String[] {
-                Integer.toString(CallLog.Calls.VOICEMAIL_TYPE),
-                VOICEMAIL_SOURCE_PACKAGE,
-                DialerBackupUtils.getPhoneAccountClause(phoneAccountsToArchive)
-              },
-              ORDER_BY_DATE,
-              null)) {
-
-        if (cursor == null) {
-          LogUtil.i("DialerBackupAgent.onFullBackup", "cursor was null");
-          return;
-        }
-
-        LogUtil.i("DialerBackupAgent.onFullBackup", "cursor count: " + cursor.getCount());
-        if (cursor.moveToFirst()) {
-          int fileNum = 0;
-          do {
-            backupRow(
-                data, cursor, String.format(Locale.US, VOICEMAIL_BACKUP_FILE_FORMAT, fileNum++));
-          } while (cursor.moveToNext() && !maxVoicemailBackupReached);
-        } else {
-          LogUtil.i("DialerBackupAgent.onFullBackup", "cursor.moveToFirst failed");
-        }
-      }
-    }
-    LogUtil.i(
-        "DialerBackupAgent.onFullBackup",
-        "vm files backed up: %d, vm size backed up:%d, "
-            + "max vm backup reached:%b, phone accounts to archive: %d",
-        voicemailsBackedupSoFar,
-        sizeOfVoicemailsBackedupSoFar,
-        maxVoicemailBackupReached,
-        phoneAccountsToArchive.size());
-    super.onFullBackup(data);
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_FULL_BACKED_UP);
-  }
-
-  private void backupRow(FullBackupDataOutput data, Cursor cursor, String fileName)
-      throws IOException {
-
-    VoicemailInfo cursorRowInProto =
-        DialerBackupUtils.convertVoicemailCursorRowToProto(cursor, getContentResolver());
-
-    File file = new File(getFilesDir(), fileName);
-    DialerBackupUtils.writeProtoToFile(file, cursorRowInProto);
-
-    if (sizeOfVoicemailsBackedupSoFar + file.length()
-        > DialerBackupUtils.maxVoicemailSizeToBackup) {
-      Logger.get(this).logImpression(DialerImpression.Type.BACKUP_MAX_VM_BACKUP_REACHED);
-      maxVoicemailBackupReached = true;
-      file.delete();
-      return;
-    }
-
-    backupFile(file, data);
-  }
-
-  // TODO: Write to FullBackupDataOutput directly (b/33849960)
-  private void backupFile(File file, FullBackupDataOutput data) throws IOException {
-    try {
-      super.fullBackupFile(file, data);
-      sizeOfVoicemailsBackedupSoFar = sizeOfVoicemailsBackedupSoFar + file.length();
-      voicemailsBackedupSoFar++;
-      Logger.get(this).logImpression(DialerImpression.Type.BACKUP_VOICEMAIL_BACKED_UP);
-      LogUtil.i("DialerBackupAgent.backupFile", "file backed up:" + file.getAbsolutePath());
-    } finally {
-      file.delete();
-    }
-  }
-
-  // Being tracked in b/33839952
-  @Override
-  public void onQuotaExceeded(long backupDataBytes, long quotaBytes) {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_QUOTA_EXCEEDED);
-    LogUtil.i("DialerBackupAgent.onQuotaExceeded", "does nothing");
-  }
-
-  @TargetApi(VERSION_CODES.M)
-  @Override
-  public void onRestoreFile(
-      ParcelFileDescriptor data, long size, File destination, int type, long mode, long mtime)
-      throws IOException {
-    LogUtil.i("DialerBackupAgent.onRestoreFile", "size:" + size + " destination: " + destination);
-
-    String fileName = destination.getName();
-    LogUtil.i("DialerBackupAgent.onRestoreFile", "file name: " + fileName);
-
-    if (fileName.endsWith(VOICEMAIL_BACKUP_FILE_SUFFIX)) {
-      if (DialerBackupUtils.canRestoreVoicemails(getContentResolver(), this)) {
-        try {
-          super.onRestoreFile(data, size, destination, type, mode, mtime);
-          restoreVoicemail(destination);
-          destination.delete();
-        } catch (IOException e) {
-          Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_IO_EXCEPTION);
-          LogUtil.e(
-              "DialerBackupAgent.onRestoreFile", "could not restore voicemail - IOException: ", e);
-        }
-      } else {
-        LogUtil.i("DialerBackupAgent.onRestoreFile", "build does not support restoring voicemails");
-      }
-
-    } else {
-      super.onRestoreFile(data, size, destination, type, mode, mtime);
-      LogUtil.i("DialerBackupAgent.onRestoreFile", "restored: " + fileName);
-      Logger.get(this).logImpression(DialerImpression.Type.BACKUP_RESTORED_FILE);
-    }
-  }
-
-  @Override
-  public void onRestoreFinished() {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_FINISHED);
-    LogUtil.i("DialerBackupAgent.onRestoreFinished", "do nothing");
-  }
-
-  @TargetApi(VERSION_CODES.M)
-  private void restoreVoicemail(File file) throws IOException {
-    Pair<ContentValues, byte[]> pair =
-        DialerBackupUtils.convertVoicemailProtoFileToContentValueAndAudioBytes(
-            file, getApplicationContext());
-
-    if (pair == null) {
-      LogUtil.i("DialerBackupAgent.restoreVoicemail", "not restoring VM due to duplicate");
-      Logger.get(this)
-          .logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING);
-      return;
-    }
-
-    // TODO: Uniquely identify backup agent as the creator of this voicemail b/34084298
-    try (OutputStream restoreStream =
-        getContentResolver()
-            .openOutputStream(
-                getContentResolver()
-                    .insert(VoicemailContract.Voicemails.CONTENT_URI, pair.first))) {
-      DialerBackupUtils.copyAudioBytesToContentUri(pair.second, restoreStream);
-      Logger.get(this).logImpression(DialerImpression.Type.BACKUP_RESTORED_VOICEMAIL);
-    }
-  }
-}
diff --git a/java/com/android/dialer/backup/DialerBackupUtils.java b/java/com/android/dialer/backup/DialerBackupUtils.java
deleted file mode 100644
index fe714f6..0000000
--- a/java/com/android/dialer/backup/DialerBackupUtils.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Copyright (C) 2016 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.dialer.backup;
-
-import android.annotation.TargetApi;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build.VERSION_CODES;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.util.Pair;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderBindings;
-import com.android.voicemail.VoicemailComponent;
-import com.google.common.io.ByteStreams;
-import com.google.common.io.Files;
-import com.google.protobuf.ByteString;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Helper functions for DialerBackupAgent */
-public class DialerBackupUtils {
-  // Backup voicemails up to 20MB
-  static long maxVoicemailSizeToBackup = 20000000L;
-  static final String RESTORED_COLUMN = "restored";
-
-  private DialerBackupUtils() {}
-
-  public static void copyAudioBytesToContentUri(
-      @NonNull byte[] audioBytesArray, @NonNull OutputStream restoreStream) throws IOException {
-    LogUtil.i("DialerBackupUtils.copyStream", "audioByteArray length: " + audioBytesArray.length);
-
-    ByteArrayInputStream decodedStream = new ByteArrayInputStream(audioBytesArray);
-    LogUtil.i(
-        "DialerBackupUtils.copyStream", "decodedStream.available: " + decodedStream.available());
-
-    ByteStreams.copy(decodedStream, restoreStream);
-  }
-
-  public static @Nullable ByteString audioStreamToByteString(@NonNull InputStream stream)
-      throws IOException {
-    if (stream.available() > 0) {
-      return ByteString.readFrom(stream);
-    } else {
-      LogUtil.i("DialerBackupUtils.audioStreamToByteArray", "no audio stream to backup");
-    }
-    return ByteString.EMPTY;
-  }
-
-  public static void writeProtoToFile(@NonNull File file, @NonNull VoicemailInfo voicemailInfo)
-      throws IOException {
-    LogUtil.i(
-        "DialerBackupUtils.writeProtoToFile",
-        "backup " + voicemailInfo + " to " + file.getAbsolutePath());
-
-    byte[] bytes = voicemailInfo.toByteArray();
-    Files.write(bytes, file);
-  }
-
-  /** Only restore voicemails that have the restored column in calllog (NMR2+ builds) */
-  @TargetApi(VERSION_CODES.M)
-  public static boolean canRestoreVoicemails(ContentResolver contentResolver, Context context) {
-    try (Cursor cursor = contentResolver.query(Voicemails.CONTENT_URI, null, null, null, null)) {
-      // Restored column only exists in NMR2 and above builds.
-      if (cursor.getColumnIndex(RESTORED_COLUMN) != -1) {
-        LogUtil.i("DialerBackupUtils.canRestoreVoicemails", "Build supports restore");
-        return true;
-      } else {
-        LogUtil.i("DialerBackupUtils.canRestoreVoicemails", "Build does not support restore");
-        return false;
-      }
-    }
-  }
-
-  public static VoicemailInfo protoFileToVoicemailInfo(@NonNull File file) throws IOException {
-    byte[] byteArray = Files.toByteArray(file);
-    return VoicemailInfo.parseFrom(byteArray);
-  }
-
-  @TargetApi(VERSION_CODES.M)
-  public static VoicemailInfo convertVoicemailCursorRowToProto(
-      @NonNull Cursor cursor, @NonNull ContentResolver contentResolver) throws IOException {
-
-    VoicemailInfo.Builder voicemailInfo = VoicemailInfo.newBuilder();
-
-    for (int i = 0; i < cursor.getColumnCount(); ++i) {
-      String name = cursor.getColumnName(i);
-      String value = cursor.getString(i);
-
-      LogUtil.i(
-          "DialerBackupUtils.convertVoicemailCursorRowToProto",
-          "column index: %d, column name: %s, column value: %s",
-          i,
-          name,
-          value);
-
-      switch (name) {
-        case Voicemails.DATE:
-          voicemailInfo.setDate(value);
-          break;
-        case Voicemails.DELETED:
-          voicemailInfo.setDeleted(value);
-          break;
-        case Voicemails.DIRTY:
-          voicemailInfo.setDirty(value);
-          break;
-        case Voicemails.DIR_TYPE:
-          voicemailInfo.setDirType(value);
-          break;
-        case Voicemails.DURATION:
-          voicemailInfo.setDuration(value);
-          break;
-        case Voicemails.HAS_CONTENT:
-          voicemailInfo.setHasContent(value);
-          break;
-        case Voicemails.IS_READ:
-          voicemailInfo.setIsRead(value);
-          break;
-        case Voicemails.ITEM_TYPE:
-          voicemailInfo.setItemType(value);
-          break;
-        case Voicemails.LAST_MODIFIED:
-          voicemailInfo.setLastModified(value);
-          break;
-        case Voicemails.MIME_TYPE:
-          voicemailInfo.setMimeType(value);
-          break;
-        case Voicemails.NUMBER:
-          voicemailInfo.setNumber(value);
-          break;
-        case Voicemails.PHONE_ACCOUNT_COMPONENT_NAME:
-          voicemailInfo.setPhoneAccountComponentName(value);
-          break;
-        case Voicemails.PHONE_ACCOUNT_ID:
-          voicemailInfo.setPhoneAccountId(value);
-          break;
-        case Voicemails.SOURCE_DATA:
-          voicemailInfo.setSourceData(value);
-          break;
-        case Voicemails.SOURCE_PACKAGE:
-          voicemailInfo.setSourcePackage(value);
-          break;
-        case Voicemails.TRANSCRIPTION:
-          voicemailInfo.setTranscription(value);
-          break;
-        case DialerBackupAgent.VOICEMAIL_URI:
-          try (InputStream audioStream = contentResolver.openInputStream(Uri.parse(value))) {
-            voicemailInfo.setEncodedVoicemailKey(audioStreamToByteString(audioStream));
-          }
-          break;
-        default:
-          LogUtil.i(
-              "DialerBackupUtils.convertVoicemailCursorRowToProto",
-              "Not backing up column: %s, with value: %s",
-              name,
-              value);
-          break;
-      }
-    }
-    return voicemailInfo.build();
-  }
-
-  public static Pair<ContentValues, byte[]> convertVoicemailProtoFileToContentValueAndAudioBytes(
-      @NonNull File file, Context context) throws IOException {
-
-    VoicemailInfo voicemailInfo = DialerBackupUtils.protoFileToVoicemailInfo(file);
-    LogUtil.i(
-        "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio",
-        "file name: "
-            + file.getName()
-            + " voicemailInfo size: "
-            + voicemailInfo.getSerializedSize());
-
-    if (isDuplicate(context, voicemailInfo)) {
-      LogUtil.i(
-          "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio",
-          "voicemail already exists");
-      return null;
-    } else {
-      ContentValues contentValues = new ContentValues();
-
-      if (voicemailInfo.hasDate()) {
-        contentValues.put(Voicemails.DATE, voicemailInfo.getDate());
-      }
-      if (voicemailInfo.hasDeleted()) {
-        contentValues.put(Voicemails.DELETED, voicemailInfo.getDeleted());
-      }
-      if (!voicemailInfo.hasDirty()) {
-        contentValues.put(Voicemails.DIRTY, voicemailInfo.getDirty());
-      }
-      if (!voicemailInfo.hasDuration()) {
-        contentValues.put(Voicemails.DURATION, voicemailInfo.getDuration());
-      }
-      if (!voicemailInfo.hasIsRead()) {
-        contentValues.put(Voicemails.IS_READ, voicemailInfo.getIsRead());
-      }
-      if (!voicemailInfo.hasLastModified()) {
-        contentValues.put(Voicemails.LAST_MODIFIED, voicemailInfo.getLastModified());
-      }
-      if (!voicemailInfo.hasMimeType()) {
-        contentValues.put(Voicemails.MIME_TYPE, voicemailInfo.getMimeType());
-      }
-      if (!voicemailInfo.hasNumber()) {
-        contentValues.put(Voicemails.NUMBER, voicemailInfo.getNumber());
-      }
-      if (!voicemailInfo.hasPhoneAccountComponentName()) {
-        contentValues.put(
-            Voicemails.PHONE_ACCOUNT_COMPONENT_NAME, voicemailInfo.getPhoneAccountComponentName());
-      }
-      if (!voicemailInfo.hasPhoneAccountId()) {
-        contentValues.put(Voicemails.PHONE_ACCOUNT_ID, voicemailInfo.getPhoneAccountId());
-      }
-      if (!voicemailInfo.hasSourceData()) {
-        contentValues.put(Voicemails.SOURCE_DATA, voicemailInfo.getSourceData());
-      }
-      if (!voicemailInfo.hasSourcePackage()) {
-        contentValues.put(Voicemails.SOURCE_PACKAGE, voicemailInfo.getSourcePackage());
-      }
-      if (!voicemailInfo.hasTranscription()) {
-        contentValues.put(Voicemails.TRANSCRIPTION, voicemailInfo.getTranscription());
-      }
-      contentValues.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
-      contentValues.put(RESTORED_COLUMN, "1");
-      contentValues.put(Voicemails.SOURCE_PACKAGE, getSourcePackage(context, voicemailInfo));
-
-      LogUtil.i(
-          "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio",
-          "cv: " + contentValues);
-
-      return Pair.create(contentValues, voicemailInfo.getEncodedVoicemailKey().toByteArray());
-    }
-  }
-
-  /**
-   * We should be using the system package name as the source package if there is no endless VM/VM
-   * archive present on the device. This is to separate pre-O (no endless VM) and O+ (endless VM)
-   * devices. This ensures that the source of truth for VMs is the VM server when endless VM is not
-   * enabled, and when endless VM/archived VMs is present, the source of truth for VMs is the device
-   * itself.
-   */
-  private static String getSourcePackage(Context context, VoicemailInfo voicemailInfo) {
-    if (ConfigProviderBindings.get(context)
-        .getBoolean("voicemail_restore_force_system_source_package", false)) {
-      LogUtil.i("DialerBackupUtils.getSourcePackage", "forcing system source package");
-      return "com.android.phone";
-    }
-    if (ConfigProviderBindings.get(context)
-        .getBoolean("voicemail_restore_check_archive_for_source_package", true)) {
-      if ("1".equals(voicemailInfo.getArchived())) {
-        LogUtil.i(
-            "DialerBackupUtils.getSourcePackage",
-            "voicemail was archived, using app source package");
-        // Using our app's source package will prevent the archived voicemail from being deleted by
-        // the system when it syncs with the voicemail server. In most cases the user will not see
-        // duplicate voicemails because this voicemail was archived and likely deleted from the
-        // voicemail server.
-        return context.getPackageName();
-      } else {
-        // Use the system source package. This means that if the voicemail is not present on the
-        // voicemail server then the system will delete it when it syncs.
-        LogUtil.i(
-            "DialerBackupUtils.getSourcePackage",
-            "voicemail was not archived, using system source package");
-        return "com.android.phone";
-      }
-    }
-    // Use our app's source package. This means that if the system syncs voicemail from the server
-    // the user could potentially get duplicate voicemails.
-    LogUtil.i("DialerBackupUtils.getSourcePackage", "defaulting to using app source package");
-    return context.getPackageName();
-  }
-
-  @TargetApi(VERSION_CODES.M)
-  private static boolean isDuplicate(Context context, VoicemailInfo voicemailInfo) {
-    // This checks for VM that might already exist, and doesn't restore them
-    try (Cursor cursor =
-        context
-            .getContentResolver()
-            .query(
-                VoicemailContract.Voicemails.CONTENT_URI,
-                null,
-                String.format(
-                    "(%s = ? AND %s = ? AND %s = ?)",
-                    Voicemails.NUMBER, Voicemails.DATE, Voicemails.DURATION),
-                new String[] {
-                  voicemailInfo.getNumber(), voicemailInfo.getDate(), voicemailInfo.getDuration()
-                },
-                null,
-                null)) {
-      if (cursor.moveToFirst()
-          && ConfigProviderBindings.get(context)
-              .getBoolean("enable_vm_restore_no_duplicate", true)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  public static String getPhoneAccountClause(List<PhoneAccountHandle> phoneAccountsToArchive) {
-    Assert.checkArgument(!phoneAccountsToArchive.isEmpty());
-    StringBuilder whereQuery = new StringBuilder();
-
-    whereQuery.append("(");
-
-    for (int i = 0; i < phoneAccountsToArchive.size(); i++) {
-      whereQuery.append(
-          Voicemails.PHONE_ACCOUNT_ID + " = " + phoneAccountsToArchive.get(i).getId());
-
-      if (phoneAccountsToArchive.size() > 1 && i < phoneAccountsToArchive.size() - 1) {
-        whereQuery.append(" OR ");
-      }
-    }
-    whereQuery.append(")");
-    return whereQuery.toString();
-  }
-
-  public static List<PhoneAccountHandle> getPhoneAccountsToArchive(Context context) {
-    List<PhoneAccountHandle> phoneAccountsToBackUp = new ArrayList<>();
-
-    for (PhoneAccountHandle handle :
-        context.getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) {
-
-      if (VoicemailComponent.get(context)
-          .getVoicemailClient()
-          .isVoicemailArchiveEnabled(context, handle)) {
-        phoneAccountsToBackUp.add(handle);
-        LogUtil.i(
-            "DialerBackupUtils.getPhoneAccountsToArchive", "enabled for: " + handle.toString());
-      } else {
-        LogUtil.i(
-            "DialerBackupUtils.getPhoneAccountsToArchive", "not enabled for: " + handle.toString());
-      }
-    }
-    return phoneAccountsToBackUp;
-  }
-}
diff --git a/java/com/android/dialer/backup/DialerPersistentBackupAgent.java b/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
new file mode 100644
index 0000000..085c343
--- /dev/null
+++ b/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2017 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.dialer.backup;
+
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
+import android.os.ParcelFileDescriptor;
+import android.support.annotation.NonNull;
+import android.support.annotation.VisibleForTesting;
+import android.util.ArrayMap;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
+import com.google.android.libraries.backup.BackupKeyPredicate;
+import com.google.android.libraries.backup.BackupKeyPredicates;
+import com.google.android.libraries.backup.PersistentBackupAgentHelper;
+import java.io.IOException;
+import java.util.Map;
+
+/** Implementation of Key/Value Backup that powers Dialer's backup and restore. */
+public class DialerPersistentBackupAgent extends PersistentBackupAgentHelper {
+
+  private static final String DEFAULT_SHARED_PREFS_NAME = "com.google.android.dialer_preferences";
+
+  @NonNull private final String sharedPrefsName;
+
+  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+  DialerPersistentBackupAgent(@NonNull String sharedPreferenceName) {
+    this.sharedPrefsName = Assert.isNotNull(sharedPreferenceName);
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR);
+  }
+
+  public DialerPersistentBackupAgent() {
+    this(DEFAULT_SHARED_PREFS_NAME);
+  }
+
+  @Override
+  public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor stateFile)
+      throws IOException {
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_RESTORE);
+    LogUtil.i("DialerPersistentBackupAgent.onRestore", "restore from version: " + appVersionCode);
+    super.onRestore(data, appVersionCode, stateFile);
+  }
+
+  @Override
+  public void onBackup(
+      ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)
+      throws IOException {
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_BACKUP);
+    LogUtil.i("DialerPersistentBackupAgent.onBackup", "onBackup being performed");
+    super.onBackup(oldState, data, newState);
+  }
+
+  @Override
+  public Map<String, BackupKeyPredicate> getBackupSpecification() {
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION);
+    LogUtil.i(
+        "DialerPersistentBackupAgent.getBackupSpecification",
+        "file being backed up: " + sharedPrefsName);
+    Map<String, BackupKeyPredicate> backupSpecification = new ArrayMap<>();
+    backupSpecification.put(sharedPrefsName, BackupKeyPredicates.alwaysTrue());
+    return backupSpecification;
+  }
+
+  @Override
+  public void onRestoreFinished() {
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_RESTORE_FINISHED);
+    super.onRestoreFinished();
+  }
+}
diff --git a/java/com/android/dialer/backup/proto/voicemail_info.proto b/java/com/android/dialer/backup/proto/voicemail_info.proto
deleted file mode 100644
index 7497683..0000000
--- a/java/com/android/dialer/backup/proto/voicemail_info.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-syntax = "proto2";
-
-option java_package = "com.android.dialer.backup";
-option java_multiple_files = true;
-option optimize_for = LITE_RUNTIME;
-
-
-package com.android.dialer.backup;
-
-// Next id: 20
-message VoicemailInfo {
-  optional string date = 1;
-  optional string deleted = 2;
-  optional string dirty = 3;
-  optional string dir_type = 4;
-  optional string duration = 5;
-  optional string has_content = 6;
-  optional string is_read = 7;
-  optional string item_type = 8;
-  optional string last_modified = 9;
-  optional string mime_type = 10;
-  optional string number = 11;
-  optional string phone_account_component_name = 12;
-  optional string phone_account_id = 13;
-  optional string source_data = 14;
-  optional string source_package = 15;
-  optional string transcription = 16;
-  optional string voicemail_uri = 17;
-  optional bytes encoded_voicemail_key = 18;
-  optional string archived = 19;
-}
diff --git a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
index 6a7c588..c4adb37 100644
--- a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
+++ b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
@@ -24,6 +24,7 @@
 import com.android.dialer.inject.ContextModule;
 import com.android.dialer.lightbringer.stub.StubLightbringerModule;
 import com.android.dialer.simulator.impl.SimulatorModule;
+import com.android.dialer.storage.StorageModule;
 import com.android.incallui.calllocation.stub.StubCallLocationModule;
 import com.android.incallui.maps.stub.StubMapsModule;
 import com.android.voicemail.impl.VoicemailModule;
@@ -39,6 +40,7 @@
     DialerExecutorModule.class,
     SharedPrefConfigProviderModule.class,
     SimulatorModule.class,
+    StorageModule.class,
     StubCallLocationModule.class,
     StubEnrichedCallModule.class,
     StubMapsModule.class,
diff --git a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
index 8ac071f..1349564 100644
--- a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
+++ b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
@@ -24,6 +24,7 @@
 import com.android.dialer.lightbringer.LightbringerComponent;
 import com.android.dialer.main.MainComponent;
 import com.android.dialer.simulator.SimulatorComponent;
+import com.android.dialer.storage.StorageComponent;
 import com.android.incallui.calllocation.CallLocationComponent;
 import com.android.incallui.maps.MapsComponent;
 import com.android.voicemail.VoicemailComponent;
@@ -42,5 +43,6 @@
         EnrichedCallComponent.HasComponent,
         MapsComponent.HasComponent,
         SimulatorComponent.HasComponent,
+        StorageComponent.HasComponent,
         VoicemailComponent.HasComponent,
         LightbringerComponent.HasComponent {}
diff --git a/java/com/android/dialer/binary/common/DialerApplication.java b/java/com/android/dialer/binary/common/DialerApplication.java
index 08666a2..580e0a3 100644
--- a/java/com/android/dialer/binary/common/DialerApplication.java
+++ b/java/com/android/dialer/binary/common/DialerApplication.java
@@ -17,18 +17,17 @@
 package com.android.dialer.binary.common;
 
 import android.app.Application;
-import android.os.StrictMode;
 import android.os.Trace;
 import android.support.annotation.NonNull;
 import android.support.v4.os.BuildCompat;
 import com.android.dialer.blocking.BlockedNumbersAutoMigrator;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.buildtype.BuildType;
 import com.android.dialer.calllog.CallLogComponent;
 import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory;
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.notification.NotificationChannelManager;
 import com.android.dialer.persistentlog.PersistentLogger;
+import com.android.dialer.strictmode.DialerStrictMode;
 
 /** A common application subclass for all Dialer build variants. */
 public abstract class DialerApplication extends Application implements HasRootComponent {
@@ -38,9 +37,8 @@
   @Override
   public void onCreate() {
     Trace.beginSection("DialerApplication.onCreate");
-    if (BuildType.get() == BuildType.BUGFOOD) {
-      enableStrictMode();
-    }
+    DialerStrictMode.onApplicationCreate(this);
+
     super.onCreate();
     new BlockedNumbersAutoMigrator(
             this.getApplicationContext(),
@@ -56,13 +54,6 @@
     Trace.endSection();
   }
 
-  private void enableStrictMode() {
-    StrictMode.setThreadPolicy(
-        new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().penaltyDeath().build());
-    StrictMode.setVmPolicy(
-        new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().penaltyDeath().build());
-  }
-
   /**
    * Returns a new instance of the root component for the application. Sub classes should define a
    * root component that extends all the sub components "HasComponent" intefaces. The component
diff --git a/java/com/android/dialer/binary/google/AndroidManifest.xml b/java/com/android/dialer/binary/google/AndroidManifest.xml
new file mode 100644
index 0000000..95c7dda
--- /dev/null
+++ b/java/com/android/dialer/binary/google/AndroidManifest.xml
@@ -0,0 +1,112 @@
+<!-- Copyright (C) 2016 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+  coreApp="true"
+  package="com.google.android.google_stub_dialer"
+  android:versionCode="160000"
+  android:versionName="12.0">
+
+  <uses-sdk
+    android:minSdkVersion="23"
+    android:targetSdkVersion="26"/>
+
+  <uses-permission android:name="android.permission.CALL_PHONE"/>
+  <uses-permission android:name="android.permission.READ_CONTACTS"/>
+  <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
+  <uses-permission android:name="android.permission.READ_CALL_LOG"/>
+  <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
+  <uses-permission android:name="android.permission.READ_PROFILE"/>
+  <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
+  <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
+  <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
+  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
+  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
+  <uses-permission android:name="android.permission.INTERNET"/>
+  <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
+  <uses-permission android:name="android.permission.NFC"/>
+  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
+  <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
+  <uses-permission android:name="android.permission.WAKE_LOCK"/>
+  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
+  <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
+  <uses-permission android:name="android.permission.VIBRATE"/>
+  <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
+  <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"/>
+  <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
+  <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL"/>
+  <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"/>
+  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
+  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+  <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
+  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+
+  <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
+  <!-- We use this to disable the status bar buttons of home, back and recent
+  during an incoming call. By doing so this allows us to not show the user
+  is viewing the activity in full screen alert, on a fresh system/factory
+  reset state of the app. -->
+  <uses-permission android:name="android.permission.STATUS_BAR"/>
+  <uses-permission android:name="android.permission.CAMERA"/>
+
+  <!-- This tells the activity manager to not delay any of our activity
+   start requests, even if they happen immediately after the user
+   presses home. -->
+  <uses-permission android:name="android.permission.STOP_APP_SWITCHES"/>
+
+  <!-- Permissions needed for badger count showing on launch icon. -->
+
+  <!--for Samsung-->
+  <uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
+  <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>
+
+  <!--for htc-->
+  <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
+  <uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>
+
+  <!--for sony-->
+  <uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>
+  <uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>
+
+  <!--for apex-->
+  <uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>
+
+  <!--for solid-->
+  <uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>
+
+  <!--for huawei-->
+  <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
+  <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
+  <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
+
+  <!--for ZUK-->
+  <uses-permission android:name="android.permission.READ_APP_BADGE"/>
+
+  <!--for OPPO-->
+  <uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
+  <uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
+
+  <application
+    android:hardwareAccelerated="true"
+    android:icon="@mipmap/ic_launcher_phone"
+    android:label="@string/applicationLabel"
+    android:name="com.android.dialer.binary.google.GoogleStubDialerApplication"
+    android:supportsRtl="true"
+    android:usesCleartextTraffic="false">
+  </application>
+
+</manifest>
diff --git a/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java b/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java
new file mode 100644
index 0000000..e9289af
--- /dev/null
+++ b/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2017 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.dialer.binary.google;
+
+import android.support.annotation.NonNull;
+import com.android.dialer.binary.common.DialerApplication;
+import com.android.dialer.inject.ContextModule;
+
+/**
+ * The application class for the Google Stub Dialer. This is a version of the Dialer app that
+ * depends on Google Play Services.
+ */
+public class GoogleStubDialerApplication extends DialerApplication {
+
+  /** Returns a new instance of the root component for the Google Stub Dialer. */
+  @Override
+  @NonNull
+  protected Object buildRootComponent() {
+    return DaggerGoogleStubDialerRootComponent.builder()
+        .contextModule(new ContextModule(this))
+        .build();
+  }
+}
diff --git a/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java b/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
new file mode 100644
index 0000000..570b569
--- /dev/null
+++ b/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2017 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.dialer.binary.google;
+
+import com.android.dialer.binary.basecomponent.BaseDialerRootComponent;
+import com.android.dialer.calllog.CallLogModule;
+import com.android.dialer.common.concurrent.DialerExecutorModule;
+import com.android.dialer.configprovider.SharedPrefConfigProviderModule;
+import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
+import com.android.dialer.inject.ContextModule;
+import com.android.dialer.lightbringer.stub.StubLightbringerModule;
+import com.android.dialer.simulator.impl.SimulatorModule;
+import com.android.dialer.storage.StorageModule;
+import com.android.incallui.calllocation.impl.CallLocationModule;
+import com.android.incallui.maps.impl.MapsModule;
+import com.android.voicemail.impl.VoicemailModule;
+import dagger.Component;
+import javax.inject.Singleton;
+
+/**
+ * Root component for the Google Stub Dialer application. Unlike the AOSP variant, this component
+ * can pull in modules that depend on Google Play Services like the maps module.
+ */
+@Singleton
+@Component(
+  modules = {
+    CallLocationModule.class,
+    CallLogModule.class,
+    ContextModule.class,
+    DialerExecutorModule.class,
+    SharedPrefConfigProviderModule.class,
+    SimulatorModule.class,
+    StorageModule.class,
+    StubEnrichedCallModule.class,
+    MapsModule.class,
+    VoicemailModule.class,
+    StubLightbringerModule.class
+  }
+)
+public interface GoogleStubDialerRootComponent extends BaseDialerRootComponent {}
diff --git a/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java b/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
index fa74850..d806a83 100644
--- a/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
+++ b/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
@@ -262,7 +262,7 @@
   }
 
   /*
-   * TODO: b/27779827, non-e164 numbers can be blocked in the new form of blocking. As a
+   * TODO(maxwelb): b/27779827, non-e164 numbers can be blocked in the new form of blocking. As a
    * temporary workaround, determine which column of the database to query based on whether the
    * number is e164 or not.
    */
diff --git a/java/com/android/dialer/blocking/FilteredNumberCompat.java b/java/com/android/dialer/blocking/FilteredNumberCompat.java
index 9e01127..548c965 100644
--- a/java/com/android/dialer/blocking/FilteredNumberCompat.java
+++ b/java/com/android/dialer/blocking/FilteredNumberCompat.java
@@ -38,6 +38,7 @@
 import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
+import com.android.dialer.strictmode.DialerStrictMode;
 import com.android.dialer.telecom.TelecomUtil;
 import java.util.ArrayList;
 import java.util.List;
@@ -124,8 +125,10 @@
    *     android.provider.BlockedNumberContract} blocking, {@code false} otherwise.
    */
   public static boolean hasMigratedToNewBlocking(Context context) {
-    return PreferenceManager.getDefaultSharedPreferences(context)
-        .getBoolean(HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false);
+    return DialerStrictMode.bypass(
+        () ->
+            PreferenceManager.getDefaultSharedPreferences(context)
+                .getBoolean(HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false));
   }
 
   /**
@@ -270,7 +273,7 @@
     }
 
     // Great Wall blocking, must be primary user and the default or system dialer
-    // TODO: check that we're the system Dialer
+    // TODO(maxwelb): check that we're the system Dialer
     return TelecomUtil.isDefaultDialer(context)
         && safeBlockedNumbersContractCanCurrentUserBlockNumbers(context);
   }
diff --git a/java/com/android/dialer/blocking/res/values-hu/strings.xml b/java/com/android/dialer/blocking/res/values-hu/strings.xml
index 7981d6c..1070454 100644
--- a/java/com/android/dialer/blocking/res/values-hu/strings.xml
+++ b/java/com/android/dialer/blocking/res/values-hu/strings.xml
@@ -33,7 +33,7 @@
     <string name="block_number_undo" msgid="5158120911892491697">"VISSZAVONÁS"</string>
     <string name="send_to_voicemail_import_failed" msgid="1012752662074208237">"Az importálás nem sikerült"</string>
     <string name="call_blocking_disabled_notification_title" msgid="7211352205255347489">"A hívások tiltása funkció kikapcsolva 48 órára"</string>
-    <string name="call_blocking_disabled_notification_text" msgid="141384084865180722">"Letiltva segélyhívás miatt."</string>
+    <string name="call_blocking_disabled_notification_text" msgid="141384084865180722">"Letiltva vészhívás miatt."</string>
     <string name="block_report_number_alert_title" msgid="2740581989824959611">"Letiltja a következő számot: <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
     <string name="block_report_number_alert_details" msgid="2652479394593143562">"A jövőben nem fogad hívásokat erről a számról."</string>
     <string name="block_number_alert_details" msgid="715942751312046429">"<xliff:g id="TEXT">%1$s</xliff:g> A hívást spamként jelentjük be."</string>
diff --git a/java/com/android/dialer/buildtype/bugfood/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/bugfood/BuildTypeAccessorImpl.java
new file mode 100644
index 0000000..45d72e0
--- /dev/null
+++ b/java/com/android/dialer/buildtype/bugfood/BuildTypeAccessorImpl.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2017 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.dialer.buildtype;
+
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Gets the build type. */
+@UsedByReflection(value = "BuildType.java")
+public class BuildTypeAccessorImpl implements BuildTypeAccessor {
+
+  @Override
+  @BuildType.Type
+  public int getBuildType() {
+    return BuildType.BUGFOOD;
+  }
+}
diff --git a/java/com/android/dialer/buildtype/dogfood/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/dogfood/BuildTypeAccessorImpl.java
new file mode 100644
index 0000000..e1f2cdc
--- /dev/null
+++ b/java/com/android/dialer/buildtype/dogfood/BuildTypeAccessorImpl.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2017 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.dialer.buildtype;
+
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Gets the build type. */
+@UsedByReflection(value = "BuildType.java")
+public class BuildTypeAccessorImpl implements BuildTypeAccessor {
+
+  @Override
+  @BuildType.Type
+  public int getBuildType() {
+    return BuildType.DOGFOOD;
+  }
+}
diff --git a/java/com/android/dialer/buildtype/fishfood/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/fishfood/BuildTypeAccessorImpl.java
new file mode 100644
index 0000000..e5ad901
--- /dev/null
+++ b/java/com/android/dialer/buildtype/fishfood/BuildTypeAccessorImpl.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2017 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.dialer.buildtype;
+
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Gets the build type. */
+@UsedByReflection(value = "BuildType.java")
+public class BuildTypeAccessorImpl implements BuildTypeAccessor {
+
+  @Override
+  @BuildType.Type
+  public int getBuildType() {
+    return BuildType.FISHFOOD;
+  }
+}
diff --git a/java/com/android/dialer/buildtype/test/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/test/BuildTypeAccessorImpl.java
new file mode 100644
index 0000000..80a1cb7
--- /dev/null
+++ b/java/com/android/dialer/buildtype/test/BuildTypeAccessorImpl.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2017 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.dialer.buildtype;
+
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Gets the build type. */
+@UsedByReflection(value = "BuildType.java")
+public class BuildTypeAccessorImpl implements BuildTypeAccessor {
+
+  @Override
+  @BuildType.Type
+  public int getBuildType() {
+    return BuildType.TEST;
+  }
+}
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index df5cc29..e6e5513 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -32,6 +32,7 @@
 import android.support.annotation.VisibleForTesting;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.content.FileProvider;
+import android.support.v4.util.Pair;
 import android.support.v4.view.ViewPager.OnPageChangeListener;
 import android.support.v4.view.animation.FastOutSlowInInterpolator;
 import android.support.v7.app.AppCompatActivity;
@@ -50,17 +51,18 @@
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.Toast;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.dialer.callcomposer.CallComposerFragment.CallComposerListener;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.UiUtil;
+import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutors;
 import com.android.dialer.common.concurrent.ThreadUtil;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.constants.Constants;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
@@ -139,6 +141,7 @@
   private FrameLayout background;
   private LinearLayout windowContainer;
 
+  private DialerExecutor<Uri> copyAndResizeExecutor;
   private FastOutSlowInInterpolator interpolator;
   private boolean shouldAnimateEntrance = true;
   private boolean inFullscreenMode;
@@ -207,6 +210,29 @@
         });
 
     setMediaIconSelected(currentIndex);
+
+    copyAndResizeExecutor =
+        DialerExecutors.createUiTaskBuilder(
+                getFragmentManager(),
+                "copyAndResizeImageToSend",
+                new CopyAndResizeImageWorker(this.getApplicationContext()))
+            .onSuccess(this::onCopyAndResizeImageSuccess)
+            .onFailure(this::onCopyAndResizeImageFailure)
+            .build();
+  }
+
+  private void onCopyAndResizeImageSuccess(Pair<File, String> output) {
+    Uri shareableUri =
+        FileProvider.getUriForFile(
+            CallComposerActivity.this, Constants.get().getFileProviderAuthority(), output.first);
+
+    placeRCSCall(
+        MultimediaData.builder().setImage(grantUriPermission(shareableUri), output.second));
+  }
+
+  private void onCopyAndResizeImageFailure(Throwable throwable) {
+    // TODO(b/34279096) - gracefully handle message failure
+    LogUtil.e("CallComposerActivity.onCopyAndResizeImageFailure", "copy Failed", throwable);
   }
 
   @Override
@@ -332,28 +358,8 @@
       GalleryComposerFragment galleryComposerFragment = (GalleryComposerFragment) fragment;
       // If the current data is not a copy, make one.
       if (!galleryComposerFragment.selectedDataIsCopy()) {
-        DialerExecutors.createUiTaskBuilder(
-                getFragmentManager(),
-                "copyAndResizeImageToSend",
-                new CopyAndResizeImageWorker(this.getApplicationContext()))
-            .onSuccess(
-                output -> {
-                  Uri shareableUri =
-                      FileProvider.getUriForFile(
-                          CallComposerActivity.this,
-                          Constants.get().getFileProviderAuthority(),
-                          output.first);
-
-                  builder.setImage(grantUriPermission(shareableUri), output.second);
-                  placeRCSCall(builder);
-                })
-            .onFailure(
-                throwable -> {
-                  // TODO(b/34279096) - gracefully handle message failure
-                  LogUtil.e("CallComposerActivity.onCopyFailed", "copy Failed", throwable);
-                })
-            .build()
-            .executeParallel(galleryComposerFragment.getGalleryData().getFileUri());
+        copyAndResizeExecutor.executeParallel(
+            galleryComposerFragment.getGalleryData().getFileUri());
       } else {
         Uri shareableUri =
             FileProvider.getUriForFile(
@@ -415,7 +421,7 @@
 
   /** Give permission to Messenger to view our image for RCS purposes. */
   private Uri grantUriPermission(Uri uri) {
-    // TODO: Move this to the enriched call manager.
+    // TODO(sail): Move this to the enriched call manager.
     grantUriPermission(
         "com.google.android.apps.messaging", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
     return uri;
@@ -664,12 +670,20 @@
                   public void onAnimationStart(Animator animation) {
                     isSendAndCallHidingOrHidden = shouldHide;
                     sendAndCall.setVisibility(View.VISIBLE);
+                    cameraIcon.setVisibility(View.VISIBLE);
+                    galleryIcon.setVisibility(View.VISIBLE);
+                    messageIcon.setVisibility(View.VISIBLE);
                   }
 
                   @Override
                   public void onAnimationEnd(Animator animation) {
                     if (isSendAndCallHidingOrHidden) {
                       sendAndCall.setVisibility(View.INVISIBLE);
+                    } else {
+                      // hide buttons to prevent overdrawing and talkback discoverability
+                      cameraIcon.setVisibility(View.GONE);
+                      galleryIcon.setVisibility(View.GONE);
+                      messageIcon.setVisibility(View.GONE);
                     }
                   }
 
diff --git a/java/com/android/dialer/callcomposer/CameraComposerFragment.java b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
index 7ec6611..a5c65fd 100644
--- a/java/com/android/dialer/callcomposer/CameraComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
@@ -326,7 +326,11 @@
   /** Updates the state of the buttons and overlays based on the current state of the view */
   private void updateViewState() {
     Assert.isNotNull(cameraView);
-    Assert.isNotNull(getContext());
+    if (isDetached() || getContext() == null) {
+      LogUtil.i(
+          "CameraComposerFragment.updateViewState", "Fragment detached, cannot update view state");
+      return;
+    }
 
     boolean isCameraAvailable = CameraManager.get().isCameraAvailable();
     boolean uriReadyOrProcessing = cameraUri != null || processingUri;
diff --git a/java/com/android/dialer/callcomposer/GalleryCursorLoader.java b/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
index 39d6a4a..d33bfb3 100644
--- a/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
+++ b/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
@@ -16,7 +16,6 @@
 
 package com.android.dialer.callcomposer;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.net.Uri;
 import android.provider.MediaStore.Files;
@@ -44,11 +43,10 @@
         SORT_ORDER);
   }
 
-  @SuppressLint("DefaultLocale")
   private static String createSelection() {
-    return String.format(
-        "mime_type IN ('image/jpeg', 'image/jpg', 'image/png', 'image/webp')"
-            + " AND media_type in (%d)",
-        FileColumns.MEDIA_TYPE_IMAGE);
+    return "mime_type IN ('image/jpeg', 'image/jpg', 'image/png', 'image/webp')"
+        + " AND media_type in ("
+        + FileColumns.MEDIA_TYPE_IMAGE
+        + ")";
   }
 }
diff --git a/java/com/android/dialer/callcomposer/camera/CameraManager.java b/java/com/android/dialer/callcomposer/camera/CameraManager.java
index 5915ce3..f79f654 100644
--- a/java/com/android/dialer/callcomposer/camera/CameraManager.java
+++ b/java/com/android/dialer/callcomposer/camera/CameraManager.java
@@ -35,6 +35,7 @@
 import com.android.dialer.callcomposer.camera.camerafocus.RenderOverlay;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutors;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -118,7 +119,7 @@
   /**
    * The task for opening the camera, so it doesn't block the UI thread Using AsyncTask rather than
    * SafeAsyncTask because the tasks need to be serialized, but don't need to be on the UI thread
-   * TODO: If we have other AyncTasks (not SafeAsyncTasks) this may contend and we may need
+   * TODO(blemmon): If we have other AyncTasks (not SafeAsyncTasks) this may contend and we may need
    * to create a dedicated thread, or synchronize the threads in the thread pool
    */
   private AsyncTask<Integer, Void, Camera> mOpenCameraTask;
@@ -457,9 +458,9 @@
             int height;
             if (mRotation == 90 || mRotation == 270) {
               // Is rotated, so swapping dimensions is desired
-              //noinspection SuspiciousNameCombination
+              // noinspection SuspiciousNameCombination
               width = size.height;
-              //noinspection SuspiciousNameCombination
+              // noinspection SuspiciousNameCombination
               height = size.width;
             } else {
               width = size.width;
@@ -467,9 +468,20 @@
             }
             LogUtil.i(
                 "CameraManager.onPictureTaken", "taken picture size: " + bytes.length + " bytes");
-            new ImagePersistTask(
-                    width, height, heightPercent, bytes, mCameraPreview.getContext(), callback)
-                .execute();
+            DialerExecutors.createNonUiTaskBuilder(
+                    new ImagePersistWorker(
+                        width, height, heightPercent, bytes, mCameraPreview.getContext()))
+                .onSuccess(
+                    (result) -> {
+                      callback.onMediaReady(
+                          result.getUri(), "image/jpeg", result.getWidth(), result.getHeight());
+                    })
+                .onFailure(
+                    (throwable) -> {
+                      callback.onMediaFailed(new Exception("Persisting image failed", throwable));
+                    })
+                .build()
+                .executeSerial(null);
           }
         };
 
diff --git a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java b/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
similarity index 77%
rename from java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
rename to java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
index 8620701..26b0bde 100644
--- a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
+++ b/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
@@ -22,13 +22,16 @@
 import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.os.Build.VERSION_CODES;
+import android.support.annotation.NonNull;
 import android.support.v4.content.FileProvider;
+import com.android.dialer.callcomposer.camera.ImagePersistWorker.Result;
 import com.android.dialer.callcomposer.camera.exif.ExifInterface;
 import com.android.dialer.callcomposer.util.BitmapResizer;
 import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.FallibleAsyncTask;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.constants.Constants;
 import com.android.dialer.util.DialerUtils;
+import com.google.auto.value.AutoValue;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -36,52 +39,70 @@
 
 /** Persisting image routine. */
 @TargetApi(VERSION_CODES.M)
-public class ImagePersistTask extends FallibleAsyncTask<Void, Void, Uri> {
+public class ImagePersistWorker implements Worker<Void, Result> {
   private int mWidth;
   private int mHeight;
   private final float mHeightPercent;
   private final byte[] mBytes;
   private final Context mContext;
-  private final CameraManager.MediaCallback mCallback;
 
-  ImagePersistTask(
+  @AutoValue
+  abstract static class Result {
+
+    public static Builder builder() {
+      return new AutoValue_ImagePersistWorker_Result.Builder();
+    }
+
+    @NonNull
+    abstract Uri getUri();
+
+    abstract int getWidth();
+
+    abstract int getHeight();
+
+    @AutoValue.Builder
+    abstract static class Builder {
+      abstract Builder setUri(@NonNull Uri uri);
+
+      abstract Builder setWidth(int width);
+
+      abstract Builder setHeight(int height);
+
+      abstract Result build();
+    }
+  }
+
+  ImagePersistWorker(
       final int width,
       final int height,
       final float heightPercent,
       final byte[] bytes,
-      final Context context,
-      final CameraManager.MediaCallback callback) {
+      final Context context) {
     Assert.checkArgument(heightPercent >= 0 && heightPercent <= 1);
     Assert.isNotNull(bytes);
     Assert.isNotNull(context);
-    Assert.isNotNull(callback);
     mWidth = width;
     mHeight = height;
     mHeightPercent = heightPercent;
     mBytes = bytes;
     mContext = context;
-    mCallback = callback;
   }
 
   @Override
-  protected Uri doInBackgroundFallible(final Void... params) throws Exception {
+  public Result doInBackground(Void unused) throws Exception {
     File outputFile = DialerUtils.createShareableFile(mContext);
 
     try (OutputStream outputStream = new FileOutputStream(outputFile)) {
       writeClippedBitmap(outputStream);
     }
 
-    return FileProvider.getUriForFile(
-        mContext, Constants.get().getFileProviderAuthority(), outputFile);
-  }
-
-  @Override
-  protected void onPostExecute(FallibleTaskResult<Uri> result) {
-    if (result.isFailure()) {
-      mCallback.onMediaFailed(new Exception("Persisting image failed", result.getThrowable()));
-    } else {
-      mCallback.onMediaReady(result.getResult(), "image/jpeg", mWidth, mHeight);
-    }
+    return Result.builder()
+        .setUri(
+            FileProvider.getUriForFile(
+                mContext, Constants.get().getFileProviderAuthority(), outputFile))
+        .setWidth(mWidth)
+        .setHeight(mHeight)
+        .build();
   }
 
   private void writeClippedBitmap(OutputStream outputStream) throws IOException {
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java b/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java
index 1c5ac38..a5edf33 100644
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java
+++ b/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java
@@ -389,7 +389,7 @@
       focusIndicator.showStart();
     } else {
       if (Parameters.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusMode)) {
-        // TODO: check HAL behavior and decide if this can be removed.
+        // TODO(blemmon): check HAL behavior and decide if this can be removed.
         focusIndicator.showSuccess(false);
       } else if (mState == STATE_SUCCESS) {
         focusIndicator.showSuccess(false);
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java b/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java
index 23d748c..c728845 100644
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java
+++ b/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java
@@ -499,7 +499,7 @@
       mTiffStream.skip(4);
       return null;
     }
-    // TODO: handle numOfComp overflow
+    // TODO(blemmon): handle numOfComp overflow
     ExifTag tag =
         new ExifTag(
             tagId,
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java b/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java
index a254ae9..9a03c10 100644
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java
+++ b/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java
@@ -187,7 +187,7 @@
 
   /** Gets the component count of this tag. */
 
-  // TODO: fix integer overflows with this
+  // TODO(blemmon): fix integer overflows with this
   int getComponentCount() {
     return mComponentCountActual;
   }
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
index 1556247..39c2d0d 100644
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
@@ -51,7 +51,6 @@
       android:background="@color/call_composer_divider"/>
 
   <RelativeLayout
-      android:orientation="horizontal"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content">
 
diff --git a/java/com/android/dialer/callcomposer/res/values-af/strings.xml b/java/com/android/dialer/callcomposer/res/values-af/strings.xml
index 62a7457..ef35865 100644
--- a/java/com/android/dialer/callcomposer/res/values-af/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-af/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Neem \'n foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Kies \'n foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Stuur \'n boodskap"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto is via Boodskappe gestuur"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Boodskap is via Boodskappe gestuur"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-am/strings.xml b/java/com/android/dialer/callcomposer/res/values-am/strings.xml
index fe1c1e5..8224b1e 100644
--- a/java/com/android/dialer/callcomposer/res/values-am/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-am/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"ፎቶ ያንሱ"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ፎቶ ይምረጡ"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"መልዕክት ይላኩ"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"ፎቶ በመልዕክቶች በኩል ተልኳል"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"መልዕክት በመልዕክቶች በኩል ተልኳል"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ar/strings.xml b/java/com/android/dialer/callcomposer/res/values-ar/strings.xml
index b70f3ff..4e27f21 100644
--- a/java/com/android/dialer/callcomposer/res/values-ar/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ar/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"التقاط صورة"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"اختيار صورة"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"إرسال رسالة"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"‏صورة مرسلة عبر Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"‏رسالة مرسلة عبر Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-az/strings.xml b/java/com/android/dialer/callcomposer/res/values-az/strings.xml
index 7495555..d861e66 100644
--- a/java/com/android/dialer/callcomposer/res/values-az/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-az/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Şəkil çəkin"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Foto seçin"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Mesaj göndərin"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto Mesajlaşma tətbiqi vasitəsilə göndərildi"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mesaj Mesajlaşma tətbiqi vasitəsilə göndərildi"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
index 88b8011..0a93b22 100644
--- a/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Slikajte"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Izaberite sliku"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Pošaljite poruku"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Slika je poslata preko Messages-a"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Poruka je poslata preko Messages-a"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-be/strings.xml b/java/com/android/dialer/callcomposer/res/values-be/strings.xml
index a741ccd..ba55fc7 100644
--- a/java/com/android/dialer/callcomposer/res/values-be/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-be/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Зрабіць фота"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Выбраць фота"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Адправіць паведамленне"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Фота адпраўлена праз праграму \"Паведамленні\""</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Паведамленне адпраўлена праз праграму \"Паведамленні\""</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bg/strings.xml b/java/com/android/dialer/callcomposer/res/values-bg/strings.xml
index 4348bc6..7dad394 100644
--- a/java/com/android/dialer/callcomposer/res/values-bg/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-bg/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Правене на снимка"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Избиране на снимка"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Изпращане на съобщение"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Снимката е изпратена чрез Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Съобщението е изпратено чрез Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bn/strings.xml b/java/com/android/dialer/callcomposer/res/values-bn/strings.xml
index f2f3f11..607f195 100644
--- a/java/com/android/dialer/callcomposer/res/values-bn/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-bn/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"একটি ছবি তুলুন"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"একটি ফটো বেছে নিন"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"একটি বার্তা পাঠান"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Messages এর সাহায্যে ফটো পাঠানো হয়েছে"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Messages-এর সাহায্যে বার্তা পাঠানো হয়েছে"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bs/strings.xml b/java/com/android/dialer/callcomposer/res/values-bs/strings.xml
index 8ba9e72..99ca5db 100644
--- a/java/com/android/dialer/callcomposer/res/values-bs/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-bs/strings.xml
@@ -31,8 +31,10 @@
     <string name="camera_permission_text" msgid="7863231776480341614">"Da snimite fotografiju, dajte pristup Kameri"</string>
     <string name="gallery_permission_text" msgid="4102566850658919346">"Da podijelite sliku, dozvolite pristup Medijima"</string>
     <string name="description_call_composer_camera" msgid="388088245837924914">"Uslikaj"</string>
-    <string name="description_call_composer_photo" msgid="6449208314952246454">"Odaberi fotografiju"</string>
+    <string name="description_call_composer_photo" msgid="6449208314952246454">"Izaberi fotografiju"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Pošalji poruku"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotografija je poslana putem aplikacije Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Poruka je poslana putem aplikacije Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ca/strings.xml b/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
index 1f3007d..7b55346 100644
--- a/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Fes una foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Tria una foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Envia un missatge"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada mitjançant Missatges"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Missatge enviat mitjançant Missatges"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-cs/strings.xml b/java/com/android/dialer/callcomposer/res/values-cs/strings.xml
index 590ab1c..f30bb3c 100644
--- a/java/com/android/dialer/callcomposer/res/values-cs/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-cs/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Vyfotit"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Vybrat fotku"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Poslat zprávu"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotka poslaná v aplikaci Zprávy"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Zpráva poslaná v aplikaci Zprávy"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-da/strings.xml b/java/com/android/dialer/callcomposer/res/values-da/strings.xml
index 179e0d0..bae4495 100644
--- a/java/com/android/dialer/callcomposer/res/values-da/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-da/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Tag et billede"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Vælg et billede"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Send en sms"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotoet blev sendt via Beskeder"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Beskeden blev sendt via Beskeder"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-de/strings.xml b/java/com/android/dialer/callcomposer/res/values-de/strings.xml
index d0c88a9..ac7ce4e 100644
--- a/java/com/android/dialer/callcomposer/res/values-de/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-de/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Bild aufnehmen"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Foto auswählen"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Nachricht senden"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto über Messages gesendet"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Nachricht über Messages gesendet."</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-el/strings.xml b/java/com/android/dialer/callcomposer/res/values-el/strings.xml
index bfa626b..1e7659b 100644
--- a/java/com/android/dialer/callcomposer/res/values-el/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-el/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Λήψη φωτογραφίας"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Επιλογή φωτογραφίας"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Αποστολή μηνύματος"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Η φωτογραφία στάλθηκε μέσω του Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Το μήνυμα στάλθηκε μέσω του Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml
index 5e2807b..2b3f7a3 100644
--- a/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Take a picture"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Choose a photo"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Sending a message"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Photo sent via Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Message sent via Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml
index 5e2807b..2b3f7a3 100644
--- a/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Take a picture"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Choose a photo"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Sending a message"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Photo sent via Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Message sent via Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml
index 5e2807b..2b3f7a3 100644
--- a/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Take a picture"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Choose a photo"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Sending a message"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Photo sent via Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Message sent via Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml b/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml
index f1d4705..67bac97 100644
--- a/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Tomar una foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Elegir una foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Enviar un mensaje"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada por Mensajes"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mensaje de texto enviado por Mensajes"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-es/strings.xml b/java/com/android/dialer/callcomposer/res/values-es/strings.xml
index cba427b..4b87268 100644
--- a/java/com/android/dialer/callcomposer/res/values-es/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-es/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Hacer una foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Elegir una foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Enviar un mensaje"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada a través de Mensajes"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mensaje enviado a través de Mensajes"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-et/strings.xml b/java/com/android/dialer/callcomposer/res/values-et/strings.xml
index d79ca90..896525d 100644
--- a/java/com/android/dialer/callcomposer/res/values-et/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-et/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Pildistamine"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Foto valimine"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Sõnumi saatmine"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto saadeti rakenduse Messages kaudu"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Sõnum saadeti rakenduse Messages kaudu"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-eu/strings.xml b/java/com/android/dialer/callcomposer/res/values-eu/strings.xml
index 32413f9..ce7e296 100644
--- a/java/com/android/dialer/callcomposer/res/values-eu/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-eu/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Atera argazki bat"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Aukeratu argazki bat"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Bidali mezu bat"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Mezuak aplikazioaren bidez bidali da argazkia"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mezuak aplikazioaren bidez bidali da mezua"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fa/strings.xml b/java/com/android/dialer/callcomposer/res/values-fa/strings.xml
index a2604a9..6f0c2e5 100644
--- a/java/com/android/dialer/callcomposer/res/values-fa/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-fa/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"عکس گرفتن"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"انتخاب عکس"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"ارسال پیام"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"عکس ارسال‌شده ازطریق «پیام‌ها»"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"پیام ارسال‌شده ازطریق «پیام‌ها»"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fi/strings.xml b/java/com/android/dialer/callcomposer/res/values-fi/strings.xml
index 482a36a..ce0786c 100644
--- a/java/com/android/dialer/callcomposer/res/values-fi/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-fi/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Ota kuva"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Valitse kuva"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Lähetä viesti"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Kuva lähetettiin Messages-sovelluksen kautta"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Viesti lähetettiin Messages-sovelluksen kautta"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml b/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml
index be06baa..0451dcf 100644
--- a/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Prendre une photo"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Choisir une photo"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Envoyer un message"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Photo envoyée au moyen de l\'application Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Message envoyé au moyen de l\'application Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fr/strings.xml b/java/com/android/dialer/callcomposer/res/values-fr/strings.xml
index f56ad7a..50e6194 100644
--- a/java/com/android/dialer/callcomposer/res/values-fr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-fr/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Prendre une photo"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Choisir une photo"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Envoyer un message"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Photo envoyée via l\'application Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Message envoyé via l\'application Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-gl/strings.xml b/java/com/android/dialer/callcomposer/res/values-gl/strings.xml
index f2a0f15..2ad2c9a 100644
--- a/java/com/android/dialer/callcomposer/res/values-gl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-gl/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Tira unha foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Escolle unha foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Envía unha mensaxe"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada a través de Mensaxes"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mensaxe enviada a través de Mensaxes"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-gu/strings.xml b/java/com/android/dialer/callcomposer/res/values-gu/strings.xml
index 771d148..8c9a521 100644
--- a/java/com/android/dialer/callcomposer/res/values-gu/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-gu/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"એક ચિત્ર લો"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ફોટો પસંદ કરો"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"એક સંદેશ મોકલો"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Messages મારફતે ફોટો મોકલ્યો"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Messages મારફતે સંદેશ મોકલ્યો"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hi/strings.xml b/java/com/android/dialer/callcomposer/res/values-hi/strings.xml
index 4de9a6d..8d4f91e 100644
--- a/java/com/android/dialer/callcomposer/res/values-hi/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-hi/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"चित्र लें"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"एक फ़ोटो चुनें"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"संदेश भेजें"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"संदेश ऐप्लिकेशन के ज़रिए फ़ोटो भेजा गया"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"संदेश ऐप्लिकेशन के ज़रिए संदेश भेजा गया"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hr/strings.xml b/java/com/android/dialer/callcomposer/res/values-hr/strings.xml
index 4bea73c..cc3219d 100644
--- a/java/com/android/dialer/callcomposer/res/values-hr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-hr/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Snimi fotografiju"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Odaberi fotografiju"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Pošalji poruku"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotografija poslana putem Poruka"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Poruka poslana putem Poruka"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hu/strings.xml b/java/com/android/dialer/callcomposer/res/values-hu/strings.xml
index 2a590e0..b222c53 100644
--- a/java/com/android/dialer/callcomposer/res/values-hu/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-hu/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Kép készítése"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Fotó kiválasztása"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Üzenet küldése"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotó elküldve a Messages alkalmazásban"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Üzenet elküldve a Messages alkalmazásban"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hy/strings.xml b/java/com/android/dialer/callcomposer/res/values-hy/strings.xml
index 1b55234..01635f6 100644
--- a/java/com/android/dialer/callcomposer/res/values-hy/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-hy/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Լուսանկարել"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Ընտրել լուսանկար"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Ուղարկել հաղորդագրություն"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Լուսանկարն ուղարկվել է Messages-ի միջոցով"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Հաղորդագրությունն ուղարկվել է Messages-ի միջոցով"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-in/strings.xml b/java/com/android/dialer/callcomposer/res/values-in/strings.xml
index 7983c4d..4c6d844 100644
--- a/java/com/android/dialer/callcomposer/res/values-in/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-in/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Jepret"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Pilih foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Mengirim pesan"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto dikirim lewat Message"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Pesan dikirim lewat Message"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-is/strings.xml b/java/com/android/dialer/callcomposer/res/values-is/strings.xml
index 3bf4a6b..d951edd 100644
--- a/java/com/android/dialer/callcomposer/res/values-is/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-is/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Taka mynd"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Velja mynd"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Senda skilaboð"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Mynd send með Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Skilaboð send með Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-it/strings.xml b/java/com/android/dialer/callcomposer/res/values-it/strings.xml
index 343dd84..9d26b2c 100644
--- a/java/com/android/dialer/callcomposer/res/values-it/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-it/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Scatta una foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Scegli una foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Invia un messaggio"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto inviata tramite Messaggi"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Messaggio inviato tramite Messaggi"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-iw/strings.xml b/java/com/android/dialer/callcomposer/res/values-iw/strings.xml
index 24c6203..26e7daf 100644
--- a/java/com/android/dialer/callcomposer/res/values-iw/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-iw/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"צילום תמונה"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"בחירת תמונה"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"שליחת הודעה"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"‏התמונה נשלחה דרך אפליקציית Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"‏ההודעה נשלחה דרך אפליקציית Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ja/strings.xml b/java/com/android/dialer/callcomposer/res/values-ja/strings.xml
index 33f48c9..96eaea5 100644
--- a/java/com/android/dialer/callcomposer/res/values-ja/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ja/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"画像を撮影します"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"写真を選択します"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"メッセージを送信します"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Android メッセージで写真が送信されました"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Android メッセージでメッセージが送信されました"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ka/strings.xml b/java/com/android/dialer/callcomposer/res/values-ka/strings.xml
index 65084f3..0cef94d 100644
--- a/java/com/android/dialer/callcomposer/res/values-ka/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ka/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"სურათის გადაღება"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ფოტოს არჩევა"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"შეტყობინების გაგზავნა"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"ფოტო გაიგზავნა Messages აპიდან"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"შეტყობინება გაიგზავნა Messages აპიდან"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-kk/strings.xml b/java/com/android/dialer/callcomposer/res/values-kk/strings.xml
index bf41736..c95fb7b 100644
--- a/java/com/android/dialer/callcomposer/res/values-kk/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-kk/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Суретке түсіру"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Суретті таңдау"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Хабар жіберу"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Сурет Messages арқылы жіберілді"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Хабар Messages арқылы жіберілді"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-km/strings.xml b/java/com/android/dialer/callcomposer/res/values-km/strings.xml
index 10c8d52..66f82c5 100644
--- a/java/com/android/dialer/callcomposer/res/values-km/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-km/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"ថតរូប"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ជ្រើសរើស​រូបថត"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"ផ្ញើសារ"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"រូបថត​ដែល​បាន​ផ្ញើ​តាមរយៈ Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"សារ​ដែល​បាន​ផ្ញើ​តាមរយៈ Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-kn/strings.xml b/java/com/android/dialer/callcomposer/res/values-kn/strings.xml
index 3776d9d..7bb1e48 100644
--- a/java/com/android/dialer/callcomposer/res/values-kn/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-kn/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"ಚಿತ್ರ ತೆಗೆದುಕೊಳ್ಳಿ"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ಒಂದು ಫೋಟೋ ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"ಸಂದೇಶ ಕಳುಹಿಸಿ"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"ಸಂದೇಶಗಳ ಮೂಲಕ ಕಳುಹಿಸಲಾದ ಫೋಟೋ"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"ಸಂದೇಶಗಳ ಮೂಲಕ ಕಳುಹಿಸಲಾದ ಸಂದೇಶ"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ko/strings.xml b/java/com/android/dialer/callcomposer/res/values-ko/strings.xml
index 0e6820e..1052d55 100644
--- a/java/com/android/dialer/callcomposer/res/values-ko/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ko/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"사진 촬영"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"사진 선택"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"메시지 보내기"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"메시지를 통해 전송된 사진"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"메시지를 통해 전송된 메시지"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ky/strings.xml b/java/com/android/dialer/callcomposer/res/values-ky/strings.xml
index f96ce4d..6e5889d 100644
--- a/java/com/android/dialer/callcomposer/res/values-ky/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ky/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Сүрөткө тартуу"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Сүрөттү тандоо"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Билдирүү жөнөтүү"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Сүрөт Android жазышуулары колдонмосу аркылуу жөнөтүлдү"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Билдирүү Android жазышуулары колдонмосу аркылуу жөнөтүлдү"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lo/strings.xml b/java/com/android/dialer/callcomposer/res/values-lo/strings.xml
index d14f03d..87d72db 100644
--- a/java/com/android/dialer/callcomposer/res/values-lo/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-lo/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"ຖ່າຍຮູບ"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ເລືອກຮູບພາບ..."</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"ສົ່ງຂໍ້ຄວາມ"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"ສົ່ງຮູບຜ່ານ Messages ແລ້ວ"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"ສົ່ງຮູບຜ່ານ Messages ແລ້ວ"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lt/strings.xml b/java/com/android/dialer/callcomposer/res/values-lt/strings.xml
index 4453bcd..07fe444 100644
--- a/java/com/android/dialer/callcomposer/res/values-lt/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-lt/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Fotografuoti"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Pasirinkti nuotrauką"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Siųsti pranešimą"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Nuotrauka išsiųsta naudojant „Messages“"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Pranešimas išsiųstas naudojant „Messages“"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lv/strings.xml b/java/com/android/dialer/callcomposer/res/values-lv/strings.xml
index 80e5214..9a3efc7 100644
--- a/java/com/android/dialer/callcomposer/res/values-lv/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-lv/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Uzņemt attēlu"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Izvēlēties fotoattēlu"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Sūtīt ziņojumu"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotoattēls nosūtīts, izmantojot lietotni Ziņojumi"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Ziņojums nosūtīts, izmantojot lietotni Ziņojumi"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mk/strings.xml b/java/com/android/dialer/callcomposer/res/values-mk/strings.xml
index bd8f0c8..218c23d 100644
--- a/java/com/android/dialer/callcomposer/res/values-mk/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-mk/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Фотографирајте"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Изберете фотографија"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Испратете порака"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Фотографијата е испратена преку Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Пораката е испратена преку Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ml/strings.xml b/java/com/android/dialer/callcomposer/res/values-ml/strings.xml
index e4931cb..0e58cbb 100644
--- a/java/com/android/dialer/callcomposer/res/values-ml/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ml/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"ഒരു ചിത്രമെടുക്കുക"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ഒരു ഫോട്ടോ തിരഞ്ഞെടുക്കുക"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"ഒരു സന്ദേശം അയയ്‌ക്കുക"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"മെസേജ് വഴി ഫോട്ടോ അയച്ചു"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"മെസേജ് വഴി സന്ദേശം അയച്ചു"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mn/strings.xml b/java/com/android/dialer/callcomposer/res/values-mn/strings.xml
index 62a7750..8728740 100644
--- a/java/com/android/dialer/callcomposer/res/values-mn/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-mn/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Зураг авах"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Зураг сонгоно уу"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Зурвас илгээх"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Зургийг Зурвасаар дамжуулан илгээсэн"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Зурвасыг Зурвасаар дамжуулан илгээсэн"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mr/strings.xml b/java/com/android/dialer/callcomposer/res/values-mr/strings.xml
index e7a7190..3ca51a2 100644
--- a/java/com/android/dialer/callcomposer/res/values-mr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-mr/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"एक फोटो घ्या"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"फोटो निवडा"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"एक संदेश पाठवा"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Messages द्वारे फोटो पाठविला"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Messages द्वारे संदेश पाठविला"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ms/strings.xml b/java/com/android/dialer/callcomposer/res/values-ms/strings.xml
index 39ed6fa..e722b88 100644
--- a/java/com/android/dialer/callcomposer/res/values-ms/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ms/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Ambil gambar"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Pilih foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Hantar mesej"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Photo dihantar melalui Mesej"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mesej dihantar melalui Mesej"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-my/strings.xml b/java/com/android/dialer/callcomposer/res/values-my/strings.xml
index a20dabc..b49b1ea 100644
--- a/java/com/android/dialer/callcomposer/res/values-my/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-my/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"ဓာတ်ပုံတစ်ပုံ ရိုက်ရန်"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ဓာတ်ပုံတစ်ပုံ ရွေးရန်"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"မက်ဆေ့ဂျ်ပို့ရန်"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"မက်ဆေ့ဂျ်များမှတစ်ဆင့် ဓာတ်ပုံပို့ပြီးပါပြီ"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"မက်ဆေ့ဂျ်များမှတစ်ဆင့် မက်ဆေ့ဂျ်ပို့ပြီးပါပြီ"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-nb/strings.xml b/java/com/android/dialer/callcomposer/res/values-nb/strings.xml
index cbb1acc..07caf6e 100644
--- a/java/com/android/dialer/callcomposer/res/values-nb/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-nb/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Ta et bilde"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Velg et bilde"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Send en melding"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Bildet er sendt via Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Meldingen er sendt via Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ne/strings.xml b/java/com/android/dialer/callcomposer/res/values-ne/strings.xml
index f084dc9..03eac6c 100644
--- a/java/com/android/dialer/callcomposer/res/values-ne/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ne/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"तस्बिर खिच्नुहोस्"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"तस्बिर छनौट गर्नुहोस्"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"सन्देश पठाउनुहोस्"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Messages मार्फत पठाइएको तस्बिर"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Messages मार्फत पठाइएको सन्देश"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-nl/strings.xml b/java/com/android/dialer/callcomposer/res/values-nl/strings.xml
index 5511427..7a73d93 100644
--- a/java/com/android/dialer/callcomposer/res/values-nl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-nl/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Een foto nemen"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Een foto kiezen"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Een bericht verzenden"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto verzonden via Berichten"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Bericht verzonden via Berichten"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-no/strings.xml b/java/com/android/dialer/callcomposer/res/values-no/strings.xml
index cbb1acc..07caf6e 100644
--- a/java/com/android/dialer/callcomposer/res/values-no/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-no/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Ta et bilde"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Velg et bilde"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Send en melding"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Bildet er sendt via Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Meldingen er sendt via Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pa/strings.xml b/java/com/android/dialer/callcomposer/res/values-pa/strings.xml
index 5c20adc..25de393 100644
--- a/java/com/android/dialer/callcomposer/res/values-pa/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pa/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"ਇੱਕ ਤਸਵੀਰ ਖਿੱਚੋ"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ਇੱਕ ਫ਼ੋਟੋ ਚੁਣੋ"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"ਫ਼ੋਟੋ &amp;quot;ਸੁਨੇਹੇ&amp;quot; ਐਪ ਰਾਹੀਂ ਭੇਜੀ ਗਈ"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"ਸੁਨੇਹਾ &amp;quot;ਸੁਨੇਹੇ&amp;quot; ਐਪ ਰਾਹੀਂ ਭੇਜਿਆ ਗਿਆ"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pl/strings.xml b/java/com/android/dialer/callcomposer/res/values-pl/strings.xml
index eea7496..b65ba23 100644
--- a/java/com/android/dialer/callcomposer/res/values-pl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pl/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Zrób zdjęcie"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Wybierz zdjęcie"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Wyślij wiadomość"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Zdjęcie zostało wysłane przez Wiadomości"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Tekst został wysłany przez Wiadomości"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml
index 026cfac..669e850 100644
--- a/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Tirar uma foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Escolher uma foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Enviar uma mensagem"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada pelo Mensagens"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mensagem enviada pelo Mensagens"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml
index 1a35ce2..45411d3 100644
--- a/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Tirar uma foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Selecionar foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Enviar uma mensagem"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada através da aplicação Mensagens"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mensagem enviada através da aplicação Mensagens"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt/strings.xml
index 026cfac..669e850 100644
--- a/java/com/android/dialer/callcomposer/res/values-pt/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-pt/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Tirar uma foto"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Escolher uma foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Enviar uma mensagem"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Foto enviada pelo Mensagens"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mensagem enviada pelo Mensagens"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ro/strings.xml b/java/com/android/dialer/callcomposer/res/values-ro/strings.xml
index ac55b80..cd8359f 100644
--- a/java/com/android/dialer/callcomposer/res/values-ro/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ro/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Fotografiați"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Alegeți o fotografie"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Trimiteți un mesaj"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotografie trimisă prin Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mesaj trimis prin Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ru/strings.xml b/java/com/android/dialer/callcomposer/res/values-ru/strings.xml
index 79d8136..1119a0e 100644
--- a/java/com/android/dialer/callcomposer/res/values-ru/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ru/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Сделать фото"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Выбрать фото"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Отправить сообщение"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Фото отправлено через Android Сообщения"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Сообщение отправлено через Android Сообщения"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-si/strings.xml b/java/com/android/dialer/callcomposer/res/values-si/strings.xml
index 8c2b953..dfae242 100644
--- a/java/com/android/dialer/callcomposer/res/values-si/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-si/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"පින්තුරයක් ගැනීම"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ඡායාරූපයක් තේරීම"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"පණිවිඩයක් යැවීම"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Messages හරහා ඡායාරූපය යවන ලදී"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Messages හරහා පණිවිඩය යවන ලදී"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sk/strings.xml b/java/com/android/dialer/callcomposer/res/values-sk/strings.xml
index ee062c4..f54c73e 100644
--- a/java/com/android/dialer/callcomposer/res/values-sk/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sk/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Odfotiť"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Vybrať fotku"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Odoslať správu"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotka bola odoslaná prostredníctvom Správ"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Správa bola odoslaná prostredníctvom Správ"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sl/strings.xml b/java/com/android/dialer/callcomposer/res/values-sl/strings.xml
index 9d57cfd..010ad07 100644
--- a/java/com/android/dialer/callcomposer/res/values-sl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sl/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Posnemi fotografijo"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Izberi fotografijo"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Pošlji sporočilo"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotografija je bila poslana prek aplikacije Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Sporočilo je bila poslano prek aplikacije Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sq/strings.xml b/java/com/android/dialer/callcomposer/res/values-sq/strings.xml
index 7209942..b106d5a 100644
--- a/java/com/android/dialer/callcomposer/res/values-sq/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sq/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Bëj një fotografi"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Zgjidh një fotografi"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Dërgo një mesazh"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotografia u dërgua nëpërmjet \"Mesazheve\""</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mesazhi u dërgua nëpërmjet \"Mesazheve\""</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sr/strings.xml b/java/com/android/dialer/callcomposer/res/values-sr/strings.xml
index 1eafcb7..2b85628 100644
--- a/java/com/android/dialer/callcomposer/res/values-sr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sr/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Сликајте"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Изаберите слику"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Пошаљите поруку"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Слика је послата преко Messages-а"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Порука је послата преко Messages-а"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sv/strings.xml b/java/com/android/dialer/callcomposer/res/values-sv/strings.xml
index 787d865..e60bbe9 100644
--- a/java/com/android/dialer/callcomposer/res/values-sv/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sv/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Ta en bild"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Välj ett foto"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Skicka ett meddelande"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotot har skickats via Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Meddelandet har skickats via Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sw/strings.xml b/java/com/android/dialer/callcomposer/res/values-sw/strings.xml
index d33ff31..f67c899 100644
--- a/java/com/android/dialer/callcomposer/res/values-sw/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-sw/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Piga picha"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Chagua picha"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Tuma ujumbe"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Picha imetumwa kupitia Programu ya Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Ujumbe umetumwa kupitia Programu ya Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ta/strings.xml b/java/com/android/dialer/callcomposer/res/values-ta/strings.xml
index 37c0193..ae59b3d 100644
--- a/java/com/android/dialer/callcomposer/res/values-ta/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ta/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"படமெடுக்கவும்"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"புகைப்படத்தைத் தேர்வு செய்யும்"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"செய்தியை அனுப்பும்"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"மெசேஜஸ் மூலம் படம் அனுப்பப்பட்டது"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"மெசேஜஸ் மூலம் செய்தி அனுப்பப்பட்டது"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-te/strings.xml b/java/com/android/dialer/callcomposer/res/values-te/strings.xml
index 5480370..01d0910 100644
--- a/java/com/android/dialer/callcomposer/res/values-te/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-te/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"చిత్రాన్ని తీస్తుంది"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ఫోటోను ఎంచుకోండి"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"సందేశాన్ని పంపుతుంది"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"సందేశాల అనువర్తనం ద్వారా ఫోటోను పంపాము"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"సందేశాల అనువర్తనం ద్వారా సందేశాన్ని పంపాము"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-th/strings.xml b/java/com/android/dialer/callcomposer/res/values-th/strings.xml
index 9d98d56..53dbaea 100644
--- a/java/com/android/dialer/callcomposer/res/values-th/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-th/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"ถ่ายภาพ"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"เลือกรูปภาพ"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"ส่งข้อความ"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"ส่งรูปภาพผ่าน Messages แล้ว"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"ส่งข้อความผ่าน Messages แล้ว"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-tl/strings.xml b/java/com/android/dialer/callcomposer/res/values-tl/strings.xml
index 5bba942..910d907 100644
--- a/java/com/android/dialer/callcomposer/res/values-tl/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-tl/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Kumuha ng larawan"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Pumili ng larawan"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Magpadala ng mensahe"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Larawang ipinadala sa pamamagitan ng Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mensaheng ipinadala sa pamamagitan ng Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-tr/strings.xml b/java/com/android/dialer/callcomposer/res/values-tr/strings.xml
index cfb8bfb..51069ea 100644
--- a/java/com/android/dialer/callcomposer/res/values-tr/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-tr/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Resim çeker"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Fotoğraf seçilmesini sağlar"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Mesaj gönderir"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Fotoğraf, Mesajlar uygulaması üzerinden gönderildi"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Mesaj, Mesajlar uygulaması üzerinden gönderildi"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-uk/strings.xml b/java/com/android/dialer/callcomposer/res/values-uk/strings.xml
index 4cb1a2d..57ee722 100644
--- a/java/com/android/dialer/callcomposer/res/values-uk/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-uk/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Зробити знімок"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Вибрати фотографію"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Надіслати повідомлення"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Фотографію надіслано через додаток Повідомлення"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Текст надіслано через додаток Повідомлення"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ur/strings.xml b/java/com/android/dialer/callcomposer/res/values-ur/strings.xml
index c665cfb..28d79b8 100644
--- a/java/com/android/dialer/callcomposer/res/values-ur/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-ur/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"تصویر لیں"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"ایک تصویر چنیں"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"پیغام بھیجیں"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"تصویر پیغامات کے ذریعے بھیجی گئی"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"پیغام پیغامات کے ذریعے بھیجا گیا"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-uz/strings.xml b/java/com/android/dialer/callcomposer/res/values-uz/strings.xml
index 0237ab9..a3c7346 100644
--- a/java/com/android/dialer/callcomposer/res/values-uz/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-uz/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Rasmga olish"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Rasm tanlash"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Xabar yuborish"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Rasm Android Xabarlar orqali yuborildi"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Xabar Android Xabarlar orqali yuborildi"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-vi/strings.xml b/java/com/android/dialer/callcomposer/res/values-vi/strings.xml
index d617cfb..7be47a0 100644
--- a/java/com/android/dialer/callcomposer/res/values-vi/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-vi/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Chụp ảnh"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Chọn ảnh"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Gửi tin nhắn"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Đã gửi ảnh qua Messages"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Đã gửi tin nhắn qua Messages"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml
index 97017d6..39ace9d 100644
--- a/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"拍照"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"选择一张照片"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"发送信息"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"已通过“信息”应用发送照片"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"已通过“信息”应用发送短信"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml
index b191949..87052ff 100644
--- a/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"拍照"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"選擇相片"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"傳送訊息"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"已透過「訊息」傳送相片"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"已透過「訊息」傳送訊息"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml
index ef2cd9d..51cc8f6 100644
--- a/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"拍攝相片"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"選擇相片"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"傳送訊息"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"透過訊息應用程式傳送的相片"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"透過訊息應用程式傳送的訊息"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zu/strings.xml b/java/com/android/dialer/callcomposer/res/values-zu/strings.xml
index 09845f6..3e2db44 100644
--- a/java/com/android/dialer/callcomposer/res/values-zu/strings.xml
+++ b/java/com/android/dialer/callcomposer/res/values-zu/strings.xml
@@ -33,6 +33,8 @@
     <string name="description_call_composer_camera" msgid="388088245837924914">"Thatha isithombe"</string>
     <string name="description_call_composer_photo" msgid="6449208314952246454">"Khetha isithombe"</string>
     <string name="description_call_composer_message" msgid="9132362446000908550">"Thumela umlayezo"</string>
-    <string name="image_sent_messages" msgid="6520870555040566229">"Isithombe sithunyelwe ngemilayezo"</string>
-    <string name="message_sent_messages" msgid="6286576951151541098">"Umlayezo uthunyelwe ngemilayezo"</string>
+    <!-- no translation found for image_sent_messages (6520870555040566229) -->
+    <skip />
+    <!-- no translation found for message_sent_messages (6286576951151541098) -->
+    <skip />
 </resources>
diff --git a/java/com/android/dialer/callcomposer/res/values/dimens.xml b/java/com/android/dialer/callcomposer/res/values/dimens.xml
index 083bd0a..798c46f 100644
--- a/java/com/android/dialer/callcomposer/res/values/dimens.xml
+++ b/java/com/android/dialer/callcomposer/res/values/dimens.xml
@@ -15,15 +15,15 @@
   ~ limitations under the License
   -->
 <resources>
-  <dimen name="call_composer_view_pager_height">306dp</dimen>
+  <dimen name="call_composer_view_pager_height">292dp</dimen>
 
   <!-- Contact bar -->
   <dimen name="call_composer_contact_photo_border_thickness">2dp</dimen>
-  <dimen name="call_composer_contact_photo_size">116dp</dimen>
-  <dimen name="call_composer_contact_container_margin_top">58dp</dimen>
-  <dimen name="call_composer_contact_container_padding_top">58dp</dimen>
-  <dimen name="call_composer_contact_container_padding_bottom">18dp</dimen>
-  <dimen name="call_composer_name_text_size">32sp</dimen>
+  <dimen name="call_composer_contact_photo_size">112dp</dimen>
+  <dimen name="call_composer_contact_container_margin_top">56dp</dimen>
+  <dimen name="call_composer_contact_container_padding_top">56dp</dimen>
+  <dimen name="call_composer_contact_container_padding_bottom">16dp</dimen>
+  <dimen name="call_composer_name_text_size">28sp</dimen>
   <dimen name="call_composer_number_text_size">16sp</dimen>
   <dimen name="call_composer_contact_container_elevation">2dp</dimen>
 
diff --git a/java/com/android/dialer/callcomposer/res/values/styles.xml b/java/com/android/dialer/callcomposer/res/values/styles.xml
index 16e7fb6..a03ee48 100644
--- a/java/com/android/dialer/callcomposer/res/values/styles.xml
+++ b/java/com/android/dialer/callcomposer/res/values/styles.xml
@@ -34,7 +34,8 @@
   <style name="message_composer_textview">
     <item name="android:textSize">@dimen/message_compose_item_text_size</item>
     <item name="android:textColor">@color/dialer_primary_text_color</item>
-    <item name="android:padding">@dimen/message_composer_item_padding</item>
+    <item name="android:paddingStart">@dimen/message_composer_item_padding</item>
+    <item name="android:paddingEnd">@dimen/message_composer_item_padding</item>
     <item name="android:background">@drawable/item_background_material_light</item>
     <item name="android:gravity">center_vertical</item>
   </style>
diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
index 48e9b69..66a736c 100644
--- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java
+++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
@@ -26,6 +26,7 @@
 import com.android.dialer.calllogutils.CallTypeHelper;
 import com.android.dialer.common.Assert;
 import com.android.dialer.dialercontact.DialerContact;
+import com.android.dialer.lightbringer.LightbringerComponent;
 import java.util.List;
 
 /** Adapter for RecyclerView in {@link CallDetailsActivity}. */
@@ -48,7 +49,9 @@
     this.contact = Assert.isNotNull(contact);
     this.callDetailsEntries = callDetailsEntries;
     this.listener = listener;
-    callTypeHelper = new CallTypeHelper(context.getResources());
+    callTypeHelper =
+        new CallTypeHelper(
+            context.getResources(), LightbringerComponent.get(context).getLightbringer());
   }
 
   @Override
diff --git a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
index 204e407..9c592fc 100644
--- a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
@@ -56,7 +56,7 @@
 
   private final ImageView multimediaImage;
 
-  // TODO: Display this when location is stored - b/36160042
+  // TODO(maxwelb): Display this when location is stored - b/36160042
   @SuppressWarnings("unused")
   private final TextView multimediaAttachmentsNumber;
 
@@ -91,6 +91,7 @@
     boolean isPulledCall =
         (entry.getFeatures() & Calls.FEATURES_PULLED_EXTERNALLY)
             == Calls.FEATURES_PULLED_EXTERNALLY;
+    boolean isLightbringerCall = entry.getIsLightbringerCall();
 
     callTime.setTextColor(getColorForCallType(context, callType));
     callTypeIcon.clear();
@@ -100,7 +101,8 @@
     callTypeIcon.setShowWifi(
         MotorolaUtils.shouldShowWifiIconInCallLog(context, entry.getFeatures()));
 
-    callTypeText.setText(callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall));
+    callTypeText.setText(
+        callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall, isLightbringerCall));
     callTime.setText(CallEntryFormatter.formatDate(context, entry.getDate()));
     if (CallTypeHelper.isMissedCallType(callType)) {
       callDuration.setVisibility(View.GONE);
diff --git a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
index ea12c4f..410a3a0 100644
--- a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
@@ -25,10 +25,10 @@
 import android.view.View.OnClickListener;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.InteractionEvent;
diff --git a/java/com/android/dialer/calldetails/proto/call_details_entries.proto b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
index 18bc931..587fd35 100644
--- a/java/com/android/dialer/calldetails/proto/call_details_entries.proto
+++ b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
@@ -18,6 +18,7 @@
     optional int64 duration = 5;
     optional int64 data_usage = 6;
     repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7;
+    optional bool is_lightbringer_call = 8;
   }
 
   repeated CallDetailsEntry entries = 1;
diff --git a/java/com/android/dialer/calldetails/res/layout/contact_container.xml b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
index 0911291..b01a6cc 100644
--- a/java/com/android/dialer/calldetails/res/layout/contact_container.xml
+++ b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
@@ -31,8 +31,7 @@
       android:layout_height="@dimen/call_details_contact_photo_size"
       android:layout_centerVertical="true"
       android:padding="@dimen/call_details_contact_photo_padding"
-      android:focusable="true"
-      android:contentDescription="@string/description_quick_contact_for"/>
+      android:focusable="true"/>
 
   <LinearLayout
       android:orientation="vertical"
diff --git a/java/com/android/dialer/calldetails/res/values-uz/strings.xml b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
index 57f0526..4f38cab 100644
--- a/java/com/android/dialer/calldetails/res/values-uz/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
@@ -20,7 +20,7 @@
     <string name="call_details" msgid="5063658079729839605">"Chaqiruv tafsilotlari"</string>
     <string name="delete" msgid="2141020674108406737">"O‘chirib tashlash"</string>
     <string name="call_details_copy_number" msgid="4265479408878990796">"Raqamni nusxalash"</string>
-    <string name="call_details_edit_number" msgid="8718476514903513624">"Chaqiruvdan oldin raqamni tahrirlash"</string>
+    <string name="call_details_edit_number" msgid="8718476514903513624">"Qo‘ng‘iroq qilishdan oldin raqamni tahrirlash"</string>
     <string name="call_details_report_call_id" msgid="8857541295264421217">"Raqamdagi xatolik haqida xabar berish"</string>
     <string name="sent_a_photo" msgid="3978670717462979502">"Rasm yuborildi"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Rasm qabul qilindi"</string>
diff --git a/java/com/android/dialer/callintent/call_initiation_type.proto b/java/com/android/dialer/callintent/call_initiation_type.proto
index 318da9c..32e4e49 100644
--- a/java/com/android/dialer/callintent/call_initiation_type.proto
+++ b/java/com/android/dialer/callintent/call_initiation_type.proto
@@ -8,6 +8,7 @@
 package com.android.dialer.callintent;
 
 
+
 // Different ways a call can be initiated.
 message CallInitiationType {
   enum Type {
diff --git a/java/com/android/dialer/callintent/speed_dial_contact_type.proto b/java/com/android/dialer/callintent/speed_dial_contact_type.proto
index 588eadf..ecb1c3f 100644
--- a/java/com/android/dialer/callintent/speed_dial_contact_type.proto
+++ b/java/com/android/dialer/callintent/speed_dial_contact_type.proto
@@ -8,6 +8,7 @@
 package com.android.dialer.callintent;
 
 
+
 // The type of speed call contact (favorites). Applies to initiation type
 // SPEED_DIAL only.
 message SpeedDialContactType {
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
index 887dfcb..5f48d7b 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -68,7 +68,7 @@
     long startTime = System.currentTimeMillis();
     db.execSQL(CREATE_TABLE_SQL);
     db.execSQL(String.format(Locale.US, CREATE_TRIGGER_SQL, maxRows, maxRows));
-    // TODO: Consider logging impression.
+    // TODO(zachh): Consider logging impression.
     LogUtil.i(
         "AnnotatedCallLogDatabaseHelper.onCreate",
         "took: %dms",
diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java
index 5683687..23ddc9c 100644
--- a/java/com/android/dialer/calllog/database/Coalescer.java
+++ b/java/com/android/dialer/calllog/database/Coalescer.java
@@ -129,7 +129,7 @@
    */
   private static boolean rowsShouldBeCombined(
       DialerPhoneNumberUtil dialerPhoneNumberUtil, ContentValues row1, ContentValues row2) {
-    // TODO: Real implementation.
+    // TODO(zachh): Real implementation.
     DialerPhoneNumber number1;
     DialerPhoneNumber number2;
     try {
diff --git a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
index 82a8523..db74215 100644
--- a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
@@ -39,7 +39,7 @@
   public boolean isDirty(Context appContext) {
     Assert.isWorkerThread();
 
-    // TODO: Implementation.
+    // TODO(zachh): Implementation.
     return false;
   }
 
@@ -49,7 +49,7 @@
       Context appContext,
       CallLogMutations mutations) {
     Assert.isWorkerThread();
-    // TODO: Implementation.
+    // TODO(zachh): Implementation.
     for (ContentValues contentValues : mutations.getInserts().values()) {
       contentValues.put(AnnotatedCallLog.CONTACT_NAME, "Placeholder name");
     }
@@ -57,12 +57,12 @@
 
   @Override
   public void onSuccessfulFill(Context appContext) {
-    // TODO: Implementation.
+    // TODO(zachh): Implementation.
   }
 
   @Override
   public ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc) {
-    // TODO: Implementation.
+    // TODO(zachh): Implementation.
     return new RowCombiner(individualRowsSortedByTimestampDesc)
         .useSingleValueString(AnnotatedCallLog.CONTACT_NAME)
         .combine();
@@ -72,6 +72,6 @@
   @Override
   public void registerContentObservers(
       Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
-    // TODO: Guard against missing permissions during callback registration.
+    // TODO(zachh): Guard against missing permissions during callback registration.
   }
 }
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index f206328..86145a9 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -143,7 +143,7 @@
 
   @Override
   public ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc) {
-    // TODO: Complete implementation.
+    // TODO(zachh): Complete implementation.
     ContentValues coalescedValues =
         new RowCombiner(individualRowsSortedByTimestampDesc)
             .useMostRecentLong(AnnotatedCallLog.TIMESTAMP)
@@ -182,7 +182,7 @@
     DialerPhoneNumberUtil dialerPhoneNumberUtil =
         new DialerPhoneNumberUtil(PhoneNumberUtil.getInstance());
 
-    // TODO: Really should be getting last 1000 by timestamp, not by last modified.
+    // TODO(zachh): Really should be getting last 1000 by timestamp, not by last modified.
     try (Cursor cursor =
         appContext
             .getContentResolver()
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
index 712f7cf..17fcf19 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
@@ -92,7 +92,7 @@
     CallLogFramework callLogFramework = CallLogComponent.get(getContext()).callLogFramework();
     callLogFramework.attachUi(this);
 
-    // TODO: Consider doing this when fragment becomes visible.
+    // TODO(zachh): Consider doing this when fragment becomes visible.
     checkAnnotatedCallLogDirtyAndRefreshIfNecessary();
   }
 
@@ -142,7 +142,7 @@
   public void onLoadFinished(Loader<Cursor> loader, Cursor newCursor) {
     LogUtil.enterBlock("NewCallLogFragment.onLoadFinished");
 
-    // TODO: Handle empty cursor by showing empty view.
+    // TODO(zachh): Handle empty cursor by showing empty view.
     recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
     recyclerView.setAdapter(new NewCallLogAdapter(newCursor));
   }
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 4c459e1..9521a03 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -24,7 +24,7 @@
 /** {@link RecyclerView.ViewHolder} for the new call log. */
 final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
 
-  // TODO: Format correctly using current locale.
+  // TODO(zachh): Format correctly using current locale.
   private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
 
   private final TextView contactNameView;
diff --git a/java/com/android/dialer/calllogutils/CallTypeHelper.java b/java/com/android/dialer/calllogutils/CallTypeHelper.java
index d3b5b67..783f799 100644
--- a/java/com/android/dialer/calllogutils/CallTypeHelper.java
+++ b/java/com/android/dialer/calllogutils/CallTypeHelper.java
@@ -18,6 +18,7 @@
 
 import android.content.res.Resources;
 import com.android.dialer.compat.AppCompatConstants;
+import com.android.dialer.lightbringer.Lightbringer;
 
 /** Helper class to perform operations related to call types. */
 public class CallTypeHelper {
@@ -50,8 +51,12 @@
   private final CharSequence mBlockedName;
   /** Name used to identify calls which were answered on another device. */
   private final CharSequence mAnsweredElsewhereName;
+  /** Name used to identify incoming lightbringer calls. */
+  private final CharSequence mIncomingLightbringerCall;
+  /** Name used to identify outgoing lightbringer calls. */
+  private final CharSequence mOutgoingLightbringerCall;
 
-  public CallTypeHelper(Resources resources) {
+  public CallTypeHelper(Resources resources, Lightbringer lightbringer) {
     // Cache these values so that we do not need to look them up each time.
     mIncomingName = resources.getString(R.string.type_incoming);
     mIncomingPulledName = resources.getString(R.string.type_incoming_pulled);
@@ -67,6 +72,18 @@
     mRejectedName = resources.getString(R.string.type_rejected);
     mBlockedName = resources.getString(R.string.type_blocked);
     mAnsweredElsewhereName = resources.getString(R.string.type_answered_elsewhere);
+
+    if (lightbringer.getIncomingCallTypeText() != -1) {
+      mIncomingLightbringerCall = resources.getString(lightbringer.getIncomingCallTypeText());
+    } else {
+      mIncomingLightbringerCall = mIncomingVideoName;
+    }
+
+    if (lightbringer.getOutgoingCallTypeText() != -1) {
+      mOutgoingLightbringerCall = resources.getString(lightbringer.getOutgoingCallTypeText());
+    } else {
+      mOutgoingLightbringerCall = mOutgoingVideoName;
+    }
   }
 
   public static boolean isMissedCallType(int callType) {
@@ -77,13 +94,17 @@
   }
 
   /** Returns the text used to represent the given call type. */
-  public CharSequence getCallTypeText(int callType, boolean isVideoCall, boolean isPulledCall) {
+  public CharSequence getCallTypeText(
+      int callType, boolean isVideoCall, boolean isPulledCall, boolean isLightbringerCall) {
     switch (callType) {
       case AppCompatConstants.CALLS_INCOMING_TYPE:
         if (isVideoCall) {
           if (isPulledCall) {
             return mIncomingVideoPulledName;
           } else {
+            if (isLightbringerCall) {
+              return mIncomingLightbringerCall;
+            }
             return mIncomingVideoName;
           }
         } else {
@@ -99,6 +120,9 @@
           if (isPulledCall) {
             return mOutgoingVideoPulledName;
           } else {
+            if (isLightbringerCall) {
+              return mOutgoingLightbringerCall;
+            }
             return mOutgoingVideoName;
           }
         } else {
diff --git a/java/com/android/dialer/calllogutils/res/values-ar/strings.xml b/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
index 39afb6d..617d6d8 100644
--- a/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"ث"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="zero">ثوان</item>
       <item quantity="two">ثانيتان</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-az/strings.xml b/java/com/android/dialer/calllogutils/res/values-az/strings.xml
index 0efe1e8..c280c8e 100644
--- a/java/com/android/dialer/calllogutils/res/values-az/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-az/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"san"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other">saniyə</item>
       <item quantity="one">saniyə</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-da/strings.xml b/java/com/android/dialer/calllogutils/res/values-da/strings.xml
index 21c6e0e..123002a 100644
--- a/java/com/android/dialer/calllogutils/res/values-da/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-da/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sek."</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\' <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\' <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\' <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="one">sekund</item>
       <item quantity="other">sekunder</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-de/strings.xml b/java/com/android/dialer/calllogutils/res/values-de/strings.xml
index 4d6f416..5867b73 100644
--- a/java/com/android/dialer/calllogutils/res/values-de/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-de/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other"> Sekunden</item>
       <item quantity="one"> Sekunde</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-eu/strings.xml b/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
index 7ab37c5..a097ec8 100644
--- a/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
@@ -34,7 +34,7 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> eta <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' \'eta\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' eta <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other">segundo</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-hi/strings.xml b/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
index b9a6241..d20e88e 100644
--- a/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"से."</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="one">सेकंड</item>
       <item quantity="other">सेकंड</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-iw/strings.xml b/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
index 1ab041a..2f29855 100644
--- a/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
@@ -34,7 +34,7 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"שנ\'"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> ו-<xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' ו-<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="two">שניות</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-ky/strings.xml b/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
index 76d389e..f758dab 100644
--- a/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
@@ -35,7 +35,7 @@
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other">секундалар</item>
       <item quantity="one">секунда</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-mr/strings.xml b/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
index 9a7513b..c01f7c1 100644
--- a/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"से"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="one">सेकंद</item>
       <item quantity="other">सेकंद</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-nb/strings.xml b/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
index 4ec963d..2f74403 100644
--- a/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sek."</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other">sekunder</item>
       <item quantity="one">sekund</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-nl/strings.xml b/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
index 5239928..d156109 100644
--- a/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other">seconden</item>
       <item quantity="one">seconde</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-no/strings.xml b/java/com/android/dialer/calllogutils/res/values-no/strings.xml
index 4ec963d..2f74403 100644
--- a/java/com/android/dialer/calllogutils/res/values-no/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-no/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sek."</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other">sekunder</item>
       <item quantity="one">sekund</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
index ba526a8..8c13e81 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="one"> segundo</item>
       <item quantity="other"> segundos</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
index adb5dac..e24d245 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"seg"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>, <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\', <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\", <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="one">seconds</item>
       <item quantity="other">segundos</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
index ba526a8..8c13e81 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"s"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="one"> segundo</item>
       <item quantity="other"> segundos</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-sw/strings.xml b/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
index 46217e7..5a5a690 100644
--- a/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sek"</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\'<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g>\'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other">Sekunde</item>
       <item quantity="one">Sekunde</item>
diff --git a/java/com/android/dialer/calllogutils/res/values-tr/strings.xml b/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
index 93cf690..78e0b5b 100644
--- a/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
@@ -34,8 +34,8 @@
     <string name="call_details_seconds_abbreviation" msgid="5893806826648947126">"sn."</string>
     <string name="a11y_call_duration_format" msgid="2905525933361674470">"<xliff:g id="MINUTES_0">%d</xliff:g> <xliff:g id="MINUTES_TRANSLATION">%s</xliff:g> <xliff:g id="SECONDS_1">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
     <string name="a11y_call_duration_short_format" msgid="5908875871251062453">"<xliff:g id="SECONDS_0">%d</xliff:g> <xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>"</string>
-    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\' <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
-    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \'<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\'"</string>
+    <string name="call_duration_format_pattern" msgid="7566375153243313914">"<xliff:g id="MINUTES_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="MINUTES_TRANSLATION">%s</xliff:g>\" <xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
+    <string name="call_duration_short_format_pattern" msgid="1713177000235994790">"<xliff:g id="SECONDS_SPECIAL_CHARACTER">%s</xliff:g> \"<xliff:g id="SECONDS_TRANSLATION">%s</xliff:g>\""</string>
     <plurals name="a11y_seconds" formatted="false" msgid="6695730844760611970">
       <item quantity="other">saniye</item>
       <item quantity="one">saniye</item>
diff --git a/java/com/android/dialer/common/AndroidManifest.xml b/java/com/android/dialer/common/AndroidManifest.xml
index ae43d66..8892b58 100644
--- a/java/com/android/dialer/common/AndroidManifest.xml
+++ b/java/com/android/dialer/common/AndroidManifest.xml
@@ -1,3 +1,18 @@
+<!--
+  ~ Copyright (C) 2017 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
+  -->
 <manifest
   package="com.android.dialer.common">
 </manifest>
diff --git a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
index 82e517d..a87bbce 100644
--- a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
@@ -166,17 +166,7 @@
             });
 
     private static final Executor defaultParallelExecutor =
-        Executors.newFixedThreadPool(
-            5,
-            new ThreadFactory() {
-              @Override
-              public Thread newThread(Runnable runnable) {
-                LogUtil.i("NonUiTaskBuilder.newThread", "creating parallel thread");
-                Thread thread = new Thread(runnable, "NonUiTaskBuilder-Parallel");
-                thread.setPriority(4); // Corresponds to Process.THREAD_PRIORITY_BACKGROUND
-                return thread;
-              }
-            });
+        DialerExecutors.getLowPriorityThreadPool();
 
     NonUiTaskBuilder(Worker<InputT, OutputT> worker) {
       this(worker, defaultSerialExecutorService, defaultParallelExecutor);
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutors.java b/java/com/android/dialer/common/concurrent/DialerExecutors.java
index 148d866..81b3c5c 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutors.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutors.java
@@ -19,7 +19,11 @@
 import android.app.FragmentManager;
 import android.support.annotation.NonNull;
 import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
 
 /**
  * Factory methods for creating {@link DialerExecutor} objects for doing background work.
@@ -131,4 +135,27 @@
       @NonNull Worker<InputT, OutputT> worker) {
     return new DefaultDialerExecutorFactory().createNonUiTaskBuilder(Assert.isNotNull(worker));
   }
+
+  private static final Executor lowPriorityThreadPool =
+      Executors.newFixedThreadPool(
+          5,
+          new ThreadFactory() {
+            @Override
+            public Thread newThread(Runnable runnable) {
+              LogUtil.i("DialerExecutors.newThread", "creating low priority thread");
+              Thread thread = new Thread(runnable, "DialerExecutors-LowPriority");
+              thread.setPriority(4); // Corresponds to Process.THREAD_PRIORITY_BACKGROUND
+              return thread;
+            }
+          });
+
+  /**
+   * An application-wide thread pool used for low priority (non-UI) tasks.
+   *
+   * <p>This exists to prevent each individual dialer component from having to create its own
+   * threads/pools, which would result in the application having more threads than really necessary.
+   */
+  public static Executor getLowPriorityThreadPool() {
+    return lowPriorityThreadPool;
+  }
 }
diff --git a/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java b/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
index 6d02fe6..c7a7f36 100644
--- a/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
+++ b/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
@@ -30,7 +30,9 @@
  * @param <ParamsT> the type of the parameters sent to the task upon execution
  * @param <ProgressT> the type of the progress units published during the background computation
  * @param <ResultT> the type of the result of the background computation
+ * @deprecated Please use {@link DialerExecutors}.
  */
+@Deprecated
 public abstract class FallibleAsyncTask<ParamsT, ProgressT, ResultT>
     extends AsyncTask<ParamsT, ProgressT, FallibleTaskResult<ResultT>> {
 
diff --git a/java/com/android/dialer/common/database/Selection.java b/java/com/android/dialer/common/database/Selection.java
new file mode 100644
index 0000000..b61472d
--- /dev/null
+++ b/java/com/android/dialer/common/database/Selection.java
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2017 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.dialer.common.database;
+
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import com.android.dialer.common.Assert;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Utility to build SQL selections. Handles string concatenation, nested statements, empty
+ * statements, and tracks the selection arguments.
+ *
+ * <p>A selection can be build from a string, factory methods like {@link #column(String)}, or use
+ * {@link Builder} to build complex nested selection with multiple operators. The Selection manages
+ * the {@code selection} and {@code selectionArgs} passed into {@link
+ * android.content.ContentResolver#query(android.net.Uri, String[], String, String[], String)}.
+ *
+ * <p>Example:
+ *
+ * <pre><code>
+ *   fromString("foo = 1")
+ * </code></pre>
+ *
+ * expands into "(foo = 1)", {}
+ *
+ * <p>
+ *
+ * <pre><code>
+ *   column("foo").is("LIKE", "bar")
+ * </code></pre>
+ *
+ * expands into "(foo LIKE ?)", {"bar"}
+ *
+ * <p>
+ *
+ * <pre><code>
+ *   builder()
+ *     .and(
+ *       fromString("foo = ?", "1").buildUpon()
+ *       .or(column("bar").is("<", 2))
+ *       .build())
+ *     .and(not(column("baz").is("!= 3")))
+ *     .build();
+ * </code></pre>
+ *
+ * expands into "(((foo = ?) OR (bar < ?)) AND (NOT (baz != 3)))", {"1", "2"}
+ */
+public final class Selection {
+
+  private final String selection;
+  private final String[] selectionArgs;
+
+  private Selection(@NonNull String selection, @NonNull String[] selectionArgs) {
+    this.selection = selection;
+    this.selectionArgs = selectionArgs;
+  }
+
+  @NonNull
+  public String getSelection() {
+    return selection;
+  }
+
+  @NonNull
+  public String[] getSelectionArgs() {
+    return selectionArgs;
+  }
+
+  public boolean isEmpty() {
+    return selection.isEmpty();
+  }
+
+  /**
+   * @return a mutable builder that appends to the selection. The selection will be parenthesized
+   *     before anything is appended to it.
+   */
+  @NonNull
+  public Builder buildUpon() {
+    return new Builder(this);
+  }
+
+  /** @return a builder that is empty. */
+  @NonNull
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  /**
+   * @return a Selection built from regular selection string/args pair. The result selection will be
+   *     enclosed in a parenthesis.
+   */
+  @NonNull
+  public static Selection fromString(@Nullable String selection, @Nullable String... args) {
+    return new Builder(selection, args).build();
+  }
+
+  /** @return a selection that is negated */
+  @NonNull
+  public static Selection not(@NonNull Selection selection) {
+    Assert.checkArgument(!selection.isEmpty());
+    return fromString("NOT " + selection.getSelection(), selection.getSelectionArgs());
+  }
+
+  /**
+   * Build a selection based on condition upon a column. is() should be called to complete the
+   * selection.
+   */
+  @NonNull
+  public static Column column(@NonNull String column) {
+    return new Column(column);
+  }
+
+  /** Helper class to build a selection based on condition upon a column. */
+  public static class Column {
+
+    @NonNull private final String column;
+
+    private Column(@NonNull String column) {
+      this.column = Assert.isNotNull(column);
+    }
+
+    /** Expands to "<column> <operator> ?" and add {@code value} to the arguments. */
+    @NonNull
+    public Selection is(@NonNull String operator, @NonNull Object value) {
+      return fromString(column + " " + Assert.isNotNull(operator) + " ?", value.toString());
+    }
+
+    /**
+     * Expands to "<column> <operator>". {@link #is(String, Object)} should be used if the condition
+     * is comparing to a string or a user input value, which must be sanitized.
+     */
+    @NonNull
+    public Selection is(@NonNull String condition) {
+      return fromString(column + " " + Assert.isNotNull(condition));
+    }
+  }
+
+  /** Builder for {@link Selection} */
+  public static final class Builder {
+
+    private final StringBuilder selection = new StringBuilder();
+    private final List<String> selectionArgs = new ArrayList<>();
+
+    private Builder() {}
+
+    private Builder(@Nullable String selection, @Nullable String... args) {
+      if (selection == null) {
+        return;
+      }
+      checkArgsCount(selection, args);
+      this.selection.append(parenthesized(selection));
+      if (args != null) {
+        Collections.addAll(selectionArgs, args);
+      }
+    }
+
+    private Builder(@NonNull Selection selection) {
+      this.selection.append(selection.getSelection());
+      Collections.addAll(selectionArgs, selection.selectionArgs);
+    }
+
+    @NonNull
+    public Selection build() {
+      if (selection.length() == 0) {
+        return new Selection("", new String[] {});
+      }
+      return new Selection(
+          parenthesized(selection.toString()),
+          selectionArgs.toArray(new String[selectionArgs.size()]));
+    }
+
+    @NonNull
+    public Builder and(@NonNull Selection selection) {
+      if (selection.isEmpty()) {
+        return this;
+      }
+
+      if (this.selection.length() > 0) {
+        this.selection.append(" AND ");
+      }
+      this.selection.append(selection.getSelection());
+      Collections.addAll(selectionArgs, selection.getSelectionArgs());
+      return this;
+    }
+
+    @NonNull
+    public Builder or(@NonNull Selection selection) {
+      if (selection.isEmpty()) {
+        return this;
+      }
+
+      if (this.selection.length() > 0) {
+        this.selection.append(" OR ");
+      }
+      this.selection.append(selection.getSelection());
+      Collections.addAll(selectionArgs, selection.getSelectionArgs());
+      return this;
+    }
+
+    private static void checkArgsCount(@NonNull String selection, @Nullable String... args) {
+      int argsInSelection = 0;
+      for (int i = 0; i < selection.length(); i++) {
+        if (selection.charAt(i) == '?') {
+          argsInSelection++;
+        }
+      }
+      Assert.checkArgument(argsInSelection == (args == null ? 0 : args.length));
+    }
+  }
+
+  /**
+   * Parenthesized the {@code string}. Will not parenthesized if {@code string} is empty or is
+   * already parenthesized (top level parenthesis encloses the whole string).
+   */
+  @NonNull
+  private static String parenthesized(@NonNull String string) {
+    if (string.isEmpty()) {
+      return "";
+    }
+    if (!string.startsWith("(")) {
+      return "(" + string + ")";
+    }
+    int depth = 1;
+    for (int i = 1; i < string.length() - 1; i++) {
+      switch (string.charAt(i)) {
+        case '(':
+          depth++;
+          break;
+        case ')':
+          depth--;
+          if (depth == 0) {
+            // First '(' closed before the string has ended,need an additional level of nesting.
+            // For example "(A) AND (B)" should become "((A) AND (B))"
+            return "(" + string + ")";
+          }
+          break;
+        default:
+          continue;
+      }
+    }
+    Assert.checkArgument(depth == 1);
+    return string;
+  }
+}
diff --git a/java/com/android/dialer/common/res/values/strings.xml b/java/com/android/dialer/common/res/values/strings.xml
index 8e96161..770f42f 100644
--- a/java/com/android/dialer/common/res/values/strings.xml
+++ b/java/com/android/dialer/common/res/values/strings.xml
@@ -1,4 +1,19 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
 <resources>
   <string name="network_name_wifi">Wifi</string>
   <string name="network_name_mobile">Mobile</string>
diff --git a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
similarity index 87%
rename from java/com/android/contacts/common/compat/TelephonyManagerCompat.java
rename to java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
index 02113ca..22ec70c 100644
--- a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java
+++ b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.common.compat;
+package com.android.dialer.compat.telephony;
 
 import android.content.Context;
 import android.content.Intent;
@@ -32,7 +32,7 @@
 
 public class TelephonyManagerCompat {
 
-  // TODO: Use public API for these constants when available
+  // TODO(maxwelb): Use public API for these constants when available
   public static final String EVENT_HANDOVER_VIDEO_FROM_WIFI_TO_LTE =
       "android.telephony.event.EVENT_HANDOVER_VIDEO_FROM_WIFI_TO_LTE";
   public static final String EVENT_HANDOVER_TO_WIFI_FAILED =
@@ -50,6 +50,23 @@
 
   private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
 
+  // TODO(erfanian): b/63995261 Replace with the platform/telecom constant when available.
+  /**
+   * Indicates that the call being placed originated from a known contact.
+   *
+   * <p>This signals to the telephony platform that an outgoing call qualifies for assisted dialing.
+   */
+  public static final String ALLOW_ASSISTED_DIAL = "android.telecom.extra.ALLOW_ASSISTED_DIAL";
+
+  // TODO(erfanian): b/63995261 Replace with the platform/telecom constant when available.
+  /**
+   * Indicates that an outgoing call has undergone assisted dialing.
+   *
+   * <p>Unlike {@link ALLOW_ASSISTED_DIAL}, the presence of this key further indicates that a call
+   * has undergone Assisted Dialing -- not just that it qualified for Assisted Dialing.
+   */
+  public static final String IS_ASSISTED_DIALED = "android.telecom.extra.IS_ASSISTED_DIALED";
+
   /**
    * Returns the number of phones available. Returns 1 for Single standby mode (Single SIM
    * functionality) Returns 2 for Dual standby mode.(Dual SIM functionality)
@@ -120,7 +137,7 @@
   }
 
   /**
-   * This method uses a new system API to enable or disable visual voicemail. TODO: restrict
+   * This method uses a new system API to enable or disable visual voicemail. TODO(twyen): restrict
    * to N MR1, not needed in future SDK.
    */
   public static void setVisualVoicemailEnabled(
@@ -138,7 +155,7 @@
   }
 
   /**
-   * This method uses a new system API to check if visual voicemail is enabled TODO: restrict
+   * This method uses a new system API to check if visual voicemail is enabled TODO(twyen): restrict
    * to N MR1, not needed in future SDK.
    */
   public static boolean isVisualVoicemailEnabled(
diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
index fad25a4..6ee4695 100644
--- a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
+++ b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
@@ -20,11 +20,11 @@
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
-import android.os.StrictMode;
 import android.support.annotation.Nullable;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.inject.ApplicationContext;
+import com.android.dialer.strictmode.DialerStrictMode;
 import com.android.dialer.util.DialerUtils;
 import javax.inject.Inject;
 
@@ -95,37 +95,26 @@
 
   @Override
   public String getString(String key, String defaultValue) {
-    return bypassStrictMode(
+    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
+    return DialerStrictMode.bypass(
         () -> getSharedPrefs(appContext).getString(PREF_PREFIX + key, defaultValue));
   }
 
   @Override
   public long getLong(String key, long defaultValue) {
-    return bypassStrictMode(
+    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
+    return DialerStrictMode.bypass(
         () -> getSharedPrefs(appContext).getLong(PREF_PREFIX + key, defaultValue));
   }
 
   @Override
   public boolean getBoolean(String key, boolean defaultValue) {
-    return bypassStrictMode(
+    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
+    return DialerStrictMode.bypass(
         () -> getSharedPrefs(appContext).getBoolean(PREF_PREFIX + key, defaultValue));
   }
 
   private static SharedPreferences getSharedPrefs(Context appContext) {
     return DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(appContext);
   }
-
-  private interface Provider<T> {
-    T get();
-  }
-
-  // Reading shared prefs on the main thread is generally safe since a single instance is cached.
-  private static <T> T bypassStrictMode(Provider<T> provider) {
-    StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
-    try {
-      return provider.get();
-    } finally {
-      StrictMode.setThreadPolicy(oldPolicy);
-    }
-  }
 }
diff --git a/java/com/android/dialer/constants/Constants.java b/java/com/android/dialer/constants/Constants.java
index 076393e..f9d07e3 100644
--- a/java/com/android/dialer/constants/Constants.java
+++ b/java/com/android/dialer/constants/Constants.java
@@ -16,6 +16,7 @@
 
 package com.android.dialer.constants;
 
+import android.content.Context;
 import android.support.annotation.NonNull;
 import com.android.dialer.common.Assert;
 import com.android.dialer.proguard.UsedByReflection;
@@ -56,5 +57,7 @@
   @NonNull
   public abstract String getAnnotatedCallLogProviderAuthority();
 
+  public abstract String getUserAgent(Context context);
+
   protected Constants() {}
 }
diff --git a/java/com/android/dialer/constants/TrafficStatsTags.java b/java/com/android/dialer/constants/TrafficStatsTags.java
index 13c3e2c..1eca784 100644
--- a/java/com/android/dialer/constants/TrafficStatsTags.java
+++ b/java/com/android/dialer/constants/TrafficStatsTags.java
@@ -18,12 +18,16 @@
 
 /** Registry of tags for {@link android.net.TrafficStats#setThreadStatsTag(int)} */
 public class TrafficStatsTags {
-  public static final int CONTACT_PHOTO_DOWNLOAD_TAG = 0x0001;
-  public static final int NEARBY_PLACES_TAG = 0xaaaa;
-  public static final int REVERSE_LOOKUP_CONTACT_TAG = 0xbaaa;
-  public static final int REVERSE_LOOKUP_IMAGE_TAG = 0xbaab;
-  public static final int DOWNLOAD_LOCATION_MAP_TAG = 0xd000;
-  public static final int REVERSE_GEOCODE_TAG = 0xd001;
-  public static final int VISUAL_VOICEMAIL_TAG = 0xd002;
-  public static final int DIALER_VOIP_TAG = 0xd003;
+  public static final int CONTACT_PHOTO_DOWNLOAD_TAG = 0x00000001;
+  public static final int NEARBY_PLACES_TAG = 0x00000002;
+  public static final int REVERSE_LOOKUP_CONTACT_TAG = 0x00000003;
+  public static final int REVERSE_LOOKUP_IMAGE_TAG = 0x00000004;
+  public static final int DOWNLOAD_LOCATION_MAP_TAG = 0x00000005;
+  public static final int REVERSE_GEOCODE_TAG = 0x00000006;
+  public static final int VISUAL_VOICEMAIL_TAG = 0x00000007;
+
+  // 0xfffffe00 to 0xffffff00 reserved for proprietary extensions to the dialer app.
+
+  // 0xffffff00 to 0xffffffff reserved by the system (see TrafficStats#getAndSetThreadStatsTag)
+
 }
diff --git a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java b/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
index 1111732..38fd24b 100644
--- a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
+++ b/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
@@ -16,6 +16,7 @@
 
 package com.android.dialer.constants;
 
+import android.content.Context;
 import android.support.annotation.NonNull;
 import com.android.dialer.proguard.UsedByReflection;
 
@@ -40,4 +41,9 @@
   public String getAnnotatedCallLogProviderAuthority() {
     return "com.android.dialer.annotatedcalllog";
   }
+
+  @Override
+  public String getUserAgent(Context context) {
+    return null;
+  }
 }
diff --git a/java/com/android/dialer/constants/googledialer/ConstantsImpl.java b/java/com/android/dialer/constants/googledialer/ConstantsImpl.java
new file mode 100644
index 0000000..e151344
--- /dev/null
+++ b/java/com/android/dialer/constants/googledialer/ConstantsImpl.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2017 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.dialer.constants;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import com.android.dialer.proguard.UsedByReflection;
+
+/** Provider config values for Google Dialer. */
+@UsedByReflection(value = "Constants.java")
+public class ConstantsImpl extends Constants {
+
+  @Override
+  @NonNull
+  public String getFilteredNumberProviderAuthority() {
+    return "com.google.android.dialer.blocking.filterednumberprovider";
+  }
+
+  @Override
+  @NonNull
+  public String getFileProviderAuthority() {
+    return "com.google.android.dialer.files";
+  }
+
+  @NonNull
+  @Override
+  public String getAnnotatedCallLogProviderAuthority() {
+    return "com.google.android.dialer.annotatedcalllog";
+  }
+
+  @Override
+  public String getUserAgent(Context context) {
+    StringBuilder userAgent = new StringBuilder("GoogleDialer ");
+    try {
+      String versionName =
+          context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
+      userAgent.append(versionName).append(" ");
+    } catch (PackageManager.NameNotFoundException e) {
+      // ignore
+    }
+    userAgent.append(Build.FINGERPRINT);
+
+    return userAgent.toString();
+  }
+}
diff --git a/java/com/android/dialer/contactactions/ContactActionBottomSheet.java b/java/com/android/dialer/contactactions/ContactActionBottomSheet.java
index 4718ff0..9bf7ca0 100644
--- a/java/com/android/dialer/contactactions/ContactActionBottomSheet.java
+++ b/java/com/android/dialer/contactactions/ContactActionBottomSheet.java
@@ -28,8 +28,8 @@
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
 import com.android.dialer.common.Assert;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.dialercontact.DialerContact;
 import java.util.List;
 
@@ -75,7 +75,7 @@
     }
   }
 
-  // TODO: add on click action to contact.
+  // TODO(calderwoodra): add on click action to contact.
   private View getContactView(ViewGroup container) {
     LayoutInflater inflater = LayoutInflater.from(getContext());
     View contactView = inflater.inflate(R.layout.contact_layout, container, false);
diff --git a/java/com/android/dialer/contactphoto/AndroidManifest.xml b/java/com/android/dialer/contactphoto/AndroidManifest.xml
new file mode 100644
index 0000000..d852d40
--- /dev/null
+++ b/java/com/android/dialer/contactphoto/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<manifest
+    package="com.android.dialer.contactphoto">
+</manifest>
\ No newline at end of file
diff --git a/java/com/android/contacts/common/util/BitmapUtil.java b/java/com/android/dialer/contactphoto/BitmapUtil.java
similarity index 98%
rename from java/com/android/contacts/common/util/BitmapUtil.java
rename to java/com/android/dialer/contactphoto/BitmapUtil.java
index 51f65f2..36055e2 100644
--- a/java/com/android/contacts/common/util/BitmapUtil.java
+++ b/java/com/android/dialer/contactphoto/BitmapUtil.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.common.util;
+package com.android.dialer.contactphoto;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
diff --git a/java/com/android/contacts/common/ContactPhotoManager.java b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
similarity index 98%
rename from java/com/android/contacts/common/ContactPhotoManager.java
rename to java/com/android/dialer/contactphoto/ContactPhotoManager.java
index fbf51cc..4598379 100644
--- a/java/com/android/contacts/common/ContactPhotoManager.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.common;
+package com.android.dialer.contactphoto;
 
 import android.content.ComponentCallbacks2;
 import android.content.Context;
@@ -28,10 +28,10 @@
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.UriUtils;
 
 /** Asynchronously loads contact photos and maintains a cache of photos. */
 public abstract class ContactPhotoManager implements ComponentCallbacks2 {
diff --git a/java/com/android/contacts/common/ContactPhotoManagerImpl.java b/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
similarity index 97%
rename from java/com/android/contacts/common/ContactPhotoManagerImpl.java
rename to java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
index 28ecf34..5dbdf5e 100644
--- a/java/com/android/contacts/common/ContactPhotoManagerImpl.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.common;
+package com.android.dialer.contactphoto;
 
 import android.app.ActivityManager;
 import android.content.ComponentCallbacks2;
@@ -52,11 +52,11 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
-import com.android.contacts.common.util.BitmapUtil;
-import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.constants.Constants;
 import com.android.dialer.constants.TrafficStatsTags;
 import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.UriUtils;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -197,7 +197,7 @@
         context.getResources().getDimensionPixelSize(R.dimen.contact_browser_list_item_photo_size);
 
     // Get a user agent string to use for URI photo requests.
-    mUserAgent = Bindings.get(context).getUserAgent();
+    mUserAgent = Constants.get().getUserAgent(context);
     if (mUserAgent == null) {
       mUserAgent = "";
     }
@@ -566,7 +566,7 @@
     if (request.mIsCircular) {
       final RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(resources, bitmap);
       drawable.setAntiAlias(true);
-      drawable.setCornerRadius(bitmap.getHeight() / 2);
+      drawable.setCornerRadius(drawable.getIntrinsicHeight() / 2);
       return drawable;
     } else {
       return new BitmapDrawable(resources, bitmap);
@@ -1220,20 +1220,23 @@
           InputStream is = null;
           if (scheme.equals("http") || scheme.equals("https")) {
             TrafficStats.setThreadStatsTag(TrafficStatsTags.CONTACT_PHOTO_DOWNLOAD_TAG);
-            final HttpURLConnection connection =
-                (HttpURLConnection) new URL(uri.toString()).openConnection();
-
-            // Include the user agent if it is specified.
-            if (!TextUtils.isEmpty(mUserAgent)) {
-              connection.setRequestProperty("User-Agent", mUserAgent);
-            }
             try {
-              is = connection.getInputStream();
-            } catch (IOException e) {
-              connection.disconnect();
-              is = null;
+              final HttpURLConnection connection =
+                  (HttpURLConnection) new URL(uri.toString()).openConnection();
+
+              // Include the user agent if it is specified.
+              if (!TextUtils.isEmpty(mUserAgent)) {
+                connection.setRequestProperty("User-Agent", mUserAgent);
+              }
+              try {
+                is = connection.getInputStream();
+              } catch (IOException e) {
+                connection.disconnect();
+                is = null;
+              }
+            } finally {
+              TrafficStats.clearThreadStatsTag();
             }
-            TrafficStats.clearThreadStatsTag();
           } else {
             is = mResolver.openInputStream(uri);
           }
diff --git a/java/com/android/dialer/contactphoto/res/values/dimens.xml b/java/com/android/dialer/contactphoto/res/values/dimens.xml
new file mode 100644
index 0000000..7c3361a
--- /dev/null
+++ b/java/com/android/dialer/contactphoto/res/values/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<resources>
+  <dimen name="contact_browser_list_item_photo_size">40dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/contactphoto/res/values/strings.xml b/java/com/android/dialer/contactphoto/res/values/strings.xml
new file mode 100644
index 0000000..5b050d8
--- /dev/null
+++ b/java/com/android/dialer/contactphoto/res/values/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2012 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
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+  <!-- String describing the text for photo of a contact in a contacts list.
+
+      Note: AccessibilityServices use this attribute to announce what the view represents.
+            This is especially valuable for views without textual representation like ImageView.
+  -->
+  <string name="description_quick_contact_for">Quick contact for <xliff:g id="name">%1$s</xliff:g></string>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/contactsfragment/ContactsAdapter.java b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
index d8ee3d1..1bd8e34 100644
--- a/java/com/android/dialer/contactsfragment/ContactsAdapter.java
+++ b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
@@ -26,9 +26,9 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.dialer.common.Assert;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -137,7 +137,7 @@
 
   @Override
   public int getItemCount() {
-    return (cursor == null ? 0 : cursor.getCount()) + 1; // add contact
+    return (cursor == null || cursor.isClosed() ? 0 : cursor.getCount()) + 1; // add contact
   }
 
   private static String getDisplayName(Cursor cursor) {
diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java
index 41fa8f9..50c9fe8 100644
--- a/java/com/android/dialer/contactsfragment/ContactsFragment.java
+++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java
@@ -122,8 +122,10 @@
       emptyContentView.setDescription(R.string.all_contacts_empty);
       emptyContentView.setActionLabel(R.string.all_contacts_empty_add_contact_action);
       emptyContentView.setVisibility(View.VISIBLE);
+      recyclerView.setVisibility(View.GONE);
     } else {
       emptyContentView.setVisibility(View.GONE);
+      recyclerView.setVisibility(View.VISIBLE);
       adapter = new ContactsAdapter(getContext(), cursor);
       manager =
           new LinearLayoutManager(getContext()) {
diff --git a/java/com/android/dialer/contactsfragment/FastScroller.java b/java/com/android/dialer/contactsfragment/FastScroller.java
index 0223c5f..2a86a3b 100644
--- a/java/com/android/dialer/contactsfragment/FastScroller.java
+++ b/java/com/android/dialer/contactsfragment/FastScroller.java
@@ -91,6 +91,7 @@
     int targetPos = getValueInRange(0, itemCount - 1, (int) scrolledPosition);
     layoutManager.scrollToPositionWithOffset(targetPos, 0);
     container.setText(adapter.getHeaderString(targetPos));
+    adapter.refreshHeaders();
   }
 
   // Returns a float in range [0, 1] which represents the position of the scroller.
diff --git a/java/com/android/dialer/database/VoicemailStatusQuery.java b/java/com/android/dialer/database/VoicemailStatusQuery.java
index d9e1b72..dbd88be 100644
--- a/java/com/android/dialer/database/VoicemailStatusQuery.java
+++ b/java/com/android/dialer/database/VoicemailStatusQuery.java
@@ -27,7 +27,7 @@
 /** The query for the call voicemail status table. */
 public class VoicemailStatusQuery {
 
-  // TODO: Column indices should be removed in favor of Cursor#getColumnIndex
+  // TODO(maxwelb): Column indices should be removed in favor of Cursor#getColumnIndex
   public static final int SOURCE_PACKAGE_INDEX = 0;
   public static final int SETTINGS_URI_INDEX = 1;
   public static final int VOICEMAIL_ACCESS_URI_INDEX = 2;
diff --git a/java/com/android/dialer/databasepopulator/AndroidManifest.xml b/java/com/android/dialer/databasepopulator/AndroidManifest.xml
new file mode 100644
index 0000000..0a37285
--- /dev/null
+++ b/java/com/android/dialer/databasepopulator/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<manifest package="com.android.dialer.databasepopulator">
+</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/simulator/impl/SimulatorCallLog.java b/java/com/android/dialer/databasepopulator/CallLogPopulator.java
similarity index 88%
rename from java/com/android/dialer/simulator/impl/SimulatorCallLog.java
rename to java/com/android/dialer/databasepopulator/CallLogPopulator.java
index f127d56..79b3fd6 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorCallLog.java
+++ b/java/com/android/dialer/databasepopulator/CallLogPopulator.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
 
 import android.content.ContentProviderOperation;
 import android.content.ContentValues;
@@ -28,10 +28,11 @@
 import com.android.dialer.common.Assert;
 import com.google.auto.value.AutoValue;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
 /** Populates the device database with call log entries. */
-final class SimulatorCallLog {
+public final class CallLogPopulator {
   // Phone numbers from https://www.google.com/about/company/facts/locations/
   private static final CallEntry.Builder[] SIMPLE_CALL_LOG = {
     CallEntry.builder().setType(Calls.MISSED_TYPE).setNumber("+1-302-6365454"),
@@ -96,6 +97,21 @@
     }
   }
 
+  @WorkerThread
+  public static void deleteAllCallLog(@NonNull Context context) {
+    Assert.isWorkerThread();
+    try {
+      context
+          .getContentResolver()
+          .applyBatch(
+              CallLog.AUTHORITY,
+              new ArrayList<>(
+                  Arrays.asList(ContentProviderOperation.newDelete(Calls.CONTENT_URI).build())));
+    } catch (RemoteException | OperationApplicationException e) {
+      Assert.fail("failed to delete call log: " + e);
+    }
+  }
+
   @AutoValue
   abstract static class CallEntry {
     @NonNull
@@ -108,7 +124,7 @@
     abstract long getTimeMillis();
 
     static Builder builder() {
-      return new AutoValue_SimulatorCallLog_CallEntry.Builder()
+      return new AutoValue_CallLogPopulator_CallEntry.Builder()
           .setPresentation(Calls.PRESENTATION_ALLOWED);
     }
 
@@ -135,5 +151,5 @@
     }
   }
 
-  private SimulatorCallLog() {}
+  private CallLogPopulator() {}
 }
diff --git a/java/com/android/dialer/simulator/impl/SimulatorContacts.java b/java/com/android/dialer/databasepopulator/ContactsPopulator.java
similarity index 89%
rename from java/com/android/dialer/simulator/impl/SimulatorContacts.java
rename to java/com/android/dialer/databasepopulator/ContactsPopulator.java
index 5bd2898..e93c569 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorContacts.java
+++ b/java/com/android/dialer/databasepopulator/ContactsPopulator.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
 
 import android.content.ContentProviderOperation;
 import android.content.Context;
@@ -26,6 +26,7 @@
 import android.os.RemoteException;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.RawContacts;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.WorkerThread;
@@ -34,10 +35,11 @@
 import com.google.auto.value.AutoValue;
 import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /** Populates the device database with contacts. */
-public final class SimulatorContacts {
+public final class ContactsPopulator {
   // Phone numbers from https://www.google.com/about/company/facts/locations/
   private static final Contact[] SIMPLE_CONTACTS = {
     // US, contact with e164 number.
@@ -46,6 +48,7 @@
         .addPhoneNumber(new PhoneNumber("+1-302-6365454", Phone.TYPE_MOBILE))
         .addEmail(new Email("m@example.com"))
         .setIsStarred(true)
+        .setPinned(1)
         .setOrangePhoto()
         .build(),
     // US, contact with a non-e164 number.
@@ -54,6 +57,7 @@
         .addPhoneNumber(new PhoneNumber("(425) 739-5600", Phone.TYPE_MOBILE))
         .addEmail(new Email("l@example.com"))
         .setIsStarred(true)
+        .setPinned(2)
         .setBluePhoto()
         .build(),
     // UK, number where the (0) should be dropped.
@@ -62,6 +66,7 @@
         .addPhoneNumber(new PhoneNumber("+44 (0) 20 7031 3000", Phone.TYPE_MOBILE))
         .addEmail(new Email("r@example.com"))
         .setIsStarred(true)
+        .setPinned(3)
         .setRedPhoto()
         .build(),
     // US and Australia, contact with a long name and multiple phone numbers.
@@ -71,6 +76,7 @@
         .addPhoneNumber(new PhoneNumber("+1 404-487-9000", Phone.TYPE_WORK))
         .addPhoneNumber(new PhoneNumber("+61 2 9374 4001", Phone.TYPE_FAX_HOME))
         .setIsStarred(true)
+        .setPinned(4)
         .setPurplePhoto()
         .build(),
     // US, phone number shared with another contact and 2nd phone number with wait and pause.
@@ -78,25 +84,30 @@
         .setName("Splinter")
         .addPhoneNumber(new PhoneNumber("+1-650-2530000", Phone.TYPE_HOME))
         .addPhoneNumber(new PhoneNumber("+1 303-245-0086;123,456", Phone.TYPE_WORK))
+        .setBluePhoto()
         .build(),
     // France, number with Japanese name.
     Contact.builder()
         .setName("スパイク・スピーゲル")
         .addPhoneNumber(new PhoneNumber("+33 (0)1 42 68 53 00", Phone.TYPE_MOBILE))
+        .setBluePhoto()
         .build(),
     // Israel, RTL name and non-e164 number.
     Contact.builder()
         .setName("עקב אריה טברסק")
         .addPhoneNumber(new PhoneNumber("+33 (0)1 42 68 53 00", Phone.TYPE_MOBILE))
+        .setBluePhoto()
         .build(),
     // UAE, RTL name.
     Contact.builder()
         .setName("سلام دنیا")
         .addPhoneNumber(new PhoneNumber("+971 4 4509500", Phone.TYPE_MOBILE))
+        .setBluePhoto()
         .build(),
     // Brazil, contact with no name.
     Contact.builder()
         .addPhoneNumber(new PhoneNumber("+55-31-2128-6800", Phone.TYPE_MOBILE))
+        .setBluePhoto()
         .build(),
     // Short number, contact with no name.
     Contact.builder().addPhoneNumber(new PhoneNumber("611", Phone.TYPE_MOBILE)).build(),
@@ -104,12 +115,14 @@
     Contact.builder()
         .setName("Anonymous")
         .addPhoneNumber(new PhoneNumber("*86 512-343-5283", Phone.TYPE_MOBILE))
+        .setBluePhoto()
         .build(),
     // None, contact with no phone number.
     Contact.builder()
         .setName("No Phone Number")
         .addEmail(new Email("no@example.com"))
         .setIsStarred(true)
+        .setBluePhoto()
         .build(),
   };
 
@@ -127,6 +140,22 @@
     }
   }
 
+  @WorkerThread
+  public static void deleteAllContacts(@NonNull Context context) {
+    Assert.isWorkerThread();
+    try {
+      context
+          .getContentResolver()
+          .applyBatch(
+              ContactsContract.AUTHORITY,
+              new ArrayList<>(
+                  Arrays.asList(
+                      ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).build())));
+    } catch (RemoteException | OperationApplicationException e) {
+      Assert.fail("failed to delete contacts: " + e);
+    }
+  }
+
   private static void addContact(Contact contact, List<ContentProviderOperation> operations) {
     int index = operations.size();
 
@@ -135,6 +164,9 @@
             .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, contact.getAccountType())
             .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.getAccountName())
             .withValue(ContactsContract.RawContacts.STARRED, contact.getIsStarred() ? 1 : 0)
+            .withValue(
+                ContactsContract.RawContacts.PINNED,
+                contact.getIsStarred() ? contact.getPinned() : 0)
             .withYieldAllowed(true)
             .build());
 
@@ -203,6 +235,8 @@
 
     abstract boolean getIsStarred();
 
+    abstract int getPinned();
+
     @Nullable
     abstract ByteArrayOutputStream getPhotoStream();
 
@@ -213,9 +247,10 @@
     abstract List<Email> getEmails();
 
     static Builder builder() {
-      return new AutoValue_SimulatorContacts_Contact.Builder()
+      return new AutoValue_ContactsPopulator_Contact.Builder()
           .setAccountType("com.google")
           .setAccountName("foo@example")
+          .setPinned(0)
           .setIsStarred(false)
           .setPhoneNumbers(new ArrayList<>())
           .setEmails(new ArrayList<>());
@@ -234,6 +269,8 @@
 
       abstract Builder setIsStarred(boolean isStarred);
 
+      abstract Builder setPinned(int position);
+
       abstract Builder setPhotoStream(ByteArrayOutputStream photoStream);
 
       abstract Builder setPhoneNumbers(@NonNull List<PhoneNumber> phoneNumbers);
@@ -315,5 +352,5 @@
     }
   }
 
-  private SimulatorContacts() {}
+  private ContactsPopulator() {}
 }
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVoicemail.java b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
similarity index 90%
rename from java/com/android/dialer/simulator/impl/SimulatorVoicemail.java
rename to java/com/android/dialer/databasepopulator/VoicemailPopulator.java
index 04de201..581100f 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorVoicemail.java
+++ b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
 
 import android.content.ComponentName;
 import android.content.ContentValues;
@@ -30,7 +30,7 @@
 import java.util.concurrent.TimeUnit;
 
 /** Populates the device database with voicemail entries. */
-final class SimulatorVoicemail {
+public final class VoicemailPopulator {
   private static final String ACCOUNT_ID = "ACCOUNT_ID";
 
   private static final Voicemail.Builder[] SIMPLE_VOICEMAILS = {
@@ -90,9 +90,17 @@
     }
   }
 
+  @WorkerThread
+  public static void deleteAllVoicemail(@NonNull Context context) {
+    Assert.isWorkerThread();
+    context
+        .getContentResolver()
+        .delete(Voicemails.buildSourceUri(context.getPackageName()), "", new String[] {});
+  }
+
   private static void enableVoicemail(@NonNull Context context) {
     PhoneAccountHandle handle =
-        new PhoneAccountHandle(new ComponentName(context, SimulatorVoicemail.class), ACCOUNT_ID);
+        new PhoneAccountHandle(new ComponentName(context, VoicemailPopulator.class), ACCOUNT_ID);
 
     ContentValues values = new ContentValues();
     values.put(Status.SOURCE_PACKAGE, handle.getComponentName().getPackageName());
@@ -120,7 +128,7 @@
     abstract boolean getIsRead();
 
     static Builder builder() {
-      return new AutoValue_SimulatorVoicemail_Voicemail.Builder();
+      return new AutoValue_VoicemailPopulator_Voicemail.Builder();
     }
 
     ContentValues getAsContentValues(Context context) {
@@ -150,5 +158,5 @@
     }
   }
 
-  private SimulatorVoicemail() {}
+  private VoicemailPopulator() {}
 }
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
index 6f178f0..1356246 100644
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
+++ b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
@@ -35,7 +35,7 @@
       <ImageView
         android:id="@+id/dialpad_key_voicemail"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_height="@dimen/dialpad_voicemail_icon_size"
         android:scaleType="fitCenter"
         android:src="@drawable/quantum_ic_voicemail_white_24"
         android:tint="@color/dialpad_voicemail_tint"/>
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
index 8859440..4401c5b 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
@@ -18,7 +18,8 @@
   android:id="@+id/one"
   style="@style/DialpadKeyButtonStyle">
   <LinearLayout
-    style="@style/DialpadKeyInternalLayoutStyle">
+      android:layout_marginTop="1dp"
+      style="@style/DialpadKeyInternalLayoutStyle">
     <com.android.dialer.dialpadview.DialpadTextView
       android:id="@+id/dialpad_key_number"
       style="@style/DialpadKeyNumberStyle"/>
@@ -28,9 +29,8 @@
       <ImageView
         android:id="@+id/dialpad_key_voicemail"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_height="@dimen/dialpad_voicemail_icon_size"
         android:layout_centerInParent="true"
-        android:paddingTop="@dimen/dialpad_voicemail_icon_padding_top"
         android:scaleType="fitCenter"
         android:src="@drawable/quantum_ic_voicemail_white_24"
         android:tint="?attr/dialpad_voicemail_tint"/>
diff --git a/java/com/android/dialer/dialpadview/res/values/dimens.xml b/java/com/android/dialer/dialpadview/res/values/dimens.xml
index 7277364..187ec9a 100644
--- a/java/com/android/dialer/dialpadview/res/values/dimens.xml
+++ b/java/com/android/dialer/dialpadview/res/values/dimens.xml
@@ -35,7 +35,7 @@
   <dimen name="dialpad_digits_menu_right_padding">10dp</dimen>
   <dimen name="dialpad_center_margin">3dp</dimen>
   <dimen name="dialpad_button_margin">2dp</dimen>
-  <dimen name="dialpad_voicemail_icon_padding_top">2dp</dimen>
+  <dimen name="dialpad_voicemail_icon_size">18dp</dimen>
   <dimen name="dialpad_key_button_translate_y">100dp</dimen>
   <dimen name="dialpad_overflow_margin">8dp</dimen>
   <dimen name="dialpad_space_above_keys">14dp</dimen>
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java b/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
index c3c78c9..32054e8 100644
--- a/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
+++ b/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
@@ -22,18 +22,53 @@
 @AutoValue
 public abstract class EnrichedCallCapabilities {
 
-  public static final EnrichedCallCapabilities NO_CAPABILITIES =
-      EnrichedCallCapabilities.create(false, false, false);
+  public static final EnrichedCallCapabilities NO_CAPABILITIES = builder().build();
 
-  public static EnrichedCallCapabilities create(
-      boolean supportsCallComposer, boolean supportsPostCall, boolean supportsVideoCall) {
-    return new AutoValue_EnrichedCallCapabilities(
-        supportsCallComposer, supportsPostCall, supportsVideoCall);
+  public static final EnrichedCallCapabilities ALL_CAPABILITIES =
+      builder()
+          .setCallComposerCapable(true)
+          .setPostCallCapable(true)
+          .setVideoShareCapable(true)
+          .build();
+
+  public abstract boolean isCallComposerCapable();
+
+  public abstract boolean isPostCallCapable();
+
+  public abstract boolean isVideoShareCapable();
+
+  public abstract Builder toBuilder();
+
+  /**
+   * Returns {@code true} if these capabilities represent those of a user that is temporarily
+   * unavailable. This is an indication that capabilities should be refreshed.
+   */
+  public abstract boolean isTemporarilyUnavailable();
+
+  /**
+   * Creates an instance of {@link Builder}.
+   *
+   * <p>Unless otherwise set, all fields will default to false.
+   */
+  public static Builder builder() {
+    return new AutoValue_EnrichedCallCapabilities.Builder()
+        .setCallComposerCapable(false)
+        .setPostCallCapable(false)
+        .setVideoShareCapable(false)
+        .setTemporarilyUnavailable(false);
   }
 
-  public abstract boolean supportsCallComposer();
+  /** Creates instances of {@link EnrichedCallCapabilities}. */
+  @AutoValue.Builder
+  public abstract static class Builder {
+    public abstract Builder setCallComposerCapable(boolean isCapable);
 
-  public abstract boolean supportsPostCall();
+    public abstract Builder setPostCallCapable(boolean isCapable);
 
-  public abstract boolean supportsVideoShare();
+    public abstract Builder setVideoShareCapable(boolean isCapable);
+
+    public abstract Builder setTemporarilyUnavailable(boolean temporarilyUnavailable);
+
+    public abstract EnrichedCallCapabilities build();
+  }
 }
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
index f1057be..4d00854 100644
--- a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
+++ b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
@@ -23,6 +23,7 @@
 import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
 import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
+import com.android.dialer.enrichedcall.videoshare.VideoShareSession;
 import com.android.dialer.multimedia.MultimediaData;
 import java.util.List;
 import java.util.Map;
@@ -299,6 +300,14 @@
   long getVideoShareInviteSessionId(@NonNull String number);
 
   /**
+   * Returns the {@link VideoShareSession} for the given sessionId, or {@code null} if no session
+   * exists.
+   */
+  @MainThread
+  @Nullable
+  VideoShareSession getVideoShareSession(long sessionId);
+
+  /**
    * Ends the given video share session.
    *
    * @param sessionId the id of the session to end
diff --git a/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java b/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
index 27dc0e9..6f4d975 100644
--- a/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
+++ b/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
@@ -29,25 +29,34 @@
    * too slow, so character by character matching is used instead.
    */
   public static boolean matches(@NonNull String lhs, @NonNull String rhs) {
-    int aIndex = lhs.length() - 1;
-    int bIndex = rhs.length() - 1;
+    return lastSevenDigitsCharacterByCharacterMatches(lhs, rhs);
+  }
+
+  /**
+   * This strategy examines the numbers character by character starting from the end. If the last
+   * {@link #REQUIRED_MATCHED_DIGITS} match, it returns {@code true}.
+   */
+  private static boolean lastSevenDigitsCharacterByCharacterMatches(
+      @NonNull String lhs, @NonNull String rhs) {
+    int lhsIndex = lhs.length() - 1;
+    int rhsIndex = rhs.length() - 1;
 
     int matchedDigits = 0;
 
-    while (aIndex >= 0 && bIndex >= 0) {
-      if (!Character.isDigit(lhs.charAt(aIndex))) {
-        --aIndex;
+    while (lhsIndex >= 0 && rhsIndex >= 0) {
+      if (!Character.isDigit(lhs.charAt(lhsIndex))) {
+        --lhsIndex;
         continue;
       }
-      if (!Character.isDigit(rhs.charAt(bIndex))) {
-        --bIndex;
+      if (!Character.isDigit(rhs.charAt(rhsIndex))) {
+        --rhsIndex;
         continue;
       }
-      if (lhs.charAt(aIndex) != rhs.charAt(bIndex)) {
-        return false;
+      if (lhs.charAt(lhsIndex) != rhs.charAt(rhsIndex)) {
+        break;
       }
-      --aIndex;
-      --bIndex;
+      --lhsIndex;
+      --rhsIndex;
       ++matchedDigits;
     }
 
diff --git a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
index 1f2b005..de95e07 100644
--- a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
+++ b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
@@ -27,6 +27,7 @@
 import com.android.dialer.enrichedcall.Session;
 import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
 import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
+import com.android.dialer.enrichedcall.videoshare.VideoShareSession;
 import com.android.dialer.multimedia.MultimediaData;
 import java.util.Collections;
 import java.util.List;
@@ -169,6 +170,14 @@
     return Session.NO_SESSION_ID;
   }
 
+  @MainThread
+  @Nullable
+  @Override
+  public VideoShareSession getVideoShareSession(long sessionId) {
+    Assert.isMainThread();
+    return null;
+  }
+
   @Override
   public void endVideoShareSession(long sessionId) {}
 }
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
index f24724a..0e5f79f 100644
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
+++ b/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
@@ -13,6 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package com.android.dialer.enrichedcall.videoshare;
 
 import android.support.annotation.MainThread;
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java
new file mode 100644
index 0000000..b0f24ff
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 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.dialer.enrichedcall.videoshare;
+
+import android.support.annotation.NonNull;
+import android.view.SurfaceView;
+
+/** Holds state information and data about video share sessions. */
+public interface VideoShareSession {
+  void setSessionId(long sessionId);
+
+  long getSessionId();
+
+  int getState();
+
+  void pause();
+
+  void unpause();
+
+  void dispose();
+
+  void setSurfaceView(@NonNull SurfaceView surfaceView);
+
+  void setCamera(String cameraId);
+}
diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
index ef468a9..39781cf 100644
--- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -15,7 +15,6 @@
  */
 package com.android.dialer.interactions;
 
-import android.Manifest;
 import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -28,7 +27,6 @@
 import android.content.Intent;
 import android.content.Loader;
 import android.content.Loader.OnLoadCompleteListener;
-import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
@@ -42,7 +40,6 @@
 import android.support.annotation.IntDef;
 import android.support.annotation.VisibleForTesting;
 import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -63,10 +60,12 @@
 import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.TransactionSafeActivity;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -221,20 +220,27 @@
     // It's possible for a shortcut to have been created, and then permissions revoked. To avoid a
     // crash when the user tries to use such a shortcut, check for this condition and ask the user
     // for the permission.
-    if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE)
-        != PackageManager.PERMISSION_GRANTED) {
-      LogUtil.i("PhoneNumberInteraction.startInteraction", "No phone permissions");
+    String[] deniedPhonePermissions =
+        PermissionsUtil.getPermissionsCurrentlyDenied(
+            mContext, PermissionsUtil.allPhoneGroupPermissionsUsedInDialer);
+    if (deniedPhonePermissions.length > 0) {
+      LogUtil.i(
+          "PhoneNumberInteraction.startInteraction",
+          "Need phone permissions: " + Arrays.toString(deniedPhonePermissions));
       ActivityCompat.requestPermissions(
-          (Activity) mContext, new String[] {Manifest.permission.CALL_PHONE}, REQUEST_CALL_PHONE);
+          (Activity) mContext, deniedPhonePermissions, REQUEST_CALL_PHONE);
       return;
     }
-    if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-      LogUtil.i("PhoneNumberInteraction.startInteraction", "No contact permissions");
+
+    String[] deniedContactsPermissions =
+        PermissionsUtil.getPermissionsCurrentlyDenied(
+            mContext, PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
+    if (deniedContactsPermissions.length > 0) {
+      LogUtil.i(
+          "PhoneNumberInteraction.startInteraction",
+          "Need contact permissions: " + Arrays.toString(deniedContactsPermissions));
       ActivityCompat.requestPermissions(
-          (Activity) mContext,
-          new String[] {Manifest.permission.READ_CONTACTS},
-          REQUEST_READ_CONTACTS);
+          (Activity) mContext, deniedContactsPermissions, REQUEST_READ_CONTACTS);
       return;
     }
 
diff --git a/java/com/android/dialer/interactions/res/layout/phone_disambig_item.xml b/java/com/android/dialer/interactions/res/layout/phone_disambig_item.xml
old mode 100644
new mode 100755
diff --git a/java/com/android/dialer/interactions/res/values-bs/strings.xml b/java/com/android/dialer/interactions/res/values-bs/strings.xml
index 24601b5..d7434f8 100644
--- a/java/com/android/dialer/interactions/res/values-bs/strings.xml
+++ b/java/com/android/dialer/interactions/res/values-bs/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="sms_disambig_title" msgid="369677069797534410">"Odaberite broj"</string>
-    <string name="call_disambig_title" msgid="2395382326030227603">"Odaberite broj"</string>
+    <string name="sms_disambig_title" msgid="369677069797534410">"Izaberite broj"</string>
+    <string name="call_disambig_title" msgid="2395382326030227603">"Izaberite broj"</string>
     <string name="make_primary" msgid="9069345357862475091">"Zapamti ovaj izbor"</string>
 </resources>
diff --git a/java/com/android/dialer/lettertile/AndroidManifest.xml b/java/com/android/dialer/lettertile/AndroidManifest.xml
new file mode 100644
index 0000000..dce6806
--- /dev/null
+++ b/java/com/android/dialer/lettertile/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<manifest
+  package="com.android.dialer.lettertile">
+</manifest>
diff --git a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java b/java/com/android/dialer/lettertile/LetterTileDrawable.java
similarity index 98%
rename from java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
rename to java/com/android/dialer/lettertile/LetterTileDrawable.java
index 73809c4..c8b75c5 100644
--- a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
+++ b/java/com/android/dialer/lettertile/LetterTileDrawable.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.common.lettertiles;
+package com.android.dialer.lettertile;
 
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -33,7 +33,6 @@
 import android.support.annotation.Nullable;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
-import com.android.contacts.common.R;
 import com.android.dialer.common.Assert;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -55,6 +54,7 @@
 
   /** Contact type constants */
   public static final int TYPE_PERSON = 1;
+
   public static final int TYPE_BUSINESS = 2;
   public static final int TYPE_VOICEMAIL = 3;
   /**
@@ -62,6 +62,7 @@
    * situations where a contact is anonymous.
    */
   public static final int TYPE_GENERIC_AVATAR = 4;
+
   public static final int TYPE_SPAM = 5;
   public static final int TYPE_CONFERENCE = 6;
   @ContactType public static final int TYPE_DEFAULT = TYPE_PERSON;
@@ -128,8 +129,7 @@
     mDefaultSpamAvatar = res.getDrawable(R.drawable.quantum_ic_report_vd_theme_24, null);
     mDefaultConferenceAvatar = res.getDrawable(R.drawable.quantum_ic_group_vd_theme_24, null);
 
-    mPaint.setTypeface(
-        Typeface.create(res.getString(R.string.letter_tile_letter_font_family), Typeface.NORMAL));
+    mPaint.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
     mPaint.setTextAlign(Align.CENTER);
     mPaint.setAntiAlias(true);
     mPaint.setFilterBitmap(true);
diff --git a/java/com/android/dialer/lettertile/res/values/colors.xml b/java/com/android/dialer/lettertile/res/values/colors.xml
new file mode 100644
index 0000000..406b490
--- /dev/null
+++ b/java/com/android/dialer/lettertile/res/values/colors.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<resources>
+  <array name="letter_tile_colors">
+    <item>#DB4437</item>
+    <item>#E91E63</item>
+    <item>#9C27B0</item>
+    <item>#673AB7</item>
+    <item>#3F51B5</item>
+    <item>#4285F4</item>
+    <item>#039BE5</item>
+    <item>#0097A7</item>
+    <item>#009688</item>
+    <item>#0F9D58</item>
+    <item>#689F38</item>
+    <item>#EF6C00</item>
+    <item>#FF5722</item>
+    <item>#757575</item>
+  </array>
+
+  <color name="spam_contact_background">#A52714</color>
+
+  <color name="letter_tile_default_color">#cccccc</color>
+
+  <color name="letter_tile_font_color">#ffffff</color>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/lettertile/res/values/dimens.xml b/java/com/android/dialer/lettertile/res/values/dimens.xml
new file mode 100644
index 0000000..c804431
--- /dev/null
+++ b/java/com/android/dialer/lettertile/res/values/dimens.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<resources>
+  <!-- Dimensions for contact letter tiles -->
+  <item name="letter_to_tile_ratio" type="dimen">67%</item>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/lightbringer/Lightbringer.java b/java/com/android/dialer/lightbringer/Lightbringer.java
index 8bfa773..9120b24 100644
--- a/java/com/android/dialer/lightbringer/Lightbringer.java
+++ b/java/com/android/dialer/lightbringer/Lightbringer.java
@@ -22,6 +22,7 @@
 import android.support.annotation.MainThread;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
 import android.telecom.Call;
 import android.telecom.PhoneAccountHandle;
 
@@ -58,4 +59,12 @@
   @Nullable
   @MainThread
   String getPackageName();
+
+  @StringRes
+  @MainThread
+  int getOutgoingCallTypeText();
+
+  @StringRes
+  @MainThread
+  int getIncomingCallTypeText();
 }
diff --git a/java/com/android/dialer/lightbringer/stub/LightbringerStub.java b/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
index e691b96..c98ae09 100644
--- a/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
+++ b/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
@@ -22,6 +22,7 @@
 import android.support.annotation.MainThread;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
 import android.telecom.Call;
 import android.telecom.PhoneAccountHandle;
 import com.android.dialer.common.Assert;
@@ -102,4 +103,16 @@
   public String getPackageName() {
     return null;
   }
+
+  @StringRes
+  @Override
+  public int getOutgoingCallTypeText() {
+    return -1;
+  }
+
+  @StringRes
+  @Override
+  public int getIncomingCallTypeText() {
+    return -1;
+  }
 }
diff --git a/java/com/android/dialer/location/GeoUtil.java b/java/com/android/dialer/location/GeoUtil.java
index 1be4054..b39256d 100644
--- a/java/com/android/dialer/location/GeoUtil.java
+++ b/java/com/android/dialer/location/GeoUtil.java
@@ -17,11 +17,6 @@
 package com.android.dialer.location;
 
 import android.content.Context;
-import com.google.i18n.phonenumbers.NumberParseException;
-import com.google.i18n.phonenumbers.PhoneNumberUtil;
-import com.google.i18n.phonenumbers.Phonenumber;
-import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
-import java.util.Locale;
 
 /** Static methods related to Geo. */
 public class GeoUtil {
@@ -31,17 +26,4 @@
     // The {@link CountryDetector} should never return null so this is safe to return as-is.
     return CountryDetector.getInstance(context).getCurrentCountryIso();
   }
-
-  public static String getGeocodedLocationFor(Context context, String phoneNumber) {
-    final PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
-    final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
-    try {
-      final Phonenumber.PhoneNumber structuredPhoneNumber =
-          phoneNumberUtil.parse(phoneNumber, getCurrentCountryIso(context));
-      final Locale locale = context.getResources().getConfiguration().locale;
-      return geocoder.getDescriptionForNumber(structuredPhoneNumber, locale);
-    } catch (NumberParseException e) {
-      return null;
-    }
-  }
 }
diff --git a/java/com/android/dialer/logging/LoggingBindings.java b/java/com/android/dialer/logging/LoggingBindings.java
index 85ccfdf..ca9a053 100644
--- a/java/com/android/dialer/logging/LoggingBindings.java
+++ b/java/com/android/dialer/logging/LoggingBindings.java
@@ -80,4 +80,11 @@
       QuickContactBadge quickContact,
       InteractionEvent.Type interactionEvent,
       boolean shouldPerformClick);
+
+  /** Logs People Api lookup result with error */
+  void logPeopleApiLookupReportWithError(
+      long latency, int httpResponseCode, PeopleApiLookupError.Type errorType);
+
+  /** Logs successful People Api lookup result */
+  void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode);
 }
diff --git a/java/com/android/dialer/logging/LoggingBindingsStub.java b/java/com/android/dialer/logging/LoggingBindingsStub.java
index 3892996..2dbcc3f 100644
--- a/java/com/android/dialer/logging/LoggingBindingsStub.java
+++ b/java/com/android/dialer/logging/LoggingBindingsStub.java
@@ -54,4 +54,11 @@
       QuickContactBadge quickContact,
       InteractionEvent.Type interactionEvent,
       boolean shouldPerformClick) {}
+
+  @Override
+  public void logPeopleApiLookupReportWithError(
+      long latency, int httpResponseCode, PeopleApiLookupError.Type errorType) {}
+
+  @Override
+  public void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode) {}
 }
diff --git a/java/com/android/dialer/logging/contact_lookup_result.proto b/java/com/android/dialer/logging/contact_lookup_result.proto
index 13ea3c8..6c83908 100644
--- a/java/com/android/dialer/logging/contact_lookup_result.proto
+++ b/java/com/android/dialer/logging/contact_lookup_result.proto
@@ -6,6 +6,8 @@
 option optimize_for = LITE_RUNTIME;
 
 
+
+
 message ContactLookupResult {
   // The different results of a contact lookup done using a phone number.
   enum Type {
diff --git a/java/com/android/dialer/logging/contact_source.proto b/java/com/android/dialer/logging/contact_source.proto
index ffd32de..3a24da1 100644
--- a/java/com/android/dialer/logging/contact_source.proto
+++ b/java/com/android/dialer/logging/contact_source.proto
@@ -6,6 +6,8 @@
 option optimize_for = LITE_RUNTIME;
 
 
+
+
 message ContactSource {
   // Applies only to reports made from call history. If we have contact
   // information for the phone number, this field indicates its source.
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index 2f89a3a..4422b9c 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -7,6 +7,7 @@
 
 
 
+
 message DialerImpression {
   // Event enums to be used for Impression Logging in Dialer.
   // It's perfectly acceptable for this enum to be large
@@ -48,6 +49,7 @@
     // This happens when the user had initially blocked a number and also claimed the number was
     // spam and had now proceeded to undo that.
     REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER = 1009
+
       ;
 
     // A number that was identified as spam and the user proceeded to block it. However this
@@ -63,10 +65,12 @@
     // the number via call log. This is for case where the user wants to block a number and also
     // report it as spam
     REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG = 1011
+
       ;
 
     // User made it to the last step and actually blocked the number
     USER_ACTION_BLOCKED_NUMBER = 1012
+
       ;
 
     // User made it to the last step and actually unblocked the number
@@ -89,16 +93,19 @@
 
     // User added the number to contacts from the after call notification
     SPAM_AFTER_CALL_NOTIFICATION_ADD_TO_CONTACTS = 1019
+
       ;
 
     // User marked the number as spam on the after call notification flow
     SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM = 1020
+
       ;
 
     SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_NOT_SPAM_AND_BLOCKED = 1021;
 
     // User reported the number as not spam
     SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM = 1022
+
       ;
 
     // User dismissed the spam notification
@@ -120,6 +127,7 @@
     // able to stitch different types of events if they make sense e.g user pressed a speaker button
     // and we want to associate that to a call event
     USER_PARTICIPATED_IN_A_CALL = 1028
+
       ;
 
     // Incoming call is a spam call
@@ -152,44 +160,54 @@
 
     // User deleted a call log entry
     USER_DELETED_CALL_LOG_ITEM = 1048
+
       ;
 
     // User tapped on "Send a message"
     CALL_LOG_SEND_MESSAGE = 1049
+
       ;
 
     // User tapped on "Add to contact"
     CALL_LOG_ADD_TO_CONTACT = 1050
+
       ;
 
     // User tapped on "Create new contact"
     CALL_LOG_CREATE_NEW_CONTACT = 1051
+
       ;
 
     // User deleted an entry from the voicemail tab
     VOICEMAIL_DELETE_ENTRY = 1052
+
       ;
 
     // Voicemail call log entry was expanded. Could be either if the user tapped the voicemail
     // call log entry or pressed the play button when the voicemail call log entry was not expanded
     VOICEMAIL_EXPAND_ENTRY = 1053
+
       ;
 
     // The play button for voicemail call log entry was tapped directly (i.e when the voicemail
     // call log entry was not expanded and the playbutton was tapped)
     VOICEMAIL_PLAY_AUDIO_DIRECTLY= 1054
+
       ;
 
     // The play button after expanding the voicemail call log entry was tapped
     VOICEMAIL_PLAY_AUDIO_AFTER_EXPANDING_ENTRY= 1055
+
       ;
 
     // Incoming call was rejected from the notifications
     REJECT_INCOMING_CALL_FROM_NOTIFICATION= 1056
+
       ;
 
     // Incoming call was rejected from the answer screen including rejecting via sms and talkback
     REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN= 1057
+
       ;
 
     // User tapped block and spam buttons in context menu, same as buttons in
@@ -249,24 +267,24 @@
     VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_NOTIFICATION = 1080;
 
     // Android Auto Backup and Restore (Dolly)
-    BACKUP_ON_BACKUP = 1081;
-    BACKUP_ON_FULL_BACKUP = 1082;
-    BACKUP_ON_BACKUP_DISABLED = 1083;
-    BACKUP_VOICEMAIL_BACKED_UP = 1084;
-    BACKUP_FULL_BACKED_UP = 1085;
-    BACKUP_ON_BACKUP_JSON_EXCEPTION = 1086;
+    BACKUP_ON_BACKUP = 1081 [deprecated = true];
+    BACKUP_ON_FULL_BACKUP = 1082 [deprecated = true];
+    BACKUP_ON_BACKUP_DISABLED = 1083 [deprecated = true];
+    BACKUP_VOICEMAIL_BACKED_UP = 1084 [deprecated = true];
+    BACKUP_FULL_BACKED_UP = 1085 [deprecated = true];
+    BACKUP_ON_BACKUP_JSON_EXCEPTION = 1086 [deprecated = true];
 
-    BACKUP_ON_QUOTA_EXCEEDED = 1087;
+    BACKUP_ON_QUOTA_EXCEEDED = 1087 [deprecated = true];
 
-    BACKUP_ON_RESTORE = 1088;
-    BACKUP_RESTORED_FILE = 1089;
-    BACKUP_RESTORED_VOICEMAIL = 1090;
-    BACKUP_ON_RESTORE_FINISHED = 1091;
-    BACKUP_ON_RESTORE_DISABLED = 1092;
-    BACKUP_ON_RESTORE_JSON_EXCEPTION = 1093;
-    BACKUP_ON_RESTORE_IO_EXCEPTION = 1094;
+    BACKUP_ON_RESTORE = 1088 [deprecated = true];
+    BACKUP_RESTORED_FILE = 1089 [deprecated = true];
+    BACKUP_RESTORED_VOICEMAIL = 1090 [deprecated = true];
+    BACKUP_ON_RESTORE_FINISHED = 1091 [deprecated = true];
+    BACKUP_ON_RESTORE_DISABLED = 1092 [deprecated = true];
+    BACKUP_ON_RESTORE_JSON_EXCEPTION = 1093 [deprecated = true];
+    BACKUP_ON_RESTORE_IO_EXCEPTION = 1094 [deprecated = true];
 
-    BACKUP_MAX_VM_BACKUP_REACHED = 1095;
+    BACKUP_MAX_VM_BACKUP_REACHED = 1095 [deprecated = true];
 
     EVENT_ANSWER_HINT_ACTIVATED = 1096;
     EVENT_ANSWER_HINT_DEACTIVATED = 1097;
@@ -280,7 +298,7 @@
     INCOMING_VIDEO_CALL = 1102;
     USER_PARTICIPATED_IN_A_VIDEO_CALL = 1103;
 
-    BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING = 1104;
+    BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING = 1104 [deprecated = true];
 
     // User tapped the 'Share and call' button to start the call composer
     CALL_LOG_SHARE_AND_CALL = 1105;
@@ -362,14 +380,19 @@
     EMERGENCY_LAUNCHED_MAP = 1173;
 
     VIDEO_CALL_UPGRADE_REQUESTED = 1174
+
         ;
     VIDEO_CALL_REQUEST_ACCEPTED = 1175
+
         ;
     VIDEO_CALL_REQUEST_ACCEPTED_AS_AUDIO = 1176
+
         ;
     VIDEO_CALL_REQUEST_DECLINED = 1177
+
         ;
     VIDEO_CALL_REQUEST_RECEIVED = 1178
+
         ;
 
     RCS_VIDEO_SHARE_UPGRADE_REQUESTED = 1179;
@@ -455,5 +478,26 @@
 
     // In in call UI
     UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN = 1236;
+
+    // Bubble primary button first click to expand bubble
+    BUBBLE_PRIMARY_BUTTON_EXPAND = 1237;
+    // Bubble prinary button second click to return to call
+    BUBBLE_PRIMARY_BUTTON_RETURN_TO_CALL = 1238;
+
+    // Dialer Key/Value Backup and Restore
+    BACKUP_KEY_VALUE_ON_BACKUP = 1239;
+    BACKUP_KEY_VALUE_ON_RESTORE = 1240;
+    BACKUP_KEY_VALUE_ON_RESTORE_FINISHED = 1241;
+    BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION = 1242;
+    BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR = 1243;
+
+    // In the in call UI
+    UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_LIGHTBRINGER = 1244;
+    UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_IMS = 1245;
+    UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_RCS = 1246;
+    LIGHTBRINGER_UPGRADE_REQUESTED = 1247;
+
+    // Found Lightbringer reachable contact when launching Dialer
+    HAS_LIGHTBRINGER_REACHABLE_CONTACTS = 1248;
   }
 }
diff --git a/java/com/android/dialer/logging/interaction_event.proto b/java/com/android/dialer/logging/interaction_event.proto
index 89cf46f..47ea534 100644
--- a/java/com/android/dialer/logging/interaction_event.proto
+++ b/java/com/android/dialer/logging/interaction_event.proto
@@ -6,6 +6,8 @@
 option optimize_for = LITE_RUNTIME;
 
 
+
+
 message InteractionEvent {
   // Next Tag: 38
   enum Type {
diff --git a/java/com/android/dialer/logging/people_api_lookup_error.proto b/java/com/android/dialer/logging/people_api_lookup_error.proto
new file mode 100644
index 0000000..e37d10a
--- /dev/null
+++ b/java/com/android/dialer/logging/people_api_lookup_error.proto
@@ -0,0 +1,19 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+
+
+message PeopleApiLookupError {
+  enum Type {
+    UNKNOWN = 0;
+    HTTP_RESPONSE_ERROR = 1;
+    WRONG_KIND_VALUE = 2;
+    NO_ITEM_FOUND = 3;
+    JSON_PARSING_ERROR = 4;
+  }
+}
diff --git a/java/com/android/dialer/logging/reporting_location.proto b/java/com/android/dialer/logging/reporting_location.proto
index d436564..3c1baf0 100644
--- a/java/com/android/dialer/logging/reporting_location.proto
+++ b/java/com/android/dialer/logging/reporting_location.proto
@@ -6,6 +6,8 @@
 option optimize_for = LITE_RUNTIME;
 
 
+
+
 message ReportingLocation {
   // Spam reporting location
   enum Type {
diff --git a/java/com/android/dialer/logging/screen_event.proto b/java/com/android/dialer/logging/screen_event.proto
index ca62477..603f710 100644
--- a/java/com/android/dialer/logging/screen_event.proto
+++ b/java/com/android/dialer/logging/screen_event.proto
@@ -6,6 +6,8 @@
 option optimize_for = LITE_RUNTIME;
 
 
+
+
 message ScreenEvent {
   enum Type {
 
diff --git a/java/com/android/dialer/logging/ui_action.proto b/java/com/android/dialer/logging/ui_action.proto
index 784dbed..886fe04 100644
--- a/java/com/android/dialer/logging/ui_action.proto
+++ b/java/com/android/dialer/logging/ui_action.proto
@@ -6,6 +6,8 @@
 option optimize_for = LITE_RUNTIME;
 
 
+
+
 message UiAction {
   enum Type {
     UNKNOWN = 0;
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index 4b2bd2e..6dced3d 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -77,7 +77,7 @@
       // open contacts
       return true;
     } else {
-      // TODO handle other menu items
+      // TODO(calderwoodra) handle other menu items
       return super.onOptionsItemSelected(item);
     }
   }
diff --git a/java/com/android/dialer/main/impl/MainPagerAdapter.java b/java/com/android/dialer/main/impl/MainPagerAdapter.java
index 19cf4e7..c669a62 100644
--- a/java/com/android/dialer/main/impl/MainPagerAdapter.java
+++ b/java/com/android/dialer/main/impl/MainPagerAdapter.java
@@ -49,13 +49,13 @@
 
   @Override
   public int getCount() {
-    // TODO: add logic to hide/show voicemail tab
+    // TODO(calderwoodra): add logic to hide/show voicemail tab
     return 3;
   }
 
   @Override
   public Fragment getItem(int position) {
-    // TODO: implement tabs
+    // TODO(calderwoodra): implement tabs
     return new StubFragment();
   }
 
diff --git a/java/com/android/dialer/notification/VoicemailChannelUtils.java b/java/com/android/dialer/notification/VoicemailChannelUtils.java
index dc74799..e2d0f3a 100644
--- a/java/com/android/dialer/notification/VoicemailChannelUtils.java
+++ b/java/com/android/dialer/notification/VoicemailChannelUtils.java
@@ -193,7 +193,7 @@
   private static NotificationChannel newChannel(
       @NonNull Context context, @NonNull String channelId, @Nullable CharSequence nameSuffix) {
     CharSequence name = context.getText(R.string.notification_channel_voicemail);
-    // TODO: Use a string resource template after v10.
+    // TODO(sail): Use a string resource template after v10.
     if (!TextUtils.isEmpty(nameSuffix)) {
       name = TextUtils.concat(name, ": ", nameSuffix);
     }
diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java
index 86097c4..7b6ddbc 100644
--- a/java/com/android/dialer/oem/CequintCallerIdManager.java
+++ b/java/com/android/dialer/oem/CequintCallerIdManager.java
@@ -74,7 +74,7 @@
   private static boolean hasAlreadyCheckedCequintCallerIdPackage;
   private static boolean isCequintCallerIdEnabled;
 
-  // TODO: Revisit it and maybe remove it if it's not necessary.
+  // TODO(wangqi): Revisit it and maybe remove it if it's not necessary.
   private final ConcurrentHashMap<String, CequintCallerIdContact> callLogCache;
 
   /** Cequint caller id contact information. */
diff --git a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
index 5c7a28c..8bd8335 100644
--- a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
+++ b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
@@ -27,6 +27,7 @@
 import android.support.annotation.Nullable;
 import android.support.annotation.WorkerThread;
 import android.support.v4.os.UserManagerCompat;
+import com.android.dialer.common.LogUtil;
 import java.io.ByteArrayInputStream;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -58,6 +59,16 @@
   private static final String LOG_DIRECTORY = "persistent_log";
   private static final String NEXT_FILE_INDEX_PREFIX = "persistent_long_next_file_index_";
 
+  private static final byte[] ENTRY_PREFIX = {'P'};
+  private static final byte[] ENTRY_POSTFIX = {'L'};
+
+  private static class LogCorruptionException extends Exception {
+
+    public LogCorruptionException(String message) {
+      super(message);
+    }
+  };
+
   private File logDirectory;
   private final String subfolder;
   private final int fileSizeLimit;
@@ -106,8 +117,10 @@
     try (DataOutputStream outputStream =
         new DataOutputStream(new FileOutputStream(outputFile, true))) {
       for (byte[] log : logs) {
+        outputStream.write(ENTRY_PREFIX);
         outputStream.writeInt(log.length);
         outputStream.write(log);
+        outputStream.write(ENTRY_POSTFIX);
       }
       outputStream.close();
       if (outputFile.length() > fileSizeLimit) {
@@ -116,6 +129,21 @@
     }
   }
 
+  void writeRawLogsForTest(byte[] data) throws IOException {
+    if (outputFile == null) {
+      selectNextFileToWrite();
+    }
+    outputFile.createNewFile();
+    try (DataOutputStream outputStream =
+        new DataOutputStream(new FileOutputStream(outputFile, true))) {
+      outputStream.write(data);
+      outputStream.close();
+      if (outputFile.length() > fileSizeLimit) {
+        selectNextFileToWrite();
+      }
+    }
+  }
+
   /** Concatenate all log files in chronicle order and return a byte array. */
   @WorkerThread
   @NonNull
@@ -149,10 +177,21 @@
         logs.add(log);
         log = readLog(input);
       }
+    } catch (LogCorruptionException e) {
+      LogUtil.e("PersistentLogFileHandler.getLogs", "logs corrupted, deleting", e);
+      deleteLogs();
+      return new ArrayList<>();
     }
     return logs;
   }
 
+  private void deleteLogs() throws IOException {
+    for (File file : getLogFiles()) {
+      file.delete();
+    }
+    selectNextFileToWrite();
+  }
+
   @WorkerThread
   private void selectNextFileToWrite() throws IOException {
     File[] files = getLogFiles();
@@ -186,10 +225,28 @@
 
   @Nullable
   @WorkerThread
-  private static byte[] readLog(DataInputStream inputStream) throws IOException {
+  private byte[] readLog(DataInputStream inputStream) throws IOException, LogCorruptionException {
     try {
-      byte[] data = new byte[inputStream.readInt()];
+      byte[] prefix = new byte[ENTRY_PREFIX.length];
+      if (inputStream.read(prefix) == -1) {
+        // EOF
+        return null;
+      }
+      if (!Arrays.equals(prefix, ENTRY_PREFIX)) {
+        throw new LogCorruptionException("entry prefix mismatch");
+      }
+      int dataLength = inputStream.readInt();
+      if (dataLength > fileSizeLimit) {
+        throw new LogCorruptionException("data length over max size");
+      }
+      byte[] data = new byte[dataLength];
       inputStream.read(data);
+
+      byte[] postfix = new byte[ENTRY_POSTFIX.length];
+      inputStream.read(postfix);
+      if (!Arrays.equals(postfix, ENTRY_POSTFIX)) {
+        throw new LogCorruptionException("entry postfix mismatch");
+      }
       return data;
     } catch (EOFException e) {
       return null;
diff --git a/java/com/android/dialer/persistentlog/PersistentLogger.java b/java/com/android/dialer/persistentlog/PersistentLogger.java
index cf43b8c..847625e 100644
--- a/java/com/android/dialer/persistentlog/PersistentLogger.java
+++ b/java/com/android/dialer/persistentlog/PersistentLogger.java
@@ -43,7 +43,7 @@
  * com.google.android.apps.dialer.crashreporter.SilentCrashReporter} is expected to handle such
  * cases.
  *
- * <p>{@link #logText(String, String)} should be used to log ad-hoc text logs. TODO: switch
+ * <p>{@link #logText(String, String)} should be used to log ad-hoc text logs. TODO(twyen): switch
  * to structured logging
  */
 public final class PersistentLogger {
@@ -110,6 +110,16 @@
     loggerThreadHandler.sendEmptyMessageDelayed(MESSAGE_FLUSH, FLUSH_DELAY_MILLIS);
   }
 
+  @VisibleForTesting
+  /** write raw bytes directly to the log file, likely corrupting it. */
+  static void rawLogForTest(byte[] data) {
+    try {
+      fileHandler.writeRawLogsForTest(data);
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
   /** Dump the log as human readable string. Blocks until the dump is finished. */
   @NonNull
   @WorkerThread
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfo.java b/java/com/android/dialer/phonenumbercache/ContactInfo.java
index aef7374..a620a23 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfo.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfo.java
@@ -20,8 +20,8 @@
 import android.support.annotation.NonNull;
 import android.text.TextUtils;
 import com.android.contacts.common.ContactsUtils.UserType;
-import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.logging.ContactSource;
+import com.android.dialer.util.UriUtils;
 
 /** Information for a contact as needed by the Call Log. */
 public class ContactInfo {
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
index 4fa3147..b680bd5 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
@@ -38,7 +38,6 @@
 import com.android.contacts.common.ContactsUtils.UserType;
 import com.android.contacts.common.compat.DirectoryCompat;
 import com.android.contacts.common.util.Constants;
-import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.logging.ContactSource;
@@ -48,6 +47,7 @@
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.UriUtils;
 import java.util.ArrayList;
 import java.util.List;
 import org.json.JSONException;
diff --git a/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java b/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
index ea4396f..cc4ec2d 100644
--- a/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
+++ b/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
@@ -214,7 +214,7 @@
 
   private static boolean isVerizon(Context context) {
     // Verizon MCC/MNC codes copied from com/android/voicemailomtp/res/xml/vvm_config.xml.
-    // TODO: Need a better way to do per carrier and per OEM configurations.
+    // TODO(sail): Need a better way to do per carrier and per OEM configurations.
     switch (context.getSystemService(TelephonyManager.class).getSimOperator()) {
       case "310004":
       case "310010":
diff --git a/java/com/android/dialer/postcall/AndroidManifest.xml b/java/com/android/dialer/postcall/AndroidManifest.xml
index 22c77dd..7e69d33 100644
--- a/java/com/android/dialer/postcall/AndroidManifest.xml
+++ b/java/com/android/dialer/postcall/AndroidManifest.xml
@@ -22,7 +22,6 @@
       android:name="com.android.dialer.postcall.PostCallActivity"
       android:exported="false"
       android:theme="@style/DialerThemeBase.NoActionBar"
-      android:windowSoftInputMode="adjustResize"
-      android:screenOrientation="portrait"/>
+      android:windowSoftInputMode="adjustResize"/>
   </application>
 </manifest>
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index 6d9ad01..011fbc9 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -46,6 +46,7 @@
   private static final String KEY_POST_CALL_CALL_CONNECT_TIME = "post_call_call_connect_time";
   private static final String KEY_POST_CALL_CALL_NUMBER = "post_call_call_number";
   private static final String KEY_POST_CALL_MESSAGE_SENT = "post_call_message_sent";
+  private static final String KEY_POST_CALL_DISCONNECT_PRESSED = "post_call_disconnect_pressed";
 
   private static Snackbar activeSnackbar;
 
@@ -79,7 +80,7 @@
         LogUtil.sanitizePhoneNumber(getPhoneNumber(activity)),
         capabilities);
 
-    boolean isRcsPostCall = capabilities != null && capabilities.supportsPostCall();
+    boolean isRcsPostCall = capabilities != null && capabilities.isPostCallCapable();
     String actionText =
         isRcsPostCall
             ? activity.getString(R.string.post_call_add_message)
@@ -146,6 +147,13 @@
         .apply();
   }
 
+  public static void onDisconnectPressed(Context context) {
+    DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context)
+        .edit()
+        .putBoolean(KEY_POST_CALL_DISCONNECT_PRESSED, true)
+        .apply();
+  }
+
   public static void onCallDisconnected(Context context, String number, long callConnectedMillis) {
     DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context)
         .edit()
@@ -185,6 +193,7 @@
         .remove(KEY_POST_CALL_CALL_NUMBER)
         .remove(KEY_POST_CALL_MESSAGE_SENT)
         .remove(KEY_POST_CALL_CALL_CONNECT_TIME)
+        .remove(KEY_POST_CALL_DISCONNECT_PRESSED)
         .apply();
   }
 
@@ -197,6 +206,8 @@
     long timeSinceDisconnect = System.currentTimeMillis() - disconnectTimeMillis;
     long callDurationMillis = disconnectTimeMillis - connectTimeMillis;
 
+    boolean callDisconnectedByUser = manager.getBoolean(KEY_POST_CALL_DISCONNECT_PRESSED, false);
+
     ConfigProvider binding = ConfigProviderBindings.get(context);
     return disconnectTimeMillis != -1
         && connectTimeMillis != -1
@@ -204,7 +215,8 @@
         && binding.getLong("postcall_last_call_threshold", 30_000) > timeSinceDisconnect
         && (connectTimeMillis == 0
             || binding.getLong("postcall_call_duration_threshold", 35_000) > callDurationMillis)
-        && getPhoneNumber(context) != null;
+        && getPhoneNumber(context) != null
+        && callDisconnectedByUser;
   }
 
   private static boolean shouldPromptUserToViewSentMessage(Context context) {
diff --git a/java/com/android/dialer/postcall/res/layout/post_call_activity.xml b/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
index 256c110..c42764e 100644
--- a/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
+++ b/java/com/android/dialer/postcall/res/layout/post_call_activity.xml
@@ -14,20 +14,21 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:background="@color/background_dialer_white"
+<LinearLayout
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  android:orientation="vertical"
   android:layout_width="match_parent"
-  android:layout_height="match_parent">
-
-  <FrameLayout
-    android:id="@+id/message_container"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_alignParentBottom="true"
-    android:background="@color/background_dialer_white"/>
+  android:layout_height="match_parent"
+  android:background="@color/background_dialer_white">
 
   <com.android.dialer.widget.DialerToolbar
       android:id="@+id/toolbar"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"/>
-</RelativeLayout>
\ No newline at end of file
+
+  <FrameLayout
+    android:id="@+id/message_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/background_dialer_white"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
index b23315b..0d22a82 100644
--- a/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
+++ b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
@@ -42,7 +42,7 @@
     }
 
     // Check matches initials
-    // TODO investigate faster implementation
+    // TODO(calderwoodra) investigate faster implementation
     query = digitsOnly(query);
     int queryIndex = 0;
 
@@ -60,6 +60,23 @@
     return queryIndex == query.length();
   }
 
+  /**
+   * Returns true if the subparts of the name (split by white space) begin with the query.
+   *
+   * <p>Examples:
+   *
+   * <ul>
+   *   <li>#nameContainsQuery("b", "Brandon") returns true
+   *   <li>#nameContainsQuery("o", "Bob") returns false
+   *   <li>#nameContainsQuery("o", "Bob Olive") returns true
+   * </ul>
+   */
+  public static boolean nameContainsQuery(String query, String name) {
+    return Pattern.compile("(^|\\s)" + Pattern.quote(query.toLowerCase()))
+        .matcher(name.toLowerCase())
+        .find();
+  }
+
   /** @return true if the number belongs to the query. */
   public static boolean numberMatchesNumberQuery(String query, String number) {
     return PhoneNumberUtils.isGlobalPhoneNumber(query)
diff --git a/java/com/android/dialer/searchfragment/common/SearchCursor.java b/java/com/android/dialer/searchfragment/common/SearchCursor.java
new file mode 100644
index 0000000..368ee09
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/common/SearchCursor.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 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.dialer.searchfragment.common;
+
+import android.database.Cursor;
+import android.support.annotation.NonNull;
+
+/** Base cursor interface needed for all cursors used in search. */
+public interface SearchCursor extends Cursor {
+
+  String[] HEADER_PROJECTION = {"header_text"};
+
+  int HEADER_TEXT_POSITION = 0;
+
+  /** Returns true if the current cursor position is a header */
+  boolean isHeader();
+
+  /**
+   * Notifies the cursor that the query has updated.
+   *
+   * @return true if the data set has changed.
+   */
+  boolean updateQuery(@NonNull String query);
+}
diff --git a/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml b/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml
new file mode 100644
index 0000000..8d2efca
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml
@@ -0,0 +1,16 @@
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<manifest  package="com.android.dialer.searchfragment.cp2"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java b/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
similarity index 96%
rename from java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java
rename to java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
index a2ef58c..d5fcfba 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java
+++ b/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
@@ -34,12 +34,12 @@
 import java.util.List;
 
 /**
- * Wrapper for a cursor returned by {@link SearchContactsCursorLoader}.
+ * Wrapper for a cursor containing all on device contacts.
  *
  * <p>This cursor removes duplicate phone numbers associated with the same contact and can filter
  * contacts based on a query by calling {@link #filter(String)}.
  */
-public final class SearchContactCursor implements Cursor {
+final class ContactFilterCursor implements Cursor {
 
   private final Cursor cursor;
   // List of cursor ids that are valid for displaying after filtering.
@@ -66,8 +66,8 @@
    * @param cursor with projection {@link Projections#PHONE_PROJECTION}.
    * @param query to filter cursor results.
    */
-  public SearchContactCursor(Cursor cursor, @Nullable String query) {
-    // TODO investigate copying this into a MatrixCursor and holding in memory
+  ContactFilterCursor(Cursor cursor, @Nullable String query) {
+    // TODO(calderwoodra) investigate copying this into a MatrixCursor and holding in memory
     this.cursor = cursor;
     filter(query);
   }
@@ -142,7 +142,7 @@
       if (TextUtils.isEmpty(query)
           || QueryFilteringUtil.nameMatchesT9Query(query, previousName)
           || QueryFilteringUtil.numberMatchesNumberQuery(query, previousMostQualifiedNumber)
-          || previousName.contains(query)) {
+          || QueryFilteringUtil.nameContainsQuery(query, previousName)) {
         queryFilteredPositions.add(previousMostQualifiedPosition);
       }
     }
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
index 5f06b59..1e8224d 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
@@ -30,14 +30,15 @@
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.dialer.callintent.CallInitiationType.Type;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.searchfragment.common.Projections;
 import com.android.dialer.searchfragment.common.QueryBoldingUtil;
 import com.android.dialer.searchfragment.common.R;
+import com.android.dialer.searchfragment.common.SearchCursor;
 import com.android.dialer.telecom.TelecomUtil;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -77,7 +78,7 @@
    * Binds the ViewHolder with a cursor from {@link SearchContactsCursorLoader} with the data found
    * at the cursors set position.
    */
-  public void bind(Cursor cursor, String query) {
+  public void bind(SearchCursor cursor, String query) {
     number = cursor.getString(Projections.PHONE_NUMBER);
     String name = cursor.getString(Projections.PHONE_DISPLAY_NAME);
     String label = getLabel(context.getResources(), cursor);
@@ -91,7 +92,7 @@
     numberView.setText(QueryBoldingUtil.getNumberWithQueryBolded(query, secondaryInfo));
     setCallToAction(cursor);
 
-    if (shouldShowPhoto(cursor, name)) {
+    if (shouldShowPhoto(cursor)) {
       nameOrNumberView.setVisibility(View.VISIBLE);
       photo.setVisibility(View.VISIBLE);
       String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI);
@@ -109,16 +110,19 @@
     }
   }
 
-  private boolean shouldShowPhoto(Cursor cursor, String currentName) {
+  // Show the contact photo next to only the first number if a contact has multiple numbers
+  private boolean shouldShowPhoto(SearchCursor cursor) {
     int currentPosition = cursor.getPosition();
-    if (currentPosition == 0) {
-      return true;
-    } else {
-      cursor.moveToPosition(currentPosition - 1);
-      String previousName = cursor.getString(Projections.PHONE_DISPLAY_NAME);
+    String currentLookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+    cursor.moveToPosition(currentPosition - 1);
+
+    if (!cursor.isHeader() && !cursor.isBeforeFirst()) {
+      String previousLookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
       cursor.moveToPosition(currentPosition);
-      return !currentName.equals(previousName);
+      return !currentLookupKey.equals(previousLookupKey);
     }
+    cursor.moveToPosition(currentPosition);
+    return true;
   }
 
   private static Uri getContactUri(Cursor cursor) {
@@ -127,8 +131,8 @@
     return Contacts.getLookupUri(contactId, lookupKey);
   }
 
-  // TODO: handle CNAP and cequint types.
-  // TODO: unify this into a utility method with CallLogAdapter#getNumberType
+  // TODO(calderwoodra): handle CNAP and cequint types.
+  // TODO(calderwoodra): unify this into a utility method with CallLogAdapter#getNumberType
   private static String getLabel(Resources resources, Cursor cursor) {
     int numberType = cursor.getInt(Projections.PHONE_TYPE);
     String numberLabel = cursor.getString(Projections.PHONE_LABEL);
@@ -171,7 +175,7 @@
       return CallToAction.VIDEO_CALL;
     }
 
-    // TODO: enriched calling
+    // TODO(calderwoodra): enriched calling
     return CallToAction.NONE;
   }
 
@@ -183,13 +187,13 @@
           callToActionView.setVisibility(View.VISIBLE);
           callToActionView.setImageDrawable(
               context.getDrawable(com.android.contacts.common.R.drawable.ic_phone_attach));
-          // TODO: open call composer.
+          // TODO(calderwoodra): open call composer.
           break;
         case CallToAction.VIDEO_CALL:
           callToActionView.setVisibility(View.VISIBLE);
           callToActionView.setImageDrawable(
               context.getDrawable(R.drawable.quantum_ic_videocam_white_24));
-          // TODO: place a video call
+          // TODO(calderwoodra): place a video call
           break;
         case CallToAction.NONE:
         default:
@@ -197,7 +201,7 @@
               "Invalid Call to action type: " + currentAction);
       }
     } else {
-      // TODO: set the correct call initiation type.
+      // TODO(calderwoodra): set the correct call initiation type.
       TelecomUtil.placeCall(context, new CallIntentBuilder(number, Type.REGULAR_SEARCH).build());
     }
   }
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java
new file mode 100644
index 0000000..18c9ecd
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 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.dialer.searchfragment.cp2;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.database.MergeCursor;
+import android.support.annotation.Nullable;
+import com.android.dialer.searchfragment.common.SearchCursor;
+
+/**
+ * {@link SearchCursor} implementation for displaying on device contacts.
+ *
+ * <p>Inserts header "All Contacts" at position 0.
+ */
+final class SearchContactsCursor extends MergeCursor implements SearchCursor {
+
+  private final ContactFilterCursor contactFilterCursor;
+
+  public static SearchContactsCursor newInstnace(
+      Context context, ContactFilterCursor contactFilterCursor) {
+    MatrixCursor headerCursor = new MatrixCursor(HEADER_PROJECTION);
+    headerCursor.addRow(new String[] {context.getString(R.string.all_contacts)});
+    return new SearchContactsCursor(new Cursor[] {headerCursor, contactFilterCursor});
+  }
+
+  private SearchContactsCursor(Cursor[] cursors) {
+    super(cursors);
+    contactFilterCursor = (ContactFilterCursor) cursors[1];
+  }
+
+  @Override
+  public boolean isHeader() {
+    return isFirst();
+  }
+
+  @Override
+  public boolean updateQuery(@Nullable String query) {
+    contactFilterCursor.filter(query);
+    return true;
+  }
+
+  @Override
+  public int getCount() {
+    // If we don't have any contents, we don't want to show the header
+    int count = contactFilterCursor.getCount();
+    return count == 0 ? 0 : count + 1;
+  }
+}
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
index c72f28b..d75a661 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
@@ -37,6 +37,11 @@
 
   @Override
   public Cursor loadInBackground() {
-    return new SearchContactCursor(super.loadInBackground(), null);
+    // All contacts
+    Cursor cursor = super.loadInBackground();
+    // Filtering logic
+    ContactFilterCursor contactFilterCursor = new ContactFilterCursor(cursor, null);
+    // Header logic
+    return SearchContactsCursor.newInstnace(getContext(), contactFilterCursor);
   }
 }
diff --git a/java/com/android/dialer/searchfragment/cp2/res/values/strings.xml b/java/com/android/dialer/searchfragment/cp2/res/values/strings.xml
new file mode 100644
index 0000000..5462dc9
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/cp2/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<resources>
+  <!-- Label for a list of all contacts on device. [CHAR LIMIT=30]-->
+  <string name="all_contacts">All contacts</string>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index fcc87c3..2c02815 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -19,59 +19,111 @@
 import android.app.Fragment;
 import android.app.LoaderManager.LoaderCallbacks;
 import android.content.Loader;
+import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.os.Bundle;
+import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import android.support.v13.app.FragmentCompat;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.animation.Interpolator;
 import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
+import com.android.dialer.animation.AnimUtils;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.searchfragment.common.SearchCursor;
 import com.android.dialer.searchfragment.cp2.SearchContactsCursorLoader;
 import com.android.dialer.searchfragment.nearbyplaces.NearbyPlacesCursorLoader;
+import com.android.dialer.searchfragment.remote.RemoteContactsCursorLoader;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader.Directory;
+import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.util.ViewUtil;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /** Fragment used for searching contacts. */
-public final class NewSearchFragment extends Fragment implements LoaderCallbacks<Cursor> {
+public final class NewSearchFragment extends Fragment
+    implements LoaderCallbacks<Cursor>, OnEmptyViewActionButtonClickedListener {
 
   // Since some of our queries can generate network requests, we should delay them until the user
   // stops typing to prevent generating too much network traffic.
   private static final int NETWORK_SEARCH_DELAY_MILLIS = 300;
 
-  private static final int CONTACTS_LOADER_ID = 0;
-  private static final int NEARBY_PLACES_ID = 1;
+  @VisibleForTesting public static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
 
+  private static final int CONTACTS_LOADER_ID = 0;
+  private static final int NEARBY_PLACES_LOADER_ID = 1;
+  private static final int REMOTE_DIRECTORIES_LOADER_ID = 2;
+  private static final int REMOTE_CONTACTS_LOADER_ID = 3;
+
+  private EmptyContentView emptyContentView;
   private RecyclerView recyclerView;
   private SearchAdapter adapter;
   private String query;
+  private boolean remoteDirectoriesDisabledForTesting;
 
+  private final List<Directory> directories = new ArrayList<>();
   private final Runnable loadNearbyPlacesRunnable =
-      () -> getLoaderManager().restartLoader(NEARBY_PLACES_ID, null, this);
+      () -> getLoaderManager().restartLoader(NEARBY_PLACES_LOADER_ID, null, this);
+  private final Runnable loadRemoteContactsRunnable =
+      () -> getLoaderManager().restartLoader(REMOTE_CONTACTS_LOADER_ID, null, this);
+
+  private Runnable updatePositionRunnable;
 
   @Nullable
   @Override
   public View onCreateView(
       LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) {
-    getLoaderManager().initLoader(0, null, this);
     View view = inflater.inflate(R.layout.fragment_search, parent, false);
-    adapter = new SearchAdapter(getContext());
+    adapter = new SearchAdapter(getContext(), new SearchCursorManager());
+    emptyContentView = view.findViewById(R.id.empty_view);
     recyclerView = view.findViewById(R.id.recycler_view);
     recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
     recyclerView.setAdapter(adapter);
 
+    if (!PermissionsUtil.hasContactsReadPermissions(getContext())) {
+      emptyContentView.setDescription(R.string.new_permission_no_search);
+      emptyContentView.setActionLabel(R.string.permission_single_turn_on);
+      emptyContentView.setActionClickedListener(this);
+      emptyContentView.setImage(R.drawable.empty_contacts);
+      emptyContentView.setVisibility(View.VISIBLE);
+    } else {
+      initLoaders();
+    }
+
+    if (updatePositionRunnable != null) {
+      ViewUtil.doOnPreDraw(view, false, updatePositionRunnable);
+    }
+    return view;
+  }
+
+  private void initLoaders() {
     getLoaderManager().initLoader(CONTACTS_LOADER_ID, null, this);
     loadNearbyPlacesCursor();
-    return view;
+    loadRemoteDirectoriesCursor();
   }
 
   @Override
   public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
-    // TODO add enterprise loader
+    // TODO(calderwoodra) add enterprise loader
     if (id == CONTACTS_LOADER_ID) {
       return new SearchContactsCursorLoader(getContext());
-    } else if (id == NEARBY_PLACES_ID) {
+    } else if (id == NEARBY_PLACES_LOADER_ID) {
       return new NearbyPlacesCursorLoader(getContext(), query);
+    } else if (id == REMOTE_DIRECTORIES_LOADER_ID) {
+      return new RemoteDirectoriesCursorLoader(getContext());
+    } else if (id == REMOTE_CONTACTS_LOADER_ID) {
+      return new RemoteContactsCursorLoader(getContext(), query, directories);
     } else {
       throw new IllegalStateException("Invalid loader id: " + id);
     }
@@ -79,10 +131,29 @@
 
   @Override
   public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
+    if (cursor != null
+        && !(loader instanceof RemoteDirectoriesCursorLoader)
+        && !(cursor instanceof SearchCursor)) {
+      throw Assert.createIllegalStateFailException("Cursors must implement SearchCursor");
+    }
+
     if (loader instanceof SearchContactsCursorLoader) {
-      adapter.setContactsCursor(cursor);
+      adapter.setContactsCursor((SearchCursor) cursor);
+
     } else if (loader instanceof NearbyPlacesCursorLoader) {
-      adapter.setNearbyPlacesCursor(cursor);
+      adapter.setNearbyPlacesCursor((SearchCursor) cursor);
+
+    } else if (loader instanceof RemoteContactsCursorLoader) {
+      adapter.setRemoteContactsCursor((SearchCursor) cursor);
+
+    } else if (loader instanceof RemoteDirectoriesCursorLoader) {
+      directories.clear();
+      cursor.moveToPosition(-1);
+      while (cursor.moveToNext()) {
+        directories.add(RemoteDirectoriesCursorLoader.readDirectory(cursor));
+      }
+      loadRemoteContactsCursors();
+
     } else {
       throw new IllegalStateException("Invalid loader: " + loader);
     }
@@ -99,16 +170,28 @@
     if (adapter != null) {
       adapter.setQuery(query);
       loadNearbyPlacesCursor();
+      loadRemoteContactsCursors();
     }
   }
 
+  public void animatePosition(int start, int end, int duration) {
+    // Called before the view is ready, prepare a runnable to run in onCreateView
+    if (getView() == null) {
+      updatePositionRunnable = () -> animatePosition(start, end, 0);
+      return;
+    }
+    boolean slideUp = start > end;
+    Interpolator interpolator = slideUp ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT;
+    getView().setTranslationY(start);
+    getView().animate().translationY(end).setInterpolator(interpolator).setDuration(duration);
+    updatePositionRunnable = null;
+  }
+
   @Override
   public void onDestroy() {
     super.onDestroy();
-    // close adapters
-    adapter.setNearbyPlacesCursor(null);
-    adapter.setContactsCursor(null);
     ThreadUtil.getUiThreadHandler().removeCallbacks(loadNearbyPlacesRunnable);
+    ThreadUtil.getUiThreadHandler().removeCallbacks(loadRemoteContactsRunnable);
   }
 
   private void loadNearbyPlacesCursor() {
@@ -122,4 +205,55 @@
     ThreadUtil.getUiThreadHandler()
         .postDelayed(loadNearbyPlacesRunnable, NETWORK_SEARCH_DELAY_MILLIS);
   }
+
+  @Override
+  public void onRequestPermissionsResult(
+      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+    if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
+      if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
+        // Force a refresh of the data since we were missing the permission before this.
+        emptyContentView.setVisibility(View.GONE);
+        initLoaders();
+      }
+    }
+  }
+
+  @Override
+  public void onEmptyViewActionButtonClicked() {
+    String[] deniedPermissions =
+        PermissionsUtil.getPermissionsCurrentlyDenied(
+            getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
+    if (deniedPermissions.length > 0) {
+      LogUtil.i(
+          "NewSearchFragment.onEmptyViewActionButtonClicked",
+          "Requesting permissions: " + Arrays.toString(deniedPermissions));
+      FragmentCompat.requestPermissions(
+          this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+    }
+  }
+
+  private void loadRemoteDirectoriesCursor() {
+    if (!remoteDirectoriesDisabledForTesting) {
+      getLoaderManager().initLoader(REMOTE_DIRECTORIES_LOADER_ID, null, this);
+    }
+  }
+
+  private void loadRemoteContactsCursors() {
+    if (remoteDirectoriesDisabledForTesting) {
+      return;
+    }
+
+    // Cancel existing load if one exists.
+    ThreadUtil.getUiThreadHandler().removeCallbacks(loadRemoteContactsRunnable);
+    ThreadUtil.getUiThreadHandler()
+        .postDelayed(loadRemoteContactsRunnable, NETWORK_SEARCH_DELAY_MILLIS);
+  }
+
+  // Currently, setting up multiple FakeContentProviders doesn't work and results in this fragment
+  // being untestable while it can query multiple datasources. This is a temporary fix.
+  // TODO(b/64099602): Remove this method and test this fragment with multiple data sources
+  @VisibleForTesting
+  public void setRemoteDirectoriesDisabled(boolean disabled) {
+    remoteDirectoriesDisabledForTesting = disabled;
+  }
 }
diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
index 023513e..81e8e38 100644
--- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -17,15 +17,16 @@
 package com.android.dialer.searchfragment.list;
 
 import android.content.Context;
-import android.database.Cursor;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.LayoutInflater;
 import android.view.ViewGroup;
 import com.android.dialer.common.Assert;
+import com.android.dialer.searchfragment.common.SearchCursor;
 import com.android.dialer.searchfragment.cp2.SearchContactViewHolder;
 import com.android.dialer.searchfragment.list.SearchCursorManager.RowType;
 import com.android.dialer.searchfragment.nearbyplaces.NearbyPlaceViewHolder;
+import com.android.dialer.searchfragment.remote.RemoteContactViewHolder;
 
 /** RecyclerView adapter for {@link NewSearchFragment}. */
 class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
@@ -35,9 +36,9 @@
 
   private String query;
 
-  SearchAdapter(Context context) {
-    searchCursorManager = new SearchCursorManager();
+  SearchAdapter(Context context, SearchCursorManager searchCursorManager) {
     this.context = context;
+    this.searchCursorManager = searchCursorManager;
   }
 
   @Override
@@ -49,11 +50,14 @@
       case RowType.NEARBY_PLACES_ROW:
         return new NearbyPlaceViewHolder(
             LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false));
+      case RowType.CONTACT_HEADER:
       case RowType.DIRECTORY_HEADER:
       case RowType.NEARBY_PLACES_HEADER:
         return new HeaderViewHolder(
             LayoutInflater.from(context).inflate(R.layout.header_layout, root, false));
-      case RowType.DIRECTORY_ROW: // TODO: add directory rows to search
+      case RowType.DIRECTORY_ROW:
+        return new RemoteContactViewHolder(
+            LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false));
       case RowType.INVALID:
       default:
         throw Assert.createIllegalStateFailException("Invalid RowType: " + rowType);
@@ -68,20 +72,21 @@
   @Override
   public void onBindViewHolder(ViewHolder holder, int position) {
     if (holder instanceof SearchContactViewHolder) {
-      Cursor cursor = searchCursorManager.getCursor(position);
-      ((SearchContactViewHolder) holder).bind(cursor, query);
+      ((SearchContactViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
     } else if (holder instanceof NearbyPlaceViewHolder) {
-      Cursor cursor = searchCursorManager.getCursor(position);
-      ((NearbyPlaceViewHolder) holder).bind(cursor, query);
+      ((NearbyPlaceViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
+    } else if (holder instanceof RemoteContactViewHolder) {
+      ((RemoteContactViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
     } else if (holder instanceof HeaderViewHolder) {
-      String header = context.getString(searchCursorManager.getHeaderText(position));
+      String header =
+          searchCursorManager.getCursor(position).getString(SearchCursor.HEADER_TEXT_POSITION);
       ((HeaderViewHolder) holder).setHeader(header);
     } else {
       throw Assert.createIllegalStateFailException("Invalid ViewHolder: " + holder);
     }
   }
 
-  void setContactsCursor(Cursor cursor) {
+  void setContactsCursor(SearchCursor cursor) {
     searchCursorManager.setContactsCursor(cursor);
     notifyDataSetChanged();
   }
@@ -97,12 +102,20 @@
 
   public void setQuery(String query) {
     this.query = query;
-    searchCursorManager.setQuery(query);
-    notifyDataSetChanged();
+    if (searchCursorManager.setQuery(query)) {
+      notifyDataSetChanged();
+    }
   }
 
-  public void setNearbyPlacesCursor(Cursor nearbyPlacesCursor) {
-    searchCursorManager.setNearbyPlacesCursor(nearbyPlacesCursor);
-    notifyDataSetChanged();
+  public void setNearbyPlacesCursor(SearchCursor nearbyPlacesCursor) {
+    if (searchCursorManager.setNearbyPlacesCursor(nearbyPlacesCursor)) {
+      notifyDataSetChanged();
+    }
+  }
+
+  public void setRemoteContactsCursor(SearchCursor remoteContactsCursor) {
+    if (searchCursorManager.setCorpDirectoryCursor(remoteContactsCursor)) {
+      notifyDataSetChanged();
+    }
   }
 }
diff --git a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
index 216a9ad..b385aa3 100644
--- a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
+++ b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
@@ -16,11 +16,9 @@
 
 package com.android.dialer.searchfragment.list;
 
-import android.database.Cursor;
 import android.support.annotation.IntDef;
-import android.support.annotation.StringRes;
 import com.android.dialer.common.Assert;
-import com.android.dialer.searchfragment.cp2.SearchContactCursor;
+import com.android.dialer.searchfragment.common.SearchCursor;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -30,9 +28,9 @@
  * <p>This class accepts three cursors:
  *
  * <ul>
- *   <li>A contacts cursor {@link #setContactsCursor(Cursor)}
- *   <li>A google search results cursor {@link #setNearbyPlacesCursor(Cursor)}
- *   <li>A work directory cursor {@link #setCorpDirectoryCursor(Cursor)}
+ *   <li>A contacts cursor {@link #setContactsCursor(SearchCursor)}
+ *   <li>A google search results cursor {@link #setNearbyPlacesCursor(SearchCursor)}
+ *   <li>A work directory cursor {@link #setCorpDirectoryCursor(SearchCursor)}
  * </ul>
  *
  * <p>The key purpose of this class is to compose three aforementioned cursors together to function
@@ -50,6 +48,7 @@
   @Retention(RetentionPolicy.SOURCE)
   @IntDef({
     SearchCursorManager.RowType.INVALID,
+    SearchCursorManager.RowType.CONTACT_HEADER,
     SearchCursorManager.RowType.CONTACT_ROW,
     SearchCursorManager.RowType.NEARBY_PLACES_HEADER,
     SearchCursorManager.RowType.NEARBY_PLACES_ROW,
@@ -58,25 +57,29 @@
   })
   @interface RowType {
     int INVALID = 0;
+    // TODO(calderwoodra) add suggestions header and list
+    /** Header to mark the start of contact rows. */
+    int CONTACT_HEADER = 1;
     /** A row containing contact information for contacts stored locally on device. */
-    int CONTACT_ROW = 1;
+    int CONTACT_ROW = 2;
     /** Header to mark the end of contact rows and start of nearby places rows. */
-    int NEARBY_PLACES_HEADER = 2;
+    int NEARBY_PLACES_HEADER = 3;
     /** A row containing nearby places information/search results. */
-    int NEARBY_PLACES_ROW = 3;
+    int NEARBY_PLACES_ROW = 4;
     /** Header to mark the end of the previous row set and start of directory rows. */
-    int DIRECTORY_HEADER = 4;
+    int DIRECTORY_HEADER = 5;
     /** A row containing contact information for contacts stored externally in corp directories. */
-    int DIRECTORY_ROW = 5;
+    int DIRECTORY_ROW = 6;
   }
 
-  private Cursor contactsCursor = null;
-  private Cursor nearbyPlacesCursor = null;
-  private Cursor corpDirectoryCursor = null;
+  private SearchCursor contactsCursor = null;
+  private SearchCursor nearbyPlacesCursor = null;
+  private SearchCursor corpDirectoryCursor = null;
 
-  void setContactsCursor(Cursor cursor) {
+  /** Returns true if the cursor changed. */
+  boolean setContactsCursor(SearchCursor cursor) {
     if (cursor == contactsCursor) {
-      return;
+      return false;
     }
 
     if (contactsCursor != null && !contactsCursor.isClosed()) {
@@ -88,11 +91,13 @@
     } else {
       contactsCursor = null;
     }
+    return true;
   }
 
-  void setNearbyPlacesCursor(Cursor cursor) {
+  /** Returns true if the cursor changed. */
+  boolean setNearbyPlacesCursor(SearchCursor cursor) {
     if (cursor == nearbyPlacesCursor) {
-      return;
+      return false;
     }
 
     if (nearbyPlacesCursor != null && !nearbyPlacesCursor.isClosed()) {
@@ -104,11 +109,13 @@
     } else {
       nearbyPlacesCursor = null;
     }
+    return true;
   }
 
-  void setCorpDirectoryCursor(Cursor cursor) {
+  /** Returns true if a cursor changed. */
+  boolean setCorpDirectoryCursor(SearchCursor cursor) {
     if (cursor == corpDirectoryCursor) {
-      return;
+      return false;
     }
 
     if (corpDirectoryCursor != null && !corpDirectoryCursor.isClosed()) {
@@ -120,16 +127,26 @@
     } else {
       corpDirectoryCursor = null;
     }
+    return true;
   }
 
-  void setQuery(String query) {
+  boolean setQuery(String query) {
+    boolean updated = false;
     if (contactsCursor != null) {
-      // TODO: abstract this
-      ((SearchContactCursor) contactsCursor).filter(query);
+      updated = contactsCursor.updateQuery(query);
     }
+
+    if (nearbyPlacesCursor != null) {
+      updated |= nearbyPlacesCursor.updateQuery(query);
+    }
+
+    if (corpDirectoryCursor != null) {
+      updated |= corpDirectoryCursor.updateQuery(query);
+    }
+    return updated;
   }
 
-  /** @return the sum of counts of all cursors, including headers. */
+  /** Returns the sum of counts of all cursors, including headers. */
   int getCount() {
     int count = 0;
     if (contactsCursor != null) {
@@ -137,12 +154,10 @@
     }
 
     if (nearbyPlacesCursor != null) {
-      count++; // header
       count += nearbyPlacesCursor.getCount();
     }
 
     if (corpDirectoryCursor != null) {
-      count++; // header
       count += corpDirectoryCursor.getCount();
     }
 
@@ -151,54 +166,30 @@
 
   @RowType
   int getRowType(int position) {
-    if (contactsCursor != null) {
-      position -= contactsCursor.getCount();
-
-      if (position < 0) {
-        return SearchCursorManager.RowType.CONTACT_ROW;
-      }
+    SearchCursor cursor = getCursor(position);
+    if (cursor == contactsCursor) {
+      return cursor.isHeader() ? RowType.CONTACT_HEADER : RowType.CONTACT_ROW;
     }
 
-    if (nearbyPlacesCursor != null) {
-      if (position == 0) {
-        return SearchCursorManager.RowType.NEARBY_PLACES_HEADER;
-      } else {
-        position--; // header
-      }
-
-      position -= nearbyPlacesCursor.getCount();
-
-      if (position < 0) {
-        return SearchCursorManager.RowType.NEARBY_PLACES_ROW;
-      }
+    if (cursor == nearbyPlacesCursor) {
+      return cursor.isHeader() ? RowType.NEARBY_PLACES_HEADER : RowType.NEARBY_PLACES_ROW;
     }
 
-    if (corpDirectoryCursor != null) {
-      if (position == 0) {
-        return SearchCursorManager.RowType.DIRECTORY_HEADER;
-      } else {
-        position--; // header
-      }
-
-      position -= corpDirectoryCursor.getCount();
-
-      if (position < 0) {
-        return SearchCursorManager.RowType.DIRECTORY_ROW;
-      }
+    if (cursor == corpDirectoryCursor) {
+      return cursor.isHeader() ? RowType.DIRECTORY_HEADER : RowType.DIRECTORY_ROW;
     }
-
     throw Assert.createIllegalStateFailException("No valid row type.");
   }
 
   /**
-   * Gets cursor corresponding to position in coelesced list of search cursors. Callers should
+   * Gets cursor corresponding to position in coalesced list of search cursors. Callers should
    * ensure that {@link #getRowType(int)} doesn't correspond to header position, otherwise an
    * exception will be thrown.
    *
-   * @param position in coalecsed list of search cursors
+   * @param position in coalesced list of search cursors
    * @return Cursor moved to position specific to passed in position.
    */
-  Cursor getCursor(int position) {
+  SearchCursor getCursor(int position) {
     if (contactsCursor != null) {
       int count = contactsCursor.getCount();
 
@@ -210,8 +201,6 @@
     }
 
     if (nearbyPlacesCursor != null) {
-      Assert.checkArgument(position != 0, "No valid cursor, position is nearby places header.");
-      position--; // header
       int count = nearbyPlacesCursor.getCount();
 
       if (position - count < 0) {
@@ -222,8 +211,6 @@
     }
 
     if (corpDirectoryCursor != null) {
-      Assert.checkArgument(position != 0, "No valid cursor, position is directory search header.");
-      position--; // header
       int count = corpDirectoryCursor.getCount();
 
       if (position - count < 0) {
@@ -236,23 +223,6 @@
     throw Assert.createIllegalStateFailException("No valid cursor.");
   }
 
-  @StringRes
-  int getHeaderText(int position) {
-    @RowType int rowType = getRowType(position);
-    switch (rowType) {
-      case RowType.NEARBY_PLACES_HEADER:
-        return R.string.nearby_places;
-      case RowType.DIRECTORY_HEADER: // TODO
-      case RowType.DIRECTORY_ROW:
-      case RowType.CONTACT_ROW:
-      case RowType.NEARBY_PLACES_ROW:
-      case RowType.INVALID:
-      default:
-        throw Assert.createIllegalStateFailException(
-            "Invalid row type, position " + position + " is rowtype " + rowType);
-    }
-  }
-
   /** removes all cursors. */
   void clear() {
     if (contactsCursor != null) {
diff --git a/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
index 06f2348..07113c0 100644
--- a/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
+++ b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
@@ -14,8 +14,19 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<android.support.v7.widget.RecyclerView
+<FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/recycler_view"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"/>
+    android:layout_height="match_parent"
+    android:layout_width="match_parent">
+
+  <android.support.v7.widget.RecyclerView
+      android:id="@+id/recycler_view"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"/>
+
+  <com.android.dialer.widget.EmptyContentView
+      android:id="@+id/empty_view"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      android:visibility="gone"/>
+</FrameLayout>
diff --git a/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml b/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml
index 36af42e..eef0dee 100644
--- a/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml
+++ b/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml
@@ -18,5 +18,6 @@
     android:id="@+id/header"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
+    android:layout_marginTop="8dp"
     android:paddingStart="16dp"
     style="@style/SecondaryText"/>
diff --git a/java/com/android/dialer/searchfragment/list/res/values/strings.xml b/java/com/android/dialer/searchfragment/list/res/values/strings.xml
new file mode 100644
index 0000000..0d25b8c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/list/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2012 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
+  -->
+<resources>
+  <!-- Shown as a prompt to turn on contacts permissions to allow contact search [CHAR LIMIT=NONE]. See 2424710404207193826 for current translation. -->
+  <string name="new_permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
+</resources>
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
index 178cd83..52fb086 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
@@ -13,4 +13,4 @@
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License
  -->
-<manifest  package="com.android.dialer.searchfragment.common"/>
\ No newline at end of file
+<manifest  package="com.android.dialer.searchfragment.nearbyplaces"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
index b6e5a90..575582e 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
@@ -24,10 +24,10 @@
 import android.view.View;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.searchfragment.common.Projections;
 import com.android.dialer.searchfragment.common.QueryBoldingUtil;
 import com.android.dialer.searchfragment.common.R;
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java
new file mode 100644
index 0000000..a4142a4
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 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.dialer.searchfragment.nearbyplaces;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.database.MergeCursor;
+import android.support.annotation.Nullable;
+import com.android.dialer.searchfragment.common.SearchCursor;
+
+/** {@link SearchCursor} implementation for displaying on nearby places. */
+final class NearbyPlacesCursor extends MergeCursor implements SearchCursor {
+
+  private final Cursor nearbyPlacesCursor;
+
+  public static NearbyPlacesCursor newInstnace(Context context, Cursor nearbyPlacesCursor) {
+    MatrixCursor headerCursor = new MatrixCursor(HEADER_PROJECTION);
+    headerCursor.addRow(new String[] {context.getString(R.string.nearby_places)});
+    return new NearbyPlacesCursor(new Cursor[] {headerCursor, nearbyPlacesCursor});
+  }
+
+  private NearbyPlacesCursor(Cursor[] cursors) {
+    super(cursors);
+    nearbyPlacesCursor = cursors[1];
+  }
+
+  @Override
+  public boolean isHeader() {
+    return isFirst();
+  }
+
+  @Override
+  public boolean updateQuery(@Nullable String query) {
+    // When the query changes, a new network request is made for nearby places. Meaning this cursor
+    // will be closed and another created, so return false.
+    return false;
+  }
+
+  @Override
+  public int getCount() {
+    // If we don't have any contents, we don't want to show the header
+    if (nearbyPlacesCursor == null || nearbyPlacesCursor.isClosed()) {
+      return 0;
+    }
+
+    int count = nearbyPlacesCursor.getCount();
+    return count == 0 ? 0 : count + 1;
+  }
+}
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
index 9f3193e..6807a6e 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.content.CursorLoader;
+import android.database.Cursor;
 import android.net.Uri;
 import android.provider.ContactsContract;
 import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
@@ -32,6 +33,11 @@
     super(context, getContentUri(context, query), Projections.PHONE_PROJECTION, null, null, null);
   }
 
+  @Override
+  public Cursor loadInBackground() {
+    return NearbyPlacesCursor.newInstnace(getContext(), super.loadInBackground());
+  }
+
   private static Uri getContentUri(Context context, String query) {
     return PhoneDirectoryExtenderAccessor.get(context)
         .getContentUri()
diff --git a/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml b/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml
new file mode 100644
index 0000000..e52f531
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml
@@ -0,0 +1,16 @@
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<manifest  package="com.android.dialer.searchfragment.remote"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
new file mode 100644
index 0000000..5fb12d3
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2017 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.dialer.searchfragment.remote;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.searchfragment.common.Projections;
+import com.android.dialer.searchfragment.common.QueryBoldingUtil;
+import com.android.dialer.searchfragment.common.R;
+import com.android.dialer.searchfragment.common.SearchCursor;
+import com.android.dialer.telecom.TelecomUtil;
+
+/** ViewHolder for a nearby place row. */
+public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
+    implements View.OnClickListener {
+
+  private final Context context;
+  private final TextView nameView;
+  private final TextView numberView;
+  private final QuickContactBadge photo;
+
+  private String number;
+
+  public RemoteContactViewHolder(View view) {
+    super(view);
+    view.setOnClickListener(this);
+    photo = view.findViewById(R.id.photo);
+    nameView = view.findViewById(R.id.primary);
+    numberView = view.findViewById(R.id.secondary);
+    context = view.getContext();
+  }
+
+  /**
+   * Binds the ViewHolder with a cursor from {@link RemoteContactsCursorLoader} with the data found
+   * at the cursors current position.
+   */
+  public void bind(SearchCursor cursor, String query) {
+    number = cursor.getString(Projections.PHONE_NUMBER);
+    String name = cursor.getString(Projections.PHONE_DISPLAY_NAME);
+    String label = getLabel(context.getResources(), cursor);
+    String secondaryInfo =
+        TextUtils.isEmpty(label)
+            ? number
+            : context.getString(
+                com.android.contacts.common.R.string.call_subject_type_and_number, label, number);
+
+    nameView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name));
+    numberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, secondaryInfo));
+
+    if (shouldShowPhoto(cursor)) {
+      nameView.setVisibility(View.VISIBLE);
+      photo.setVisibility(View.VISIBLE);
+      String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI);
+      ContactPhotoManager.getInstance(context)
+          .loadDialerThumbnailOrPhoto(
+              photo,
+              getContactUri(cursor),
+              cursor.getLong(Projections.PHONE_PHOTO_ID),
+              photoUri == null ? null : Uri.parse(photoUri),
+              name,
+              LetterTileDrawable.TYPE_DEFAULT);
+    } else {
+      nameView.setVisibility(View.GONE);
+      photo.setVisibility(View.INVISIBLE);
+    }
+  }
+
+  // Show the contact photo next to only the first number if a contact has multiple numbers
+  private boolean shouldShowPhoto(SearchCursor cursor) {
+    int currentPosition = cursor.getPosition();
+    String currentLookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+    cursor.moveToPosition(currentPosition - 1);
+
+    if (!cursor.isHeader() && !cursor.isBeforeFirst()) {
+      String previousLookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+      cursor.moveToPosition(currentPosition);
+      return !currentLookupKey.equals(previousLookupKey);
+    }
+    cursor.moveToPosition(currentPosition);
+    return true;
+  }
+
+  // TODO(calderwoodra): unify this into a utility method with CallLogAdapter#getNumberType
+  private static String getLabel(Resources resources, Cursor cursor) {
+    int numberType = cursor.getInt(Projections.PHONE_TYPE);
+    String numberLabel = cursor.getString(Projections.PHONE_LABEL);
+
+    // Returns empty label instead of "custom" if the custom label is empty.
+    if (numberType == Phone.TYPE_CUSTOM && TextUtils.isEmpty(numberLabel)) {
+      return "";
+    }
+    return (String) Phone.getTypeLabel(resources, numberType, numberLabel);
+  }
+
+  private static Uri getContactUri(Cursor cursor) {
+    long contactId = cursor.getLong(Projections.PHONE_ID);
+    String lookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+    return ContactsContract.Contacts.getLookupUri(contactId, lookupKey);
+  }
+
+  @Override
+  public void onClick(View v) {
+    TelecomUtil.placeCall(
+        context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH).build());
+  }
+}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
new file mode 100644
index 0000000..d7c4f38
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2017 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.dialer.searchfragment.remote;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.database.MergeCursor;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import com.android.dialer.common.Assert;
+import com.android.dialer.searchfragment.common.SearchCursor;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader.Directory;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * {@link MergeCursor} used for combining remote directory cursors into one cursor.
+ *
+ * <p>Usually a device with multiple Google accounts will have multiple remote directories returned
+ * by {@link RemoteDirectoriesCursorLoader}, each represented as a {@link Directory}.
+ *
+ * <p>This cursor merges them together with a header at the start of each cursor/list using {@link
+ * Directory#getDisplayName()} as the header text.
+ */
+@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
+public final class RemoteContactsCursor extends MergeCursor implements SearchCursor {
+
+  /**
+   * Returns a single cursor with headers inserted between each non-empty cursor. If all cursors are
+   * empty, null or closed, this method returns null.
+   */
+  @Nullable
+  @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
+  public static RemoteContactsCursor newInstance(
+      Context context, Cursor[] cursors, List<Directory> directories) {
+    Assert.checkArgument(
+        cursors.length == directories.size(), "Directories and cursors must be the same size.");
+    Cursor[] cursorsWithHeaders = insertHeaders(context, cursors, directories);
+    if (cursorsWithHeaders.length > 0) {
+      return new RemoteContactsCursor(cursorsWithHeaders);
+    }
+    return null;
+  }
+
+  private RemoteContactsCursor(Cursor[] cursors) {
+    super(cursors);
+  }
+
+  private static Cursor[] insertHeaders(
+      Context context, Cursor[] cursors, List<Directory> directories) {
+    List<Cursor> cursorList = new ArrayList<>();
+    for (int i = 0; i < cursors.length; i++) {
+      Cursor cursor = cursors[i];
+
+      if (cursor == null || cursor.isClosed()) {
+        continue;
+      }
+
+      Directory directory = directories.get(i);
+      if (cursor.getCount() == 0) {
+        // Since the cursor isn't being merged in, we need to close it here.
+        cursor.close();
+        continue;
+      }
+
+      cursorList.add(createHeaderCursor(context, directory.getDisplayName()));
+      cursorList.add(cursor);
+    }
+    return cursorList.toArray(new Cursor[cursorList.size()]);
+  }
+
+  private static MatrixCursor createHeaderCursor(Context context, String name) {
+    MatrixCursor headerCursor = new MatrixCursor(HEADER_PROJECTION, 1);
+    headerCursor.addRow(new String[] {context.getString(R.string.directory, name)});
+    return headerCursor;
+  }
+
+  /** Returns true if the current position is a header row. */
+  @Override
+  public boolean isHeader() {
+    return !isClosed() && getColumnIndex(HEADER_PROJECTION[HEADER_TEXT_POSITION]) != -1;
+  }
+
+  @Override
+  public boolean updateQuery(@Nullable String query) {
+    // When the query changes, a new network request is made for nearby places. Meaning this cursor
+    // will be closed and another created, so return false.
+    return false;
+  }
+}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
new file mode 100644
index 0000000..771b7f1
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2017 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.dialer.searchfragment.remote;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.annotation.VisibleForTesting;
+import android.text.TextUtils;
+import com.android.dialer.searchfragment.common.Projections;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader.Directory;
+import java.util.List;
+
+/**
+ * Cursor loader to load extended contacts on device.
+ *
+ * <p>This loader performs several database queries in serial and merges the resulting cursors
+ * together into {@link RemoteContactsCursor}. If there are no results, the loader will return a
+ * null cursor.
+ */
+public final class RemoteContactsCursorLoader extends CursorLoader {
+
+  private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
+      Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
+
+  private static final String IGNORE_NUMBER_TOO_LONG_CLAUSE = "length(" + Phone.NUMBER + ") < 1000";
+  private static final String MAX_RESULTS = "20";
+
+  private final String query;
+  private final List<Directory> directories;
+  private final Cursor[] cursors;
+
+  public RemoteContactsCursorLoader(Context context, String query, List<Directory> directories) {
+    super(
+        context,
+        null,
+        Projections.PHONE_PROJECTION,
+        IGNORE_NUMBER_TOO_LONG_CLAUSE,
+        null,
+        Phone.SORT_KEY_PRIMARY);
+    this.query = query;
+    this.directories = directories;
+    cursors = new Cursor[directories.size()];
+  }
+
+  @Override
+  public Cursor loadInBackground() {
+    for (int i = 0; i < directories.size(); i++) {
+      Directory directory = directories.get(i);
+      // Since the on device contacts could be queried as remote directories and we already query
+      // them in SearchContactsCursorLoader, avoid querying them again.
+      // TODO(calderwoodra): It's a happy coincidence that on device contacts don't have directory
+      // names set, leaving this todo to investigate a better way to isolate them from other remote
+      // directories.
+      if (TextUtils.isEmpty(directory.getDisplayName())) {
+        cursors[i] = null;
+        continue;
+      }
+      cursors[i] =
+          getContext()
+              .getContentResolver()
+              .query(
+                  getContentFilterUri(query, directory.getId()),
+                  getProjection(),
+                  getSelection(),
+                  getSelectionArgs(),
+                  getSortOrder());
+    }
+    return RemoteContactsCursor.newInstance(getContext(), cursors, directories);
+  }
+
+  @VisibleForTesting
+  static Uri getContentFilterUri(String query, int directoryId) {
+    Uri baseUri =
+        VERSION.SDK_INT >= VERSION_CODES.N
+            ? ENTERPRISE_CONTENT_FILTER_URI
+            : Phone.CONTENT_FILTER_URI;
+
+    return baseUri
+        .buildUpon()
+        .appendPath(query)
+        .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId))
+        .appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true")
+        .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, MAX_RESULTS)
+        .build();
+  }
+}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java
new file mode 100644
index 0000000..327a62c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java
@@ -0,0 +1,77 @@
+/*
+
+* Copyright (C) 2017 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.dialer.searchfragment.remote;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.provider.ContactsContract;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import com.google.auto.value.AutoValue;
+
+/** CursorLoader to load the list of remote directories on the device. */
+public final class RemoteDirectoriesCursorLoader extends CursorLoader {
+
+  /** Positions of columns in {@code PROJECTIONS}. */
+  private static final int ID = 0;
+
+  private static final int DISPLAY_NAME = 1;
+  private static final int PHOTO_SUPPORT = 2;
+
+  @VisibleForTesting
+  static final String[] PROJECTION = {
+    ContactsContract.Directory._ID,
+    ContactsContract.Directory.DISPLAY_NAME,
+    ContactsContract.Directory.PHOTO_SUPPORT,
+  };
+
+  public RemoteDirectoriesCursorLoader(Context context) {
+    super(context, getContentUri(), PROJECTION, null, null, ContactsContract.Directory._ID);
+  }
+
+  /** @return current cursor row represented as a {@link Directory}. */
+  public static Directory readDirectory(Cursor cursor) {
+    return Directory.create(
+        cursor.getInt(ID), cursor.getString(DISPLAY_NAME), cursor.getInt(PHOTO_SUPPORT) != 0);
+  }
+
+  private static Uri getContentUri() {
+    return VERSION.SDK_INT >= VERSION_CODES.N
+        ? ContactsContract.Directory.ENTERPRISE_CONTENT_URI
+        : ContactsContract.Directory.CONTENT_URI;
+  }
+
+  /** POJO representing the results returned from {@link RemoteDirectoriesCursorLoader}. */
+  @AutoValue
+  public abstract static class Directory {
+    public static Directory create(int id, @Nullable String displayName, boolean supportsPhotos) {
+      return new AutoValue_RemoteDirectoriesCursorLoader_Directory(id, displayName, supportsPhotos);
+    }
+
+    abstract int getId();
+
+    /** Returns a user facing display name of the directory. Null if none exists. */
+    abstract @Nullable String getDisplayName();
+
+    abstract boolean supportsPhotos();
+  }
+}
diff --git a/java/com/android/dialer/searchfragment/remote/res/values/strings.xml b/java/com/android/dialer/searchfragment/remote/res/values/strings.xml
new file mode 100644
index 0000000..beabba1
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/remote/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+  <!-- Label for a list of contacts stored in a seperate directory [CHAR LIMIT=30]-->
+  <string name="directory">Directory <xliff:g example="google.com" id="email">%1$s</xliff:g></string>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/testing/TestSearchCursor.java b/java/com/android/dialer/searchfragment/testing/TestSearchCursor.java
new file mode 100644
index 0000000..9a0b957
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/testing/TestSearchCursor.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2017 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.dialer.searchfragment.testing;
+
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.database.MergeCursor;
+import android.support.annotation.Nullable;
+import com.android.dialer.searchfragment.common.SearchCursor;
+
+/** {@link SearchCursor} implementation useful for testing with a header inserted at position 0. */
+public final class TestSearchCursor extends MergeCursor implements SearchCursor {
+
+  public static TestSearchCursor newInstance(Cursor cursor, String header) {
+    MatrixCursor headerRow = new MatrixCursor(HEADER_PROJECTION);
+    headerRow.addRow(new String[] {header});
+    return new TestSearchCursor(new Cursor[] {headerRow, cursor});
+  }
+
+  private TestSearchCursor(Cursor[] cursors) {
+    super(cursors);
+  }
+
+  @Override
+  public boolean isHeader() {
+    return isFirst();
+  }
+
+  @Override
+  public boolean updateQuery(@Nullable String query) {
+    return false;
+  }
+}
diff --git a/java/com/android/dialer/shortcuts/IconFactory.java b/java/com/android/dialer/shortcuts/IconFactory.java
index 4ec964c..7aad112 100644
--- a/java/com/android/dialer/shortcuts/IconFactory.java
+++ b/java/com/android/dialer/shortcuts/IconFactory.java
@@ -33,8 +33,8 @@
 import android.support.annotation.WorkerThread;
 import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
 import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.dialer.common.Assert;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.util.DrawableConverter;
 import java.io.InputStream;
 
diff --git a/java/com/android/dialer/shortcuts/ShortcutRefresher.java b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
index 120382d..496f3f0 100644
--- a/java/com/android/dialer/shortcuts/ShortcutRefresher.java
+++ b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
@@ -20,21 +20,17 @@
 import android.os.Build;
 import android.support.annotation.MainThread;
 import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
 import com.android.contacts.common.list.ContactEntry;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.AsyncTaskExecutor;
-import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.common.concurrent.FallibleAsyncTask;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutors;
 import java.util.ArrayList;
 import java.util.List;
 
 /** Refreshes launcher shortcuts from UI components using provided list of contacts. */
 public final class ShortcutRefresher {
 
-  private static final AsyncTaskExecutor EXECUTOR = AsyncTaskExecutors.createThreadPoolExecutor();
-
   /** Asynchronously updates launcher shortcuts using the provided list of contacts. */
   @MainThread
   public static void refresh(@NonNull Context context, List<ContactEntry> contacts) {
@@ -49,36 +45,27 @@
       return;
     }
 
-    //noinspection unchecked
-    EXECUTOR.submit(Task.ID, new Task(context), new ArrayList<>(contacts));
+    DialerExecutors.createNonUiTaskBuilder(new RefreshWorker(context))
+        .build()
+        .executeSerial(new ArrayList<>(contacts));
   }
 
-  private static final class Task extends FallibleAsyncTask<List<ContactEntry>, Void, Void> {
-    private static final String ID = "ShortcutRefresher.Task";
-
+  private static final class RefreshWorker implements Worker<List<ContactEntry>, Void> {
     private final Context context;
 
-    Task(Context context) {
+    RefreshWorker(Context context) {
       this.context = context;
     }
 
-    /**
-     * @param params array containing exactly one element, the list of contacts from favorites
-     *     tiles, ordered in tile order.
-     */
-    @SafeVarargs
     @Override
-    @NonNull
-    @WorkerThread
-    protected final Void doInBackgroundFallible(List<ContactEntry>... params) {
-      Assert.isWorkerThread();
+    public Void doInBackground(List<ContactEntry> contacts) {
       LogUtil.enterBlock("ShortcutRefresher.Task.doInBackground");
 
       // Only dynamic shortcuts are maintained from UI components. Pinned shortcuts are maintained
       // by the job scheduler. This is because a pinned contact may not necessarily still be in the
       // favorites tiles, so refreshing it would require an additional database query. We don't want
       // to incur the cost of that extra database query every time the favorites tiles change.
-      new DynamicShortcuts(context, new IconFactory(context)).refresh(params[0]); // Blocking
+      new DynamicShortcuts(context, new IconFactory(context)).refresh(contacts); // Blocking
 
       return null;
     }
diff --git a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
index f2749b2..4efc0ee 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
@@ -30,6 +30,9 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutors;
+import com.android.dialer.databasepopulator.CallLogPopulator;
+import com.android.dialer.databasepopulator.ContactsPopulator;
+import com.android.dialer.databasepopulator.VoicemailPopulator;
 import com.android.dialer.enrichedcall.simulator.EnrichedCallSimulatorActivity;
 import com.android.dialer.persistentlog.PersistentLogger;
 
@@ -89,6 +92,13 @@
               return true;
             });
     subMenu
+        .add("Clean database")
+        .setOnMenuItemClickListener(
+            (itme) -> {
+              cleanDatabase();
+              return true;
+            });
+    subMenu
         .add("Sync Voicemail")
         .setOnMenuItemClickListener(
             (item) -> {
@@ -128,9 +138,21 @@
     new AsyncTask<Void, Void, Void>() {
       @Override
       public Void doInBackground(Void... params) {
-        SimulatorContacts.populateContacts(context);
-        SimulatorCallLog.populateCallLog(context);
-        SimulatorVoicemail.populateVoicemail(context);
+        ContactsPopulator.populateContacts(context);
+        CallLogPopulator.populateCallLog(context);
+        VoicemailPopulator.populateVoicemail(context);
+        return null;
+      }
+    }.execute();
+  }
+
+  private void cleanDatabase() {
+    new AsyncTask<Void, Void, Void>() {
+      @Override
+      public Void doInBackground(Void... params) {
+        ContactsPopulator.deleteAllContacts(context);
+        CallLogPopulator.deleteAllCallLog(context);
+        VoicemailPopulator.deleteAllVoicemail(context);
         return null;
       }
     }.execute();
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index 68ee388..c087439 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -23,7 +23,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-/** Favorites fragment. Contents TBD. TODO */
+/** Favorites fragment. Contents TBD. TODO(calderwoodra) */
 public class SpeedDialFragment extends Fragment {
 
   public static SpeedDialFragment newInstance() {
@@ -38,7 +38,7 @@
   }
 
   public boolean hasFrequents() {
-    // TODO
+    // TODO(calderwoodra)
     return false;
   }
 }
diff --git a/java/com/android/dialer/storage/DeviceProtected.java b/java/com/android/dialer/storage/DeviceProtected.java
new file mode 100644
index 0000000..862259a
--- /dev/null
+++ b/java/com/android/dialer/storage/DeviceProtected.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.dialer.storage;
+
+import javax.inject.Qualifier;
+
+/** Annotation for retrieving device protected storage objects. */
+@Qualifier
+public @interface DeviceProtected {}
diff --git a/java/com/android/dialer/storage/StorageComponent.java b/java/com/android/dialer/storage/StorageComponent.java
new file mode 100644
index 0000000..51afea7
--- /dev/null
+++ b/java/com/android/dialer/storage/StorageComponent.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 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.dialer.storage;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import com.android.dialer.inject.HasRootComponent;
+import dagger.Subcomponent;
+
+/** Dagger component for storage. */
+@Subcomponent
+public abstract class StorageComponent {
+
+  public abstract @DeviceProtected SharedPreferences deviceProtectedSharedPreferences();
+
+  public static StorageComponent get(Context context) {
+    return ((StorageComponent.HasComponent)
+            ((HasRootComponent) context.getApplicationContext()).component())
+        .storageComponent();
+  }
+
+  /** Used to refer to the root application component. */
+  public interface HasComponent {
+    StorageComponent storageComponent();
+  }
+}
diff --git a/java/com/android/dialer/storage/StorageModule.java b/java/com/android/dialer/storage/StorageModule.java
new file mode 100644
index 0000000..8c97980
--- /dev/null
+++ b/java/com/android/dialer/storage/StorageModule.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2017 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.dialer.storage;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.support.v4.content.ContextCompat;
+import com.android.dialer.inject.ApplicationContext;
+import dagger.Module;
+import dagger.Provides;
+import javax.inject.Singleton;
+
+/** Module for the storage component. */
+@Module
+public class StorageModule {
+
+  @Provides
+  @Singleton
+  @DeviceProtected
+  static SharedPreferences provideDeviceProtectedSharedPreferences(
+      @ApplicationContext Context appContext) {
+    // #createDeviceProtectedStorageContext returns a new context each time, so we cache the shared
+    // preferences object in order to avoid accessing disk for every operation.
+    Context deviceProtectedContext = ContextCompat.createDeviceProtectedStorageContext(appContext);
+
+    // ContextCompat.createDeviceProtectedStorageContext(context) returns null on pre-N, thus fall
+    // back to regular default shared preference for pre-N devices since devices protected context
+    // is not available.
+    return PreferenceManager.getDefaultSharedPreferences(
+        deviceProtectedContext != null ? deviceProtectedContext : appContext);
+  }
+}
diff --git a/java/com/android/dialer/strictmode/DialerStrictMode.java b/java/com/android/dialer/strictmode/DialerStrictMode.java
new file mode 100644
index 0000000..5ce2ad6
--- /dev/null
+++ b/java/com/android/dialer/strictmode/DialerStrictMode.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2017 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.dialer.strictmode;
+
+import android.app.Application;
+import android.content.Context;
+import android.os.Looper;
+import android.os.StrictMode;
+import android.os.StrictMode.ThreadPolicy;
+import android.os.StrictMode.VmPolicy;
+import android.preference.PreferenceManager;
+import com.android.dialer.buildtype.BuildType;
+import com.android.dialer.util.DialerUtils;
+
+/** Enables strict mode for the application, and provides means of temporarily disabling it. */
+public final class DialerStrictMode {
+
+  /** Initializes strict mode on application start. */
+  public static void onApplicationCreate(Application application) {
+    warmupSharedPrefs(application);
+    enableDeathPenalty();
+  }
+
+  /**
+   * We frequently access shared preferences on the main thread, which causes strict mode
+   * violations. When strict mode is allowed, warm up the shared preferences so that later uses of
+   * shared preferences access the in-memory versions and we don't have to bypass strict mode at
+   * every point in the application where shared preferences are accessed.
+   */
+  private static void warmupSharedPrefs(Application application) {
+    if (isStrictModeAllowed()) {
+      // From credential-encrypted (CE) storage, i.e.:
+      //    /data/data/com.google.android.dialer/shared_prefs
+
+      // com.google.android.dialer_preferences.xml
+      PreferenceManager.getDefaultSharedPreferences(application);
+
+      // com.google.android.dialer.xml
+      application.getSharedPreferences(application.getPackageName(), Context.MODE_PRIVATE);
+
+      // From device-encrypted (DE) storage, i.e.:
+      //   /data/user_de/0/com.android.dialer/shared_prefs/
+
+      // com.google.android.dialer_preferences.xml
+      DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(application);
+    }
+  }
+
+  /**
+   * Disables the strict mode death penalty. If strict mode is enabled for the build, warnings are
+   * printed instead of the application crashing.
+   *
+   * <p>You should typically do this only temporarily and restore the death penalty in a finally
+   * block using {@link #enableDeathPenalty()}.
+   *
+   * <p>The thread policy is only mutated if this is called from the main thread.
+   */
+  public static void disableDeathPenalty() {
+    if (isStrictModeAllowed()) {
+      if (onMainThread()) {
+        StrictMode.setThreadPolicy(threadPolicyTemplate().build());
+      }
+      StrictMode.setVmPolicy(vmPolicyTemplate().build());
+    }
+  }
+
+  /**
+   * Restore the death penalty. This should typically be called in a finally block after calling
+   * {@link #disableDeathPenalty()}.
+   *
+   * <p>The thread policy is only mutated if this is called from the main thread.
+   */
+  public static void enableDeathPenalty() {
+    if (isStrictModeAllowed()) {
+      if (onMainThread()) {
+        StrictMode.setThreadPolicy(threadPolicyTemplate().penaltyDeath().build());
+      }
+      StrictMode.setVmPolicy(vmPolicyTemplate().penaltyDeath().build());
+    }
+  }
+
+  private static ThreadPolicy.Builder threadPolicyTemplate() {
+    return new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog();
+  }
+
+  private static VmPolicy.Builder vmPolicyTemplate() {
+    return new StrictMode.VmPolicy.Builder().detectAll().penaltyLog();
+  }
+
+  private static boolean isStrictModeAllowed() {
+    return BuildType.get() == BuildType.BUGFOOD;
+  }
+
+  private static boolean onMainThread() {
+    return Looper.getMainLooper().equals(Looper.myLooper());
+  }
+
+  /** Functional interface intended to be used with {@link #bypass(Provider)}. */
+  public interface Provider<T> {
+    T get();
+  }
+
+  /**
+   * Convenience method for disabling and enabling the death penalty using lambdas.
+   *
+   * <p>For example:
+   *
+   * <p><code>
+   *   Value foo = DialerStrictMode.bypass(() -> doDiskAccessOnMainThreadReturningValue());
+   * </code>
+   *
+   * <p>The thread policy is only mutated if this is called from the main thread.
+   */
+  public static <T> T bypass(Provider<T> provider) {
+    disableDeathPenalty();
+    try {
+      return provider.get();
+    } finally {
+      enableDeathPenalty();
+    }
+  }
+
+  /**
+   * Convenience method for disabling and enabling the death penalty using lambdas.
+   *
+   * <p>For example:
+   *
+   * <p><code>
+   *   DialerStrictMode.bypass(() -> doDiskAccessOnMainThread());
+   * </code>
+   */
+  public static void bypass(Runnable runnable) {
+    disableDeathPenalty();
+    try {
+      runnable.run();
+    } finally {
+      enableDeathPenalty();
+    }
+  }
+}
diff --git a/java/com/android/dialer/theme/res/values-af/strings.xml b/java/com/android/dialer/theme/res/values-af/strings.xml
index 9681aee..17e6cea 100644
--- a/java/com/android/dialer/theme/res/values-af/strings.xml
+++ b/java/com/android/dialer/theme/res/values-af/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefoonhokkie"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Foon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratoestemming is geaktiveer"</string>
     <string name="video_call" msgid="8914878391104612532">"Video-oproep"</string>
     <string name="call" msgid="3699617769606114168">"Bel"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-am/strings.xml b/java/com/android/dialer/theme/res/values-am/strings.xml
index 0bbcc02..5b0b2fd 100644
--- a/java/com/android/dialer/theme/res/values-am/strings.xml
+++ b/java/com/android/dialer/theme/res/values-am/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"የሕዝብ ስልክ"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ስልክ"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"የካሜራ ፈቃድ ነቅቷል"</string>
     <string name="video_call" msgid="8914878391104612532">"የቪዲዮ ጥሪ"</string>
     <string name="call" msgid="3699617769606114168">"ደውል"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ar/strings.xml b/java/com/android/dialer/theme/res/values-ar/strings.xml
index c474c6e..ea3468e 100644
--- a/java/com/android/dialer/theme/res/values-ar/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ar/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"هاتف يعمل بالعملة"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"الهاتف"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"تم تمكين إذن الكاميرا"</string>
     <string name="video_call" msgid="8914878391104612532">"مكالمة فيديو"</string>
     <string name="call" msgid="3699617769606114168">"اتصال"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-az/strings.xml b/java/com/android/dialer/theme/res/values-az/strings.xml
index f3e7a01..91ead1b 100644
--- a/java/com/android/dialer/theme/res/values-az/strings.xml
+++ b/java/com/android/dialer/theme/res/values-az/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera icazəsi aktiv edildi"</string>
     <string name="video_call" msgid="8914878391104612532">"Video zəng"</string>
     <string name="call" msgid="3699617769606114168">"Zəng edin"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
index e1a26fa..a1e5965 100644
--- a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Omogućena je dozvola za kameru"</string>
     <string name="video_call" msgid="8914878391104612532">"Uputi video poziv"</string>
     <string name="call" msgid="3699617769606114168">"Pozovi"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-be/strings.xml b/java/com/android/dialer/theme/res/values-be/strings.xml
index 305f608..881aa7f 100644
--- a/java/com/android/dialer/theme/res/values-be/strings.xml
+++ b/java/com/android/dialer/theme/res/values-be/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Таксафон"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Тэлефон"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Уключаны дазвол на выкарыстанне камеры"</string>
     <string name="video_call" msgid="8914878391104612532">"Відэавыклік"</string>
     <string name="call" msgid="3699617769606114168">"Выклікаць"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-bg/strings.xml b/java/com/android/dialer/theme/res/values-bg/strings.xml
index 77c8086..debc238 100644
--- a/java/com/android/dialer/theme/res/values-bg/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bg/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Обществен телефон"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Активирано бе разрешението за камерата"</string>
     <string name="video_call" msgid="8914878391104612532">"Видеообаждане"</string>
     <string name="call" msgid="3699617769606114168">"Обаждане"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-bn/strings.xml b/java/com/android/dialer/theme/res/values-bn/strings.xml
index 1e13496..806ee8e 100644
--- a/java/com/android/dialer/theme/res/values-bn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bn/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"পে ফোন"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ফোন"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"ক্যামেরার অনুমতি সক্ষম করা হয়েছে"</string>
     <string name="video_call" msgid="8914878391104612532">"ভিডিও কল"</string>
     <string name="call" msgid="3699617769606114168">"কল করুন"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-bs/strings.xml b/java/com/android/dialer/theme/res/values-bs/strings.xml
index 051e4e9..bed71a2 100644
--- a/java/com/android/dialer/theme/res/values-bs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bs/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Dozvola za kameru je omogućena"</string>
     <string name="video_call" msgid="8914878391104612532">"Videopoziv"</string>
     <string name="call" msgid="3699617769606114168">"Pozovi"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ca/strings.xml b/java/com/android/dialer/theme/res/values-ca/strings.xml
index ce3bd43..5140ca5 100644
--- a/java/com/android/dialer/theme/res/values-ca/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ca/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telèfon públic"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telèfon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"S\'ha activat el permís d\'accés a la càmera"</string>
     <string name="video_call" msgid="8914878391104612532">"Videotrucada"</string>
     <string name="call" msgid="3699617769606114168">"Truca"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-cs/strings.xml b/java/com/android/dialer/theme/res/values-cs/strings.xml
index 235260f..a951fe7 100644
--- a/java/com/android/dialer/theme/res/values-cs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-cs/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonní automat"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Byl povolen přístup k fotoaparátu"</string>
     <string name="video_call" msgid="8914878391104612532">"Zahájit videohovor"</string>
     <string name="call" msgid="3699617769606114168">"Volat"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-da/strings.xml b/java/com/android/dialer/theme/res/values-da/strings.xml
index 5525744..54f1850 100644
--- a/java/com/android/dialer/theme/res/values-da/strings.xml
+++ b/java/com/android/dialer/theme/res/values-da/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Mønttelefon"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Opkald"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratilladelse er aktiveret"</string>
     <string name="video_call" msgid="8914878391104612532">"Videoopkald"</string>
     <string name="call" msgid="3699617769606114168">"Ring op"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-de/strings.xml b/java/com/android/dialer/theme/res/values-de/strings.xml
index b155577..0c97581 100644
--- a/java/com/android/dialer/theme/res/values-de/strings.xml
+++ b/java/com/android/dialer/theme/res/values-de/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Münztelefon"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Berechtigung für Kamera aktiviert"</string>
     <string name="video_call" msgid="8914878391104612532">"Videoanruf"</string>
     <string name="call" msgid="3699617769606114168">"Anrufen"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-el/strings.xml b/java/com/android/dialer/theme/res/values-el/strings.xml
index 156b7cd..1c34a69 100644
--- a/java/com/android/dialer/theme/res/values-el/strings.xml
+++ b/java/com/android/dialer/theme/res/values-el/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Τηλέφωνο με χρέωση"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Τηλέφωνο"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Το δικαίωμα χρήσης της κάμερας έχει ενεργοποιηθεί"</string>
     <string name="video_call" msgid="8914878391104612532">"Βιντεοκλήση"</string>
     <string name="call" msgid="3699617769606114168">"Κλήση"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
index 36de9e5..136d7df 100644
--- a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
     <string name="video_call" msgid="8914878391104612532">"Video call"</string>
     <string name="call" msgid="3699617769606114168">"Call"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
index 36de9e5..136d7df 100644
--- a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
     <string name="video_call" msgid="8914878391104612532">"Video call"</string>
     <string name="call" msgid="3699617769606114168">"Call"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
index 36de9e5..136d7df 100644
--- a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Camera permission enabled"</string>
     <string name="video_call" msgid="8914878391104612532">"Video call"</string>
     <string name="call" msgid="3699617769606114168">"Call"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
index be2eac8..90837b7 100644
--- a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Se activó el permiso de la cámara"</string>
     <string name="video_call" msgid="8914878391104612532">"Videollamada"</string>
     <string name="call" msgid="3699617769606114168">"Llamar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-es/strings.xml b/java/com/android/dialer/theme/res/values-es/strings.xml
index c63374c..c2d3ee3 100644
--- a/java/com/android/dialer/theme/res/values-es/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Se ha habilitado el acceso a la cámara"</string>
     <string name="video_call" msgid="8914878391104612532">"Videollamada"</string>
     <string name="call" msgid="3699617769606114168">"Llamar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-et/strings.xml b/java/com/android/dialer/theme/res/values-et/strings.xml
index 1f76a4b..269fa64 100644
--- a/java/com/android/dialer/theme/res/values-et/strings.xml
+++ b/java/com/android/dialer/theme/res/values-et/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefoniautomaat"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kaameraluba on antud"</string>
     <string name="video_call" msgid="8914878391104612532">"Videokõne"</string>
     <string name="call" msgid="3699617769606114168">"Helista"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-eu/strings.xml b/java/com/android/dialer/theme/res/values-eu/strings.xml
index 8b28467..14345f0 100644
--- a/java/com/android/dialer/theme/res/values-eu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-eu/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefono publikoa"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonoa"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera atzitzeko baimena eman da"</string>
     <string name="video_call" msgid="8914878391104612532">"Bideo-deia"</string>
     <string name="call" msgid="3699617769606114168">"Deitu"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-fa/strings.xml b/java/com/android/dialer/theme/res/values-fa/strings.xml
index 340adb1..f751f34 100644
--- a/java/com/android/dialer/theme/res/values-fa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fa/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%d</xliff:g> <xliff:g id="UNKNOWN">%s</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"تلفن عمومی"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"تلفن"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"مجوز دوربین فعال شد"</string>
     <string name="video_call" msgid="8914878391104612532">"تماس ویدیویی"</string>
     <string name="call" msgid="3699617769606114168">"تماس"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-fi/strings.xml b/java/com/android/dialer/theme/res/values-fi/strings.xml
index 52cab8a..0c09d7f 100644
--- a/java/com/android/dialer/theme/res/values-fi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fi/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Maksupuhelin"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Puhelin"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kameran käyttöoikeus myönnettiin"</string>
     <string name="video_call" msgid="8914878391104612532">"Videopuhelu"</string>
     <string name="call" msgid="3699617769606114168">"Soita"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
index b1d0ff1..7d901ca 100644
--- a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Autorisation d\'accès à l\'appareil photo activée"</string>
     <string name="video_call" msgid="8914878391104612532">"Appel vidéo"</string>
     <string name="call" msgid="3699617769606114168">"Appeler"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-fr/strings.xml b/java/com/android/dialer/theme/res/values-fr/strings.xml
index b1d0ff1..1c30ef1 100644
--- a/java/com/android/dialer/theme/res/values-fr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Autorisation d\'accès à l\'appareil photo accordée"</string>
     <string name="video_call" msgid="8914878391104612532">"Appel vidéo"</string>
     <string name="call" msgid="3699617769606114168">"Appeler"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-gl/strings.xml b/java/com/android/dialer/theme/res/values-gl/strings.xml
index 1788843..083d395 100644
--- a/java/com/android/dialer/theme/res/values-gl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gl/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Activouse o permiso de acceso á cámara"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
     <string name="call" msgid="3699617769606114168">"Chamar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-gu/strings.xml b/java/com/android/dialer/theme/res/values-gu/strings.xml
index 8de6e2a..4baba69 100644
--- a/java/com/android/dialer/theme/res/values-gu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gu/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"પેફોન"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ફોન"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"કૅમેરાની પરવાનગી સક્ષમ કરી"</string>
     <string name="video_call" msgid="8914878391104612532">"વિડિઓ કૉલ"</string>
     <string name="call" msgid="3699617769606114168">"કૉલ કરો"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-hi/strings.xml b/java/com/android/dialer/theme/res/values-hi/strings.xml
index fbc56e9..758be5d 100644
--- a/java/com/android/dialer/theme/res/values-hi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hi/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"पे-फ़ोन"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"फ़ोन"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"कैमरे की अनुमति सक्षम की गई"</string>
     <string name="video_call" msgid="8914878391104612532">"वीडियो कॉल"</string>
     <string name="call" msgid="3699617769606114168">"कॉल करें"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-hr/strings.xml b/java/com/android/dialer/theme/res/values-hr/strings.xml
index 73c6542..89a5aee 100644
--- a/java/com/android/dialer/theme/res/values-hr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hr/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Javna telefonska govornica"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Omogućen je pristup kameri"</string>
     <string name="video_call" msgid="8914878391104612532">"Videopoziv"</string>
     <string name="call" msgid="3699617769606114168">"Pozovi"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-hu/strings.xml b/java/com/android/dialer/theme/res/values-hu/strings.xml
index d70977d..30051d4 100644
--- a/java/com/android/dialer/theme/res/values-hu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hu/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Nyilvános telefon"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kameraengedély megadva"</string>
     <string name="video_call" msgid="8914878391104612532">"Videohívás"</string>
     <string name="call" msgid="3699617769606114168">"Hívás"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-hy/strings.xml b/java/com/android/dialer/theme/res/values-hy/strings.xml
index 5f53c9f..6577dab 100644
--- a/java/com/android/dialer/theme/res/values-hy/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hy/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Բջջային տերմինալ"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Հեռախոս"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Տեսախցիկից օգտվելու թույլտվությունը տրամադրված է"</string>
     <string name="video_call" msgid="8914878391104612532">"Տեսազանգ"</string>
     <string name="call" msgid="3699617769606114168">"Զանգել"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-in/strings.xml b/java/com/android/dialer/theme/res/values-in/strings.xml
index 193c6e9..d2d72b8 100644
--- a/java/com/android/dialer/theme/res/values-in/strings.xml
+++ b/java/com/android/dialer/theme/res/values-in/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telepon Umum"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telepon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Izin kamera diaktifkan"</string>
     <string name="video_call" msgid="8914878391104612532">"Video call"</string>
     <string name="call" msgid="3699617769606114168">"Telepon"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-is/strings.xml b/java/com/android/dialer/theme/res/values-is/strings.xml
index 6a67ad9..ff3faf8 100644
--- a/java/com/android/dialer/theme/res/values-is/strings.xml
+++ b/java/com/android/dialer/theme/res/values-is/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Símasjálfsali"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Sími"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Myndavélarheimild virk"</string>
     <string name="video_call" msgid="8914878391104612532">"Hringja myndsímtal"</string>
     <string name="call" msgid="3699617769606114168">"Hringja"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-it/strings.xml b/java/com/android/dialer/theme/res/values-it/strings.xml
index 46c6d56..4b26288 100644
--- a/java/com/android/dialer/theme/res/values-it/strings.xml
+++ b/java/com/android/dialer/theme/res/values-it/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Cabina telefonica"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefono"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Autorizzazioni della fotocamera attivate"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochiamata"</string>
     <string name="call" msgid="3699617769606114168">"Chiama"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-iw/strings.xml b/java/com/android/dialer/theme/res/values-iw/strings.xml
index 1bc8cbb..09abf2e 100644
--- a/java/com/android/dialer/theme/res/values-iw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-iw/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"טלפון ציבורי"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"טלפון"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"הרשאת הגישה למצלמה הופעלה"</string>
     <string name="video_call" msgid="8914878391104612532">"שיחת וידאו"</string>
     <string name="call" msgid="3699617769606114168">"התקשר"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ja/strings.xml b/java/com/android/dialer/theme/res/values-ja/strings.xml
index 839495d..551d679 100644
--- a/java/com/android/dialer/theme/res/values-ja/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ja/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g>（<xliff:g id="ID">%d</xliff:g>）"</string>
     <string name="payphone" msgid="7106361320283710387">"公衆電話"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"カメラへのアクセスを自動で許可しました"</string>
     <string name="video_call" msgid="8914878391104612532">"ビデオハングアウト"</string>
     <string name="call" msgid="3699617769606114168">"発信"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ka/strings.xml b/java/com/android/dialer/theme/res/values-ka/strings.xml
index 37fdabd..ab22595 100644
--- a/java/com/android/dialer/theme/res/values-ka/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ka/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"გადახდის ტელეფონი"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ტელეფონი"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"კამერაზე წვდომის ნებართვა ჩართულია"</string>
     <string name="video_call" msgid="8914878391104612532">"ვიდეოზარი"</string>
     <string name="call" msgid="3699617769606114168">"დარეკვა"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-kk/strings.xml b/java/com/android/dialer/theme/res/values-kk/strings.xml
index 1b6a516..d3a1b7b 100644
--- a/java/com/android/dialer/theme/res/values-kk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kk/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Автомат-телефон"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Камера рұқсаты қосылды"</string>
     <string name="video_call" msgid="8914878391104612532">"Бейне қоңырау"</string>
     <string name="call" msgid="3699617769606114168">"Қоңырау шалу"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-km/strings.xml b/java/com/android/dialer/theme/res/values-km/strings.xml
index cfc2010..900f1d6 100644
--- a/java/com/android/dialer/theme/res/values-km/strings.xml
+++ b/java/com/android/dialer/theme/res/values-km/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ទូរស័ព្ទសាធារណៈ"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ទូរស័ព្ទ"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"បានបើក​ការអនុញ្ញាត​កាមេរ៉ា"</string>
     <string name="video_call" msgid="8914878391104612532">"ការ​ហៅវីដេអូ"</string>
     <string name="call" msgid="3699617769606114168">"ហៅ​ទូរសព្ទ"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-kn/strings.xml b/java/com/android/dialer/theme/res/values-kn/strings.xml
index dffa10e0..ab9f816 100644
--- a/java/com/android/dialer/theme/res/values-kn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kn/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ಪೇಫೋನ್"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ಫೋನ್"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"ಕ್ಯಾಮರಾ ಅನುಮತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="video_call" msgid="8914878391104612532">"ವೀಡಿಯೊ ಕರೆ"</string>
     <string name="call" msgid="3699617769606114168">"ಕರೆಮಾಡಿ"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ko/strings.xml b/java/com/android/dialer/theme/res/values-ko/strings.xml
index ff6710c..b5ac556 100644
--- a/java/com/android/dialer/theme/res/values-ko/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ko/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"공중전화"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"휴대전화"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"카메라 권한 사용 가능"</string>
     <string name="video_call" msgid="8914878391104612532">"화상 통화"</string>
     <string name="call" msgid="3699617769606114168">"전화"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ky/strings.xml b/java/com/android/dialer/theme/res/values-ky/strings.xml
index 036c270..0a9bec2 100644
--- a/java/com/android/dialer/theme/res/values-ky/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ky/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Камеранын уруксаты иштетилди"</string>
     <string name="video_call" msgid="8914878391104612532">"Видео чалуу"</string>
     <string name="call" msgid="3699617769606114168">"Чалуу"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-lo/strings.xml b/java/com/android/dialer/theme/res/values-lo/strings.xml
index 9204a02..d33d43e 100644
--- a/java/com/android/dialer/theme/res/values-lo/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lo/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ຕູ້​ໂທ​ລະ​ສັບ​ສາ​ທາ​ລະ​ນະ"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ໂທລະສັບ"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"ເປີດໃຊ້ສິດອະນຸຍາດກ້ອງຖ່າຍຮູບແລ້ວ"</string>
     <string name="video_call" msgid="8914878391104612532">"ໂທວິດີໂອ"</string>
     <string name="call" msgid="3699617769606114168">"ໂທ"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-lt/strings.xml b/java/com/android/dialer/theme/res/values-lt/strings.xml
index be14536..fdf31e2 100644
--- a/java/com/android/dialer/theme/res/values-lt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lt/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%d</xliff:g> <xliff:g id="UNKNOWN">%s</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Taksofonas"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonas"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Fotoaparato leidimas įgalintas"</string>
     <string name="video_call" msgid="8914878391104612532">"Vaizdo skambutis"</string>
     <string name="call" msgid="3699617769606114168">"Skambinti"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-lv/strings.xml b/java/com/android/dialer/theme/res/values-lv/strings.xml
index 35b742f..031c5bd 100644
--- a/java/com/android/dialer/theme/res/values-lv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lv/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Maksas tālrunis"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Tālrunis"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kameras atļauja iespējota"</string>
     <string name="video_call" msgid="8914878391104612532">"Videozvans"</string>
     <string name="call" msgid="3699617769606114168">"Zvanīt"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-mk/strings.xml b/java/com/android/dialer/theme/res/values-mk/strings.xml
index 3975ae5..d89d12e 100644
--- a/java/com/android/dialer/theme/res/values-mk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mk/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Говорница"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Дозволата за камера е овозможена"</string>
     <string name="video_call" msgid="8914878391104612532">"Воспоставете видеоповик"</string>
     <string name="call" msgid="3699617769606114168">"Повикајте"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ml/strings.xml b/java/com/android/dialer/theme/res/values-ml/strings.xml
index 146bfdf..f02ceeb 100644
--- a/java/com/android/dialer/theme/res/values-ml/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ml/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ഫോണ്‍"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"ക്യാമറ അനുമതി നൽകി"</string>
     <string name="video_call" msgid="8914878391104612532">"വീഡിയോ കോള്‍"</string>
     <string name="call" msgid="3699617769606114168">"വിളിക്കുക"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-mn/strings.xml b/java/com/android/dialer/theme/res/values-mn/strings.xml
index 0e27e8d..7a07e5d 100644
--- a/java/com/android/dialer/theme/res/values-mn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mn/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Утас"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Камерын зөвшөөрөл идэвхжсэн"</string>
     <string name="video_call" msgid="8914878391104612532">"Видео дуудлага"</string>
     <string name="call" msgid="3699617769606114168">"Залгах"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-mr/strings.xml b/java/com/android/dialer/theme/res/values-mr/strings.xml
index 7fa6f26..eeb9afa 100644
--- a/java/com/android/dialer/theme/res/values-mr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mr/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"सार्वजनिक फोन"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"कॅमेरा परवानगी सक्षम केली"</string>
     <string name="video_call" msgid="8914878391104612532">"व्हिडिओ कॉल"</string>
     <string name="call" msgid="3699617769606114168">"कॉल करा"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ms/strings.xml b/java/com/android/dialer/theme/res/values-ms/strings.xml
index 18df912..2e424fd 100644
--- a/java/com/android/dialer/theme/res/values-ms/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ms/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefon Awam"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kebenaran kamera didayakan"</string>
     <string name="video_call" msgid="8914878391104612532">"Panggilan video"</string>
     <string name="call" msgid="3699617769606114168">"Panggil"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-my/strings.xml b/java/com/android/dialer/theme/res/values-my/strings.xml
index 67b9b28..97b871b 100644
--- a/java/com/android/dialer/theme/res/values-my/strings.xml
+++ b/java/com/android/dialer/theme/res/values-my/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ငွေပေးရသည့်ဖုန်း"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ဖုန်း"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"ကင်မရာအသုံးပြုခွင့် ဖွင့်ထားပါသည်"</string>
     <string name="video_call" msgid="8914878391104612532">"ဗီဒီယိုခေါ်ဆိုမှု"</string>
     <string name="call" msgid="3699617769606114168">"ခေါ်ဆိုရန်"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-nb/strings.xml b/java/com/android/dialer/theme/res/values-nb/strings.xml
index 1a6e593..7587b7e 100644
--- a/java/com/android/dialer/theme/res/values-nb/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nb/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratillatelsen er aktivert"</string>
     <string name="video_call" msgid="8914878391104612532">"Videosamtale"</string>
     <string name="call" msgid="3699617769606114168">"Ring"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ne/strings.xml b/java/com/android/dialer/theme/res/values-ne/strings.xml
index eb73de9..af1ad5e 100644
--- a/java/com/android/dialer/theme/res/values-ne/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ne/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"पेफोन"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"क्यामेरा सम्बन्धी अनुमतिहरूलाई सक्षम पारियो"</string>
     <string name="video_call" msgid="8914878391104612532">"भिडियो कल"</string>
     <string name="call" msgid="3699617769606114168">"कल गर्नुहोस्"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-nl/strings.xml b/java/com/android/dialer/theme/res/values-nl/strings.xml
index 36e904c..ab51c97 100644
--- a/java/com/android/dialer/theme/res/values-nl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nl/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefooncel"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Camerarechten ingeschakeld"</string>
     <string name="video_call" msgid="8914878391104612532">"Videogesprek"</string>
     <string name="call" msgid="3699617769606114168">"Bellen"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-no/strings.xml b/java/com/android/dialer/theme/res/values-no/strings.xml
index 1a6e593..7587b7e 100644
--- a/java/com/android/dialer/theme/res/values-no/strings.xml
+++ b/java/com/android/dialer/theme/res/values-no/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kameratillatelsen er aktivert"</string>
     <string name="video_call" msgid="8914878391104612532">"Videosamtale"</string>
     <string name="call" msgid="3699617769606114168">"Ring"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pa/strings.xml b/java/com/android/dialer/theme/res/values-pa/strings.xml
index af263c8..8784bca 100644
--- a/java/com/android/dialer/theme/res/values-pa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pa/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ਪੇਫੋਨ"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ਫੋਨ"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"ਕੈਮਰਾ ਇਜਾਜ਼ਤ ਨੂੰ ਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
     <string name="video_call" msgid="8914878391104612532">"ਵੀਡੀਓ ਕਾਲ"</string>
     <string name="call" msgid="3699617769606114168">"ਕਾਲ ਕਰੋ"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pl/strings.xml b/java/com/android/dialer/theme/res/values-pl/strings.xml
index a25df0a..246261e 100644
--- a/java/com/android/dialer/theme/res/values-pl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pl/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Automat telefoniczny"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Uprawnienia do korzystania z aparatu zostały włączone"</string>
     <string name="video_call" msgid="8914878391104612532">"Rozmowa wideo"</string>
     <string name="call" msgid="3699617769606114168">"Zadzwoń"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
index 9f44269..c1356d9 100644
--- a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Permissão de câmera ativada"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
     <string name="call" msgid="3699617769606114168">"Ligar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
index 1b77257..2b46e44 100644
--- a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Autorização da câmara ativada"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
     <string name="call" msgid="3699617769606114168">"Telefonar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pt/strings.xml b/java/com/android/dialer/theme/res/values-pt/strings.xml
index 9f44269..c1356d9 100644
--- a/java/com/android/dialer/theme/res/values-pt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Permissão de câmera ativada"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
     <string name="call" msgid="3699617769606114168">"Ligar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ro/strings.xml b/java/com/android/dialer/theme/res/values-ro/strings.xml
index 1cf8c8c..8978e92 100644
--- a/java/com/android/dialer/theme/res/values-ro/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ro/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefon public"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Permisiunea pentru cameră a fost activată."</string>
     <string name="video_call" msgid="8914878391104612532">"Apel video"</string>
     <string name="call" msgid="3699617769606114168">"Apelați"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ru/strings.xml b/java/com/android/dialer/theme/res/values-ru/strings.xml
index 8aa6e8f..a155052 100644
--- a/java/com/android/dialer/theme/res/values-ru/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ru/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Телефон-автомат"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Доступ к камере разрешен"</string>
     <string name="video_call" msgid="8914878391104612532">"Видеовызов"</string>
     <string name="call" msgid="3699617769606114168">"Позвонить"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-si/strings.xml b/java/com/android/dialer/theme/res/values-si/strings.xml
index 04d0468..424a112 100644
--- a/java/com/android/dialer/theme/res/values-si/strings.xml
+++ b/java/com/android/dialer/theme/res/values-si/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"පේෆෝනය"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"දුරකථනය"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"කැමරා අවසර සබල කර ඇත"</string>
     <string name="video_call" msgid="8914878391104612532">"වීඩියෝ ඇමතුම"</string>
     <string name="call" msgid="3699617769606114168">"ඇමතුම"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sk/strings.xml b/java/com/android/dialer/theme/res/values-sk/strings.xml
index 9e56e12..411b85e 100644
--- a/java/com/android/dialer/theme/res/values-sk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sk/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefónny automat"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefón"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Povolenie pre fotoaparát je aktivované"</string>
     <string name="video_call" msgid="8914878391104612532">"Videohovor"</string>
     <string name="call" msgid="3699617769606114168">"Volať"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sl/strings.xml b/java/com/android/dialer/theme/res/values-sl/strings.xml
index 6236535..85a3e2b 100644
--- a/java/com/android/dialer/theme/res/values-sl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sl/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonska govorilnica"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Dovoljenje za dostop do fotoaparata je omogočeno"</string>
     <string name="video_call" msgid="8914878391104612532">"Videoklic"</string>
     <string name="call" msgid="3699617769606114168">"Pokliči"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sq/strings.xml b/java/com/android/dialer/theme/res/values-sq/strings.xml
index 6fecf14..5cbd587 100644
--- a/java/com/android/dialer/theme/res/values-sq/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sq/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefon me pagesë"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoni"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Leja e kamerës është aktivizuar"</string>
     <string name="video_call" msgid="8914878391104612532">"Telefonatë me video"</string>
     <string name="call" msgid="3699617769606114168">"Telefono"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sr/strings.xml b/java/com/android/dialer/theme/res/values-sr/strings.xml
index 8f91054..310da73 100644
--- a/java/com/android/dialer/theme/res/values-sr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sr/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Телефонска говорница"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Омогућена је дозвола за камеру"</string>
     <string name="video_call" msgid="8914878391104612532">"Упути видео позив"</string>
     <string name="call" msgid="3699617769606114168">"Позови"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sv/strings.xml b/java/com/android/dialer/theme/res/values-sv/strings.xml
index f31a378..af8e5f7 100644
--- a/java/com/android/dialer/theme/res/values-sv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sv/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonautomat"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kamerabehörighet har aktiverats"</string>
     <string name="video_call" msgid="8914878391104612532">"Videosamtal"</string>
     <string name="call" msgid="3699617769606114168">"Ring"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sw/strings.xml b/java/com/android/dialer/theme/res/values-sw/strings.xml
index c35d560..31615fe 100644
--- a/java/com/android/dialer/theme/res/values-sw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sw/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Simu ya kulipia"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Simu"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Imewasha ruhusa ya kamera"</string>
     <string name="video_call" msgid="8914878391104612532">"Simu ya video"</string>
     <string name="call" msgid="3699617769606114168">"Piga simu"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ta/strings.xml b/java/com/android/dialer/theme/res/values-ta/strings.xml
index 737e43e..ab15f0b 100644
--- a/java/com/android/dialer/theme/res/values-ta/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ta/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"கட்டணத் தொலைபேசி"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"மொபைல்"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"கேமராவிற்கான அனுமதி இயக்கப்பட்டது"</string>
     <string name="video_call" msgid="8914878391104612532">"வீடியோ அழைப்பு"</string>
     <string name="call" msgid="3699617769606114168">"அழை"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-te/strings.xml b/java/com/android/dialer/theme/res/values-te/strings.xml
index c1a0212..4a6fca1 100644
--- a/java/com/android/dialer/theme/res/values-te/strings.xml
+++ b/java/com/android/dialer/theme/res/values-te/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"పే ఫోన్"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"ఫోన్"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"కెమెరా అనుమతిని ప్రారంభించాము"</string>
     <string name="video_call" msgid="8914878391104612532">"వీడియో కాల్"</string>
     <string name="call" msgid="3699617769606114168">"కాల్ చేయి"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-th/strings.xml b/java/com/android/dialer/theme/res/values-th/strings.xml
index 0df98d9..51db053 100644
--- a/java/com/android/dialer/theme/res/values-th/strings.xml
+++ b/java/com/android/dialer/theme/res/values-th/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"โทรศัพท์สาธารณะ"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"โทรศัพท์"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"ให้สิทธิ์เข้าถึงกล้องถ่ายรูปแล้ว"</string>
     <string name="video_call" msgid="8914878391104612532">"แฮงเอาท์วิดีโอ"</string>
     <string name="call" msgid="3699617769606114168">"โทร"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-tl/strings.xml b/java/com/android/dialer/theme/res/values-tl/strings.xml
index 573b6b8..97f69ec 100644
--- a/java/com/android/dialer/theme/res/values-tl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tl/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telepono"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Na-enable ang pahintulot sa camera"</string>
     <string name="video_call" msgid="8914878391104612532">"Mag-video call"</string>
     <string name="call" msgid="3699617769606114168">"Tawag"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-tr/strings.xml b/java/com/android/dialer/theme/res/values-tr/strings.xml
index 21e2889..b38f067 100644
--- a/java/com/android/dialer/theme/res/values-tr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tr/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Ankesörlü telefon"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kamera izni etkinleştirildi"</string>
     <string name="video_call" msgid="8914878391104612532">"Görüntülü görüşme"</string>
     <string name="call" msgid="3699617769606114168">"Telefon et"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-uk/strings.xml b/java/com/android/dialer/theme/res/values-uk/strings.xml
index dab89df..f070277 100644
--- a/java/com/android/dialer/theme/res/values-uk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uk/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Камері надано дозвіл"</string>
     <string name="video_call" msgid="8914878391104612532">"Відеодзвінок"</string>
     <string name="call" msgid="3699617769606114168">"Виклик"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ur/strings.xml b/java/com/android/dialer/theme/res/values-ur/strings.xml
index 187eb22..e9a4b44 100644
--- a/java/com/android/dialer/theme/res/values-ur/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ur/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"پے فون"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"فون"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"کیمرا کی اجازت فعال ہے"</string>
     <string name="video_call" msgid="8914878391104612532">"ویڈیو کال"</string>
     <string name="call" msgid="3699617769606114168">"کال کریں"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-uz/strings.xml b/java/com/android/dialer/theme/res/values-uz/strings.xml
index 959ca77..2bbaf20 100644
--- a/java/com/android/dialer/theme/res/values-uz/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uz/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Kameraga kirishga ruxsat berildi"</string>
     <string name="video_call" msgid="8914878391104612532">"Video suhbat"</string>
     <string name="call" msgid="3699617769606114168">"Chaqirish"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-vi/strings.xml b/java/com/android/dialer/theme/res/values-vi/strings.xml
index 38bd8ec..fae3180 100644
--- a/java/com/android/dialer/theme/res/values-vi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-vi/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Điện thoại công cộng"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Điện thoại"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Đã bật quyền sử dụng máy ảnh"</string>
     <string name="video_call" msgid="8914878391104612532">"Gọi điện video"</string>
     <string name="call" msgid="3699617769606114168">"Gọi"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
index c80f197..2e60962 100644
--- a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"公用电话"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"电话"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"已启用相机使用权限"</string>
     <string name="video_call" msgid="8914878391104612532">"视频通话"</string>
     <string name="call" msgid="3699617769606114168">"拨打电话"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
index 605089b..7b08024 100644
--- a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"公共電話"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"已啟用相機權限"</string>
     <string name="video_call" msgid="8914878391104612532">"視像通話"</string>
     <string name="call" msgid="3699617769606114168">"通話"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
index 7a5604c..57d7fe2 100644
--- a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"公用電話"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"已啟用相機權限"</string>
     <string name="video_call" msgid="8914878391104612532">"視訊通話"</string>
     <string name="call" msgid="3699617769606114168">"撥號"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-zu/strings.xml b/java/com/android/dialer/theme/res/values-zu/strings.xml
index ae07c45..d0dd728 100644
--- a/java/com/android/dialer/theme/res/values-zu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zu/strings.xml
@@ -21,6 +21,7 @@
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%s</xliff:g> <xliff:g id="ID">%d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Ucingo olufakwa imali"</string>
     <string name="launcherActivityLabel" msgid="9034868428899993166">"Ifoni"</string>
+    <string name="camera_privacy_text" msgid="1318954032109938588">"Imvume yekhamera inikwe amandla"</string>
     <string name="video_call" msgid="8914878391104612532">"Ikholi yevidiyo"</string>
     <string name="call" msgid="3699617769606114168">"Shaya"</string>
 </resources>
diff --git a/java/com/android/dialer/util/DialerUtils.java b/java/com/android/dialer/util/DialerUtils.java
index 63f870e..f38c650 100644
--- a/java/com/android/dialer/util/DialerUtils.java
+++ b/java/com/android/dialer/util/DialerUtils.java
@@ -38,6 +38,7 @@
 import android.widget.Toast;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.storage.StorageComponent;
 import com.android.dialer.telecom.TelecomUtil;
 import java.io.File;
 import java.util.Iterator;
@@ -233,14 +234,9 @@
   public static SharedPreferences getDefaultSharedPreferenceForDeviceProtectedStorageContext(
       @NonNull Context context) {
     Assert.isNotNull(context);
-    Context deviceProtectedContext =
-        ContextCompat.isDeviceProtectedStorage(context)
-            ? context
-            : ContextCompat.createDeviceProtectedStorageContext(context);
-    // ContextCompat.createDeviceProtectedStorageContext(context) returns null on pre-N, thus fall
-    // back to regular default shared preference for pre-N devices since devices protected context
-    // is not available.
-    return PreferenceManager.getDefaultSharedPreferences(
-        deviceProtectedContext != null ? deviceProtectedContext : context);
+    if (ContextCompat.isDeviceProtectedStorage(context)) {
+      return PreferenceManager.getDefaultSharedPreferences(context);
+    }
+    return StorageComponent.get(context.getApplicationContext()).deviceProtectedSharedPreferences();
   }
 }
diff --git a/java/com/android/dialer/util/IntentUtil.java b/java/com/android/dialer/util/IntentUtil.java
index 2f265b5..f453966 100644
--- a/java/com/android/dialer/util/IntentUtil.java
+++ b/java/com/android/dialer/util/IntentUtil.java
@@ -31,7 +31,8 @@
   }
 
   public static Intent getNewContactIntent() {
-    return new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
+    return new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI)
+        .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
   }
 
   public static Intent getNewContactIntent(CharSequence phoneNumber) {
diff --git a/java/com/android/contacts/common/util/UriUtils.java b/java/com/android/dialer/util/UriUtils.java
similarity index 94%
rename from java/com/android/contacts/common/util/UriUtils.java
rename to java/com/android/dialer/util/UriUtils.java
index 4690942..c4308a8 100644
--- a/java/com/android/contacts/common/util/UriUtils.java
+++ b/java/com/android/dialer/util/UriUtils.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.common.util;
+package com.android.dialer.util;
 
 import android.net.Uri;
 import android.provider.ContactsContract;
@@ -23,6 +23,8 @@
 /** Utility methods for dealing with URIs. */
 public class UriUtils {
 
+  private static final String LOOKUP_URI_ENCODED = "encoded";
+
   /** Static helper, not instantiable. */
   private UriUtils() {}
 
@@ -58,7 +60,7 @@
     if (lastPathSegment == null) {
       return false;
     }
-    return lastPathSegment.equals(Constants.LOOKUP_URI_ENCODED);
+    return lastPathSegment.equals(LOOKUP_URI_ENCODED);
   }
 
   /**
diff --git a/java/com/android/dialer/util/res/values-af/strings.xml b/java/com/android/dialer/util/res/values-af/strings.xml
index 3b67807..7457e9b 100644
--- a/java/com/android/dialer/util/res/values-af/strings.xml
+++ b/java/com/android/dialer/util/res/values-af/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Geen program daarvoor op hierdie toestel nie"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"As jy \'n WPS-oproep maak, sal dit jou huidige oproep afsny."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Gaan voort"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-am/strings.xml b/java/com/android/dialer/util/res/values-am/strings.xml
index d3418b4..18fcb56 100644
--- a/java/com/android/dialer/util/res/values-am/strings.xml
+++ b/java/com/android/dialer/util/res/values-am/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"ለዚያ የሚሆን መተግበሪያ በዚህ መሣሪያ ላይ የለም"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"የWPS ጥሪ ማድረግ አሁን ያለውን ጥሪዎን ያቋርጠዋል።"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"ቀጥል"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ar/strings.xml b/java/com/android/dialer/util/res/values-ar/strings.xml
index 13a5235..8f25fb5 100644
--- a/java/com/android/dialer/util/res/values-ar/strings.xml
+++ b/java/com/android/dialer/util/res/values-ar/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"لا يوجد تطبيق لإجراء ذلك على هذا الجهاز"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"‏سيؤدي إجراء مكالمة WPS إلى قطع اتصال مكالماتك الحالية."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"متابعة"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-az/strings.xml b/java/com/android/dialer/util/res/values-az/strings.xml
index 3b66741..ffe8ec5 100644
--- a/java/com/android/dialer/util/res/values-az/strings.xml
+++ b/java/com/android/dialer/util/res/values-az/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Bu cihazda onun üçün heç bir proqram yoxdur"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS zənginin edilməsi mövcud zənginizi sonlandıracaq."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Davam edin"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml
index 803c954..8f16f82 100644
--- a/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Na ovom uređaju nema aplikacija za to"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ako uputite WPS poziv, prekinućete postojeći poziv."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Nastavi"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-be/strings.xml b/java/com/android/dialer/util/res/values-be/strings.xml
index 120247f..f88ca19 100644
--- a/java/com/android/dialer/util/res/values-be/strings.xml
+++ b/java/com/android/dialer/util/res/values-be/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"На прыладзе няма праграмы для гэтага"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Выкананне выкліку WPS прывядзе да раз\'яднання бягучага выкліку."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Працягнуць"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-bg/strings.xml b/java/com/android/dialer/util/res/values-bg/strings.xml
index 3a425ab..44bb00f 100644
--- a/java/com/android/dialer/util/res/values-bg/strings.xml
+++ b/java/com/android/dialer/util/res/values-bg/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"На устройството няма приложение за това действие"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ако извършите обаждане през WPS, текущото ви обаждане ще бъде прекъснато."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Напред"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-bn/strings.xml b/java/com/android/dialer/util/res/values-bn/strings.xml
index 186b341..769c3c2 100644
--- a/java/com/android/dialer/util/res/values-bn/strings.xml
+++ b/java/com/android/dialer/util/res/values-bn/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"এর জন্য এই ডিভাইসে কোনো অ্যাপ্লিকেশান নেই"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"একটি WPS কল করা হলে তা আপনার বিদ্যমান কলটি কেটে দেবে৷"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"চালিয়ে যান"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-bs/strings.xml b/java/com/android/dialer/util/res/values-bs/strings.xml
index e000c5f..a36bd98 100644
--- a/java/com/android/dialer/util/res/values-bs/strings.xml
+++ b/java/com/android/dialer/util/res/values-bs/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Na ovom uređaju nema aplikacije za to"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Upućivanje WPS poziva prekinut će trenutni poziv."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Nastavi"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ca/strings.xml b/java/com/android/dialer/util/res/values-ca/strings.xml
index 8b6b2da..c2a661f 100644
--- a/java/com/android/dialer/util/res/values-ca/strings.xml
+++ b/java/com/android/dialer/util/res/values-ca/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"No hi ha cap aplicació per a això en aquest dispositiu."</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"En fer una trucada WPS, es desconnectarà la trucada en curs."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continua"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-cs/strings.xml b/java/com/android/dialer/util/res/values-cs/strings.xml
index 0e74288..d7de840 100644
--- a/java/com/android/dialer/util/res/values-cs/strings.xml
+++ b/java/com/android/dialer/util/res/values-cs/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Pro tuto akci v zařízení nemáte žádnou aplikaci."</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Zahájením hovoru WPS odpojíte probíhající hovor."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Pokračovat"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-da/strings.xml b/java/com/android/dialer/util/res/values-da/strings.xml
index d38292f..555bb69 100644
--- a/java/com/android/dialer/util/res/values-da/strings.xml
+++ b/java/com/android/dialer/util/res/values-da/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Der findes Ingen app til det på denne enhed"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Hvis du foretager et WPS-opkald, afsluttes dit nuværende opkald."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Fortsæt"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-de/strings.xml b/java/com/android/dialer/util/res/values-de/strings.xml
index dc23b32..7d154b6 100644
--- a/java/com/android/dialer/util/res/values-de/strings.xml
+++ b/java/com/android/dialer/util/res/values-de/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Keine entsprechende App auf diesem Gerät"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Wenn du jetzt einen Anruf über WPS tätigst, wird deine bestehende Verbindung getrennt."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Weiter"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-el/strings.xml b/java/com/android/dialer/util/res/values-el/strings.xml
index 996cb2a..efbdc4e 100644
--- a/java/com/android/dialer/util/res/values-el/strings.xml
+++ b/java/com/android/dialer/util/res/values-el/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Δεν υπάρχει εφαρμογή γι\' αυτήν την ενέργεια σε αυτήν τη συσκευή"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Η διενέργεια κλήσης μέσω WPS θα αποσυνδέσει την υφιστάμενη κλήση."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Συνέχεια"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-en-rAU/strings.xml b/java/com/android/dialer/util/res/values-en-rAU/strings.xml
index 3cdf170..545a2a8 100644
--- a/java/com/android/dialer/util/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/util/res/values-en-rAU/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"No app for that on this device"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Placing a WPS call will disconnect your existing call."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continue"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-en-rGB/strings.xml b/java/com/android/dialer/util/res/values-en-rGB/strings.xml
index 3cdf170..545a2a8 100644
--- a/java/com/android/dialer/util/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/util/res/values-en-rGB/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"No app for that on this device"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Placing a WPS call will disconnect your existing call."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continue"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-en-rIN/strings.xml b/java/com/android/dialer/util/res/values-en-rIN/strings.xml
index 3cdf170..545a2a8 100644
--- a/java/com/android/dialer/util/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/util/res/values-en-rIN/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"No app for that on this device"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Placing a WPS call will disconnect your existing call."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continue"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-es-rUS/strings.xml b/java/com/android/dialer/util/res/values-es-rUS/strings.xml
index e9c8631..4aa0725 100644
--- a/java/com/android/dialer/util/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/util/res/values-es-rUS/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"No hay una aplicación para esa acción en este dispositivo."</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Realizar una llamada de WPS desconectará tu llamada existente."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-es/strings.xml b/java/com/android/dialer/util/res/values-es/strings.xml
index 0672f65..6c92947 100644
--- a/java/com/android/dialer/util/res/values-es/strings.xml
+++ b/java/com/android/dialer/util/res/values-es/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"No hay aplicaciones para esa acción en este dispositivo"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Al hacer una llamada WPS, se finalizará tu llamada actual."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-et/strings.xml b/java/com/android/dialer/util/res/values-et/strings.xml
index 20429fb..465d2b4 100644
--- a/java/com/android/dialer/util/res/values-et/strings.xml
+++ b/java/com/android/dialer/util/res/values-et/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Seadmes pole selleks sobilikku rakendust"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS-kõne tegemisel katkestatakse teie praegune kõne."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Jätka"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-eu/strings.xml b/java/com/android/dialer/util/res/values-eu/strings.xml
index 89b35c2..ba434ce 100644
--- a/java/com/android/dialer/util/res/values-eu/strings.xml
+++ b/java/com/android/dialer/util/res/values-eu/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Ez dago hori egin dezakeen aplikaziorik gailu honetan"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS dei bat egiten baduzu, eten egingo da uneko deia."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Jarraitu"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-fa/strings.xml b/java/com/android/dialer/util/res/values-fa/strings.xml
index c98fdc9..c22c386 100644
--- a/java/com/android/dialer/util/res/values-fa/strings.xml
+++ b/java/com/android/dialer/util/res/values-fa/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"هیچ برنامه‌ای برای انجام این کار در این دستگاه نصب نیست"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"‏اگر تماس WPS برقرار کنید، تماس فعلی‌تان قطع می‌شود."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"ادامه"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-fi/strings.xml b/java/com/android/dialer/util/res/values-fi/strings.xml
index 58494d1..237232f 100644
--- a/java/com/android/dialer/util/res/values-fi/strings.xml
+++ b/java/com/android/dialer/util/res/values-fi/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Laitteessa ei ole kyseiseen toimintoon tarvittavaa sovellusta"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS-puhelun soittaminen katkaisee meneillään olevan puhelun."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Jatka"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-fr-rCA/strings.xml b/java/com/android/dialer/util/res/values-fr-rCA/strings.xml
index e82fb5d..1d73fcf 100644
--- a/java/com/android/dialer/util/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/util/res/values-fr-rCA/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Cette action ne peut être effectuée par aucune application sur cet appareil."</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Si vous faites un appel WPS, vous déconnecterez l\'appel en cours."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuer"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-fr/strings.xml b/java/com/android/dialer/util/res/values-fr/strings.xml
index 3e411d3..48f1dbb 100644
--- a/java/com/android/dialer/util/res/values-fr/strings.xml
+++ b/java/com/android/dialer/util/res/values-fr/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Cette action ne peut être effectuée via aucune application sur cet appareil."</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"L\'émission d\'un appel WPS mettra fin à l\'appel en cours."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuer"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-gl/strings.xml b/java/com/android/dialer/util/res/values-gl/strings.xml
index c5b5448..8cdcffa 100644
--- a/java/com/android/dialer/util/res/values-gl/strings.xml
+++ b/java/com/android/dialer/util/res/values-gl/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Non hai ningunha aplicación para esa acción neste dispositivo"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Se realizas unha chamada WPS, desconectarase a túa chamada actual."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-gu/strings.xml b/java/com/android/dialer/util/res/values-gu/strings.xml
index e3342b1..ee4b592 100644
--- a/java/com/android/dialer/util/res/values-gu/strings.xml
+++ b/java/com/android/dialer/util/res/values-gu/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"આ ઉપકરણ પર તે માટે કોઈ ઍપ્લિકેશન નથી"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS કૉલ કરવાનું તમારા અસ્તિત્વમાંના કૉલને ડિસ્કનેક્ટ કરશે."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"ચાલુ રાખો"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-hi/strings.xml b/java/com/android/dialer/util/res/values-hi/strings.xml
index 08d52c7..9a1bc35 100644
--- a/java/com/android/dialer/util/res/values-hi/strings.xml
+++ b/java/com/android/dialer/util/res/values-hi/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"उसके लिए इस डिवाइस पर कोई एेप नहीं है"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS कॉल करने से आपका मौजूदा कॉल डिसकनेक्ट हो जाएगा."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"जारी रखें"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-hr/strings.xml b/java/com/android/dialer/util/res/values-hr/strings.xml
index 16964ba..1fc54da 100644
--- a/java/com/android/dialer/util/res/values-hr/strings.xml
+++ b/java/com/android/dialer/util/res/values-hr/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Na ovom uređaju nema aplikacije za to"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Uspostavljanje WPS poziva prekinut će postojeći poziv."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Nastavi"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-hu/strings.xml b/java/com/android/dialer/util/res/values-hu/strings.xml
index 5c50382..ad5f29d 100644
--- a/java/com/android/dialer/util/res/values-hu/strings.xml
+++ b/java/com/android/dialer/util/res/values-hu/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Nincs megfelelő alkalmazás a művelethez ezen az eszközön"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS-hívás indításával megszakítja a folyamatban lévő hívást."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Folytatás"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-hy/strings.xml b/java/com/android/dialer/util/res/values-hy/strings.xml
index 8a2c75e..18f2001 100644
--- a/java/com/android/dialer/util/res/values-hy/strings.xml
+++ b/java/com/android/dialer/util/res/values-hy/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Սարքի վրա համապատասխան հավելված չկա"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Եթե WPS-ի միջոցով զանգ կատարեք, ձեր ընթացիկ զանգը կընդհատվի:"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Շարունակել"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-in/strings.xml b/java/com/android/dialer/util/res/values-in/strings.xml
index 8abd5fb..55a5e3e 100644
--- a/java/com/android/dialer/util/res/values-in/strings.xml
+++ b/java/com/android/dialer/util/res/values-in/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Tidak ada aplikasi untuk tindakan tersebut di perangkat ini"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Melakukan panggilan WPS akan mengakhiri panggilan yang ada."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Lanjutkan"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-is/strings.xml b/java/com/android/dialer/util/res/values-is/strings.xml
index 8ba1a2d..e6615e3 100644
--- a/java/com/android/dialer/util/res/values-is/strings.xml
+++ b/java/com/android/dialer/util/res/values-is/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Ekkert forrit fyrir þetta er í tækinu"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ef þú hringir WPS-símtal slitnar núverandi símtal."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Áfram"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-it/strings.xml b/java/com/android/dialer/util/res/values-it/strings.xml
index 3ef5f83..3ed55c6 100644
--- a/java/com/android/dialer/util/res/values-it/strings.xml
+++ b/java/com/android/dialer/util/res/values-it/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Sul dispositivo non sono presenti app per tale azione"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Se effettui una chiamata WPS, la chiamata esistente verrà disconnessa."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continua"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-iw/strings.xml b/java/com/android/dialer/util/res/values-iw/strings.xml
index 8863eb6..5a1062d 100644
--- a/java/com/android/dialer/util/res/values-iw/strings.xml
+++ b/java/com/android/dialer/util/res/values-iw/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"אין אפליקציה עבור הפעולה הזו במכשיר הזה"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"התקשרות באמצעות השירות האלחוטי המועדף תנתק את השיחה הנוכחית."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"המשך"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ja/strings.xml b/java/com/android/dialer/util/res/values-ja/strings.xml
index a447ee9..78986b1 100644
--- a/java/com/android/dialer/util/res/values-ja/strings.xml
+++ b/java/com/android/dialer/util/res/values-ja/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"この操作を行うアプリが端末上にありません"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS で通話を発信すると現在の通話が切断されます。"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"次へ"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ka/strings.xml b/java/com/android/dialer/util/res/values-ka/strings.xml
index 379e3b3..13e7ad0 100644
--- a/java/com/android/dialer/util/res/values-ka/strings.xml
+++ b/java/com/android/dialer/util/res/values-ka/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"ამ მოწყობილობაზე არ არის შესაბამისი აპლიკაცია"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS ზარის განხორციელება თქვენს მიმდინარე ზარს გათიშავს."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"გაგრძელება"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-kk/strings.xml b/java/com/android/dialer/util/res/values-kk/strings.xml
index 8683b85..49b6091 100644
--- a/java/com/android/dialer/util/res/values-kk/strings.xml
+++ b/java/com/android/dialer/util/res/values-kk/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Бұл үшін осы құрылғыда қолданба жоқ"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS қоңырауын шалу қазіргі қоңырауды тоқтатады."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Жалғастыру"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-km/strings.xml b/java/com/android/dialer/util/res/values-km/strings.xml
index 37cd045..f55fdf5 100644
--- a/java/com/android/dialer/util/res/values-km/strings.xml
+++ b/java/com/android/dialer/util/res/values-km/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"មិនមានកម្មវិធីសម្រាប់សកម្មភាពនេះនៅលើឧបករណ៍នេះទេ"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"ការ​ហៅ​ចេញ​​ដោយ​ប្រើ​សេវា WPS នឹង​ផ្ដាច់​ការ​ហៅ​ដែល​មាន​​របស់​អ្នក។"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"បន្ត"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-kn/strings.xml b/java/com/android/dialer/util/res/values-kn/strings.xml
index 8fc851b..d6de0f8 100644
--- a/java/com/android/dialer/util/res/values-kn/strings.xml
+++ b/java/com/android/dialer/util/res/values-kn/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"ಈ ಸಾಧನದಲ್ಲಿ ಅದಕ್ಕಾಗಿ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಲ್ಲ"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS ಕರೆ ಅನ್ನು ಮಾಡುವುದರಿಂದ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನಿಮ್ಮ ಕರೆ ಕಡಿತಗೊಳ್ಳುತ್ತದೆ."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"ಮುಂದುವರಿಸಿ"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ko/strings.xml b/java/com/android/dialer/util/res/values-ko/strings.xml
index aa0c138..f7a0679 100644
--- a/java/com/android/dialer/util/res/values-ko/strings.xml
+++ b/java/com/android/dialer/util/res/values-ko/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"이 기기에 작업을 처리할 수 있는 앱이 없습니다."</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS 전화를 걸면 기존 전화 연결이 해제됩니다."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"계속"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ky/strings.xml b/java/com/android/dialer/util/res/values-ky/strings.xml
index 80dea0a..e37ace8 100644
--- a/java/com/android/dialer/util/res/values-ky/strings.xml
+++ b/java/com/android/dialer/util/res/values-ky/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Бул түзмөктө ал үчүн колдонмо жок"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Азыр WPS аркылуу чалсаңыз, учурдагы чалуу үзүлүп калат."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Улантуу"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-lo/strings.xml b/java/com/android/dialer/util/res/values-lo/strings.xml
index a003183..d7c6764 100644
--- a/java/com/android/dialer/util/res/values-lo/strings.xml
+++ b/java/com/android/dialer/util/res/values-lo/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"ບໍ່​ມີ​ແອັ​ບຯ​ສຳ​ລັບ​ສິ່ງນັ້ນ​ຢູ່​ໃນ​ອຸ​ປະ​ກອນ​ນີ້"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"ການໂທ WPS ຈະຕັດສາຍທີ່ມີຢູ່ແລ້ວຂອງທ່ານ."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"ດຳເນີນການຕໍ່"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-lt/strings.xml b/java/com/android/dialer/util/res/values-lt/strings.xml
index 00fd0c1..bf77d5c 100644
--- a/java/com/android/dialer/util/res/values-lt/strings.xml
+++ b/java/com/android/dialer/util/res/values-lt/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Šiame įrenginyje nėra tam skirtos programos"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Pradėjus WPS skambutį bus atjungtas dabartinis skambutis."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Tęsti"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-lv/strings.xml b/java/com/android/dialer/util/res/values-lv/strings.xml
index d29c06a..7b46264 100644
--- a/java/com/android/dialer/util/res/values-lv/strings.xml
+++ b/java/com/android/dialer/util/res/values-lv/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Šajā ierīcē nav nevienas šai darbībai piemērotas lietotnes."</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Veicot WPS zvanu, tiks pārtraukts esošais zvans."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Turpināt"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-mk/strings.xml b/java/com/android/dialer/util/res/values-mk/strings.xml
index 5f45fbf..4451d70 100644
--- a/java/com/android/dialer/util/res/values-mk/strings.xml
+++ b/java/com/android/dialer/util/res/values-mk/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Нема апликација за тоа на уредот"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Воспоставувањето повик преку WPS ќе го исклучи вашиот тековен повик."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Продолжи"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ml/strings.xml b/java/com/android/dialer/util/res/values-ml/strings.xml
index be98289..d861641 100644
--- a/java/com/android/dialer/util/res/values-ml/strings.xml
+++ b/java/com/android/dialer/util/res/values-ml/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"അതിനായി ഈ ഉപകരണത്തിൽ അപ്ലിക്കേഷനുകളൊന്നുമില്ല"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"ഒരു WPS കോൾ ചെയ്യുന്നത് നിങ്ങളുടെ നിലവിലെ കോൾ വിച്ഛേദിക്കാനിടയാക്കും."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"തുടരുക"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-mn/strings.xml b/java/com/android/dialer/util/res/values-mn/strings.xml
index 314db16..51fe7ca 100644
--- a/java/com/android/dialer/util/res/values-mn/strings.xml
+++ b/java/com/android/dialer/util/res/values-mn/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Энэхүү төхөөрөмж дээр тухайн үйлдлийг гүйцэтгэх апликейшн байхгүй байна."</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS дуудлага хийвэл одоо байгаа дуудлагыг таслах болно."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Үргэлжлүүлэх"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-mr/strings.xml b/java/com/android/dialer/util/res/values-mr/strings.xml
index 37bef29..4cb8230 100644
--- a/java/com/android/dialer/util/res/values-mr/strings.xml
+++ b/java/com/android/dialer/util/res/values-mr/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"या डिव्हाइसवर त्यासाठी कोणताही अॅप नाही"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS कॉल केल्याने आपला विद्यमान कॉल डिस्कनेक्ट केला जाईल."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"सुरु ठेवा"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ms/strings.xml b/java/com/android/dialer/util/res/values-ms/strings.xml
index fbda09d..d149cc5 100644
--- a/java/com/android/dialer/util/res/values-ms/strings.xml
+++ b/java/com/android/dialer/util/res/values-ms/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Tiada apl untuk tindakan itu pada peranti ini"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Membuat panggilan WPS akan memutuskan panggilan anda yang sedia ada."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Teruskan"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-my/strings.xml b/java/com/android/dialer/util/res/values-my/strings.xml
index 3a5b79f..7ec6501 100644
--- a/java/com/android/dialer/util/res/values-my/strings.xml
+++ b/java/com/android/dialer/util/res/values-my/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"ဒီကိရိယာထဲမှာ အဲဒါ့အတွက် app မရှိပါ"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS ခေါ်ဆိုပါက သင့်လက်ရှိခေါ်ဆိုမှု ပြတ်တောက်သွားပါမည်။"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"ဆက်လုပ်ရန်"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-nb/strings.xml b/java/com/android/dialer/util/res/values-nb/strings.xml
index c1c1b23..52ae935 100644
--- a/java/com/android/dialer/util/res/values-nb/strings.xml
+++ b/java/com/android/dialer/util/res/values-nb/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Det finnes ingen apper for det på denne enheten"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Den pågående samtalen brytes hvis du foretar et WPS-anrop (Wireless Priority Service)."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Fortsett"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ne/strings.xml b/java/com/android/dialer/util/res/values-ne/strings.xml
index b596a85..aedc538 100644
--- a/java/com/android/dialer/util/res/values-ne/strings.xml
+++ b/java/com/android/dialer/util/res/values-ne/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"यस यन्त्रमा त्यसका लागि कुनै पनि अनुप्रयोग छैन"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS कल गर्नुले तपाईंको जारी कललाई विच्छेद गर्ने छ।"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"जारी राख्नुहोस्"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-nl/strings.xml b/java/com/android/dialer/util/res/values-nl/strings.xml
index d09054c..a9fc32e 100644
--- a/java/com/android/dialer/util/res/values-nl/strings.xml
+++ b/java/com/android/dialer/util/res/values-nl/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Daarvoor is geen app beschikbaar op dit apparaat"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Als je een WPS-oproep plaatst, wordt je huidige gesprek afgebroken."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Doorgaan"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-no/strings.xml b/java/com/android/dialer/util/res/values-no/strings.xml
index c1c1b23..52ae935 100644
--- a/java/com/android/dialer/util/res/values-no/strings.xml
+++ b/java/com/android/dialer/util/res/values-no/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Det finnes ingen apper for det på denne enheten"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Den pågående samtalen brytes hvis du foretar et WPS-anrop (Wireless Priority Service)."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Fortsett"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-pa/strings.xml b/java/com/android/dialer/util/res/values-pa/strings.xml
index dfb47c5..4ad601f 100644
--- a/java/com/android/dialer/util/res/values-pa/strings.xml
+++ b/java/com/android/dialer/util/res/values-pa/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"ਉਸ ਲਈ ਇਸ ਡੀਵਾਈਸ ਤੇ ਕੋਈ ਐਪ ਨਹੀਂ"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"ਇੱਕ WPS ਕਾਲ ਕਰਨਾ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਕਾਲ ਨੂੰ ਡਿਸਕਨੈਕਟ ਕਰ ਦੇਵੇਗਾ।"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"ਜਾਰੀ ਰੱਖੋ"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-pl/strings.xml b/java/com/android/dialer/util/res/values-pl/strings.xml
index 4ea0d8b..c49c55a 100644
--- a/java/com/android/dialer/util/res/values-pl/strings.xml
+++ b/java/com/android/dialer/util/res/values-pl/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Na urządzeniu nie ma aplikacji, która mogłaby wykonać tę czynność"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Jeśli nawiążesz połączenie WPS, bieżące połączenie zostanie przerwane."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Dalej"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-pt-rBR/strings.xml b/java/com/android/dialer/util/res/values-pt-rBR/strings.xml
index af5ec93..04eb8c6 100644
--- a/java/com/android/dialer/util/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/util/res/values-pt-rBR/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Nenhum app está disponível para essa ação neste dispositivo"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Fazer uma chamada usando o WPS desconectará a chamada atual."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-pt-rPT/strings.xml b/java/com/android/dialer/util/res/values-pt-rPT/strings.xml
index 1626e9e..b902302 100644
--- a/java/com/android/dialer/util/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/util/res/values-pt-rPT/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Não existe nenhuma aplicação para isso neste dispositivo"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Efetuar uma chamada WPS irá desligar a sua chamada atual."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-pt/strings.xml b/java/com/android/dialer/util/res/values-pt/strings.xml
index af5ec93..04eb8c6 100644
--- a/java/com/android/dialer/util/res/values-pt/strings.xml
+++ b/java/com/android/dialer/util/res/values-pt/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Nenhum app está disponível para essa ação neste dispositivo"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Fazer uma chamada usando o WPS desconectará a chamada atual."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuar"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ro/strings.xml b/java/com/android/dialer/util/res/values-ro/strings.xml
index c5d7d3f..40cbc36 100644
--- a/java/com/android/dialer/util/res/values-ro/strings.xml
+++ b/java/com/android/dialer/util/res/values-ro/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Pe dispozitiv nu există nicio aplicație pentru această acțiune"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Dacă inițiați un apel WPS, apelul existent va fi deconectat."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Continuați"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ru/strings.xml b/java/com/android/dialer/util/res/values-ru/strings.xml
index 837a075..c2908f9 100644
--- a/java/com/android/dialer/util/res/values-ru/strings.xml
+++ b/java/com/android/dialer/util/res/values-ru/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"На устройстве нет подходящего приложения"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Если вы начнете WPS-вызов, текущий вызов будет прекращен."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Продолжить"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-si/strings.xml b/java/com/android/dialer/util/res/values-si/strings.xml
index f91ef87..f7404d7 100644
--- a/java/com/android/dialer/util/res/values-si/strings.xml
+++ b/java/com/android/dialer/util/res/values-si/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"මෙම උපාංගයෙහි ඒ සඳහා යෙදුමක් නැත"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS ඇමතුමක් කිරීමෙන් ඔබේ දැනට පවතින ඇමතුම විසන්ධි කරනු ඇත."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"දිගටම කරගෙන යන්න"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-sk/strings.xml b/java/com/android/dialer/util/res/values-sk/strings.xml
index 731abb9..4a1ed02 100644
--- a/java/com/android/dialer/util/res/values-sk/strings.xml
+++ b/java/com/android/dialer/util/res/values-sk/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Na tomto zariadení nie je aplikácia na vykonanie danej akcie"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Uskutočnením hovoru cez WPS prerušíte existujúci hovor."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Pokračovať"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-sl/strings.xml b/java/com/android/dialer/util/res/values-sl/strings.xml
index cde40ea..e18514d 100644
--- a/java/com/android/dialer/util/res/values-sl/strings.xml
+++ b/java/com/android/dialer/util/res/values-sl/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"V tej napravi ni aplikacije za to"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Če začnete klic WPS, bo obstoječi klic prekinjen."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Nadaljuj"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-sq/strings.xml b/java/com/android/dialer/util/res/values-sq/strings.xml
index ab53f1e..8046d92 100644
--- a/java/com/android/dialer/util/res/values-sq/strings.xml
+++ b/java/com/android/dialer/util/res/values-sq/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Nuk ka aplikacion për atë në këtë pajisje"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Kryerja e një telefonate WPS do të shkëputë telefonatën tënde ekzistuese."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Vazhdo"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-sr/strings.xml b/java/com/android/dialer/util/res/values-sr/strings.xml
index 5193c6a..d7de552 100644
--- a/java/com/android/dialer/util/res/values-sr/strings.xml
+++ b/java/com/android/dialer/util/res/values-sr/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"На овом уређају нема апликација за то"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ако упутите WPS позив, прекинућете постојећи позив."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Настави"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-sv/strings.xml b/java/com/android/dialer/util/res/values-sv/strings.xml
index 23c34f0..5b17b06 100644
--- a/java/com/android/dialer/util/res/values-sv/strings.xml
+++ b/java/com/android/dialer/util/res/values-sv/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Det finns ingen app för detta på enheten"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ringer du ett WPS-samtal kopplas det nuvarande samtalet bort."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Fortsätt"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-sw/strings.xml b/java/com/android/dialer/util/res/values-sw/strings.xml
index 6dabc84..8ee6843 100644
--- a/java/com/android/dialer/util/res/values-sw/strings.xml
+++ b/java/com/android/dialer/util/res/values-sw/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Hakuna programu kwa ajili ya hiyo kwenye kifaa hiki"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ukipiga simu ya WPS, simu inayoendelea sasa itakatwa."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Endelea"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ta/strings.xml b/java/com/android/dialer/util/res/values-ta/strings.xml
index 4f1b691..ed63669 100644
--- a/java/com/android/dialer/util/res/values-ta/strings.xml
+++ b/java/com/android/dialer/util/res/values-ta/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"சாதனத்தில் இந்தச் செயலைச் செய்வதற்கான பயன்பாடு எதுவும் இல்லை"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS அழைப்பை மேற்கொண்டால், தற்போது செயலில் உள்ள அழைப்புத் துண்டிக்கப்படும்."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"தொடர்க"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-te/strings.xml b/java/com/android/dialer/util/res/values-te/strings.xml
index 3e54163..44c84f5 100644
--- a/java/com/android/dialer/util/res/values-te/strings.xml
+++ b/java/com/android/dialer/util/res/values-te/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"ఈ పరికరంలో దాని కోసం అనువర్తనం ఏదీ లేదు"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS కాల్ చేయడం వలన మీరు ప్రస్తుతం మాట్లాడుతున్న కాల్ డిస్‌కనెక్ట్ అవుతుంది."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"కొనసాగించు"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-th/strings.xml b/java/com/android/dialer/util/res/values-th/strings.xml
index 59341c3..f005573 100644
--- a/java/com/android/dialer/util/res/values-th/strings.xml
+++ b/java/com/android/dialer/util/res/values-th/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"ไม่มีแอปสำหรับการทำงานนั้นบนอุปกรณ์นี้"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"หากคุณโทรผ่านบริการ WPS ตอนนี้ สายที่โทรอยู่จะตัดการเชื่อมต่อ"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"ต่อไป"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-tl/strings.xml b/java/com/android/dialer/util/res/values-tl/strings.xml
index e2a2ed0..73de8b5 100644
--- a/java/com/android/dialer/util/res/values-tl/strings.xml
+++ b/java/com/android/dialer/util/res/values-tl/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Walang app para doon sa device na ito"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ang paggawa ng WPS na tawag ay puputulin sa koneksyon ang dati mo nang tawag."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Magpatuloy"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-tr/strings.xml b/java/com/android/dialer/util/res/values-tr/strings.xml
index dcd3e83..108b20a 100644
--- a/java/com/android/dialer/util/res/values-tr/strings.xml
+++ b/java/com/android/dialer/util/res/values-tr/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Bu cihazda bu işlem için uygun uygulama yok"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS çağrısı yaparsanız, devam eden çağrı sonlandırılır."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Devam"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-uk/strings.xml b/java/com/android/dialer/util/res/values-uk/strings.xml
index 2b5bd38..d57b1de 100644
--- a/java/com/android/dialer/util/res/values-uk/strings.xml
+++ b/java/com/android/dialer/util/res/values-uk/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"На цьому пристрої немає додатка, який може виконати цю дію"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Якщо здійснити виклик WPS, буде роз’єднано поточний виклик."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Продовжити"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-ur/strings.xml b/java/com/android/dialer/util/res/values-ur/strings.xml
index 2e3f8a0..7c036d0 100644
--- a/java/com/android/dialer/util/res/values-ur/strings.xml
+++ b/java/com/android/dialer/util/res/values-ur/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"اس آلہ پر اس کیلئے کوئی ایپ نہیں ہے"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"‏WPS کال کرنے سے آپ کی موجودہ کال غیر منسلک ہو جائے گی۔"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"جاری رکھیں"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-uz/strings.xml b/java/com/android/dialer/util/res/values-uz/strings.xml
index ca7c821..0e28bf7 100644
--- a/java/com/android/dialer/util/res/values-uz/strings.xml
+++ b/java/com/android/dialer/util/res/values-uz/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Qurilmada buni bajaradigan ilova yo‘q"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"WPS-chaqiruv boshlab yuborilsa, hozirgi qo‘ng‘iroq tugatiladi."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Davom ettirish"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-vi/strings.xml b/java/com/android/dialer/util/res/values-vi/strings.xml
index 8a225a3..925b91e 100644
--- a/java/com/android/dialer/util/res/values-vi/strings.xml
+++ b/java/com/android/dialer/util/res/values-vi/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Không có ứng dụng nào cho thao tác đó trên thiết bị này"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Việc thực hiện cuộc gọi WPS sẽ ngắt kết nối cuộc gọi hiện có của bạn."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Tiếp tục"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-zh-rCN/strings.xml b/java/com/android/dialer/util/res/values-zh-rCN/strings.xml
index 0f2d658..6d3e821 100644
--- a/java/com/android/dialer/util/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/util/res/values-zh-rCN/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"此设备上没有可执行此操作的应用"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"拨打 WPS 电话会中断现有通话。"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"继续"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-zh-rHK/strings.xml b/java/com/android/dialer/util/res/values-zh-rHK/strings.xml
index 873de4d..2193cfa 100644
--- a/java/com/android/dialer/util/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/util/res/values-zh-rHK/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"這部裝置上沒有可用的應用程式"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"撥打 WPS 電話會掛斷現有通話。"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"繼續"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-zh-rTW/strings.xml b/java/com/android/dialer/util/res/values-zh-rTW/strings.xml
index 6af0cd1..1926318 100644
--- a/java/com/android/dialer/util/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/util/res/values-zh-rTW/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"這個裝置未安裝可執行該操作的應用程式"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"撥打 WPS 電話會中斷你正在進行的通話。"</string>
     <string name="dialog_continue" msgid="4070630558441163574">"繼續"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/util/res/values-zu/strings.xml b/java/com/android/dialer/util/res/values-zu/strings.xml
index ea15b7d..cdc7f89 100644
--- a/java/com/android/dialer/util/res/values-zu/strings.xml
+++ b/java/com/android/dialer/util/res/values-zu/strings.xml
@@ -23,6 +23,4 @@
     <string name="activity_not_available" msgid="8360067109103762211">"Alukho uhlelo lokusebenza lalokho kule divayisi"</string>
     <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ukwenza ikholi ye-WPS kuzonqamula ikholi yakho ekhona."</string>
     <string name="dialog_continue" msgid="4070630558441163574">"Qhubeka"</string>
-    <!-- no translation found for camera_privacy_text (4268584469444688293) -->
-    <skip />
 </resources>
diff --git a/java/com/android/dialer/widget/MessageFragment.java b/java/com/android/dialer/widget/MessageFragment.java
index 615ad3b..7a0fcfd 100644
--- a/java/com/android/dialer/widget/MessageFragment.java
+++ b/java/com/android/dialer/widget/MessageFragment.java
@@ -134,10 +134,9 @@
 
   @Override
   public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-    if (getMessage() == null) {
-      return false;
+    if (!TextUtils.isEmpty(getMessage())) {
+      getListener().onMessageFragmentSendMessage(getMessage());
     }
-    getListener().onMessageFragmentSendMessage(getMessage());
     return true;
   }
 
diff --git a/java/com/android/dialer/widget/res/layout/fragment_message.xml b/java/com/android/dialer/widget/res/layout/fragment_message.xml
index 5b0bab5..bdb85fa 100644
--- a/java/com/android/dialer/widget/res/layout/fragment_message.xml
+++ b/java/com/android/dialer/widget/res/layout/fragment_message.xml
@@ -14,28 +14,36 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<LinearLayout
+<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
-  android:orientation="vertical"
-  android:gravity="bottom"
   android:background="@color/background_dialer_white">
 
-  <LinearLayout
-    android:id="@+id/message_container"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"/>
+  <ScrollView
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:layout_above="@+id/divider">
+
+    <LinearLayout
+      android:id="@+id/message_container"
+      android:orientation="vertical"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"/>
+  </ScrollView>
 
   <View
+    android:id="@+id/divider"
     android:layout_width="match_parent"
     android:layout_height="@dimen/message_divider_height"
-    android:background="#12000000"/>
+    android:background="#12000000"
+    android:layout_above="@+id/edittext_container"/>
 
   <RelativeLayout
+    android:id="@+id/edittext_container"
     android:layout_width="wrap_content"
-    android:layout_height="wrap_content">
+    android:layout_height="wrap_content"
+    android:layout_alignParentBottom="true">
 
     <EditText
       android:id="@+id/custom_message"
@@ -50,7 +58,7 @@
       android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
       android:layout_toStartOf="@+id/count_and_send_container"
       android:inputType="textShortMessage|textCapSentences"
-      android:imeOptions="actionSend"/>
+      android:imeOptions="flagNoExtractUi|actionSend"/>
 
     <LinearLayout
       android:id="@+id/count_and_send_container"
@@ -80,4 +88,4 @@
         android:textColor="@color/dialer_edit_text_hint_color"/>
     </LinearLayout>
   </RelativeLayout>
-</LinearLayout>
\ No newline at end of file
+</RelativeLayout>
\ No newline at end of file
diff --git a/java/com/android/dialershared/bubble/Bubble.java b/java/com/android/dialershared/bubble/Bubble.java
index f2ba117..9606f5b 100644
--- a/java/com/android/dialershared/bubble/Bubble.java
+++ b/java/com/android/dialershared/bubble/Bubble.java
@@ -61,6 +61,8 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.ViewAnimator;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
 import com.android.dialershared.bubble.BubbleInfo.Action;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -87,6 +89,8 @@
   private final Context context;
   private final WindowManager windowManager;
 
+  private final Handler handler = new Handler();
+
   private LayoutParams windowParams;
 
   // Initialized in factory method
@@ -100,9 +104,7 @@
   private boolean hideAfterText;
   private int collapseEndAction;
 
-  private final Handler handler = new Handler();
-
-  private ViewHolder viewHolder;
+  @VisibleForTesting ViewHolder viewHolder;
   private ViewPropertyAnimator collapseAnimation;
   private Integer overrideGravity;
   private ViewPropertyAnimator exitAnimator;
@@ -238,47 +240,22 @@
     updatePrimaryIconAnimation();
   }
 
-  /**
-   * Hide the button if visible. Will run a short exit animation before hiding. If the bubble is
-   * currently showing text, will hide after the text is done displaying. If the bubble is not
-   * visible this method does nothing.
-   */
+  /** Hide the bubble. */
   public void hide() {
-    if (visibility == Visibility.HIDDEN || visibility == Visibility.EXITING) {
+    if (hideAfterText) {
+      // hideAndReset() will be called after showing text, do nothing here.
       return;
     }
+    hideHelper(this::defaultAfterHidingAnimation);
+  }
 
-    if (textShowing) {
-      hideAfterText = true;
-      return;
-    }
-
-    if (collapseAnimation != null) {
-      collapseEndAction = CollapseEnd.HIDE;
-      return;
-    }
-
-    if (expanded) {
-      startCollapse(CollapseEnd.HIDE);
-      return;
-    }
-
-    visibility = Visibility.EXITING;
-    exitAnimator =
-        viewHolder
-            .getPrimaryButton()
-            .animate()
-            .setInterpolator(new AnticipateInterpolator())
-            .scaleX(0)
-            .scaleY(0)
-            .withEndAction(
-                () -> {
-                  exitAnimator = null;
-                  windowManager.removeView(viewHolder.getRoot());
-                  visibility = Visibility.HIDDEN;
-                  updatePrimaryIconAnimation();
-                });
-    exitAnimator.start();
+  /** Hide the bubble and reset {@viewHolder} to initial state */
+  public void hideAndReset() {
+    hideHelper(
+        () -> {
+          defaultAfterHidingAnimation();
+          reset();
+        });
   }
 
   /** Returns whether the bubble is currently visible */
@@ -350,8 +327,15 @@
                       public boolean onPreDraw() {
                         primaryButton.getViewTreeObserver().removeOnPreDrawListener(this);
 
-                        // Prepare and capture end values
+                        // Prepare and capture end values, always use the size of primaryText since
+                        // its invisibility makes primaryButton smaller than expected
                         TransitionValues endValues = new TransitionValues();
+                        endValues.values.put(
+                            ChangeOnScreenBounds.PROPNAME_WIDTH,
+                            viewHolder.getPrimaryText().getWidth());
+                        endValues.values.put(
+                            ChangeOnScreenBounds.PROPNAME_HEIGHT,
+                            viewHolder.getPrimaryText().getHeight());
                         endValues.view = primaryButton;
                         transition.addTarget(endValues.view);
                         transition.captureEndValues(endValues);
@@ -377,7 +361,8 @@
         () -> {
           textShowing = false;
           if (hideAfterText) {
-            hide();
+            // Always reset here since text shouldn't keep showing.
+            hideAndReset();
           } else {
             doResize(
                 () -> viewHolder.getPrimaryButton().setDisplayedChild(ViewHolder.CHILD_INDEX_ICON));
@@ -411,6 +396,7 @@
 
   void primaryButtonClick() {
     if (expanded || textShowing || currentInfo.getActions().isEmpty()) {
+      Logger.get(context).logImpression(DialerImpression.Type.BUBBLE_PRIMARY_BUTTON_RETURN_TO_CALL);
       try {
         currentInfo.getPrimaryIntent().send();
       } catch (CanceledException e) {
@@ -419,6 +405,7 @@
       return;
     }
 
+    Logger.get(context).logImpression(DialerImpression.Type.BUBBLE_PRIMARY_BUTTON_EXPAND);
     doResize(
         () -> {
           onLeftRightSwitch(isDrawingFromRight());
@@ -478,6 +465,48 @@
     return viewHolder.getRoot();
   }
 
+  /**
+   * Hide the bubble if visible. Will run a short exit animation and before hiding, and {@code
+   * afterHiding} after hiding. If the bubble is currently showing text, will hide after the text is
+   * done displaying. If the bubble is not visible this method does nothing.
+   */
+  private void hideHelper(Runnable afterHiding) {
+    if (visibility == Visibility.HIDDEN || visibility == Visibility.EXITING) {
+      return;
+    }
+
+    if (textShowing) {
+      hideAfterText = true;
+      return;
+    }
+
+    if (collapseAnimation != null) {
+      collapseEndAction = CollapseEnd.HIDE;
+      return;
+    }
+
+    if (expanded) {
+      startCollapse(CollapseEnd.HIDE);
+      return;
+    }
+
+    visibility = Visibility.EXITING;
+    exitAnimator =
+        viewHolder
+            .getPrimaryButton()
+            .animate()
+            .setInterpolator(new AnticipateInterpolator())
+            .scaleX(0)
+            .scaleY(0)
+            .withEndAction(afterHiding);
+    exitAnimator.start();
+  }
+
+  private void reset() {
+    viewHolder = new ViewHolder(viewHolder.getRoot().getContext());
+    update();
+  }
+
   private void update() {
     RippleDrawable backgroundRipple =
         (RippleDrawable)
@@ -681,7 +710,16 @@
     windowManager.updateViewLayout(getRootView(), windowParams);
   }
 
-  private class ViewHolder {
+  private void defaultAfterHidingAnimation() {
+    exitAnimator = null;
+    windowManager.removeView(viewHolder.getRoot());
+    visibility = Visibility.HIDDEN;
+
+    updatePrimaryIconAnimation();
+  }
+
+  @VisibleForTesting
+  class ViewHolder {
 
     public static final int CHILD_INDEX_ICON = 0;
     public static final int CHILD_INDEX_TEXT = 1;
diff --git a/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java b/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java
index 37c8204..8cd61af 100644
--- a/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java
+++ b/java/com/android/dialershared/bubble/ChangeOnScreenBounds.java
@@ -41,6 +41,9 @@
   @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
   static final String PROPNAME_SCREEN_Y = "bubble:changeScreenBounds:screenY";
 
+  static final String PROPNAME_WIDTH = "bubble:changeScreenBounds:width";
+  static final String PROPNAME_HEIGHT = "bubble:changeScreenBounds:height";
+
   private static final Property<ViewBounds, PointF> TOP_LEFT_PROPERTY =
       new Property<ViewBounds, PointF>(PointF.class, "topLeft") {
         @Override
@@ -70,21 +73,32 @@
 
   @Override
   public void captureStartValues(TransitionValues transitionValues) {
-    captureValues(transitionValues);
+    captureValuesWithSize(transitionValues);
   }
 
   @Override
   public void captureEndValues(TransitionValues transitionValues) {
-    captureValues(transitionValues);
+    captureValuesWithSize(transitionValues);
   }
 
-  private void captureValues(TransitionValues values) {
+  /**
+   * Capture location (left and top) from {@code values.view} and size (width and height) from
+   * {@code values.values}. If size is not set, use the size of {@code values.view}.
+   */
+  private void captureValuesWithSize(TransitionValues values) {
     View view = values.view;
 
     if (view.isLaidOut() || view.getWidth() != 0 || view.getHeight() != 0) {
+      Integer width = (Integer) values.values.get(PROPNAME_WIDTH);
+      Integer height = (Integer) values.values.get(PROPNAME_HEIGHT);
+
       values.values.put(
           PROPNAME_BOUNDS,
-          new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()));
+          new Rect(
+              view.getLeft(),
+              view.getTop(),
+              width == null ? view.getRight() : view.getLeft() + width,
+              height == null ? view.getBottom() : view.getTop() + height));
       values.view.getLocationOnScreen(tempLocation);
       values.values.put(PROPNAME_SCREEN_X, tempLocation[0]);
       values.values.put(PROPNAME_SCREEN_Y, tempLocation[1]);
diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java
index 30877ff..4da227c 100644
--- a/java/com/android/incallui/CallButtonPresenter.java
+++ b/java/com/android/incallui/CallButtonPresenter.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.os.Bundle;
+import android.os.Trace;
 import android.support.v4.app.Fragment;
 import android.support.v4.os.UserManagerCompat;
 import android.telecom.CallAudioState;
@@ -101,6 +102,7 @@
 
   @Override
   public void onStateChange(InCallState oldState, InCallState newState, CallList callList) {
+    Trace.beginSection("CallButtonPresenter.onStateChange");
     if (newState == InCallState.OUTGOING) {
       mCall = callList.getOutgoingCall();
     } else if (newState == InCallState.INCALL) {
@@ -124,6 +126,7 @@
       mCall = null;
     }
     updateUi(newState, mCall);
+    Trace.endSection();
   }
 
   /**
@@ -365,7 +368,7 @@
   }
 
   private void updateUi(InCallState state, DialerCall call) {
-    LogUtil.v("CallButtonPresenter", "updating call UI for call: ", call);
+    LogUtil.v("CallButtonPresenter", "updating call UI for call: %s", call);
 
     if (mInCallButtonUi == null) {
       return;
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 67b9177..824d875 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -28,6 +28,7 @@
 import android.hardware.display.DisplayManager;
 import android.os.BatteryManager;
 import android.os.Handler;
+import android.os.Trace;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
@@ -51,6 +52,7 @@
 import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.oem.MotorolaUtils;
+import com.android.dialer.postcall.PostCall;
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
 import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
 import com.android.incallui.InCallPresenter.InCallDetailsListener;
@@ -60,6 +62,7 @@
 import com.android.incallui.InCallPresenter.IncomingCallListener;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
+import com.android.incallui.call.DialerCall.State;
 import com.android.incallui.call.DialerCallListener;
 import com.android.incallui.calllocation.CallLocation;
 import com.android.incallui.calllocation.CallLocationComponent;
@@ -67,6 +70,7 @@
 import com.android.incallui.incall.protocol.InCallScreen;
 import com.android.incallui.incall.protocol.InCallScreenDelegate;
 import com.android.incallui.incall.protocol.PrimaryCallState;
+import com.android.incallui.incall.protocol.PrimaryCallState.ButtonState;
 import com.android.incallui.incall.protocol.PrimaryInfo;
 import com.android.incallui.incall.protocol.SecondaryInfo;
 import com.android.incallui.videotech.utils.SessionModificationState;
@@ -245,8 +249,10 @@
 
   @Override
   public void onStateChange(InCallState oldState, InCallState newState, CallList callList) {
+    Trace.beginSection("CallCardPresenter.onStateChange");
     LogUtil.v("CallCardPresenter.onStateChange", "oldState: %s, newState: %s", oldState, newState);
     if (mInCallScreen == null) {
+      Trace.endSection();
       return;
     }
 
@@ -343,6 +349,7 @@
             callState != DialerCall.State.INCOMING /* animate */);
 
     maybeSendAccessibilityEvent(oldState, newState, primaryChanged);
+    Trace.endSection();
   }
 
   @Override
@@ -472,7 +479,9 @@
                   CallerInfoUtils.isVoiceMailNumber(mContext, mPrimary),
                   mPrimary.isRemotelyHeld(),
                   isBusiness,
-                  supports2ndCallOnHold()));
+                  supports2ndCallOnHold(),
+                  getSwapToSecondaryButtonState(),
+                  mPrimary.isAssistedDialed()));
 
       InCallActivity activity =
           (InCallActivity) (mInCallScreen.getInCallScreenFragment().getActivity());
@@ -482,6 +491,16 @@
     }
   }
 
+  private @ButtonState int getSwapToSecondaryButtonState() {
+    if (mSecondary == null) {
+      return ButtonState.NOT_SUPPORT;
+    }
+    if (mPrimary.getState() == State.ACTIVE) {
+      return ButtonState.ENABLED;
+    }
+    return ButtonState.DISABLED;
+  }
+
   /** Only show the conference call button if we can manage the conference. */
   private void maybeShowManageConferenceCallButton() {
     getUi().showManageConferenceCallButton(shouldShowManageConference());
@@ -570,8 +589,8 @@
     if (call != null) {
       call.getLogState().contactLookupResult = entry.contactLookupResult;
     }
-    if (entry.contactUri != null) {
-      CallerInfoUtils.sendViewNotification(mContext, entry.contactUri);
+    if (entry.lookupUri != null) {
+      CallerInfoUtils.sendViewNotification(mContext, entry.lookupUri);
     }
   }
 
@@ -1000,6 +1019,7 @@
     if (mPrimary != null) {
       mPrimary.disconnect();
     }
+    PostCall.onDisconnectPressed(mContext);
   }
 
   /**
diff --git a/java/com/android/incallui/CallerInfoAsyncQuery.java b/java/com/android/incallui/CallerInfoAsyncQuery.java
index d620d47..858d0f4 100644
--- a/java/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/java/com/android/incallui/CallerInfoAsyncQuery.java
@@ -41,6 +41,7 @@
 import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
+import com.android.dialer.strictmode.DialerStrictMode;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -189,7 +190,7 @@
       CallerInfo info,
       OnQueryCompleteListener listener,
       Object cookie) {
-    long[] directoryIds = getDirectoryIds(context);
+    long[] directoryIds = DialerStrictMode.bypass(() -> getDirectoryIds(context));
     int size = directoryIds.length;
     if (size == 0) {
       return false;
diff --git a/java/com/android/incallui/ConferenceManagerFragment.java b/java/com/android/incallui/ConferenceManagerFragment.java
index cef8a38..bd6cb85 100644
--- a/java/com/android/incallui/ConferenceManagerFragment.java
+++ b/java/com/android/incallui/ConferenceManagerFragment.java
@@ -21,7 +21,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ListView;
-import com.android.contacts.common.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.logging.ScreenEvent;
 import com.android.incallui.ConferenceManagerPresenter.ConferenceManagerUi;
diff --git a/java/com/android/incallui/ConferenceParticipantListAdapter.java b/java/com/android/incallui/ConferenceParticipantListAdapter.java
index 712bdef..70cdf24 100644
--- a/java/com/android/incallui/ConferenceParticipantListAdapter.java
+++ b/java/com/android/incallui/ConferenceParticipantListAdapter.java
@@ -31,12 +31,12 @@
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
 import com.android.contacts.common.preference.ContactsPreferences;
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java
index d50a5c2..3530153 100644
--- a/java/com/android/incallui/ContactInfoCache.java
+++ b/java/com/android/incallui/ContactInfoCache.java
@@ -699,8 +699,6 @@
     // Note in cache entry whether this is a pending async loading action to know whether to
     // wait for its callback or not.
     boolean hasPendingQuery;
-    /** This will be used for the "view" notification. */
-    public Uri contactUri;
     /** Either a display photo or a thumbnail URI. */
     Uri displayPhotoUri;
 
@@ -741,8 +739,6 @@
           + photo
           + ", isSipCall="
           + isSipCall
-          + ", contactUri="
-          + contactUri
           + ", displayPhotoUri="
           + displayPhotoUri
           + ", contactLookupResult="
diff --git a/java/com/android/incallui/DialpadFragment.java b/java/com/android/incallui/DialpadFragment.java
index 7f494aa..c614d84 100644
--- a/java/com/android/incallui/DialpadFragment.java
+++ b/java/com/android/incallui/DialpadFragment.java
@@ -125,7 +125,7 @@
     return this;
   }
 
-  // TODO Adds hardware keyboard listener
+  // TODO(klp) Adds hardware keyboard listener
 
   @Override
   public View onCreateView(
diff --git a/java/com/android/incallui/ExternalCallNotifier.java b/java/com/android/incallui/ExternalCallNotifier.java
index f01a294..ed3c918 100644
--- a/java/com/android/incallui/ExternalCallNotifier.java
+++ b/java/com/android/incallui/ExternalCallNotifier.java
@@ -40,8 +40,8 @@
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.compat.CallCompat;
 import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.contacts.common.util.BitmapUtil;
 import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.contactphoto.BitmapUtil;
 import com.android.dialer.notification.NotificationChannelId;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCallDelegate;
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index c95086c..3ea2b17 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -21,6 +21,7 @@
 import android.graphics.drawable.GradientDrawable;
 import android.graphics.drawable.GradientDrawable.Orientation;
 import android.os.Bundle;
+import android.os.Trace;
 import android.support.annotation.ColorInt;
 import android.support.annotation.FloatRange;
 import android.support.annotation.NonNull;
@@ -112,6 +113,7 @@
 
   @Override
   protected void onCreate(Bundle icicle) {
+    Trace.beginSection("InCallActivity.onCreate");
     LogUtil.i("InCallActivity.onCreate", "");
     super.onCreate(icicle);
 
@@ -129,6 +131,7 @@
             View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
 
     pseudoBlackScreenOverlay = findViewById(R.id.psuedo_black_screen_overlay);
+    Trace.endSection();
   }
 
   @Override
@@ -144,6 +147,7 @@
 
   @Override
   protected void onStart() {
+    Trace.beginSection("InCallActivity.onStart");
     LogUtil.i("InCallActivity.onStart", "");
     super.onStart();
     isVisible = true;
@@ -154,40 +158,49 @@
       // Hide the dialpad because there may not be enough room
       showDialpadFragment(false, false);
     }
+    Trace.endSection();
   }
 
   @Override
   protected void onResume() {
+    Trace.beginSection("InCallActivity.onResume");
     LogUtil.i("InCallActivity.onResume", "");
     super.onResume();
     common.onResume();
     PseudoScreenState pseudoScreenState = InCallPresenter.getInstance().getPseudoScreenState();
     pseudoScreenState.addListener(this);
     onPseudoScreenStateChanged(pseudoScreenState.isOn());
+    Trace.endSection();
   }
 
   /** onPause is guaranteed to be called when the InCallActivity goes in the background. */
   @Override
   protected void onPause() {
+    Trace.beginSection("InCallActivity.onPause");
     LogUtil.i("InCallActivity.onPause", "");
     super.onPause();
     common.onPause();
     InCallPresenter.getInstance().getPseudoScreenState().removeListener(this);
+    Trace.endSection();
   }
 
   @Override
   protected void onStop() {
+    Trace.beginSection("InCallActivity.onStop");
     LogUtil.i("InCallActivity.onStop", "");
     super.onStop();
     common.onStop();
     isVisible = false;
+    Trace.endSection();
   }
 
   @Override
   protected void onDestroy() {
+    Trace.beginSection("InCallActivity.onDestroy");
     LogUtil.i("InCallActivity.onDestroy", "");
     super.onDestroy();
     common.onDestroy();
+    Trace.endSection();
   }
 
   @Override
@@ -476,8 +489,10 @@
   }
 
   public void onPrimaryCallStateChanged() {
+    Trace.beginSection("InCallActivity.onPrimaryCallStateChanged");
     LogUtil.i("InCallActivity.onPrimaryCallStateChanged", "");
     showMainInCallFragment();
+    Trace.endSection();
   }
 
   public void onWiFiToLteHandover(DialerCall call) {
@@ -514,15 +529,18 @@
   }
 
   private void showMainInCallFragment() {
+    Trace.beginSection("InCallActivity.showMainInCallFragment");
     // If the activity's onStart method hasn't been called yet then defer doing any work.
     if (!isVisible) {
       LogUtil.i("InCallActivity.showMainInCallFragment", "not visible yet/anymore");
+      Trace.endSection();
       return;
     }
 
     // Don't let this be reentrant.
     if (isInShowMainInCallFragment) {
       LogUtil.i("InCallActivity.showMainInCallFragment", "already in method, bailing");
+      Trace.endSection();
       return;
     }
 
@@ -560,10 +578,13 @@
     }
 
     if (didChangeInCall || didChangeVideo || didChangeAnswer) {
+      Trace.beginSection("InCallActivity.commitTransaction");
       transaction.commitNow();
+      Trace.endSection();
       Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this);
     }
     isInShowMainInCallFragment = false;
+    Trace.endSection();
   }
 
   private ShouldShowUiResult getShouldShowAnswerUi() {
diff --git a/java/com/android/incallui/InCallActivityCommon.java b/java/com/android/incallui/InCallActivityCommon.java
index 3a264be..14531e0 100644
--- a/java/com/android/incallui/InCallActivityCommon.java
+++ b/java/com/android/incallui/InCallActivityCommon.java
@@ -21,6 +21,7 @@
 import android.app.ActivityManager.TaskDescription;
 import android.app.AlertDialog;
 import android.app.Dialog;
+import android.app.KeyguardManager;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnCancelListener;
 import android.content.DialogInterface.OnDismissListener;
@@ -105,6 +106,8 @@
   private boolean animateDialpadOnShow;
   private String dtmfTextToPreopulate;
   @DialpadRequestType private int showDialpadRequest = DIALPAD_REQUEST_NONE;
+  // If activity is going to be recreated. This is usually happening in {@link onNewIntent}.
+  private boolean isRecreating;
 
   private final SelectPhoneAccountListener selectAccountListener =
       new SelectPhoneAccountListener() {
@@ -209,7 +212,8 @@
           }
         });
 
-    if (icicle != null) {
+    // Don't override the value if show dialpad request is true in intent extras.
+    if (icicle != null && showDialpadRequest == DIALPAD_REQUEST_NONE) {
       // If the dialpad was shown before, set variables indicating it should be shown and
       // populated with the previous DTMF text.  The dialpad is actually shown and populated
       // in onResume() to ensure the hosting fragment has been inflated and is ready to receive it.
@@ -319,6 +323,18 @@
   }
 
   public void onStop() {
+    // Disconnects call waiting for account when activity is hidden e.g. user press home button.
+    // This is necessary otherwise the pending call will stuck on account choose and no new call
+    // will be able to create. See b/63600434 for more details.
+    // Skip this on locked screen since the activity may go over life cycle and start again.
+    if (!isRecreating
+        && !inCallActivity.getSystemService(KeyguardManager.class).isKeyguardLocked()) {
+      DialerCall waitingForAccountCall = CallList.getInstance().getWaitingForAccountCall();
+      if (waitingForAccountCall != null) {
+        waitingForAccountCall.disconnect();
+      }
+    }
+
     enableInCallOrientationEventListener(false);
     InCallPresenter.getInstance().updateIsChangingConfigurations();
     InCallPresenter.getInstance().onActivityStopped();
@@ -331,6 +347,7 @@
 
   void onNewIntent(Intent intent, boolean isRecreating) {
     LogUtil.i("InCallActivityCommon.onNewIntent", "");
+    this.isRecreating = isRecreating;
 
     // We're being re-launched with a new Intent.  Since it's possible for a
     // single InCallActivity instance to persist indefinitely (even if we
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 563468e..6c08c49 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -21,6 +21,7 @@
 import android.graphics.Point;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Trace;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
@@ -41,6 +42,7 @@
 import com.android.dialer.blocking.FilteredNumberCompat;
 import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.logging.InteractionEvent;
@@ -323,11 +325,13 @@
       ContactInfoCache contactInfoCache,
       ProximitySensor proximitySensor,
       FilteredNumberAsyncQueryHandler filteredNumberQueryHandler) {
+    Trace.beginSection("InCallPresenter.setUp");
     if (mServiceConnected) {
       LogUtil.i("InCallPresenter.setUp", "New service connection replacing existing one.");
       if (context != mContext || callList != mCallList) {
         throw new IllegalStateException();
       }
+      Trace.endSection();
       return;
     }
 
@@ -362,7 +366,7 @@
     mCallList.addListener(this);
 
     // Create spam call list listener and add it to the list of listeners
-    mSpamCallListListener = new SpamCallListListener(context);
+    mSpamCallListListener = new SpamCallListListener(context, new DefaultDialerExecutorFactory());
     mCallList.addListener(mSpamCallListListener);
 
     VideoPauseController.getInstance().setUp(this);
@@ -373,6 +377,7 @@
         .listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
 
     LogUtil.d("InCallPresenter.setUp", "Finished InCallPresenter.setUp");
+    Trace.endSection();
   }
 
   /**
@@ -513,6 +518,7 @@
   }
 
   public void onCallAdded(final android.telecom.Call call) {
+    Trace.beginSection("InCallPresenter.onCallAdded");
     LatencyReport latencyReport = new LatencyReport(call);
     if (shouldAttemptBlocking(call)) {
       maybeBlockCall(call, latencyReport);
@@ -528,6 +534,7 @@
     // Since a call has been added we are no longer waiting for Telecom to send us a call.
     setBoundAndWaitingForOutgoingCall(false, null);
     call.registerCallback(mCallCallback);
+    Trace.endSection();
   }
 
   private boolean shouldAttemptBlocking(android.telecom.Call call) {
@@ -690,11 +697,14 @@
    */
   @Override
   public void onCallListChange(CallList callList) {
+    Trace.beginSection("InCallPresenter.onCallListChange");
     if (mInCallActivity != null && mInCallActivity.isInCallScreenAnimating()) {
       mAwaitingCallListUpdate = true;
+      Trace.endSection();
       return;
     }
     if (callList == null) {
+      Trace.endSection();
       return;
     }
 
@@ -744,11 +754,13 @@
           callList.getActiveOrBackgroundCall() != null || callList.getOutgoingCall() != null;
       mInCallActivity.dismissKeyguard(hasCall);
     }
+    Trace.endSection();
   }
 
   /** Called when there is a new incoming call. */
   @Override
   public void onIncomingCall(DialerCall call) {
+    Trace.beginSection("InCallPresenter.onIncomingCall");
     InCallState newState = startOrFinishUi(InCallState.INCOMING);
     InCallState oldState = mInCallState;
 
@@ -764,6 +776,7 @@
       // Re-evaluate which fragment is being shown.
       mInCallActivity.onPrimaryCallStateChanged();
     }
+    Trace.endSection();
   }
 
   @Override
@@ -855,7 +868,7 @@
 
     if (newState == InCallState.NO_CALLS) {
       if (mBoundAndWaitingForOutgoingCall) {
-        return InCallState.OUTGOING;
+        return InCallState.PENDING_OUTGOING;
       }
     }
 
@@ -873,7 +886,7 @@
     mBoundAndWaitingForOutgoingCall = isBound;
     mThemeColorManager.setPendingPhoneAccountHandle(handle);
     if (isBound && mInCallState == InCallState.NO_CALLS) {
-      mInCallState = InCallState.OUTGOING;
+      mInCallState = InCallState.PENDING_OUTGOING;
     }
   }
 
@@ -1064,7 +1077,7 @@
     LogUtil.d("InCallPresenter.onActivityStarted", "onActivityStarted");
     notifyVideoPauseController(true);
     if (mStatusBarNotifier != null) {
-      // TODO - b/36649622: Investigate this redundant call
+      // TODO(maxwelb) - b/36649622: Investigate this redundant call
       mStatusBarNotifier.updateNotification(mCallList);
     }
     applyScreenTimeout();
diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index d2b0297..a2e2432 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.IBinder;
+import android.os.Trace;
 import android.telecom.Call;
 import android.telecom.CallAudioState;
 import android.telecom.InCallService;
@@ -45,26 +46,35 @@
 
   @Override
   public void onBringToForeground(boolean showDialpad) {
+    Trace.beginSection("InCallServiceImpl.onBringToForeground");
     InCallPresenter.getInstance().onBringToForeground(showDialpad);
+    Trace.endSection();
   }
 
   @Override
   public void onCallAdded(Call call) {
+    Trace.beginSection("InCallServiceImpl.onCallAdded");
     InCallPresenter.getInstance().onCallAdded(call);
+    Trace.endSection();
   }
 
   @Override
   public void onCallRemoved(Call call) {
+    Trace.beginSection("InCallServiceImpl.onCallRemoved");
     InCallPresenter.getInstance().onCallRemoved(call);
+    Trace.endSection();
   }
 
   @Override
   public void onCanAddCallChanged(boolean canAddCall) {
+    Trace.beginSection("InCallServiceImpl.onCanAddCallChanged");
     InCallPresenter.getInstance().onCanAddCallChanged(canAddCall);
+    Trace.endSection();
   }
 
   @Override
   public IBinder onBind(Intent intent) {
+    Trace.beginSection("InCallServiceImpl.onBind");
     final Context context = getApplicationContext();
     final ContactInfoCache contactInfoCache = ContactInfoCache.getInstance(context);
     InCallPresenter.getInstance()
@@ -85,20 +95,25 @@
       returnToCallController = new ReturnToCallController(this);
     }
 
-    return super.onBind(intent);
+    IBinder iBinder = super.onBind(intent);
+    Trace.endSection();
+    return iBinder;
   }
 
   @Override
   public boolean onUnbind(Intent intent) {
+    Trace.beginSection("InCallServiceImpl.onUnbind");
     super.onUnbind(intent);
 
     InCallPresenter.getInstance().onServiceUnbind();
     tearDown();
 
+    Trace.endSection();
     return false;
   }
 
   private void tearDown() {
+    Trace.beginSection("InCallServiceImpl.tearDown");
     Log.v(this, "tearDown");
     // Tear down the InCall system
     TelecomAdapter.getInstance().clearInCallService();
@@ -107,5 +122,6 @@
       returnToCallController.tearDown();
       returnToCallController = null;
     }
+    Trace.endSection();
   }
 }
diff --git a/java/com/android/incallui/ProximitySensor.java b/java/com/android/incallui/ProximitySensor.java
index 653d85b..db538ab 100644
--- a/java/com/android/incallui/ProximitySensor.java
+++ b/java/com/android/incallui/ProximitySensor.java
@@ -102,7 +102,10 @@
     // sensor during incoming call screen. We check hasLiveCall() because a disconnected call
     // can also put the in-call screen in the INCALL state.
     boolean hasOngoingCall = InCallState.INCALL == newState && callList.hasLiveCall();
-    boolean isOffhook = (InCallState.OUTGOING == newState) || hasOngoingCall;
+    boolean isOffhook =
+        InCallState.PENDING_OUTGOING == newState
+            || InCallState.OUTGOING == newState
+            || hasOngoingCall;
 
     DialerCall activeCall = callList.getActiveCall();
     boolean isVideoCall = activeCall != null && activeCall.isVideoCall();
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
index 33154c5..8e4b9cc 100644
--- a/java/com/android/incallui/ReturnToCallController.java
+++ b/java/com/android/incallui/ReturnToCallController.java
@@ -102,6 +102,14 @@
     }
   }
 
+  private void hideAndReset() {
+    if (bubble != null) {
+      bubble.hideAndReset();
+    } else {
+      LogUtil.i("ReturnToCallController.reset", "reset() called without calling show()");
+    }
+  }
+
   private void show() {
     if (bubble == null) {
       bubble = startNewBubble();
@@ -134,12 +142,14 @@
 
   @Override
   public void onDisconnect(DialerCall call) {
-    if (bubble != null && bubble.isVisible()) {
+    boolean hasAnotherCall = CallList.getInstance().getActiveOrBackgroundCall() != null;
+    if (bubble != null
+        && bubble.isVisible()
+        && (!TelecomUtil.isInCall(context) || hasAnotherCall)) {
       bubble.showText(context.getText(R.string.incall_call_ended));
     }
-
-    if (!TelecomUtil.isInCall(context)) {
-      hide();
+    if (!hasAnotherCall) {
+      hideAndReset();
     }
   }
 
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index 53017a1..07f179e 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -60,15 +60,15 @@
 import android.text.style.ForegroundColorSpan;
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.ContactsUtils.UserType;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.contacts.common.lettertiles.LetterTileDrawable.ContactType;
 import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.contacts.common.util.BitmapUtil;
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.configprovider.ConfigProviderBindings;
+import com.android.dialer.contactphoto.BitmapUtil;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.enrichedcall.Session;
+import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.lettertile.LetterTileDrawable.ContactType;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.notification.NotificationChannelId;
 import com.android.dialer.oem.MotorolaUtils;
@@ -155,10 +155,6 @@
   private static int getWorkStringFromPersonalString(int resId) {
     if (resId == R.string.notification_ongoing_call) {
       return R.string.notification_ongoing_work_call;
-    } else if (resId == R.string.notification_ongoing_call_wifi) {
-      return R.string.notification_ongoing_work_call_wifi;
-    } else if (resId == R.string.notification_incoming_call_wifi) {
-      return R.string.notification_incoming_work_call_wifi;
     } else if (resId == R.string.notification_incoming_call) {
       return R.string.notification_incoming_work_call;
     } else {
@@ -696,8 +692,9 @@
     }
 
     int resId = R.string.notification_ongoing_call;
+    String wifiBrand = mContext.getString(R.string.notification_call_wifi_brand);
     if (call.hasProperty(Details.PROPERTY_WIFI)) {
-      resId = R.string.notification_ongoing_call_wifi;
+      resId = R.string.notification_ongoing_call_wifi_template;
     }
 
     if (isIncomingOrWaiting) {
@@ -706,7 +703,8 @@
       } else if (shouldShowEnrichedCallNotification(call.getEnrichedCallSession())) {
         resId = getECIncomingCallText(call.getEnrichedCallSession());
       } else if (call.hasProperty(Details.PROPERTY_WIFI)) {
-        resId = R.string.notification_incoming_call_wifi;
+        resId = R.string.notification_incoming_call_wifi_template;
+
       } else {
         resId = R.string.notification_incoming_call;
       }
@@ -723,6 +721,13 @@
     boolean isWorkCall = call.hasProperty(PROPERTY_ENTERPRISE_CALL);
     if (userType == ContactsUtils.USER_TYPE_WORK || isWorkCall) {
       resId = getWorkStringFromPersonalString(resId);
+      wifiBrand = mContext.getString(R.string.notification_call_wifi_work_brand);
+    }
+
+    if (resId == R.string.notification_incoming_call_wifi_template
+        || resId == R.string.notification_ongoing_call_wifi_template) {
+      // TODO(b/64525903): Potentially apply this template logic everywhere.
+      return mContext.getString(resId, wifiBrand);
     }
 
     return mContext.getString(resId);
diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java
index 5b4178d..89cddb9 100644
--- a/java/com/android/incallui/VideoCallPresenter.java
+++ b/java/com/android/incallui/VideoCallPresenter.java
@@ -762,7 +762,7 @@
   /**
    * Adjusts the current video mode by setting up the preview and display surfaces as necessary.
    * Expected to be called whenever the video state associated with a call changes (e.g. a user
-   * turns their camera on or off) to ensure the correct surfaces are shown/hidden. TODO: Need
+   * turns their camera on or off) to ensure the correct surfaces are shown/hidden. TODO(vt): Need
    * to adjust size and orientation of preview surface here.
    */
   private void adjustVideoMode(DialerCall call) {
@@ -844,7 +844,7 @@
     if (!hasCameraPermission) {
       videoCall.setCamera(null);
       mPreviewSurfaceState = PreviewSurfaceState.NONE;
-      // TODO: Inform remote party that the video is off. This is similar to b/30256571.
+      // TODO(wangqi): Inform remote party that the video is off. This is similar to b/30256571.
     } else if (isCameraRequired) {
       InCallCameraManager cameraManager = InCallPresenter.getInstance().getInCallCameraManager();
       videoCall.setCamera(cameraManager.getActiveCameraId());
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index b5dd117..db6d43d 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -954,7 +954,7 @@
 
   private void showMessageMenu() {
     LogUtil.i("AnswerFragment.showMessageMenu", "Show sms menu.");
-    if (getChildFragmentManager().isDestroyed()) {
+    if (getContext() == null || isDetached() || getChildFragmentManager().isDestroyed()) {
       return;
     }
 
diff --git a/java/com/android/incallui/answer/impl/hint/AnswerHint.java b/java/com/android/incallui/answer/impl/hint/AnswerHint.java
index dd3b822..1e78f50 100644
--- a/java/com/android/incallui/answer/impl/hint/AnswerHint.java
+++ b/java/com/android/incallui/answer/impl/hint/AnswerHint.java
@@ -27,7 +27,7 @@
   /**
    * Inflates the hint's layout into the container.
    *
-   * <p>TODO: if the hint becomes more dependent on other UI elements of the AnswerFragment,
+   * <p>TODO(twyen): if the hint becomes more dependent on other UI elements of the AnswerFragment,
    * should put put and hintText into another data structure.
    */
   void onCreateView(LayoutInflater inflater, ViewGroup container, View puck, TextView hintText);
diff --git a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
index 204c4e1..871d80c 100644
--- a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
+++ b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
@@ -24,7 +24,6 @@
 import android.support.annotation.VisibleForTesting;
 import android.text.TextUtils;
 import android.widget.Toast;
-import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.logging.DialerImpression.Type;
@@ -59,7 +58,9 @@
   @Override
   public void onReceive(Context context, Intent intent) {
     String host = intent.getData().getHost();
-    Assert.checkState(!TextUtils.isEmpty(host));
+    if (TextUtils.isEmpty(host)) {
+      return;
+    }
     String secretCode =
         ConfigProviderBindings.get(context).getString(CONFIG_PAW_SECRET_CODE, "729");
     if (secretCode == null) {
diff --git a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
index 536a470..16fad8b 100644
--- a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
+++ b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
@@ -80,7 +80,7 @@
         .getBoolean(CONFIG_ANSWER_PSEUDO_PROXIMITY_WAKE_LOCK_ENABLED, true)) {
       answerProximityWakeLock = new PseudoProximityWakeLock(context, pseudoScreenState);
     } else {
-      // TODO: choose a wake lock implementation base on framework/device.
+      // TODO(twyen): choose a wake lock implementation base on framework/device.
       // These bugs requires the PseudoProximityWakeLock workaround:
       // b/30439151 Proximity sensor not working on M
       // b/31499931 fautly touch input when screen is off on marlin/sailfish
diff --git a/java/com/android/incallui/autoresizetext/AutoResizeTextView.java b/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
index eedcbe5..5a22b93 100644
--- a/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
+++ b/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
@@ -146,7 +146,7 @@
     float maxTextSize = TypedValue.applyDimension(unit, size, displayMetrics);
     if (this.maxTextSize != maxTextSize) {
       this.maxTextSize = maxTextSize;
-      // TODO: It's not actually necessary to clear the whole cache here. To optimize cache
+      // TODO(tobyj): It's not actually necessary to clear the whole cache here. To optimize cache
       // deletion we'd have to delete all entries in the cache with a value equal or larger than
       // MIN(old_max_size, new_max_size) when changing maxTextSize; and all entries with a value
       // equal or smaller than MAX(old_min_size, new_min_size) when changing minTextSize.
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 269fcd6..d932c24 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -114,7 +114,7 @@
 
   public void onCallAdded(
       final Context context, final android.telecom.Call telecomCall, LatencyReport latencyReport) {
-    Trace.beginSection("onCallAdded");
+    Trace.beginSection("CallList.onCallAdded");
     final DialerCall call =
         new DialerCall(context, this, telecomCall, latencyReport, true /* registerCallback */);
     logSecondIncomingCall(context, call);
@@ -123,6 +123,7 @@
     manager.registerCapabilitiesListener(call);
     manager.registerStateChangedListener(call);
 
+    Trace.beginSection("checkSpam");
     final DialerCallListenerImpl dialerCallListener = new DialerCallListenerImpl(call);
     call.addListener(dialerCallListener);
     LogUtil.d("CallList.onCallAdded", "callState=" + call.getState());
@@ -169,7 +170,9 @@
 
       updateUserMarkedSpamStatus(call, context, number, dialerCallListener);
     }
+    Trace.endSection();
 
+    Trace.beginSection("checkBlock");
     FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler =
         new FilteredNumberAsyncQueryHandler(context);
 
@@ -185,6 +188,7 @@
         },
         call.getNumber(),
         GeoUtil.getCurrentCountryIso(context));
+    Trace.endSection();
 
     if (call.getState() == DialerCall.State.INCOMING
         || call.getState() == DialerCall.State.CALL_WAITING) {
@@ -353,6 +357,7 @@
 
   /** Called when a single call has changed. */
   private void onIncoming(DialerCall call) {
+    Trace.beginSection("CallList.onIncoming");
     if (updateCallInMap(call)) {
       LogUtil.i("CallList.onIncoming", String.valueOf(call));
     }
@@ -360,6 +365,7 @@
     for (Listener listener : mListeners) {
       listener.onIncomingCall(call);
     }
+    Trace.endSection();
   }
 
   public void addListener(@NonNull Listener listener) {
@@ -570,6 +576,7 @@
    */
   @VisibleForTesting
   void onUpdateCall(DialerCall call) {
+    Trace.beginSection("CallList.onUpdateCall");
     LogUtil.d("CallList.onUpdateCall", String.valueOf(call));
     if (!mCallById.containsKey(call.getId()) && call.isExternalCall()) {
       // When a regular call becomes external, it is removed from the call list, and there may be
@@ -582,6 +589,7 @@
     if (updateCallInMap(call)) {
       LogUtil.i("CallList.onUpdateCall", String.valueOf(call));
     }
+    Trace.endSection();
   }
 
   /**
@@ -606,6 +614,7 @@
    * @return false if no call previously existed and no call was added, otherwise true.
    */
   private boolean updateCallInMap(DialerCall call) {
+    Trace.beginSection("CallList.updateCallInMap");
     Objects.requireNonNull(call);
 
     boolean updated = false;
@@ -635,6 +644,7 @@
       updated = true;
     }
 
+    Trace.endSection();
     return updated;
   }
 
@@ -764,7 +774,7 @@
 
     @Override
     public void onDialerCallUpdate() {
-      Trace.beginSection("onUpdate");
+      Trace.beginSection("CallList.onDialerCallUpdate");
       onUpdateCall(mCall);
       notifyGenericListeners();
       Trace.endSection();
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 88e0dbb..a954ee9 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -41,13 +41,13 @@
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import com.android.contacts.common.compat.CallCompat;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
 import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentParser;
 import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
@@ -152,6 +152,7 @@
   // Times when a second call is received but AnswerAndRelease button is not shown
   // since it's not supported.
   private int secondCallWithoutAnswerAndReleasedButtonTimes = 0;
+  private VideoTech videoTech;
 
   public static String getNumberFromHandle(Uri handle) {
     return handle == null ? "" : handle.getSchemeSpecificPart();
@@ -194,14 +195,15 @@
 
         @Override
         public void onDetailsChanged(Call call, Call.Details details) {
-          LogUtil.v("TelecomCallCallback.onStateChanged", " call=" + call + " details=" + details);
+          LogUtil.v(
+              "TelecomCallCallback.onDetailsChanged", " call=" + call + " details=" + details);
           update();
         }
 
         @Override
         public void onCannedTextResponsesLoaded(Call call, List<String> cannedTextResponses) {
           LogUtil.v(
-              "TelecomCallCallback.onStateChanged",
+              "TelecomCallCallback.onCannedTextResponsesLoaded",
               "call=" + call + " cannedTextResponses=" + cannedTextResponses);
           for (CannedTextResponsesLoadedListener listener : mCannedTextResponsesLoadedListeners) {
             listener.onCannedTextResponsesLoaded(DialerCall.this);
@@ -211,7 +213,7 @@
         @Override
         public void onPostDialWait(Call call, String remainingPostDialSequence) {
           LogUtil.v(
-              "TelecomCallCallback.onStateChanged",
+              "TelecomCallCallback.onPostDialWait",
               "call=" + call + " remainingPostDialSequence=" + remainingPostDialSequence);
           update();
         }
@@ -219,20 +221,20 @@
         @Override
         public void onVideoCallChanged(Call call, VideoCall videoCall) {
           LogUtil.v(
-              "TelecomCallCallback.onStateChanged", "call=" + call + " videoCall=" + videoCall);
+              "TelecomCallCallback.onVideoCallChanged", "call=" + call + " videoCall=" + videoCall);
           update();
         }
 
         @Override
         public void onCallDestroyed(Call call) {
-          LogUtil.v("TelecomCallCallback.onStateChanged", "call=" + call);
+          LogUtil.v("TelecomCallCallback.onCallDestroyed", "call=" + call);
           unregisterCallback();
         }
 
         @Override
         public void onConferenceableCallsChanged(Call call, List<Call> conferenceableCalls) {
           LogUtil.v(
-              "DialerCall.onConferenceableCallsChanged",
+              "TelecomCallCallback.onConferenceableCallsChanged",
               "call %s, conferenceable calls: %d",
               call,
               conferenceableCalls.size());
@@ -242,7 +244,7 @@
         @Override
         public void onConnectionEvent(android.telecom.Call call, String event, Bundle extras) {
           LogUtil.v(
-              "DialerCall.onConnectionEvent",
+              "TelecomCallCallback.onConnectionEvent",
               "Call: " + call + ", Event: " + event + ", Extras: " + extras);
           switch (event) {
               // The Previous attempt to Merge two calls together has failed in Telecom. We must
@@ -428,8 +430,10 @@
   }
 
   private void update() {
-    Trace.beginSection("Update");
+    Trace.beginSection("DialerCall.update");
     int oldState = getState();
+    // Clear any cache here that could potentially change on update.
+    videoTech = null;
     // We want to potentially register a video call callback here.
     updateFromTelecomCall();
     if (oldState != getState() && getState() == DialerCall.State.DISCONNECTED) {
@@ -441,7 +445,7 @@
           .unregisterCapabilitiesListener(this);
       EnrichedCallComponent.get(mContext)
           .getEnrichedCallManager()
-          .unregisterCapabilitiesListener(this);
+          .unregisterStateChangedListener(this);
     } else {
       for (DialerCallListener listener : mListeners) {
         listener.onDialerCallUpdate();
@@ -451,6 +455,7 @@
   }
 
   private void updateFromTelecomCall() {
+    Trace.beginSection("DialerCall.updateFromTelecomCall");
     LogUtil.v("DialerCall.updateFromTelecomCall", mTelecomCall.toString());
 
     mVideoTechManager.dispatchCallStateChanged(mTelecomCall.getState());
@@ -499,6 +504,7 @@
         }
       }
     }
+    Trace.endSection();
   }
 
   /**
@@ -676,13 +682,23 @@
   }
 
   public void setState(int state) {
-    mState = state;
-    if (mState == State.INCOMING) {
+    if (state == State.INCOMING) {
       mLogState.isIncoming = true;
-    } else if (mState == State.DISCONNECTED) {
-      mLogState.duration =
+    } else if (state == State.DISCONNECTED) {
+      long newDuration =
           getConnectTimeMillis() == 0 ? 0 : System.currentTimeMillis() - getConnectTimeMillis();
+      if (mState != state) {
+        mLogState.duration = newDuration;
+      } else {
+        LogUtil.i(
+            "DialerCall.setState",
+            "ignoring state transition from DISCONNECTED to DISCONNECTED."
+                + " Duration would have changed from %s to %s",
+            mLogState.duration,
+            newDuration);
+      }
     }
+    mState = state;
   }
 
   public int getNumberPresentation() {
@@ -989,6 +1005,13 @@
     return mLogState.isIncoming;
   }
 
+  public boolean isAssistedDialed() {
+    if (getIntentExtras() != null) {
+      return getIntentExtras().getBoolean(TelephonyManagerCompat.IS_ASSISTED_DIALED, false);
+    }
+    return false;
+  }
+
   public LatencyReport getLatencyReport() {
     return mLatencyReport;
   }
@@ -1114,7 +1137,10 @@
   }
 
   public VideoTech getVideoTech() {
-    return mVideoTechManager.getVideoTech();
+    if (videoTech == null) {
+      videoTech = mVideoTechManager.getVideoTech();
+    }
+    return videoTech;
   }
 
   public String getCallbackNumber() {
@@ -1247,6 +1273,11 @@
     updateEnrichedCallSession();
   }
 
+  @Override
+  public void onImpressionLoggingNeeded(DialerImpression.Type impressionType) {
+    Logger.get(mContext).logCallImpression(impressionType, getUniqueCallId(), getTimeAddedMs());
+  }
+
   private void updateEnrichedCallSession() {
     if (getNumber() == null) {
       return;
@@ -1528,6 +1559,7 @@
         if (tech.isAvailable(context)) {
           // Remember the first VideoTech that becomes available and always use it
           savedTech = tech;
+          savedTech.becomePrimary();
           return savedTech;
         }
       }
diff --git a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml b/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
index 550c580..fda9404 100644
--- a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
+++ b/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
@@ -19,6 +19,7 @@
   package="com.android.incallui.calllocation.impl">
 
   <application>
+
     <meta-data
       android:name="com.google.android.gms.version"
       android:value="@integer/google_play_services_version"/>
diff --git a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java
index b093a1b..035f5cd 100644
--- a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java
+++ b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java
@@ -50,9 +50,9 @@
 
     try {
       URL mapUrl = new URL(LocationUrlBuilder.getStaticMapUrl(ui.getContext(), locations[0]));
+      TrafficStats.setThreadStatsTag(TrafficStatsTags.DOWNLOAD_LOCATION_MAP_TAG);
       InputStream content = (InputStream) mapUrl.getContent();
 
-      TrafficStats.setThreadStatsTag(TrafficStatsTags.DOWNLOAD_LOCATION_MAP_TAG);
       return Drawable.createFromStream(content, STATIC_MAP_SRC_NAME);
     } catch (Exception ex) {
       LogUtil.e("DownloadMapImageTask.doInBackground", "Exception!!!", ex);
diff --git a/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java b/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java
index a57bdf6..14a9c76 100644
--- a/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java
+++ b/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java
@@ -134,7 +134,7 @@
         url += String.format(Locale.US, "(%s)", addressLine1.toString());
       }
     } else {
-      // TODO: i18n
+      // TODO(mdooley): i18n
       url +=
           String.format(
               Locale.US,
diff --git a/java/com/android/incallui/commontheme/res/values/styles.xml b/java/com/android/incallui/commontheme/res/values/styles.xml
index c0a745d..a979cc3 100644
--- a/java/com/android/incallui/commontheme/res/values/styles.xml
+++ b/java/com/android/incallui/commontheme/res/values/styles.xml
@@ -17,6 +17,11 @@
 
 <resources>
 
+  <style name="Dialer.Incall.TextAppearance" parent="android:TextAppearance.Material">
+    <item name="android:textColor">?android:textColorSecondary</item>
+    <item name="android:textSize">18sp</item>
+  </style>
+
   <style name="Dialer.Incall.TextAppearance.Large">
     <item name="android:textColor">?android:textColorPrimary</item>
     <item name="android:textSize">36sp</item>
@@ -28,11 +33,6 @@
     <item name="android:textSize">12sp</item>
   </style>
 
-  <style name="Dialer.Incall.TextAppearance" parent="android:TextAppearance.Material">
-    <item name="android:textColor">?android:textColorSecondary</item>
-    <item name="android:textSize">18sp</item>
-  </style>
-
   <style name="BottomRowIcon">
     <item name="android:layout_height">24dp</item>
     <item name="android:layout_width">24dp</item>
diff --git a/java/com/android/incallui/contactgrid/BottomRow.java b/java/com/android/incallui/contactgrid/BottomRow.java
index 76e0289..6068cc0 100644
--- a/java/com/android/incallui/contactgrid/BottomRow.java
+++ b/java/com/android/incallui/contactgrid/BottomRow.java
@@ -49,6 +49,7 @@
     public final boolean isForwardIconVisible;
     public final boolean isSpamIconVisible;
     public final boolean shouldPopulateAccessibilityEvent;
+    public final boolean isAssistedDialedVisisble;
 
     public Info(
         @Nullable CharSequence label,
@@ -58,7 +59,8 @@
         boolean isHdIconVisible,
         boolean isForwardIconVisible,
         boolean isSpamIconVisible,
-        boolean shouldPopulateAccessibilityEvent) {
+        boolean shouldPopulateAccessibilityEvent,
+        boolean isAssistedDialedVisisble) {
       this.label = label;
       this.isTimerVisible = isTimerVisible;
       this.isWorkIconVisible = isWorkIconVisible;
@@ -67,6 +69,7 @@
       this.isForwardIconVisible = isForwardIconVisible;
       this.isSpamIconVisible = isSpamIconVisible;
       this.shouldPopulateAccessibilityEvent = shouldPopulateAccessibilityEvent;
+      this.isAssistedDialedVisisble = isAssistedDialedVisisble;
     }
   }
 
@@ -81,6 +84,7 @@
     boolean isHdAttemptingIconVisible = state.isHdAttempting;
     boolean isSpamIconVisible = false;
     boolean shouldPopulateAccessibilityEvent = true;
+    boolean isAssistedDialedVisisble = state.isAssistedDialed;
 
     if (isIncoming(state) && primaryInfo.isSpam) {
       label = context.getString(R.string.contact_grid_incoming_suspected_spam);
@@ -117,7 +121,8 @@
         isHdIconVisible,
         isForwardIconVisible,
         isSpamIconVisible,
-        shouldPopulateAccessibilityEvent);
+        shouldPopulateAccessibilityEvent,
+        isAssistedDialedVisisble);
   }
 
   private static CharSequence getLabelForPhoneNumber(PrimaryInfo primaryInfo) {
diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java
index 708bfab..ddf16e3 100644
--- a/java/com/android/incallui/contactgrid/ContactGridManager.java
+++ b/java/com/android/incallui/contactgrid/ContactGridManager.java
@@ -30,9 +30,9 @@
 import android.widget.TextView;
 import android.widget.ViewAnimator;
 import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.util.DrawableConverter;
 import com.android.incallui.incall.protocol.ContactPhotoType;
 import com.android.incallui.incall.protocol.PrimaryCallState;
@@ -60,7 +60,7 @@
   @Nullable private ImageView avatarImageView;
 
   // Row 2: Mobile +1 (650) 253-0000
-  // Row 2: [HD attempting icon]/[HD icon] 00:15
+  // Row 2: [HD attempting icon]/[HD icon] [Assisted Dialing Icon] 00:15
   // Row 2: Call ended
   // Row 2: Hanging up
   // Row 2: [Alert sign] Suspected spam caller
@@ -68,6 +68,7 @@
   private final ImageView workIconImageView;
   private final ImageView hdIconImageView;
   private final ImageView forwardIconImageView;
+  private final ImageView assistedDialingImageView;
   private final TextView forwardedNumberView;
   private final ImageView spamIconImageView;
   private final ViewAnimator bottomTextSwitcher;
@@ -98,6 +99,7 @@
     hdIconImageView = view.findViewById(R.id.contactgrid_hdIcon);
     forwardIconImageView = view.findViewById(R.id.contactgrid_forwardIcon);
     forwardedNumberView = view.findViewById(R.id.contactgrid_forwardNumber);
+    assistedDialingImageView = view.findViewById(R.id.contactgrid_assistedDialingIcon);
     spamIconImageView = view.findViewById(R.id.contactgrid_spamIcon);
     bottomTextSwitcher = view.findViewById(R.id.contactgrid_bottom_text_switcher);
     bottomTextView = view.findViewById(R.id.contactgrid_bottom_text);
@@ -309,6 +311,8 @@
     bottomTextView.setText(info.label);
     bottomTextView.setAllCaps(info.isSpamIconVisible);
     workIconImageView.setVisibility(info.isWorkIconVisible ? View.VISIBLE : View.GONE);
+    assistedDialingImageView.setVisibility(
+        info.isAssistedDialedVisisble ? View.VISIBLE : View.GONE);
     if (hdIconImageView.getVisibility() == View.GONE) {
       if (info.isHdAttemptingIconVisible) {
         hdIconImageView.setVisibility(View.VISIBLE);
diff --git a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
index c74017e..8850dd8 100644
--- a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
+++ b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
@@ -1,4 +1,19 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
@@ -17,6 +32,10 @@
       android:src="@drawable/asd_hd_icon"
       android:visibility="gone"/>
   <ImageView
+      android:id="@+id/contactgrid_assistedDialingIcon"
+      style="@style/BottomRowIcon"
+      android:src="@drawable/quantum_ic_language_vd_theme_24"/>
+  <ImageView
       android:id="@id/contactgrid_forwardIcon"
       style="@style/BottomRowIcon"
       android:src="@drawable/quantum_ic_forward_vd_theme_24"/>
diff --git a/java/com/android/incallui/contactgrid/res/values-uz/strings.xml b/java/com/android/incallui/contactgrid/res/values-uz/strings.xml
index f4569de..a5ce1ca 100644
--- a/java/com/android/incallui/contactgrid/res/values-uz/strings.xml
+++ b/java/com/android/incallui/contactgrid/res/values-uz/strings.xml
@@ -34,7 +34,7 @@
     <string name="contact_grid_incoming_wifi_video_request" msgid="4516902096577976768">"Bu foydalanuvchi Wi-Fi orqali video suhbatga o‘tishni so‘ramoqda:"</string>
     <string name="contact_grid_incoming_voice_call" msgid="7165853925114955346">"Kimdan qo‘ng‘iroq:"</string>
     <string name="contact_grid_incoming_work_call" msgid="837605505036615004">"Ish telefoniga kimdan qo‘ng‘iroq:"</string>
-    <string name="contact_grid_incoming_via_template" msgid="7747391077955623969">"Kiruvchi chaqiruv (operator: <xliff:g id="PROVIDER_NAME">%s</xliff:g>)"</string>
+    <string name="contact_grid_incoming_via_template" msgid="7747391077955623969">"Kiruvchi qo‘ng‘iroq (operator: <xliff:g id="PROVIDER_NAME">%s</xliff:g>)"</string>
     <string name="contact_grid_incoming_suspected_spam" msgid="285365265897630425">"Shubhali abonent"</string>
     <string name="contact_grid_callback_number" msgid="1284649030313415807">"Teskari qo‘ng‘iroq uchun raqam: <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-af/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-af/strings.xml
deleted file mode 100644
index 5f07dfc..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-af/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktiveer"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Video-oproepe is nie nou beskikbaar nie"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Probeer weer later bel of gaan voort met die oproep as \'n stemoproep."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Stemoproep"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-am/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-am/strings.xml
deleted file mode 100644
index 62a77e4..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-am/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"አንቃ"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"የቪዲዮ ጥሪ ለጊዜው አይገኝም"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"በኋላ እንደገና ለመደወል ይሞክሩ ወይም ጥሪውን እንደ የድምጽ ጥሪ ይቀጥሉ።"</string>
-    <string name="voice_call" msgid="6748636104112578475">"የድምጽ ጥሪ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ar/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ar/strings.xml
deleted file mode 100644
index e29ee2f..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ar/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"تمكين"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"اتصال الفيديو غير متوفر حاليًا"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"حاول الاتصال مرة أخرى لاحقًا أو أكمل المكالمة كمكالمة صوتية."</string>
-    <string name="voice_call" msgid="6748636104112578475">"مكالمة صوتية"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-az/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-az/strings.xml
deleted file mode 100644
index 5a72e4c..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-az/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktiv edin"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Video zəng hazırda əlçatan deyil"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Daha sonra yenidən cəhd edin və ya audio zənglə davam edin."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Video zəng"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index e782e70..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Omogući"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Video poziv trenutno nije dostupan"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Probajte ponovo da uputite poziv kasnije ili ga nastavite kao audio poziv."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Audio poziv"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-be/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-be/strings.xml
deleted file mode 100644
index d4cab26..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-be/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Уключыць"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Відэавыклікі зараз недаступныя"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Паспрабуйце зрабіць выклік пазней або працягніце выклік як галасавы."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Галасавы выклік"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-bg/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-bg/strings.xml
deleted file mode 100644
index e9211ab..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-bg/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Активиране"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"В момента не е възможно видеообаждане"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Опитайте да се обадите отново по-късно или продължете обаждането като гласово."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Гласово обаждане"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-bn/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-bn/strings.xml
deleted file mode 100644
index dd0297c..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-bn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"সক্ষম করুন"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ভিডিও কলিং বর্তমানে উপলব্ধ নয়"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"পরে আবার কল করার চেষ্টা করুন বা কলটিকে একটি ভয়েস কল হিসাবে চালিয়ে যান৷"</string>
-    <string name="voice_call" msgid="6748636104112578475">"ভয়েস কল"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-bs/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-bs/strings.xml
deleted file mode 100644
index 309427a..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-bs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Omogući"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videopozivanje trenutno nije dostupno"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Pozovite ponovo kasnije ili nastavite poziv kao glasovni poziv."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Glasovni poziv"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ca/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ca/strings.xml
deleted file mode 100644
index dca9551..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ca/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activa"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Les videotrucades no estan disponibles actualment"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Torna-ho a provar més tard o continua com a trucada de veu."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Trucada de veu"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-cs/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-cs/strings.xml
deleted file mode 100644
index 502434a..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-cs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Zapnout"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videohovory momentálně nejsou dostupné"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Zkuste zavolat později nebo v hovoru pokračujte bez videa."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Hlasový hovor"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-da/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-da/strings.xml
deleted file mode 100644
index 817226e..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-da/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktivér"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Det er ikke muligt at foretage videoopkald i øjeblikket"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Prøv at ringe igen senere, eller fortsæt med et taleopkald."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Taleopkald"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-de/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-de/strings.xml
deleted file mode 100644
index 8ebc527..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-de/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktivieren"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videoanrufe sind momentan nicht verfügbar"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Versuche es später noch einmal oder setze den Anruf als Sprachanruf fort."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Sprachanruf"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-el/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-el/strings.xml
deleted file mode 100644
index 1e182be..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-el/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ενεργοποίηση"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Η βιντεοκλήσεις δεν είναι προς το παρόν διαθέσιμες"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Δοκιμάστε να καλέσετε ξανά αργότερα ή συνεχίστε την κλήση ως φωνητική κλήση."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Φωνητική κλήση"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-en-rAU/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-en-rAU/strings.xml
deleted file mode 100644
index 4665e11..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Enable"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Video calling is currently not available"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Try calling again later or continue the call as a voice call."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Voice call"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-en-rGB/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-en-rGB/strings.xml
deleted file mode 100644
index 4665e11..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Enable"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Video calling is currently not available"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Try calling again later or continue the call as a voice call."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Voice call"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-en-rIN/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-en-rIN/strings.xml
deleted file mode 100644
index 4665e11..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Enable"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Video calling is currently not available"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Try calling again later or continue the call as a voice call."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Voice call"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-es-rUS/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-es-rUS/strings.xml
deleted file mode 100644
index 98afb12..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Habilitar"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"La videollamada no está disponible en este momento"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Prueba llamando de nuevo más tarde o continúa la llamada como una llamada de voz."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Llamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-es/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-es/strings.xml
deleted file mode 100644
index 580ac8b..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-es/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Habilitar"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"No se pueden hacer videollamadas en estos momentos"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Prueba a llamar de nuevo más tarde o haz una llamada de voz."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Llamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-et/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-et/strings.xml
deleted file mode 100644
index dae212d..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-et/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Luba"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Vidokõned pole praegu saadaval"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Proovige hiljem uuesti helistada või jätkake helistamist häälkõnena."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Häälkõne"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-eu/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-eu/strings.xml
deleted file mode 100644
index c207d39..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-eu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Gaitu"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Une honetan, bideo-deiak ez daude erabilgarri"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Saiatu geroago berriro deitzen, edo aldatu ahots-deira."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Ahots-deia"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-fa/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-fa/strings.xml
deleted file mode 100644
index 73c2a86..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-fa/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"فعال کردن"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"تماس ویدیویی درحال حاضر امکان‌پذیر نیست"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"بعداً دوباره تماس بگیرید یا با تماس صوتی ادامه دهید."</string>
-    <string name="voice_call" msgid="6748636104112578475">"تماس صوتی"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-fi/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-fi/strings.xml
deleted file mode 100644
index 93d4cc7..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-fi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ota käyttöön"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videopuhelut ei ole tällä hetkellä saatavilla"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Yritä soittaa myöhemmin uudelleen tai jatka puhelua äänipuheluna."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Puhelu"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-fr-rCA/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-fr-rCA/strings.xml
deleted file mode 100644
index e2bd4b1..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activer"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Les appels vidéo ne sont pas disponibles pour le moment"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Essayez de rappeler plus tard ou passez à un appel vocal."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Appel vocal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-fr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-fr/strings.xml
deleted file mode 100644
index f9dfdfa..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-fr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activer"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"La fonction d\'appel vidéo est momentanément indisponible"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Réessayez plus tard ou reprenez l\'appel en mode vocal."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Appel vocal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-gl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-gl/strings.xml
deleted file mode 100644
index 3313c44..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-gl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activar"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"As videochamadas non están dispoñibles actualmente"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Proba a chamar de novo máis tarde ou continuar a chamada como unha chamada de voz."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Chamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-gu/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-gu/strings.xml
deleted file mode 100644
index 28825da..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-gu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"સક્ષમ કરો"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"વિડિઓ કૉલિંગ હાલમાં ઉપલબ્ધ નથી"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"પછીથી ફરી કૉલ કરવાનો પ્રયાસ કરો અથવા કૉલને વૉઇસ કૉલ તરીકે ચાલુ રાખો."</string>
-    <string name="voice_call" msgid="6748636104112578475">"વૉઇસ કૉલ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-hi/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-hi/strings.xml
deleted file mode 100644
index 8201539..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-hi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"सक्षम करें"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"इस समय वीडियो कॉलिंग की सुविधा उपलब्ध नहीं है"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"बाद में दोबारा कॉल करने की कोशिश करें या कॉल को वॉइस कॉल के रूप में जारी रखें."</string>
-    <string name="voice_call" msgid="6748636104112578475">"वॉइस कॉल"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-hr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-hr/strings.xml
deleted file mode 100644
index c1b56b7..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-hr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Omogući"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videopozivanje trenutačno nije dostupno"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Pokušajte ponovno nazvati kasnije ili nastavite poziv kao glasovni."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Glasovni poziv"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-hu/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-hu/strings.xml
deleted file mode 100644
index e1f9bd9..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-hu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Engedélyezés"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"A videohívás jelenleg nem érhető el"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Indítson hívást később, vagy folytassa hanghívásként."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Hanghívás"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-hy/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-hy/strings.xml
deleted file mode 100644
index d2c10be..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-hy/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Միացնել"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Տեսազանգը ներկայումս հասանելի չէ"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Ավելի ուշ նորից փորձեք զանգել կամ շարունակեք զանգն առանց տեսապատկերի:"</string>
-    <string name="voice_call" msgid="6748636104112578475">"Զանգ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-in/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-in/strings.xml
deleted file mode 100644
index 8b895bc..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-in/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktifkan"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Video call saat ini tidak tersedia"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Coba lagi nanti atau lanjutkan sebagai panggilan suara."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Panggilan suara"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-is/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-is/strings.xml
deleted file mode 100644
index b16b431..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-is/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Kveikja"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Myndsímtal er ekki í boði sem stendur"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Prófaðu að hringja aftur seinna eða hringdu hefðbundið símtal í staðinn"</string>
-    <string name="voice_call" msgid="6748636104112578475">"Símtal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-it/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-it/strings.xml
deleted file mode 100644
index 1b862f7..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-it/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Abilita"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Le videochiamate non sono disponibili in questo momento"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Prova a chiamare di nuovo più tardi o continua la chiamata come chiamata vocale."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Chiamata vocale"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-iw/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-iw/strings.xml
deleted file mode 100644
index 91af8a9..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-iw/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"הפעלה"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"לא ניתן לשוחח בשיחת וידאו כרגע"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"מומלץ לנסות להתקשר מאוחר יותר או להמשיך לשוחח בשיחה קולית."</string>
-    <string name="voice_call" msgid="6748636104112578475">"שיחה קולית"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ja/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ja/strings.xml
deleted file mode 100644
index 8e196f2..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ja/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"有効にする"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ビデオハングアウトは現在利用できません"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"しばらくしてからもう一度試すか、音声通話で続けてください。"</string>
-    <string name="voice_call" msgid="6748636104112578475">"音声通話"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ka/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ka/strings.xml
deleted file mode 100644
index 8045979..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ka/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ჩართვა"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ვიდეოზარი ამჟამად მიუწვდომელია"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"სცადეთ, დარეკოთ მოგვიანებით ან გააგრძელოთ ხმოვანი ზარით."</string>
-    <string name="voice_call" msgid="6748636104112578475">"ხმოვანი ზარი"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-kk/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-kk/strings.xml
deleted file mode 100644
index 47294f9..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-kk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Қосу"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Бейне қоңырау қазір қолжетімді емес"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Кейінірек қайталап көріңіз немесе дасуыстық қоңырау ретінде жалғастырыңыз."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Дауыстық қоңырау"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-km/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-km/strings.xml
deleted file mode 100644
index 6e1c0fe..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-km/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"បើក"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ការហៅ​វីដេអូ​មិន​អាច​ធ្វើ​បាន​ទេ​នៅពេល​នេះ"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"សាកល្បងហៅ​ម្ដងទៀត​នៅពេលក្រោយ ឬ​បន្ត​ការហៅ​ជា​សំឡេង។"</string>
-    <string name="voice_call" msgid="6748636104112578475">"ការ​ហៅ​ជា​សំឡេង"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-kn/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-kn/strings.xml
deleted file mode 100644
index 384e92b..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-kn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ವೀಡಿಯೊ ಕರೆ ಪ್ರಸ್ತುತವಾಗಿ ಲಭ್ಯವಿಲ್ಲ"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"ನಂತರ ಮತ್ತೆ ಕರೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ಧ್ವನಿ ಕರೆಯಂತೆ ಕರೆಯನ್ನು ಮುಂದುವರಿಸಿ."</string>
-    <string name="voice_call" msgid="6748636104112578475">"ಧ್ವನಿ ಕರೆ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ko/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ko/strings.xml
deleted file mode 100644
index 30e1565..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ko/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"사용"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"현재 화상 통화를 사용할 수 없음"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"나중에 다시 전화하거나, 계속하려면 음성 통화를 이용하세요."</string>
-    <string name="voice_call" msgid="6748636104112578475">"음성 통화"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ky/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ky/strings.xml
deleted file mode 100644
index 1553169..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ky/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Иштетүү"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Видео режиминде чалуу учурда жеткиликсиз"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Кийинчерээк кайра чалыңыз же үн режиминде чалып көрүңүз."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Үн чалуусу"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-lo/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-lo/strings.xml
deleted file mode 100644
index c3f8b96..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-lo/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ເປິດນຳໃຊ້"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ຕອນນີ້ບໍ່ສາມາດໃຊ້ການໂທວິດີໂອໄດ້"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"ກະລຸນາລອງໂທໃໝ່ໃນພາຍຫຼັງ ຫຼື ສືບຕໍ່ສາຍເປັນການໂທແບບສຽງ."</string>
-    <string name="voice_call" msgid="6748636104112578475">"ການໂທດ້ວຍສຽງ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-lt/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-lt/strings.xml
deleted file mode 100644
index 38d6ef8..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-lt/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Įgalinti"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Vaizdo skambučių funkcija šiuo metu nepasiekiama"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Vėliau pabandykite skambinti dar kartą arba tęskite skambutį kaip balso skambutį."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Balso skambutis"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-lv/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-lv/strings.xml
deleted file mode 100644
index 279f0f5..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-lv/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Iespējot"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videozvani pašlaik nav pieejami"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Vēlāk mēģiniet zvanīt vēlreiz vai turpiniet sarunu kā balss zvanu."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Balss zvans"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-mk/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-mk/strings.xml
deleted file mode 100644
index 3c061df..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-mk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Овозможи"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Видеоповикувањето е недостапно во моментов."</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Обидете се да повикате повторно подоцна или продолжете со гласовен повик."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Гласовен повик"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ml/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ml/strings.xml
deleted file mode 100644
index 719d6e8..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ml/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"പ്രവർത്തനക്ഷമമാക്കുക"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"വീഡിയോ കോളിംഗ് നിലവിൽ ലഭ്യമല്ല"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"പിന്നീട് വീണ്ടും വിളിക്കുന്നതോ വോയ്‌സ് കോളായി കോൾ തുടരുന്നതോ പരീക്ഷിക്കൂ."</string>
-    <string name="voice_call" msgid="6748636104112578475">"വോയ്‌സ് കോൾ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-mn/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-mn/strings.xml
deleted file mode 100644
index fae6708..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-mn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Идэвхжүүлэх"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Одоогоор видео дуудлага хийх боломжгүй"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Дараа дахин залгаж үзэх буюу энгийн дуудлагаар үргэлжлүүлнэ үү."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Дуудлага"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-mr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-mr/strings.xml
deleted file mode 100644
index 8549785..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-mr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"चालू करा"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"व्हिडिओ कॉलिंग सध्या उपलब्ध नाही"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"नंतर पुन्हा कॉल करून पहा किंवा कॉल व्हॉइस कॉल म्हणून सुरू ठेवा."</string>
-    <string name="voice_call" msgid="6748636104112578475">"व्हॉईस कॉल"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ms/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ms/strings.xml
deleted file mode 100644
index efe8799..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ms/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Dayakan"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Panggilan video tidak tersedia pada masa ini"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Cuba hubungi semula kemudian atau teruskan panggilan sebagai panggilan suara."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Panggilan suara"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-my/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-my/strings.xml
deleted file mode 100644
index 04a4f3a..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-my/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ဖွင့်ရန်"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ဗီဒီယိုခေါ်ဆိုမှုကို လက်ရှိတွင် မရရှိနိုင်ပါ"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"နောက်မှ ထပ်မံခေါ်ဆိုကြည့်ပါ (သို့) အသံခေါ်ဆိုမှု ဆက်လုပ်ကြည့်ပါ။"</string>
-    <string name="voice_call" msgid="6748636104112578475">"အသံခေါ်ဆိုမှု"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-nb/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-nb/strings.xml
deleted file mode 100644
index 14a41fa..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-nb/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Slå på"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videoanrop er ikke tilgjengelige akkurat nå"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Prøv å ringe på nytt senere eller fortsett anropet som taleanrop."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Taleanrop"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ne/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ne/strings.xml
deleted file mode 100644
index 9cc63fd..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ne/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"सक्षम पार्नुहोस्"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"भिडियो कल हाल उपलब्ध छैन"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"पछि फेरि कल गर्ने प्रयास गर्नुहोस् वा भ्वाइस कलका रूपमा कल जारी राख्नुहोस्।"</string>
-    <string name="voice_call" msgid="6748636104112578475">"भ्वाइस कल"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-nl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-nl/strings.xml
deleted file mode 100644
index c3380db..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-nl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Inschakelen"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videobellen is momenteel niet beschikbaar"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Probeer later opnieuw te bellen of start een spraakoproep."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Spraakoproep"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-no/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-no/strings.xml
deleted file mode 100644
index 14a41fa..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-no/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Slå på"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videoanrop er ikke tilgjengelige akkurat nå"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Prøv å ringe på nytt senere eller fortsett anropet som taleanrop."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Taleanrop"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pa/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pa/strings.xml
deleted file mode 100644
index 722183b..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pa/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ਯੋਗ ਬਣਾਓ"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ਵੀਡੀਓ ਕਾਲਿੰਗ ਇਸ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕਾਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਕਾਲ ਨੂੰ ਵੌਇਸ ਕਾਲ ਵਜੋਂ ਜਾਰੀ ਰੱਖੋ।"</string>
-    <string name="voice_call" msgid="6748636104112578475">"ਵੌਇਸ ਕਾਲ"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pl/strings.xml
deleted file mode 100644
index b8307e9..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Włącz"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Rozmowy wideo nie są obecnie dostępne"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Spróbuj zadzwonić później, aby kontynuować rozmowę w trybie wideo."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Połączenie głosowe"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pt-rBR/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pt-rBR/strings.xml
deleted file mode 100644
index ce249f6..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ativar"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"O recurso de videochamada não está disponível no momento"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Ligue novamente mais tarde ou continue esta chamada sem o vídeo."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Chamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pt-rPT/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pt-rPT/strings.xml
deleted file mode 100644
index fb6980a..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ativar"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Neste momento, não é possível efetuar videochamadas"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Experimente efetuar a videochamada mais tarde ou continue a chamada como uma chamada de voz."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Chamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-pt/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-pt/strings.xml
deleted file mode 100644
index ce249f6..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-pt/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Ativar"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"O recurso de videochamada não está disponível no momento"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Ligue novamente mais tarde ou continue esta chamada sem o vídeo."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Chamada de voz"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ro/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ro/strings.xml
deleted file mode 100644
index 7836192..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ro/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Activați"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Apelarea video este indisponibilă momentan"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Încercați să apelați din nou mai târziu sau continuați ca apel vocal."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Apel vocal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ru/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ru/strings.xml
deleted file mode 100644
index ffc3f61..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ru/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Включить"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"В настоящее время видеовызовы недоступны"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Повторите попытку позже или продолжайте выполнять вызов как голосовой."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Голосовой вызов"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-si/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-si/strings.xml
deleted file mode 100644
index 6948877..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-si/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"සබල කරන්න"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"වීඩියෝ ඇමතීම දැනට ලබා ගැනීමට නොහැකිය"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"පසුව නැවත ඇමතීම උත්සාහ කරන්න නැතහොත් ඇමතුම හඬ ඇමතුමක් ලෙස දිගටම කරගෙන යන්න."</string>
-    <string name="voice_call" msgid="6748636104112578475">"හඬ ඇමතීම"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sk/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sk/strings.xml
deleted file mode 100644
index 8f4b059..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Povoliť"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videohovor momentálne nie je k dispozícii"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Skúste zavolať znova neskôr alebo pokračujte v hovore bez videa."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Hlasový hovor"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sl/strings.xml
deleted file mode 100644
index 6afd14c..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Omogoči"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Videoklicanje trenutno ni na voljo"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Poskusite klicati znova pozneje ali pa klic nadaljujte kot glasovni klic."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Glasovni klic"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sq/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sq/strings.xml
deleted file mode 100644
index cccc83f..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sq/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktivizo"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Telefonatat me video nuk ofrohen aktualisht"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Provo të telefonosh përsëri më vonë ose vazhdoje telefonatën si një telefonatë zanore."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Telefonatë me video"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sr/strings.xml
deleted file mode 100644
index 620c39e..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Омогући"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Видео позив тренутно није доступан"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Пробајте поново да упутите позив касније или га наставите као аудио позив."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Аудио позив"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sv/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sv/strings.xml
deleted file mode 100644
index e6be384..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sv/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Aktivera"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Det går inte att ringa videosamtal just nu"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Försök ringa upp igen senare eller fortsätt samtalet som ett röstsamtal"</string>
-    <string name="voice_call" msgid="6748636104112578475">"Röstsamtal"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-sw/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-sw/strings.xml
deleted file mode 100644
index 6d6a6a0..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-sw/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Washa"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Kipengele cha kupiga simu za video hakipatikani kwa sasa"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Jaribu kupiga simu ya video tena hapo baadaye au uendelee na mazungumzo kama simu ya sauti."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Simu ya sauti"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ta/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ta/strings.xml
deleted file mode 100644
index 626d0d6..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ta/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"இயக்கு"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"தற்போது வீடியோவில் அழைக்க முடியாது"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"பிறகு அழைக்க முயற்சிக்கவும் அல்லது குரல் அழைப்பைச் செய்யவும்."</string>
-    <string name="voice_call" msgid="6748636104112578475">"குரல் அழைப்பு"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-te/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-te/strings.xml
deleted file mode 100644
index 737d677..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-te/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"ప్రారంభించు"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ప్రస్తుతం వీడియో కాలింగ్ అందుబాటులో లేదు"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"మళ్లీ కాల్ చేసి ప్రయత్నించండి లేదా కాల్‌ను వాయిస్ కాల్ వలె కొనసాగించండి."</string>
-    <string name="voice_call" msgid="6748636104112578475">"వాయిస్ కాల్"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-th/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-th/strings.xml
deleted file mode 100644
index a6fa2b1..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-th/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"เปิดใช้"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"วิดีโอคอลไม่พร้อมใช้งานในตอนนี้"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"ลองโทรอีกครั้งในภายหลัง หรือโทรด้วยเสียงต่อไป"</string>
-    <string name="voice_call" msgid="6748636104112578475">"การโทรด้วยเสียง"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-tl/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-tl/strings.xml
deleted file mode 100644
index 17f29af..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-tl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"I-enable"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Kasalukuyang hindi available ang pakikipag-video call"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Subukang tumawag muli sa ibang pagkakataon o ipagpatuloy ang tawag bilang isang voice call."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Voice call"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-tr/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-tr/strings.xml
deleted file mode 100644
index a0ba4fa..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-tr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Etkinleştir"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Görüntülü görüşme şu anda kullanılamıyor"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Görüntülü görüşme yapmayı daha sonra tekrar deneyin veya görüşmeye sesli arama olarak devam edin."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Sesli arama"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-uk/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-uk/strings.xml
deleted file mode 100644
index 36a3c45..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-uk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Увімкнути"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Наразі не можна здійснювати відеодзвінки"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Спробуйте пізніше або перейдіть у режим голосового дзвінка."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Голосовий дзвінок"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-ur/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-ur/strings.xml
deleted file mode 100644
index 4fa8b50..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-ur/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"فعال کریں"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"ویڈیو کالنگ فی الحال دستیاب نہیں ہے"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"بعد میں دوبارہ کال کرنے کی کوشش کریں یا کال کو بطور صوتی کال جاری رکھیں۔"</string>
-    <string name="voice_call" msgid="6748636104112578475">"صوتی کال"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-uz/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-uz/strings.xml
deleted file mode 100644
index 229e6e7..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-uz/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Yoqish"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Video muloqot funksiyasidan hozirgi vaqtda foydalanib bo‘lmaydi."</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Keyinroq qayta urinib ko‘ring yoki ovozli muloqot rejimida o‘ting."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Ovozli muloqot"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-vi/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-vi/strings.xml
deleted file mode 100644
index 3e49451..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-vi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Bật"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Hiện không sử dụng được tính năng gọi điện video"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Hãy thử gọi lại sau hoặc tiếp tục gọi dưới dạng cuộc gọi thoại."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Cuộc gọi thoại"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-zh-rCN/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 3f8cd6d..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"启用"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"当前无法使用视频通话功能"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"请稍后再试，或者改用语音通话。"</string>
-    <string name="voice_call" msgid="6748636104112578475">"语音通话"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-zh-rHK/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 605c847..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"啟用"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"視像通話目前無法使用"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"請稍後再撥，或是以語音通話的形式繼續通話。"</string>
-    <string name="voice_call" msgid="6748636104112578475">"語音通話"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-zh-rTW/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 5201a34..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"啟用"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"目前無法使用視訊通話功能"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"請稍後再嘗試撥打電話，或以語音方式繼續進行通話。"</string>
-    <string name="voice_call" msgid="6748636104112578475">"語音通話"</string>
-</resources>
diff --git a/java/com/android/incallui/disconnectdialog/res/values-zu/strings.xml b/java/com/android/incallui/disconnectdialog/res/values-zu/strings.xml
deleted file mode 100644
index 1c0dd48..0000000
--- a/java/com/android/incallui/disconnectdialog/res/values-zu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="incall_enable_wifi_calling_button" msgid="3295230556186542328">"Nika amandla"</string>
-    <string name="video_call_not_available_title" msgid="987490011944013201">"Ukushaya kwevidiyo manje akutholakali"</string>
-    <string name="video_call_not_available_message" msgid="2284146863894603221">"Zama ukushaya emuva kwesikhathi noma qhuba ikholi njengekholi yezwi."</string>
-    <string name="voice_call" msgid="6748636104112578475">"Ikholi yezwi"</string>
-</resources>
diff --git a/java/com/android/incallui/incall/impl/ButtonChooser.java b/java/com/android/incallui/incall/impl/ButtonChooser.java
index 55b82f0..095a8be 100644
--- a/java/com/android/incallui/incall/impl/ButtonChooser.java
+++ b/java/com/android/incallui/incall/impl/ButtonChooser.java
@@ -18,6 +18,7 @@
 
 import android.support.annotation.NonNull;
 import com.android.dialer.common.Assert;
+import com.android.incallui.incall.impl.MappedButtonConfig.MappingInfo;
 import com.android.incallui.incall.protocol.InCallButtonIds;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -103,12 +104,29 @@
       if (placedButtons.size() >= numUiButtons) {
         return;
       }
+
       // If the conflict button is allowed but disabled, don't place it since it probably will
       // move when it's enabled.
       if (!allowedButtons.contains(conflict) || disabledButtons.contains(conflict)) {
         continue;
       }
+
+      if (isMutuallyExclusiveButtonAvailable(
+          config.lookupMappingInfo(conflict).getMutuallyExclusiveButton(), allowedButtons)) {
+        continue;
+      }
       placedButtons.add(conflict);
     }
   }
+
+  private boolean isMutuallyExclusiveButtonAvailable(
+      int mutuallyExclusiveButton, @NonNull Set<Integer> allowedButtons) {
+    if (mutuallyExclusiveButton == MappingInfo.NO_MUTUALLY_EXCLUSIVE_BUTTON_SET) {
+      return false;
+    }
+    if (allowedButtons.contains(mutuallyExclusiveButton)) {
+      return true;
+    }
+    return false;
+  }
 }
diff --git a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
index 99364e2..0f4a95d 100644
--- a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
+++ b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
@@ -74,6 +74,12 @@
     mapping.put(
         InCallButtonIds.BUTTON_UPGRADE_TO_VIDEO, MappingInfo.builder(4).setSlotOrder(10).build());
     mapping.put(InCallButtonIds.BUTTON_SWAP, MappingInfo.builder(5).setSlotOrder(0).build());
+    mapping.put(
+        InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY,
+        MappingInfo.builder(5)
+            .setSlotOrder(Integer.MAX_VALUE)
+            .setMutuallyExclusiveButton(InCallButtonIds.BUTTON_SWAP)
+            .build());
 
     return new ButtonChooser(new MappedButtonConfig(mapping));
   }
diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java
index 54d01e7..7e39ceb 100644
--- a/java/com/android/incallui/incall/impl/InCallFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallFragment.java
@@ -44,6 +44,7 @@
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
+import com.android.dialer.strictmode.DialerStrictMode;
 import com.android.dialer.widget.LockableViewPager;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
@@ -60,6 +61,7 @@
 import com.android.incallui.incall.protocol.InCallScreenDelegate;
 import com.android.incallui.incall.protocol.InCallScreenDelegateFactory;
 import com.android.incallui.incall.protocol.PrimaryCallState;
+import com.android.incallui.incall.protocol.PrimaryCallState.ButtonState;
 import com.android.incallui.incall.protocol.PrimaryInfo;
 import com.android.incallui.incall.protocol.SecondaryInfo;
 import java.util.ArrayList;
@@ -138,7 +140,10 @@
       @Nullable ViewGroup viewGroup,
       @Nullable Bundle bundle) {
     LogUtil.i("InCallFragment.onCreateView", null);
-    final View view = layoutInflater.inflate(R.layout.frag_incall_voice, viewGroup, false);
+    // Bypass to avoid StrictModeResourceMismatchViolation
+    final View view =
+        DialerStrictMode.bypass(
+            () -> layoutInflater.inflate(R.layout.frag_incall_voice, viewGroup, false));
     contactGridManager =
         new ContactGridManager(
             view,
@@ -287,10 +292,6 @@
   @Override
   public void setSecondary(@NonNull SecondaryInfo secondaryInfo) {
     LogUtil.i("InCallFragment.setSecondary", secondaryInfo.toString());
-    getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
-        .setEnabled(secondaryInfo.shouldShow);
-    getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
-        .setAllowed(secondaryInfo.shouldShow);
     updateButtonStates();
 
     if (!isAdded()) {
@@ -315,6 +316,10 @@
   public void setCallState(@NonNull PrimaryCallState primaryCallState) {
     LogUtil.i("InCallFragment.setCallState", primaryCallState.toString());
     contactGridManager.setCallState(primaryCallState);
+    getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
+        .setAllowed(primaryCallState.swapToSecondaryButtonState != ButtonState.NOT_SUPPORT);
+    getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
+        .setEnabled(primaryCallState.swapToSecondaryButtonState == ButtonState.ENABLED);
     buttonChooser =
         ButtonChooserFactory.newButtonChooser(voiceNetworkType, primaryCallState.isWifi, phoneType);
     updateButtonStates();
diff --git a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
index bc0c616..d4b04fe 100644
--- a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
+++ b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
@@ -39,7 +39,7 @@
     if (position == getButtonGridPosition()) {
       return InCallButtonGridFragment.newInstance();
     } else {
-      // TODO: handle fragment invalidation for when the data changes.
+      // TODO(calderwoodra): handle fragment invalidation for when the data changes.
       return MultimediaFragment.newInstance(attachments, true, false, false);
     }
   }
diff --git a/java/com/android/incallui/incall/impl/MappedButtonConfig.java b/java/com/android/incallui/incall/impl/MappedButtonConfig.java
index 7229837..67c4137 100644
--- a/java/com/android/incallui/incall/impl/MappedButtonConfig.java
+++ b/java/com/android/incallui/incall/impl/MappedButtonConfig.java
@@ -141,7 +141,7 @@
   }
 
   @NonNull
-  private MappingInfo lookupMappingInfo(@InCallButtonIds int button) {
+  public MappingInfo lookupMappingInfo(@InCallButtonIds int button) {
     MappingInfo info = mapping.get(button);
     if (info == null) {
       throw new IllegalArgumentException(
@@ -154,6 +154,8 @@
   @AutoValue
   abstract static class MappingInfo {
 
+    public static final int NO_MUTUALLY_EXCLUSIVE_BUTTON_SET = -1;
+
     /** The Ui slot into which a given button desires to be placed. */
     public abstract int getSlot();
 
@@ -171,11 +173,20 @@
      */
     public abstract int getConflictOrder();
 
+    /**
+     * Returns an integer representing a button for which the given button conflicts. Defaults to
+     * {@link NO_MUTUALLY_EXCLUSIVE_BUTTON_SET}.
+     *
+     * <p>If the mutually exclusive button is chosen, the associated button should never be chosen.
+     */
+    public abstract @InCallButtonIds int getMutuallyExclusiveButton();
+
     static Builder builder(int slot) {
       return new AutoValue_MappedButtonConfig_MappingInfo.Builder()
           .setSlot(slot)
           .setSlotOrder(Integer.MAX_VALUE)
-          .setConflictOrder(Integer.MAX_VALUE);
+          .setConflictOrder(Integer.MAX_VALUE)
+          .setMutuallyExclusiveButton(NO_MUTUALLY_EXCLUSIVE_BUTTON_SET);
     }
 
     /** Class used to build instances of {@link MappingInfo}. */
@@ -187,6 +198,8 @@
 
       public abstract Builder setConflictOrder(int conflictOrder);
 
+      public abstract Builder setMutuallyExclusiveButton(@InCallButtonIds int button);
+
       public abstract MappingInfo build();
     }
   }
diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
index 26dd388..791f22e 100644
--- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java
+++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
@@ -17,13 +17,29 @@
 package com.android.incallui.incall.protocol;
 
 import android.graphics.drawable.Drawable;
+import android.support.annotation.IntDef;
 import android.telecom.DisconnectCause;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.videotech.utils.SessionModificationState;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.Locale;
 
 /** State of the primary call. */
 public class PrimaryCallState {
+
+  /**
+   * Button state that will be invisible if not supported, visible but invalid if disabled, or
+   * visible if enabled.
+   */
+  @Retention(RetentionPolicy.SOURCE)
+  @IntDef({ButtonState.NOT_SUPPORT, ButtonState.DISABLED, ButtonState.ENABLED})
+  public @interface ButtonState {
+    int NOT_SUPPORT = 0;
+    int DISABLED = 1;
+    int ENABLED = 2;
+  }
+
   public final int state;
   public final boolean isVideoCall;
   @SessionModificationState public final int sessionModificationState;
@@ -45,6 +61,8 @@
   public final boolean isRemotelyHeld;
   public final boolean isBusinessNumber;
   public final boolean supportsCallOnHold;
+  public final @ButtonState int swapToSecondaryButtonState;
+  public final boolean isAssistedDialed;
 
   // TODO: Convert to autovalue. b/34502119
   public static PrimaryCallState createEmptyPrimaryCallState() {
@@ -69,7 +87,9 @@
         false /* isVoiceMailNumber */,
         false /* isRemotelyHeld */,
         false /* isBusinessNumber */,
-        true /* supportsCallOnHold */);
+        true /* supportsCallOnHold */,
+        ButtonState.NOT_SUPPORT /* swapToSecondaryButtonState */,
+        false /* isAssistedDialed */);
   }
 
   public PrimaryCallState(
@@ -93,7 +113,9 @@
       boolean isVoiceMailNumber,
       boolean isRemotelyHeld,
       boolean isBusinessNumber,
-      boolean supportsCallOnHold) {
+      boolean supportsCallOnHold,
+      @ButtonState int swapToSecondaryButtonState,
+      boolean isAssistedDialed) {
     this.state = state;
     this.isVideoCall = isVideoCall;
     this.sessionModificationState = sessionModificationState;
@@ -115,6 +137,8 @@
     this.isRemotelyHeld = isRemotelyHeld;
     this.isBusinessNumber = isBusinessNumber;
     this.supportsCallOnHold = supportsCallOnHold;
+    this.swapToSecondaryButtonState = swapToSecondaryButtonState;
+    this.isAssistedDialed = isAssistedDialed;
   }
 
   @Override
diff --git a/java/com/android/incallui/maps/impl/AndroidManifest.xml b/java/com/android/incallui/maps/impl/AndroidManifest.xml
index 4ad0b3b..bc921e9 100644
--- a/java/com/android/incallui/maps/impl/AndroidManifest.xml
+++ b/java/com/android/incallui/maps/impl/AndroidManifest.xml
@@ -19,6 +19,7 @@
   package="com.android.incallui.maps.impl">
 
   <application>
+
     <meta-data
       android:name="com.google.android.gms.version"
       android:value="@integer/google_play_services_version"/>
diff --git a/java/com/android/incallui/res/drawable/spam_notification_icon.xml b/java/com/android/incallui/res/drawable/spam_notification_icon.xml
index a26e7d4..a414428 100644
--- a/java/com/android/incallui/res/drawable/spam_notification_icon.xml
+++ b/java/com/android/incallui/res/drawable/spam_notification_icon.xml
@@ -22,8 +22,8 @@
     <shape android:shape="oval">
       <solid android:color="@color/incall_call_spam_background_color"/>
       <size
-        android:height="@dimen/notification_large_icon_height"
-        android:width="@dimen/notification_large_icon_width"/>
+        android:height="@android:dimen/notification_large_icon_height"
+        android:width="@android:dimen/notification_large_icon_width"/>
     </shape>
   </item>
 
@@ -31,4 +31,4 @@
     android:drawable="@drawable/quantum_ic_report_white_36"
     android:gravity="center"/>
 
-</layer-list>
\ No newline at end of file
+</layer-list>
diff --git a/java/com/android/incallui/res/drawable/unknown_notification_icon.xml b/java/com/android/incallui/res/drawable/unknown_notification_icon.xml
deleted file mode 100644
index 5ab07ec..0000000
--- a/java/com/android/incallui/res/drawable/unknown_notification_icon.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 2016 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
-  -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
-  <item>
-    <shape android:shape="oval">
-      <solid android:color="@color/unknown_number_color"/>
-      <size
-        android:height="@dimen/notification_large_icon_height"
-        android:width="@dimen/notification_large_icon_width"/>
-    </shape>
-  </item>
-
-  <item
-    android:drawable="@drawable/ic_question_mark"
-    android:gravity="center"/>
-
-</layer-list>
\ No newline at end of file
diff --git a/java/com/android/incallui/res/values-pl/strings.xml b/java/com/android/incallui/res/values-pl/strings.xml
index cb27c73..451c8ba 100644
--- a/java/com/android/incallui/res/values-pl/strings.xml
+++ b/java/com/android/incallui/res/values-pl/strings.xml
@@ -76,7 +76,7 @@
     <string name="incall_error_out_of_service" msgid="5027539470868484145">"Sieć komórkowa jest niedostępna."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="293343960362630925">"Aby zadzwonić, wybierz prawidłowy numer."</string>
     <string name="incall_error_call_failed" msgid="5560521345862514733">"Nie można dzwonić."</string>
-    <string name="incall_status_dialed_mmi" msgid="3341365334358686873">"Uruchamiam sekwencję MMI..."</string>
+    <string name="incall_status_dialed_mmi" msgid="3341365334358686873">"Rozpoczynanie sekwencji MMI..."</string>
     <string name="incall_error_supp_service_unknown" msgid="3062751096566282959">"Usługa nie jest obsługiwana."</string>
     <string name="incall_error_supp_service_switch" msgid="759346040980722884">"Nie można przełączyć połączeń."</string>
     <string name="incall_error_supp_service_separate" msgid="5250304200901095519">"Nie można rozdzielić połączenia."</string>
diff --git a/java/com/android/incallui/res/values-uz/strings.xml b/java/com/android/incallui/res/values-uz/strings.xml
index 2341da3..26120f1 100644
--- a/java/com/android/incallui/res/values-uz/strings.xml
+++ b/java/com/android/incallui/res/values-uz/strings.xml
@@ -31,7 +31,7 @@
     <string name="voicemail_settings_number_label" msgid="8935904934161608885">"Ovozli pochta raqami"</string>
     <string name="notification_dialing" msgid="9072177265772083826">"Raqam terilmoqda"</string>
     <string name="notification_missedCallTicker" msgid="238492086972857643">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> chaqiruvi javobsiz qoldi"</string>
-    <string name="notification_ongoing_call" msgid="8712641937577776125">"Joriy chaqiruv"</string>
+    <string name="notification_ongoing_call" msgid="8712641937577776125">"Joriy qo‘ng‘iroq"</string>
     <string name="notification_ongoing_work_call" msgid="3189581218078981547">"Chiquvchi ishchi qo‘ng‘irog‘i"</string>
     <string name="notification_ongoing_call_wifi" msgid="4393238962909277019">"Joriy Wi-Fi qo‘ng‘iroq"</string>
     <string name="notification_ongoing_work_call_wifi" msgid="3169378605818323964">"Joriy Wi-Fi qo‘ng‘iroq (ish)"</string>
@@ -55,9 +55,9 @@
     <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"Surat, xabar va joy. ax. ega muhim kiruv. chaqiruv"</string>
     <string name="important_notification_incoming_call_attachments" msgid="4594375776340303751">"Biriktirmalarga ega muhim kiruvchi chaqiruv"</string>
     <string name="notification_incoming_work_call" msgid="5291275092734261918">"Kiruvchi ishchi qo‘ng‘irog‘i"</string>
-    <string name="notification_incoming_call_wifi" msgid="1020138378061234203">"Kiruvchi Wi-Fi chaqiruv"</string>
-    <string name="notification_incoming_work_call_wifi" msgid="3549264481033044684">"Kiruvchi Wi-Fi chaqiruv (ish)"</string>
-    <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Kiruvchi chaqiruv: shubhali spam"</string>
+    <string name="notification_incoming_call_wifi" msgid="1020138378061234203">"Kiruvchi Wi-Fi qo‘ng‘iroq"</string>
+    <string name="notification_incoming_work_call_wifi" msgid="3549264481033044684">"Kiruvchi Wi-Fi qo‘ng‘iroq (ish)"</string>
+    <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Shubhali kiruvchi qo‘ng‘iroq"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Kiruvchi video so\'rovi"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Xizmat mavjud emas"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Tanlangan tarmoq (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) mavjud emas"</string>
diff --git a/java/com/android/incallui/res/values/strings.xml b/java/com/android/incallui/res/values/strings.xml
index 4113313..22c3c23 100644
--- a/java/com/android/incallui/res/values/strings.xml
+++ b/java/com/android/incallui/res/values/strings.xml
@@ -76,12 +76,21 @@
   <string name="notification_ongoing_call">Ongoing call</string>
   <!-- The "label" of the in-call Notification for an ongoing work call. [CHAR LIMIT=60] -->
   <string name="notification_ongoing_work_call">Ongoing work call</string>
-  <!-- The "label" of the in-call Notification for an ongoing call, which is being made over
-       Wi-Fi. [CHAR LIMIT=60] -->
-  <string name="notification_ongoing_call_wifi">Ongoing Wi\u2011Fi call</string>
-  <!-- The "label" of the in-call Notification for an ongoing work call, which is being made
-       over Wi-Fi. [CHAR LIMIT=60] -->
-  <string name="notification_ongoing_work_call_wifi">Ongoing Wi\u2011Fi work call</string>
+
+  <!-- Template for the label on the in-call Notification for an ongoing call, which is being made
+      over Wi-Fi. The format argument is @string/notification_call_wifi_brand [CHAR LIMIT=20]-->
+  <string name="notification_ongoing_call_wifi_template">Ongoing <xliff:g id="brand_name">%1$s</xliff:g></string>
+
+  <!-- Template for the label of the in-call Notification for an incoming call, which is being made
+      over Wi-Fi. The format argument is @string/notification_call_wifi_brand [CHAR LIMIT=20] -->
+  <string name="notification_incoming_call_wifi_template">Incoming <xliff:g id="brand_name">%1$s</xliff:g></string>
+
+  <!-- "Brand name" for WiFi calls. Will be overridden for specific mcc-mnc combinations [CHAR LIMIT=40]-->
+  <string name="notification_call_wifi_brand">Wi\u2011Fi call</string>
+
+  <!-- "Brand name" for WiFi work calls. Will be overridden for specific mcc-mnc combinations [CHAR LIMIT=40] -->
+  <string name="notification_call_wifi_work_brand">Wi\u2011Fi work call</string>
+
   <!-- The "label" of the in-call Notification for a call that's on hold -->
   <string name="notification_on_hold">On hold</string>
   <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=60] -->
@@ -124,12 +133,6 @@
 
   <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=60] -->
   <string name="notification_incoming_work_call">Incoming work call</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call,
-       which is being made over Wi-Fi. [CHAR LIMIT=60] -->
-  <string name="notification_incoming_call_wifi">Incoming Wi\u2011Fi call</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing work call,
-       which is being made over Wi-Fi. [CHAR LIMIT=60] -->
-  <string name="notification_incoming_work_call_wifi">Incoming Wi\u2011Fi work call</string>
   <!-- The "label" of the in-call Notification for an incoming ringing spam call. -->
   <string name="notification_incoming_spam_call">Incoming suspected spam call</string>
   <!-- The "label" of the in-call Notification for upgrading an existing call to a video call. -->
diff --git a/java/com/android/incallui/spam/NumberInCallHistoryTask.java b/java/com/android/incallui/spam/NumberInCallHistoryTask.java
deleted file mode 100644
index 886933f..0000000
--- a/java/com/android/incallui/spam/NumberInCallHistoryTask.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2016 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.incallui.spam;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteException;
-import android.os.AsyncTask;
-import android.os.Build.VERSION_CODES;
-import android.provider.CallLog;
-import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.AsyncTaskExecutor;
-import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.incallui.call.DialerCall;
-import com.android.incallui.call.DialerCall.CallHistoryStatus;
-import java.util.Objects;
-
-/** Checks if the number is in the call history. */
-@TargetApi(VERSION_CODES.M)
-public class NumberInCallHistoryTask extends AsyncTask<Void, Void, Integer> {
-
-  public static final String TASK_ID = "number_in_call_history_status";
-
-  private final Context context;
-  private final Listener listener;
-  private final String number;
-  private final String countryIso;
-
-  public NumberInCallHistoryTask(
-      @NonNull Context context, @NonNull Listener listener, String number, String countryIso) {
-    this.context = Objects.requireNonNull(context);
-    this.listener = Objects.requireNonNull(listener);
-    this.number = number;
-    this.countryIso = countryIso;
-  }
-
-  public void submitTask() {
-    if (!PermissionsUtil.hasPhonePermissions(context)) {
-      return;
-    }
-    AsyncTaskExecutor asyncTaskExecutor = AsyncTaskExecutors.createThreadPoolExecutor();
-    asyncTaskExecutor.submit(TASK_ID, this);
-  }
-
-  @Override
-  @CallHistoryStatus
-  public Integer doInBackground(Void... params) {
-    String numberToQuery = number;
-    String fieldToQuery = Calls.NUMBER;
-    String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
-
-    // If we can normalize the number successfully, look in "normalized_number"
-    // field instead. Otherwise, look for number in "number" field.
-    if (!TextUtils.isEmpty(normalizedNumber)) {
-      numberToQuery = normalizedNumber;
-      fieldToQuery = Calls.CACHED_NORMALIZED_NUMBER;
-    }
-    try (Cursor cursor =
-        context
-            .getContentResolver()
-            .query(
-                TelecomUtil.getCallLogUri(context),
-                new String[] {CallLog.Calls._ID},
-                fieldToQuery + " = ?",
-                new String[] {numberToQuery},
-                null)) {
-      return cursor != null && cursor.getCount() > 0
-          ? DialerCall.CALL_HISTORY_STATUS_PRESENT
-          : DialerCall.CALL_HISTORY_STATUS_NOT_PRESENT;
-    } catch (SQLiteException e) {
-      LogUtil.e("NumberInCallHistoryTask.doInBackground", "query call log error", e);
-      return DialerCall.CALL_HISTORY_STATUS_UNKNOWN;
-    }
-  }
-
-  @Override
-  public void onPostExecute(@CallHistoryStatus Integer callHistoryStatus) {
-    listener.onComplete(callHistoryStatus);
-  }
-
-  /** Callback for the async task. */
-  public interface Listener {
-
-    void onComplete(@CallHistoryStatus int callHistoryStatus);
-  }
-}
diff --git a/java/com/android/incallui/spam/SpamCallListListener.java b/java/com/android/incallui/spam/SpamCallListListener.java
index b9c70eb..7ca3fbb 100644
--- a/java/com/android/incallui/spam/SpamCallListListener.java
+++ b/java/com/android/incallui/spam/SpamCallListListener.java
@@ -16,14 +16,21 @@
 
 package com.android.incallui.spam;
 
+import android.annotation.TargetApi;
 import android.app.Notification;
 import android.app.Notification.Builder;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteException;
 import android.graphics.drawable.Icon;
+import android.os.Build.VERSION_CODES;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
 import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 import android.support.v4.os.BuildCompat;
 import android.telecom.DisconnectCause;
 import android.telephony.PhoneNumberUtils;
@@ -31,17 +38,23 @@
 import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
 import com.android.dialer.blocking.FilteredNumberCompat;
 import com.android.dialer.blocking.FilteredNumbersUtil;
+import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutorFactory;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.logging.ContactLookupResult;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.notification.NotificationChannelId;
 import com.android.dialer.spam.Spam;
+import com.android.dialer.telecom.TelecomUtil;
+import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.R;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCall.CallHistoryStatus;
+import java.util.Arrays;
 import java.util.Random;
 
 /**
@@ -53,15 +66,67 @@
 
   private final Context context;
   private final Random random;
+  private final DialerExecutorFactory dialerExecutorFactory;
 
-  public SpamCallListListener(Context context) {
-    this.context = context;
-    this.random = new Random();
+  public SpamCallListListener(Context context, @NonNull DialerExecutorFactory factory) {
+    this(context, new Random(), factory);
   }
 
-  public SpamCallListListener(Context context, Random rand) {
+  public SpamCallListListener(
+      Context context, Random rand, @NonNull DialerExecutorFactory factory) {
     this.context = context;
     this.random = rand;
+    Assert.isNotNull(factory);
+    this.dialerExecutorFactory = factory;
+  }
+
+  /** Checks if the number is in the call history. */
+  @TargetApi(VERSION_CODES.M)
+  private final class NumberInCallHistoryWorker implements Worker<Void, Integer> {
+
+    private final Context appContext;
+    private final String number;
+    private final String countryIso;
+
+    public NumberInCallHistoryWorker(
+        @NonNull Context appContext, String number, String countryIso) {
+      this.appContext = Assert.isNotNull(appContext);
+      this.number = number;
+      this.countryIso = countryIso;
+    }
+
+    @Override
+    @NonNull
+    @CallHistoryStatus
+    public Integer doInBackground(@Nullable Void input) throws Throwable {
+      String numberToQuery = number;
+      String fieldToQuery = Calls.NUMBER;
+      String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+
+      // If we can normalize the number successfully, look in "normalized_number"
+      // field instead. Otherwise, look for number in "number" field.
+      if (!TextUtils.isEmpty(normalizedNumber)) {
+        numberToQuery = normalizedNumber;
+        fieldToQuery = Calls.CACHED_NORMALIZED_NUMBER;
+      }
+
+      try (Cursor cursor =
+          appContext
+              .getContentResolver()
+              .query(
+                  TelecomUtil.getCallLogUri(appContext),
+                  new String[] {CallLog.Calls._ID},
+                  fieldToQuery + " = ?",
+                  new String[] {numberToQuery},
+                  null)) {
+        return cursor != null && cursor.getCount() > 0
+            ? DialerCall.CALL_HISTORY_STATUS_PRESENT
+            : DialerCall.CALL_HISTORY_STATUS_NOT_PRESENT;
+      } catch (SQLiteException e) {
+        LogUtil.e("NumberInCallHistoryWorker.doInBackground", "query call log error", e);
+        return DialerCall.CALL_HISTORY_STATUS_UNKNOWN;
+      }
+    }
   }
 
   @Override
@@ -70,15 +135,24 @@
     if (TextUtils.isEmpty(number)) {
       return;
     }
-    NumberInCallHistoryTask.Listener listener =
-        new NumberInCallHistoryTask.Listener() {
-          @Override
-          public void onComplete(@CallHistoryStatus int callHistoryStatus) {
-            call.setCallHistoryStatus(callHistoryStatus);
-          }
-        };
-    new NumberInCallHistoryTask(context, listener, number, GeoUtil.getCurrentCountryIso(context))
-        .submitTask();
+
+    String[] deniedPhonePermissions =
+        PermissionsUtil.getPermissionsCurrentlyDenied(
+            context, PermissionsUtil.allPhoneGroupPermissionsUsedInDialer);
+    if (deniedPhonePermissions.length > 0) {
+      LogUtil.i(
+          "NumberInCallHistoryWorker.submitTask",
+          "Need phone permissions: " + Arrays.toString(deniedPhonePermissions));
+      return;
+    }
+
+    NumberInCallHistoryWorker historyTask =
+        new NumberInCallHistoryWorker(context, number, GeoUtil.getCurrentCountryIso(context));
+    dialerExecutorFactory
+        .createNonUiTaskBuilder(historyTask)
+        .onSuccess((result) -> call.setCallHistoryStatus(result))
+        .build()
+        .executeParallel(null);
   }
 
   @Override
@@ -197,7 +271,6 @@
   private void showNonSpamCallNotification(DialerCall call) {
     Notification.Builder notificationBuilder =
         createAfterCallNotificationBuilder(call)
-            .setLargeIcon(Icon.createWithResource(context, R.drawable.unknown_notification_icon))
             .setContentText(
                 context.getString(R.string.spam_notification_non_spam_call_collapsed_text))
             .setStyle(
diff --git a/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java b/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java
deleted file mode 100644
index 9e5ab3c..0000000
--- a/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2016 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.incallui.video.impl;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.DialogFragment;
-import com.android.dialer.common.FragmentUtils;
-
-/** Dialog fragment to ask for camera permission from user. */
-public class CameraPermissionDialogFragment extends DialogFragment {
-
-  static CameraPermissionDialogFragment newInstance() {
-    CameraPermissionDialogFragment fragment = new CameraPermissionDialogFragment();
-    return fragment;
-  }
-
-  @NonNull
-  @Override
-  public Dialog onCreateDialog(Bundle bundle) {
-    return new AlertDialog.Builder(getContext())
-        .setTitle(R.string.camera_permission_dialog_title)
-        .setMessage(R.string.camera_permission_dialog_message)
-        .setPositiveButton(
-            R.string.camera_permission_dialog_positive_button,
-            new DialogInterface.OnClickListener() {
-              @Override
-              public void onClick(DialogInterface dialog, int which) {
-                CameraPermissionDialogCallback fragment =
-                    FragmentUtils.getParentUnsafe(
-                        CameraPermissionDialogFragment.this, CameraPermissionDialogCallback.class);
-                fragment.onCameraPermissionGranted();
-              }
-            })
-        .setNegativeButton(
-            R.string.camera_permission_dialog_negative_button,
-            new DialogInterface.OnClickListener() {
-              @Override
-              public void onClick(DialogInterface dialog, int which) {
-                dialog.dismiss();
-              }
-            })
-        .create();
-  }
-
-  /** Callback for being granted camera permission. */
-  public interface CameraPermissionDialogCallback {
-    void onCameraPermissionGranted();
-  }
-}
diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java
index 203710e..b0beb77 100644
--- a/java/com/android/incallui/video/impl/VideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/VideoCallFragment.java
@@ -21,7 +21,6 @@
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
-import android.graphics.Matrix;
 import android.graphics.Outline;
 import android.graphics.Point;
 import android.graphics.drawable.Animatable;
@@ -284,7 +283,7 @@
               int oldRight,
               int oldBottom) {
             LogUtil.i("VideoCallFragment.onLayoutChange", "previewTextureView layout changed");
-            fixPreviewRotation();
+            updatePreviewVideoScaling();
             updatePreviewOffView();
           }
         });
@@ -689,11 +688,13 @@
   @Override
   public void onLocalVideoDimensionsChanged() {
     LogUtil.i("VideoCallFragment.onLocalVideoDimensionsChanged", null);
+    updatePreviewVideoScaling();
   }
 
   @Override
   public void onLocalVideoOrientationChanged() {
     LogUtil.i("VideoCallFragment.onLocalVideoOrientationChanged", null);
+    updatePreviewVideoScaling();
   }
 
   /** Called when the remote video's dimensions change. */
@@ -961,15 +962,31 @@
     // Do nothing
   }
 
-  private void fixPreviewRotation() {
-    int rotationDegrees = getRotationDegrees();
-    if (rotationDegrees == 90 || rotationDegrees == 270) {
-      int viewWidth = previewTextureView.getWidth();
-      int viewHeight = previewTextureView.getHeight();
-      Matrix transform = new Matrix();
-      // Multiplying by -1 prevents the image from being upside down in landscape mode.
-      transform.postRotate(rotationDegrees * -1.0f, viewWidth / 2.0f, viewHeight / 2.0f);
-      previewTextureView.setTransform(transform);
+  private void updatePreviewVideoScaling() {
+    if (previewTextureView.getWidth() == 0 || previewTextureView.getHeight() == 0) {
+      LogUtil.i("VideoCallFragment.updatePreviewVideoScaling", "view layout hasn't finished yet");
+      return;
+    }
+    VideoSurfaceTexture localVideoSurfaceTexture =
+        videoCallScreenDelegate.getLocalVideoSurfaceTexture();
+    Point cameraDimensions = localVideoSurfaceTexture.getSurfaceDimensions();
+    if (cameraDimensions == null) {
+      LogUtil.i(
+          "VideoCallFragment.updatePreviewVideoScaling", "camera dimensions haven't been set");
+      return;
+    }
+    if (isLandscape()) {
+      VideoSurfaceBindings.scaleVideoAndFillView(
+          previewTextureView,
+          cameraDimensions.x,
+          cameraDimensions.y,
+          videoCallScreenDelegate.getDeviceOrientation());
+    } else {
+      VideoSurfaceBindings.scaleVideoAndFillView(
+          previewTextureView,
+          cameraDimensions.y,
+          cameraDimensions.x,
+          videoCallScreenDelegate.getDeviceOrientation());
     }
   }
 
@@ -1006,22 +1023,6 @@
     return rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270;
   }
 
-  private int getRotationDegrees() {
-    int rotation = getActivity().getWindowManager().getDefaultDisplay().getRotation();
-    switch (rotation) {
-      case Surface.ROTATION_0:
-        return 0;
-      case Surface.ROTATION_90:
-        return 90;
-      case Surface.ROTATION_180:
-        return 180;
-      case Surface.ROTATION_270:
-        return 270;
-      default:
-        throw Assert.createAssertionFailException("unsupported rotation: " + rotation);
-    }
-  }
-
   private void enterGreenScreenMode() {
     LogUtil.i("VideoCallFragment.enterGreenScreenMode", null);
     RelativeLayout.LayoutParams params =
@@ -1148,12 +1149,12 @@
       return;
     }
 
-    // TODO: When the view is first displayed after a rotation the bitmap is empty
+    // TODO(mdooley): When the view is first displayed after a rotation the bitmap is empty
     // and thus this blur has no effect.
     // This call can take 100 milliseconds.
     blur(getContext(), bitmap, blurRadius);
 
-    // TODO: Figure out why only have to apply the transform in landscape mode
+    // TODO(mdooley): Figure out why only have to apply the transform in landscape mode
     if (width > height) {
       bitmap =
           Bitmap.createBitmap(
diff --git a/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java b/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
index 1af7dff..8cac402 100644
--- a/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
+++ b/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
@@ -67,6 +67,9 @@
         "VideoSurfaceTextureImpl.setSurfaceDimensions",
         "surfaceDimensions: " + surfaceDimensions + " " + toString());
     this.surfaceDimensions = surfaceDimensions;
+    if (surfaceDimensions != null && savedSurfaceTexture != null) {
+      savedSurfaceTexture.setDefaultBufferSize(surfaceDimensions.x, surfaceDimensions.y);
+    }
   }
 
   @Override
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index 34c3e2c..79a8c60 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.support.annotation.Nullable;
+import com.android.dialer.logging.DialerImpression;
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.video.protocol.VideoCallScreenDelegate;
 import com.android.incallui.videotech.utils.SessionModificationState;
@@ -69,6 +70,12 @@
 
   void setDeviceOrientation(int rotation);
 
+  /**
+   * Called on {@code VideoTechManager.savedTech} when it's first selected and it will always be
+   * used.
+   */
+  void becomePrimary();
+
   /** Listener for video call events. */
   interface VideoTechListener {
 
@@ -83,5 +90,7 @@
     void onVideoUpgradeRequestReceived();
 
     void onUpgradedToVideo(boolean switchToSpeaker);
+
+    void onImpressionLoggingNeeded(DialerImpression.Type impressionType);
   }
 }
diff --git a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
index 85eb64e..34dd1bf 100644
--- a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
+++ b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
@@ -98,4 +98,7 @@
 
   @Override
   public void setDeviceOrientation(int rotation) {}
+
+  @Override
+  public void becomePrimary() {}
 }
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 8fa983a..fec05dc 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -42,6 +42,7 @@
       SessionModificationState.NO_REQUEST;
   private int previousVideoState = VideoProfile.STATE_AUDIO_ONLY;
   private boolean paused = false;
+  private String savedCameraId;
 
   // Hold onto a flag of whether or not stopTransmission was called but resumeTransmission has not
   // been. This is needed because there is time between calling stopTransmission and
@@ -236,9 +237,25 @@
 
   @Override
   public void pause() {
-    if (canPause() && !paused) {
+    if (call.getState() != Call.STATE_ACTIVE) {
+      LogUtil.i("ImsVideoTech.pause", "not pausing because call is not active");
+      return;
+    }
+
+    if (!isTransmittingOrReceiving()) {
+      LogUtil.i("ImsVideoTech.pause", "not pausing because this is not a video call");
+      return;
+    }
+
+    if (paused) {
+      LogUtil.i("ImsVideoTech.pause", "already paused");
+      return;
+    }
+
+    paused = true;
+
+    if (canPause()) {
       LogUtil.i("ImsVideoTech.pause", "sending pause request");
-      paused = true;
       int pausedVideoState = call.getDetails().getVideoState() | VideoProfile.STATE_PAUSED;
       if (transmissionStopped && VideoProfile.isTransmissionEnabled(pausedVideoState)) {
         LogUtil.i("ImsVideoTech.pause", "overriding TX to false due to user request");
@@ -246,19 +263,33 @@
       }
       call.getVideoCall().sendSessionModifyRequest(new VideoProfile(pausedVideoState));
     } else {
-      LogUtil.i(
-          "ImsVideoTech.pause",
-          "not sending request: canPause: %b, paused: %b",
-          canPause(),
-          paused);
+      // This video call does not support pause so we fall back to disabling the camera
+      LogUtil.i("ImsVideoTech.pause", "disabling camera");
+      call.getVideoCall().setCamera(null);
     }
   }
 
   @Override
   public void unpause() {
-    if (canPause() && paused) {
+    if (call.getState() != Call.STATE_ACTIVE) {
+      LogUtil.i("ImsVideoTech.unpause", "not unpausing because call is not active");
+      return;
+    }
+
+    if (!isTransmittingOrReceiving()) {
+      LogUtil.i("ImsVideoTech.unpause", "not unpausing because this is not a video call");
+      return;
+    }
+
+    if (!paused) {
+      LogUtil.i("ImsVideoTech.unpause", "already unpaused");
+      return;
+    }
+
+    paused = false;
+
+    if (canPause()) {
       LogUtil.i("ImsVideoTech.unpause", "sending unpause request");
-      paused = false;
       int unpausedVideoState = getUnpausedVideoState(call.getDetails().getVideoState());
       if (transmissionStopped && VideoProfile.isTransmissionEnabled(unpausedVideoState)) {
         LogUtil.i("ImsVideoTech.unpause", "overriding TX to false due to user request");
@@ -266,16 +297,15 @@
       }
       call.getVideoCall().sendSessionModifyRequest(new VideoProfile(unpausedVideoState));
     } else {
-      LogUtil.i(
-          "ImsVideoTech.unpause",
-          "not sending request: canPause: %b, paused: %b",
-          canPause(),
-          paused);
+      // This video call does not support pause so we fall back to re-enabling the camera
+      LogUtil.i("ImsVideoTech.pause", "re-enabling camera");
+      setCamera(savedCameraId);
     }
   }
 
   @Override
   public void setCamera(@Nullable String cameraId) {
+    savedCameraId = cameraId;
     call.getVideoCall().setCamera(cameraId);
     call.getVideoCall().requestCameraCapabilities();
   }
@@ -285,10 +315,14 @@
     call.getVideoCall().setDeviceOrientation(rotation);
   }
 
+  @Override
+  public void becomePrimary() {
+    listener.onImpressionLoggingNeeded(
+        DialerImpression.Type.UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_IMS);
+  }
+
   private boolean canPause() {
-    return call.getDetails().can(Details.CAPABILITY_CAN_PAUSE_VIDEO)
-        && call.getState() == Call.STATE_ACTIVE
-        && isTransmittingOrReceiving();
+    return call.getDetails().can(Details.CAPABILITY_CAN_PAUSE_VIDEO);
   }
 
   static int getUnpausedVideoState(int videoState) {
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
index 961de9e..26d6347 100644
--- a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -26,6 +26,7 @@
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.lightbringer.Lightbringer;
 import com.android.dialer.lightbringer.LightbringerListener;
+import com.android.dialer.logging.DialerImpression;
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.video.protocol.VideoCallScreenDelegate;
 import com.android.incallui.videotech.VideoTech;
@@ -102,6 +103,7 @@
 
   @Override
   public void upgradeToVideo() {
+    listener.onImpressionLoggingNeeded(DialerImpression.Type.LIGHTBRINGER_UPGRADE_REQUESTED);
     lightbringer.requestUpgrade(call);
   }
 
@@ -147,6 +149,12 @@
   }
 
   @Override
+  public void becomePrimary() {
+    listener.onImpressionLoggingNeeded(
+        DialerImpression.Type.UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_LIGHTBRINGER);
+  }
+
+  @Override
   public void setDeviceOrientation(int rotation) {
     throw Assert.createUnsupportedOperationFailException();
   }
diff --git a/java/com/android/voicemail/impl/ActivationTask.java b/java/com/android/voicemail/impl/ActivationTask.java
index 6e27b50..320ea2a 100644
--- a/java/com/android/voicemail/impl/ActivationTask.java
+++ b/java/com/android/voicemail/impl/ActivationTask.java
@@ -36,7 +36,6 @@
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 import com.android.voicemail.impl.sms.StatusMessage;
 import com.android.voicemail.impl.sms.StatusSmsFetcher;
-import com.android.voicemail.impl.sync.OmtpVvmSyncService;
 import com.android.voicemail.impl.sync.SyncTask;
 import com.android.voicemail.impl.sync.VvmAccountManager;
 import com.android.voicemail.impl.utils.LoggerUtils;
@@ -258,7 +257,7 @@
         VoicemailStatus.edit(context, phoneAccountHandle),
         OmtpEvents.CONFIG_REQUEST_STATUS_SUCCESS);
     clearLegacyVoicemailNotification(context, phoneAccountHandle);
-    SyncTask.start(context, phoneAccountHandle, OmtpVvmSyncService.SYNC_FULL_SYNC);
+    SyncTask.start(context, phoneAccountHandle);
   }
 
   /** Sends a broadcast to the dialer UI to clear legacy voicemail notifications if any. */
diff --git a/java/com/android/voicemail/impl/AndroidManifest.xml b/java/com/android/voicemail/impl/AndroidManifest.xml
index 49d93f5..1abc96d 100644
--- a/java/com/android/voicemail/impl/AndroidManifest.xml
+++ b/java/com/android/voicemail/impl/AndroidManifest.xml
@@ -18,7 +18,6 @@
   package="com.android.voicemail.impl">
 
   <application
-    android:allowBackup="false"
     android:supportsRtl="true"
     android:usesCleartextTraffic="true"
     android:defaultToDeviceProtectedStorage="true"
@@ -117,6 +116,13 @@
       android:windowSoftInputMode="stateVisible|adjustResize">
     </activity>
 
+    <receiver android:name="com.android.voicemail.impl.PackageReplacedReceiver"
+        android:exported="false">
+      <intent-filter>
+        <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
+      </intent-filter>
+    </receiver>
+
     <receiver android:name="com.android.voicemail.impl.CarrierVvmPackageInstalledReceiver"
         android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"
         android:exported="true">
diff --git a/java/com/android/voicemail/impl/PackageReplacedReceiver.java b/java/com/android/voicemail/impl/PackageReplacedReceiver.java
new file mode 100644
index 0000000..6a7ca4a
--- /dev/null
+++ b/java/com/android/voicemail/impl/PackageReplacedReceiver.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 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.voicemail.impl;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import com.android.voicemail.VoicemailComponent;
+
+/** Receives MY_PACKAGE_REPLACED to trigger VVM activation. */
+public class PackageReplacedReceiver extends BroadcastReceiver {
+
+  @Override
+  public void onReceive(Context context, Intent intent) {
+    VvmLog.i("PackageReplacedReceiver.onReceive", "package replaced, starting activation");
+
+    if (!VoicemailComponent.get(context).getVoicemailClient().isVoicemailModuleEnabled()) {
+      VvmLog.e("PackageReplacedReceiver.onReceive", "module disabled");
+      return;
+    }
+
+    for (PhoneAccountHandle phoneAccountHandle :
+        context.getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) {
+      ActivationTask.start(context, phoneAccountHandle, null);
+    }
+  }
+}
diff --git a/java/com/android/voicemail/impl/VoicemailBootReceiver.java b/java/com/android/voicemail/impl/VoicemailBootReceiver.java
deleted file mode 100644
index 0a3e61a..0000000
--- a/java/com/android/voicemail/impl/VoicemailBootReceiver.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Copyright (C) 2017 The Android Open Source Project
- *
- * <p>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
- *
- * <p>http://www.apache.org/licenses/LICENSE-2.0
- *
- * <p>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.voicemail.impl;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import com.android.voicemail.VoicemailComponent;
-
-/** Receives {@link Intent#ACTION_BOOT_COMPLETED} for the voicemail module. */
-public class VoicemailBootReceiver extends BroadcastReceiver {
-
-  @Override
-  public void onReceive(Context context, Intent intent) {
-    if (!VoicemailComponent.get(context).getVoicemailClient().isVoicemailModuleEnabled()) {
-      return;
-    }
-    StatusCheckJobService.schedule(context);
-  }
-}
diff --git a/java/com/android/voicemail/impl/VoicemailStatus.java b/java/com/android/voicemail/impl/VoicemailStatus.java
index ec1ab4e..5553cf5 100644
--- a/java/com/android/voicemail/impl/VoicemailStatus.java
+++ b/java/com/android/voicemail/impl/VoicemailStatus.java
@@ -24,6 +24,7 @@
 import android.provider.VoicemailContract.Status;
 import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
+import com.android.dialer.strictmode.DialerStrictMode;
 
 public class VoicemailStatus {
 
@@ -99,7 +100,7 @@
       ContentResolver contentResolver = mContext.getContentResolver();
       Uri statusUri = VoicemailContract.Status.buildSourceUri(mContext.getPackageName());
       try {
-        contentResolver.insert(statusUri, mValues);
+        DialerStrictMode.bypass(() -> contentResolver.insert(statusUri, mValues));
       } catch (IllegalArgumentException iae) {
         VvmLog.e(TAG, "apply :: failed to insert content resolver ", iae);
         mValues.clear();
diff --git a/java/com/android/voicemail/impl/VvmPhoneStateListener.java b/java/com/android/voicemail/impl/VvmPhoneStateListener.java
index 48b7204..00c1358 100644
--- a/java/com/android/voicemail/impl/VvmPhoneStateListener.java
+++ b/java/com/android/voicemail/impl/VvmPhoneStateListener.java
@@ -19,7 +19,6 @@
 import android.telecom.PhoneAccountHandle;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
-import com.android.voicemail.impl.sync.OmtpVvmSyncService;
 import com.android.voicemail.impl.sync.SyncTask;
 import com.android.voicemail.impl.sync.VoicemailStatusQueryHelper;
 import com.android.voicemail.impl.sync.VvmAccountManager;
@@ -37,7 +36,7 @@
   private int mPreviousState = -1;
 
   public VvmPhoneStateListener(Context context, PhoneAccountHandle accountHandle) {
-    // TODO: b/32637799 too much trouble to call super constructor through reflection,
+    // TODO(twyen): b/32637799 too much trouble to call super constructor through reflection,
     // just use non-phoneAccountHandle version for now.
     super();
     mContext = context;
@@ -82,7 +81,7 @@
         VvmLog.v(TAG, "Signal returned: requesting resync for " + mPhoneAccount);
         // If the source is already registered, run a full sync in case something was missed
         // while signal was down.
-        SyncTask.start(mContext, mPhoneAccount, OmtpVvmSyncService.SYNC_FULL_SYNC);
+        SyncTask.start(mContext, mPhoneAccount);
       } else {
         VvmLog.v(TAG, "Signal returned: reattempting activation for " + mPhoneAccount);
         // Otherwise initiate an activation because this means that an OMTP source was
diff --git a/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java b/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java
deleted file mode 100644
index 448c693..0000000
--- a/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2017 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.google.internal.communications.voicemailtranscription.v1;
-
-import static io.grpc.stub.ClientCalls.asyncUnaryCall;
-import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
-import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
-import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
-import static io.grpc.stub.ClientCalls.blockingUnaryCall;
-import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
-import static io.grpc.stub.ClientCalls.futureUnaryCall;
-import static io.grpc.MethodDescriptor.generateFullMethodName;
-import static io.grpc.stub.ServerCalls.asyncUnaryCall;
-import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
-import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
-
-/**
- * <pre>
- * RPC service for transcribing voicemails.
- * </pre>
- */
-@javax.annotation.Generated(
-    value = "by gRPC proto compiler (version 1.0.3)",
-    comments = "Source: voicemail_transcription.proto")
-public class VoicemailTranscriptionServiceGrpc {
-
-  private VoicemailTranscriptionServiceGrpc() {}
-
-  public static final String SERVICE_NAME = "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService";
-
-  // Static method descriptors that strictly reflect the proto.
-  @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
-  public static final io.grpc.MethodDescriptor<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest,
-      com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> METHOD_TRANSCRIBE_VOICEMAIL =
-      io.grpc.MethodDescriptor.create(
-          io.grpc.MethodDescriptor.MethodType.UNARY,
-          generateFullMethodName(
-              "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService", "TranscribeVoicemail"),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest.getDefaultInstance()),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse.getDefaultInstance()));
-
-  /**
-   * Creates a new async stub that supports all call types for the service
-   */
-  public static VoicemailTranscriptionServiceStub newStub(io.grpc.Channel channel) {
-    return new VoicemailTranscriptionServiceStub(channel);
-  }
-
-  /**
-   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
-   */
-  public static VoicemailTranscriptionServiceBlockingStub newBlockingStub(
-      io.grpc.Channel channel) {
-    return new VoicemailTranscriptionServiceBlockingStub(channel);
-  }
-
-  /**
-   * Creates a new ListenableFuture-style stub that supports unary and streaming output calls on the service
-   */
-  public static VoicemailTranscriptionServiceFutureStub newFutureStub(
-      io.grpc.Channel channel) {
-    return new VoicemailTranscriptionServiceFutureStub(channel);
-  }
-
-  /**
-   * <pre>
-   * RPC service for transcribing voicemails.
-   * </pre>
-   */
-  public static abstract class VoicemailTranscriptionServiceImplBase implements io.grpc.BindableService {
-
-    /**
-     * <pre>
-     * Returns a transcript of the given voicemail.
-     * </pre>
-     */
-    public void transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> responseObserver) {
-      asyncUnimplementedUnaryCall(METHOD_TRANSCRIBE_VOICEMAIL, responseObserver);
-    }
-
-    @java.lang.Override public io.grpc.ServerServiceDefinition bindService() {
-      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-          .addMethod(
-            METHOD_TRANSCRIBE_VOICEMAIL,
-            asyncUnaryCall(
-              new MethodHandlers<
-                com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest,
-                com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse>(
-                  this, METHODID_TRANSCRIBE_VOICEMAIL)))
-          .build();
-    }
-  }
-
-  /**
-   * <pre>
-   * RPC service for transcribing voicemails.
-   * </pre>
-   */
-  public static final class VoicemailTranscriptionServiceStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceStub> {
-    private VoicemailTranscriptionServiceStub(io.grpc.Channel channel) {
-      super(channel);
-    }
-
-    private VoicemailTranscriptionServiceStub(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected VoicemailTranscriptionServiceStub build(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      return new VoicemailTranscriptionServiceStub(channel, callOptions);
-    }
-
-    /**
-     * <pre>
-     * Returns a transcript of the given voicemail.
-     * </pre>
-     */
-    public void transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> responseObserver) {
-      asyncUnaryCall(
-          getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions()), request, responseObserver);
-    }
-  }
-
-  /**
-   * <pre>
-   * RPC service for transcribing voicemails.
-   * </pre>
-   */
-  public static final class VoicemailTranscriptionServiceBlockingStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceBlockingStub> {
-    private VoicemailTranscriptionServiceBlockingStub(io.grpc.Channel channel) {
-      super(channel);
-    }
-
-    private VoicemailTranscriptionServiceBlockingStub(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected VoicemailTranscriptionServiceBlockingStub build(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      return new VoicemailTranscriptionServiceBlockingStub(channel, callOptions);
-    }
-
-    /**
-     * <pre>
-     * Returns a transcript of the given voicemail.
-     * </pre>
-     */
-    public com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request) {
-      return blockingUnaryCall(
-          getChannel(), METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions(), request);
-    }
-  }
-
-  /**
-   * <pre>
-   * RPC service for transcribing voicemails.
-   * </pre>
-   */
-  public static final class VoicemailTranscriptionServiceFutureStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceFutureStub> {
-    private VoicemailTranscriptionServiceFutureStub(io.grpc.Channel channel) {
-      super(channel);
-    }
-
-    private VoicemailTranscriptionServiceFutureStub(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected VoicemailTranscriptionServiceFutureStub build(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      return new VoicemailTranscriptionServiceFutureStub(channel, callOptions);
-    }
-
-    /**
-     * <pre>
-     * Returns a transcript of the given voicemail.
-     * </pre>
-     */
-    public com.google.common.util.concurrent.ListenableFuture<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> transcribeVoicemail(
-        com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request) {
-      return futureUnaryCall(
-          getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions()), request);
-    }
-  }
-
-  private static final int METHODID_TRANSCRIBE_VOICEMAIL = 0;
-
-  private static class MethodHandlers<Req, Resp> implements
-      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
-    private final VoicemailTranscriptionServiceImplBase serviceImpl;
-    private final int methodId;
-
-    public MethodHandlers(VoicemailTranscriptionServiceImplBase serviceImpl, int methodId) {
-      this.serviceImpl = serviceImpl;
-      this.methodId = methodId;
-    }
-
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        case METHODID_TRANSCRIBE_VOICEMAIL:
-          serviceImpl.transcribeVoicemail((com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest) request,
-              (io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse>) responseObserver);
-          break;
-        default:
-          throw new AssertionError();
-      }
-    }
-
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public io.grpc.stub.StreamObserver<Req> invoke(
-        io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        default:
-          throw new AssertionError();
-      }
-    }
-  }
-
-  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
-    return new io.grpc.ServiceDescriptor(SERVICE_NAME,
-        METHOD_TRANSCRIBE_VOICEMAIL);
-  }
-
-}
diff --git a/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java b/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
index 18b2b92..1624ce5 100644
--- a/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
+++ b/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
@@ -35,6 +35,7 @@
 import android.text.TextUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.strictmode.DialerStrictMode;
 import com.android.voicemail.VoicemailComponent;
 
 /**
@@ -126,8 +127,10 @@
   }
 
   public static boolean isOverridden(Context context) {
-    return PreferenceManager.getDefaultSharedPreferences(context)
-        .getBoolean(context.getString(R.string.vvm_config_override_enabled_key), false);
+    return DialerStrictMode.bypass(
+        () ->
+            PreferenceManager.getDefaultSharedPreferences(context)
+                .getBoolean(context.getString(R.string.vvm_config_override_enabled_key), false));
   }
 
   public static PersistableBundle getConfig(Context context) {
diff --git a/java/com/android/voicemail/impl/configui/res/values-af/strings.xml b/java/com/android/voicemail/impl/configui/res/values-af/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-af/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-am/strings.xml b/java/com/android/voicemail/impl/configui/res/values-am/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-am/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ar/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ar/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ar/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-az/strings.xml b/java/com/android/voicemail/impl/configui/res/values-az/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-az/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-b+sr+Latn/strings.xml b/java/com/android/voicemail/impl/configui/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-be/strings.xml b/java/com/android/voicemail/impl/configui/res/values-be/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-be/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-bg/strings.xml b/java/com/android/voicemail/impl/configui/res/values-bg/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-bg/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-bn/strings.xml b/java/com/android/voicemail/impl/configui/res/values-bn/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-bn/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-bs/strings.xml b/java/com/android/voicemail/impl/configui/res/values-bs/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-bs/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ca/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ca/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ca/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-cs/strings.xml b/java/com/android/voicemail/impl/configui/res/values-cs/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-cs/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-da/strings.xml b/java/com/android/voicemail/impl/configui/res/values-da/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-da/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-de/strings.xml b/java/com/android/voicemail/impl/configui/res/values-de/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-de/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-el/strings.xml b/java/com/android/voicemail/impl/configui/res/values-el/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-el/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-en-rAU/strings.xml b/java/com/android/voicemail/impl/configui/res/values-en-rAU/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-en-rGB/strings.xml b/java/com/android/voicemail/impl/configui/res/values-en-rGB/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-en-rIN/strings.xml b/java/com/android/voicemail/impl/configui/res/values-en-rIN/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-es-rUS/strings.xml b/java/com/android/voicemail/impl/configui/res/values-es-rUS/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-es/strings.xml b/java/com/android/voicemail/impl/configui/res/values-es/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-es/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-et/strings.xml b/java/com/android/voicemail/impl/configui/res/values-et/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-et/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-eu/strings.xml b/java/com/android/voicemail/impl/configui/res/values-eu/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-eu/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-fa/strings.xml b/java/com/android/voicemail/impl/configui/res/values-fa/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-fa/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-fi/strings.xml b/java/com/android/voicemail/impl/configui/res/values-fi/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-fi/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-fr-rCA/strings.xml b/java/com/android/voicemail/impl/configui/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-fr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-fr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-fr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-gl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-gl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-gl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-gu/strings.xml b/java/com/android/voicemail/impl/configui/res/values-gu/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-gu/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-hi/strings.xml b/java/com/android/voicemail/impl/configui/res/values-hi/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-hi/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-hr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-hr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-hr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-hu/strings.xml b/java/com/android/voicemail/impl/configui/res/values-hu/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-hu/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-hy/strings.xml b/java/com/android/voicemail/impl/configui/res/values-hy/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-hy/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-in/strings.xml b/java/com/android/voicemail/impl/configui/res/values-in/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-in/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-is/strings.xml b/java/com/android/voicemail/impl/configui/res/values-is/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-is/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-it/strings.xml b/java/com/android/voicemail/impl/configui/res/values-it/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-it/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-iw/strings.xml b/java/com/android/voicemail/impl/configui/res/values-iw/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-iw/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ja/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ja/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ja/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ka/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ka/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ka/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-kk/strings.xml b/java/com/android/voicemail/impl/configui/res/values-kk/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-kk/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-km/strings.xml b/java/com/android/voicemail/impl/configui/res/values-km/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-km/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-kn/strings.xml b/java/com/android/voicemail/impl/configui/res/values-kn/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-kn/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ko/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ko/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ko/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ky/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ky/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ky/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-lo/strings.xml b/java/com/android/voicemail/impl/configui/res/values-lo/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-lo/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-lt/strings.xml b/java/com/android/voicemail/impl/configui/res/values-lt/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-lt/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-lv/strings.xml b/java/com/android/voicemail/impl/configui/res/values-lv/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-lv/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-mk/strings.xml b/java/com/android/voicemail/impl/configui/res/values-mk/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-mk/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ml/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ml/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ml/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-mn/strings.xml b/java/com/android/voicemail/impl/configui/res/values-mn/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-mn/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-mr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-mr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-mr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ms/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ms/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ms/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-my/strings.xml b/java/com/android/voicemail/impl/configui/res/values-my/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-my/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-nb/strings.xml b/java/com/android/voicemail/impl/configui/res/values-nb/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-nb/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ne/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ne/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ne/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-nl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-nl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-nl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-no/strings.xml b/java/com/android/voicemail/impl/configui/res/values-no/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-no/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pa/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pa/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pa/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pt-rBR/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pt-rPT/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-pt/strings.xml b/java/com/android/voicemail/impl/configui/res/values-pt/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-pt/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ro/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ro/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ro/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ru/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ru/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ru/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-si/strings.xml b/java/com/android/voicemail/impl/configui/res/values-si/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-si/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sk/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sk/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sk/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sq/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sq/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sq/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sv/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sv/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sv/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-sw/strings.xml b/java/com/android/voicemail/impl/configui/res/values-sw/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-sw/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ta/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ta/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ta/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-te/strings.xml b/java/com/android/voicemail/impl/configui/res/values-te/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-te/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-th/strings.xml b/java/com/android/voicemail/impl/configui/res/values-th/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-th/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-tl/strings.xml b/java/com/android/voicemail/impl/configui/res/values-tl/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-tl/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-tr/strings.xml b/java/com/android/voicemail/impl/configui/res/values-tr/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-tr/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-uk/strings.xml b/java/com/android/voicemail/impl/configui/res/values-uk/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-uk/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-ur/strings.xml b/java/com/android/voicemail/impl/configui/res/values-ur/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-ur/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-uz/strings.xml b/java/com/android/voicemail/impl/configui/res/values-uz/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-uz/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-vi/strings.xml b/java/com/android/voicemail/impl/configui/res/values-vi/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-vi/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-zh-rCN/strings.xml b/java/com/android/voicemail/impl/configui/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-zh-rHK/strings.xml b/java/com/android/voicemail/impl/configui/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-zh-rTW/strings.xml b/java/com/android/voicemail/impl/configui/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/configui/res/values-zu/strings.xml b/java/com/android/voicemail/impl/configui/res/values-zu/strings.xml
deleted file mode 100644
index 826efd3..0000000
--- a/java/com/android/voicemail/impl/configui/res/values-zu/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/java/com/android/voicemail/impl/mail/MailTransport.java b/java/com/android/voicemail/impl/mail/MailTransport.java
index 00339f0..c35e414 100644
--- a/java/com/android/voicemail/impl/mail/MailTransport.java
+++ b/java/com/android/voicemail/impl/mail/MailTransport.java
@@ -195,6 +195,8 @@
     } catch (IOException ioe) {
       LogUtils.d(TAG, ioe.toString());
       throw new MessagingException(MessagingException.IOERROR, ioe.toString());
+    } finally {
+      TrafficStats.clearThreadStatsTag();
     }
   }
 
diff --git a/java/com/android/voicemail/impl/proguard.flags b/java/com/android/voicemail/impl/proguard.flags
new file mode 100644
index 0000000..9379df3
--- /dev/null
+++ b/java/com/android/voicemail/impl/proguard.flags
@@ -0,0 +1,4 @@
+-assumenosideeffects class com.android.voicemail.impl.VvmLog {
+    public static void v(...);
+    public static void d(...);
+}
diff --git a/java/com/android/voicemail/impl/res/xml/vvm_config.xml b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
index 2bac66b..c7ed5ca 100644
--- a/java/com/android/voicemail/impl/res/xml/vvm_config.xml
+++ b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
@@ -21,6 +21,7 @@
       <item value="TEST"/>
     </string-array>
   </pbundle_as_map>
+
   <pbundle_as_map>
     <!-- T-Mobile USA-->
     <string-array name="mccmnc">
diff --git a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
index 107234e..baf5804 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
@@ -30,6 +30,7 @@
 import android.preference.PreferenceManager;
 import android.support.annotation.MainThread;
 import com.android.dialer.constants.ScheduledJobIds;
+import com.android.dialer.strictmode.DialerStrictMode;
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.VvmLog;
 import java.util.ArrayList;
@@ -58,7 +59,8 @@
   public boolean onStartJob(JobParameters params) {
     int jobId = params.getTransientExtras().getInt(EXTRA_JOB_ID);
     int expectedJobId =
-        PreferenceManager.getDefaultSharedPreferences(this).getInt(EXPECTED_JOB_ID, 0);
+        DialerStrictMode.bypass(
+            () -> PreferenceManager.getDefaultSharedPreferences(this).getInt(EXPECTED_JOB_ID, 0));
     if (jobId != expectedJobId) {
       VvmLog.e(
           TAG, "Job " + jobId + " is not the last scheduled job " + expectedJobId + ", ignoring");
diff --git a/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java b/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
index 1cf3737..4383527 100644
--- a/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
+++ b/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
@@ -35,7 +35,6 @@
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.protocol.VisualVoicemailProtocol;
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
-import com.android.voicemail.impl.sync.OmtpVvmSyncService;
 import com.android.voicemail.impl.sync.SyncOneTask;
 import com.android.voicemail.impl.sync.SyncTask;
 import com.android.voicemail.impl.sync.VoicemailsQueryHelper;
@@ -152,7 +151,7 @@
         }
         break;
       case OmtpConstants.MAILBOX_UPDATE:
-        SyncTask.start(mContext, phone, OmtpVvmSyncService.SYNC_DOWNLOAD_ONLY);
+        SyncTask.start(mContext, phone);
         break;
       case OmtpConstants.GREETINGS_UPDATE:
         // Not implemented in V1
diff --git a/java/com/android/voicemail/impl/sms/OmtpMessageSender.java b/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
index e9d145c..19661e9 100644
--- a/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
+++ b/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
@@ -22,6 +22,7 @@
 import android.telephony.SmsManager;
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.TelephonyMangerCompat;
+import com.android.voicemail.impl.VvmLog;
 
 /**
  * Send client originated OMTP messages to the OMTP server.
@@ -75,6 +76,11 @@
   public void requestVvmStatus(@Nullable PendingIntent sentIntent) {}
 
   protected void sendSms(String text, PendingIntent sentIntent) {
+
+    VvmLog.v(
+        TAG,
+        String.format("Sending sms '%s' to %s:%d", text, mDestinationNumber, mApplicationPort));
+
     TelephonyMangerCompat.sendVisualVoicemailSms(
         mContext, mPhoneAccountHandle, mDestinationNumber, mApplicationPort, text, sentIntent);
   }
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
index b2ec49e..1b59ecc 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
@@ -52,7 +52,7 @@
           VvmLog.i(TAG, "Unactivated account " + phoneAccount + " found, activating");
           ActivationTask.start(context, phoneAccount, null);
         } else {
-          SyncTask.start(context, phoneAccount, OmtpVvmSyncService.SYNC_FULL_SYNC);
+          SyncTask.start(context, phoneAccount);
         }
       }
     }
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
index 7933883..5b5d6b0 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
@@ -43,6 +43,7 @@
 import com.android.voicemail.impl.sync.VvmNetworkRequest.RequestFailedException;
 import com.android.voicemail.impl.utils.LoggerUtils;
 import com.android.voicemail.impl.utils.VoicemailDatabaseUtil;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -50,22 +51,13 @@
 @TargetApi(VERSION_CODES.O)
 public class OmtpVvmSyncService {
 
-  private static final String TAG = OmtpVvmSyncService.class.getSimpleName();
+  private static final String TAG = "OmtpVvmSyncService";
 
-  /** Signifies a sync with both uploading to the server and downloading from the server. */
-  public static final String SYNC_FULL_SYNC = "full_sync";
-  /** Only upload to the server. */
-  public static final String SYNC_UPLOAD_ONLY = "upload_only";
-  /** Only download from the server. */
-  public static final String SYNC_DOWNLOAD_ONLY = "download_only";
-  /** Only download single voicemail transcription. */
-  public static final String SYNC_DOWNLOAD_ONE_TRANSCRIPTION = "download_one_transcription";
   /** Threshold for whether we should archive and delete voicemails from the remote VM server. */
   private static final float AUTO_DELETE_ARCHIVE_VM_THRESHOLD = 0.75f;
 
   private final Context mContext;
-
-  private VoicemailsQueryHelper mQueryHelper;
+  private final VoicemailsQueryHelper mQueryHelper;
 
   public OmtpVvmSyncService(Context context) {
     mContext = context;
@@ -74,23 +66,21 @@
 
   public void sync(
       BaseTask task,
-      String action,
       PhoneAccountHandle phoneAccount,
       Voicemail voicemail,
       VoicemailStatus.Editor status) {
     Assert.isTrue(phoneAccount != null);
-    VvmLog.v(TAG, "Sync requested: " + action + " - for account: " + phoneAccount);
-    setupAndSendRequest(task, phoneAccount, voicemail, action, status);
+    VvmLog.v(TAG, "Sync requested for account: " + phoneAccount);
+    setupAndSendRequest(task, phoneAccount, voicemail, status);
   }
 
   private void setupAndSendRequest(
       BaseTask task,
       PhoneAccountHandle phoneAccount,
       Voicemail voicemail,
-      String action,
       VoicemailStatus.Editor status) {
     if (!VisualVoicemailSettingsUtil.isEnabled(mContext, phoneAccount)) {
-      VvmLog.v(TAG, "Sync requested for disabled account");
+      VvmLog.e(TAG, "Sync requested for disabled account");
       return;
     }
     if (!VvmAccountManager.isAccountActivated(mContext, phoneAccount)) {
@@ -102,7 +92,7 @@
     LoggerUtils.logImpressionOnMainThread(mContext, DialerImpression.Type.VVM_SYNC_STARTED);
     // DATA_IMAP_OPERATION_STARTED posting should not be deferred. This event clears all data
     // channel errors, which should happen when the task starts, not when it ends. It is the
-    // "Sync in progress..." status.
+    // "Sync in progress..." status, which is currently displayed to the user as no error.
     config.handleEvent(
         VoicemailStatus.edit(mContext, phoneAccount), OmtpEvents.DATA_IMAP_OPERATION_STARTED);
     try (NetworkWrapper network = VvmNetworkRequest.getNetwork(config, phoneAccount, status)) {
@@ -111,7 +101,7 @@
         task.fail();
         return;
       }
-      doSync(task, network.get(), phoneAccount, voicemail, action, status);
+      doSync(task, network.get(), phoneAccount, voicemail, status);
     } catch (RequestFailedException e) {
       config.handleEvent(status, OmtpEvents.DATA_NO_CONNECTION_CELLULAR_REQUIRED);
       task.fail();
@@ -123,14 +113,13 @@
       Network network,
       PhoneAccountHandle phoneAccount,
       Voicemail voicemail,
-      String action,
       VoicemailStatus.Editor status) {
     try (ImapHelper imapHelper = new ImapHelper(mContext, phoneAccount, network, status)) {
       boolean success;
       if (voicemail == null) {
-        success = syncAll(action, imapHelper, phoneAccount);
+        success = syncAll(imapHelper, phoneAccount);
       } else {
-        success = syncOne(imapHelper, voicemail, phoneAccount);
+        success = downloadOneVoicemail(imapHelper, voicemail, phoneAccount);
       }
       if (success) {
         // TODO: b/30569269 failure should interrupt all subsequent task via exceptions
@@ -219,79 +208,33 @@
     }
   }
 
-  private boolean syncAll(String action, ImapHelper imapHelper, PhoneAccountHandle account) {
-    boolean uploadSuccess = true;
-    boolean downloadSuccess = true;
+  private boolean syncAll(ImapHelper imapHelper, PhoneAccountHandle account) {
 
-    if (SYNC_FULL_SYNC.equals(action) || SYNC_UPLOAD_ONLY.equals(action)) {
-      uploadSuccess = upload(account, imapHelper);
-    }
-    if (SYNC_FULL_SYNC.equals(action) || SYNC_DOWNLOAD_ONLY.equals(action)) {
-      downloadSuccess = download(imapHelper, account);
-    }
-
-    VvmLog.v(
-        TAG,
-        "upload succeeded: ["
-            + String.valueOf(uploadSuccess)
-            + "] download succeeded: ["
-            + String.valueOf(downloadSuccess)
-            + "]");
-
-    return uploadSuccess && downloadSuccess;
-  }
-
-  private boolean syncOne(ImapHelper imapHelper, Voicemail voicemail, PhoneAccountHandle account) {
-    if (shouldPerformPrefetch(account, imapHelper)) {
-      VoicemailFetchedCallback callback =
-          new VoicemailFetchedCallback(mContext, voicemail.getUri(), account);
-      imapHelper.fetchVoicemailPayload(callback, voicemail.getSourceData());
-    }
-
-    return imapHelper.fetchTranscription(
-        new TranscriptionFetchedCallback(mContext, voicemail), voicemail.getSourceData());
-  }
-
-  private boolean upload(PhoneAccountHandle phoneAccountHandle, ImapHelper imapHelper) {
-    List<Voicemail> readVoicemails = mQueryHelper.getReadVoicemails(phoneAccountHandle);
-    List<Voicemail> deletedVoicemails = mQueryHelper.getDeletedVoicemails(phoneAccountHandle);
-
-    boolean success = true;
-
-    if (deletedVoicemails.size() > 0) {
-      if (imapHelper.markMessagesAsDeleted(deletedVoicemails)) {
-        // We want to delete selectively instead of all the voicemails for this provider
-        // in case the state changed since the IMAP query was completed.
-        mQueryHelper.deleteFromDatabase(deletedVoicemails);
-      } else {
-        success = false;
-      }
-    }
-
-    if (readVoicemails.size() > 0) {
-      VvmLog.i(TAG, "Marking voicemails as read");
-      if (imapHelper.markMessagesAsRead(readVoicemails)) {
-        VvmLog.i(TAG, "Marking voicemails as clean");
-        mQueryHelper.markCleanInDatabase(readVoicemails);
-      } else {
-        success = false;
-      }
-    }
-
-    return success;
-  }
-
-  private boolean download(ImapHelper imapHelper, PhoneAccountHandle account) {
     List<Voicemail> serverVoicemails = imapHelper.fetchAllVoicemails();
     List<Voicemail> localVoicemails = mQueryHelper.getAllVoicemails(account);
+    List<Voicemail> deletedVoicemails = mQueryHelper.getDeletedVoicemails(account);
+    boolean succeeded = true;
 
     if (localVoicemails == null || serverVoicemails == null) {
       // Null value means the query failed.
+      VvmLog.e(TAG, "syncAll: query failed");
       return false;
     }
 
+    if (deletedVoicemails.size() > 0) {
+      if (imapHelper.markMessagesAsDeleted(deletedVoicemails)) {
+        // Delete only the voicemails that was deleted on the server, in case more are deleted
+        // since the IMAP query was completed.
+        mQueryHelper.deleteFromDatabase(deletedVoicemails);
+      } else {
+        succeeded = false;
+      }
+    }
+
     Map<String, Voicemail> remoteMap = buildMap(serverVoicemails);
 
+    List<Voicemail> localReadVoicemails = new ArrayList<>();
+
     // Go through all the local voicemails and check if they are on the server.
     // They may be read or deleted on the server but not locally. Perform the
     // appropriate local operation if the status differs from the server. Remove
@@ -310,6 +253,8 @@
       } else {
         if (remoteVoicemail.isRead() && !localVoicemail.isRead()) {
           mQueryHelper.markReadInDatabase(localVoicemail);
+        } else if (localVoicemail.isRead() && !remoteVoicemail.isRead()) {
+          localReadVoicemails.add(localVoicemail);
         }
 
         if (!TextUtils.isEmpty(remoteVoicemail.getTranscription())
@@ -321,6 +266,16 @@
       }
     }
 
+    if (localReadVoicemails.size() > 0) {
+      VvmLog.i(TAG, "Marking voicemails as read");
+      if (imapHelper.markMessagesAsRead(localReadVoicemails)) {
+        VvmLog.i(TAG, "Marking voicemails as clean");
+        mQueryHelper.markCleanInDatabase(localReadVoicemails);
+      } else {
+        return false;
+      }
+    }
+
     // The leftover messages are messages that exist on the server but not locally.
     boolean prefetchEnabled = shouldPerformPrefetch(account, imapHelper);
     for (Voicemail remoteVoicemail : remoteMap.values()) {
@@ -336,7 +291,19 @@
       }
     }
 
-    return true;
+    return succeeded;
+  }
+
+  private boolean downloadOneVoicemail(
+      ImapHelper imapHelper, Voicemail voicemail, PhoneAccountHandle account) {
+    if (shouldPerformPrefetch(account, imapHelper)) {
+      VoicemailFetchedCallback callback =
+          new VoicemailFetchedCallback(mContext, voicemail.getUri(), account);
+      imapHelper.fetchVoicemailPayload(callback, voicemail.getSourceData());
+    }
+
+    return imapHelper.fetchTranscription(
+        new TranscriptionFetchedCallback(mContext, voicemail), voicemail.getSourceData());
   }
 
   private boolean shouldPerformPrefetch(PhoneAccountHandle account, ImapHelper imapHelper) {
diff --git a/java/com/android/voicemail/impl/sync/SyncOneTask.java b/java/com/android/voicemail/impl/sync/SyncOneTask.java
index cd2782a..70c6bd8 100644
--- a/java/com/android/voicemail/impl/sync/SyncOneTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncOneTask.java
@@ -39,17 +39,14 @@
   private static final int RETRY_INTERVAL_MILLIS = 5_000;
 
   private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
-  private static final String EXTRA_SYNC_TYPE = "extra_sync_type";
   private static final String EXTRA_VOICEMAIL = "extra_voicemail";
 
   private PhoneAccountHandle mPhone;
-  private String mSyncType;
   private Voicemail mVoicemail;
 
   public static void start(Context context, PhoneAccountHandle phone, Voicemail voicemail) {
     Intent intent = BaseTask.createIntent(context, SyncOneTask.class, phone);
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
-    intent.putExtra(EXTRA_SYNC_TYPE, OmtpVvmSyncService.SYNC_DOWNLOAD_ONE_TRANSCRIPTION);
     intent.putExtra(EXTRA_VOICEMAIL, voicemail);
     context.sendBroadcast(intent);
   }
@@ -63,14 +60,13 @@
   public void onCreate(Context context, Bundle extras) {
     super.onCreate(context, extras);
     mPhone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
-    mSyncType = extras.getString(EXTRA_SYNC_TYPE);
     mVoicemail = extras.getParcelable(EXTRA_VOICEMAIL);
   }
 
   @Override
   public void onExecuteInBackgroundThread() {
     OmtpVvmSyncService service = new OmtpVvmSyncService(getContext());
-    service.sync(this, mSyncType, mPhone, mVoicemail, VoicemailStatus.edit(getContext(), mPhone));
+    service.sync(this, mPhone, mVoicemail, VoicemailStatus.edit(getContext(), mPhone));
   }
 
   @Override
@@ -78,7 +74,6 @@
     LoggerUtils.logImpressionOnMainThread(getContext(), DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
     Intent intent = super.createRestartIntent();
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, mPhone);
-    intent.putExtra(EXTRA_SYNC_TYPE, mSyncType);
     intent.putExtra(EXTRA_VOICEMAIL, mVoicemail);
     return intent;
   }
diff --git a/java/com/android/voicemail/impl/sync/SyncTask.java b/java/com/android/voicemail/impl/sync/SyncTask.java
index 0b3e090..68ce012 100644
--- a/java/com/android/voicemail/impl/sync/SyncTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncTask.java
@@ -37,17 +37,14 @@
   private static final int MINIMAL_INTERVAL_MILLIS = 60_000;
 
   private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
-  private static final String EXTRA_SYNC_TYPE = "extra_sync_type";
 
   private final RetryPolicy mRetryPolicy;
 
   private PhoneAccountHandle mPhone;
-  private String mSyncType;
 
-  public static void start(Context context, PhoneAccountHandle phone, String syncType) {
+  public static void start(Context context, PhoneAccountHandle phone) {
     Intent intent = BaseTask.createIntent(context, SyncTask.class, phone);
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
-    intent.putExtra(EXTRA_SYNC_TYPE, syncType);
     context.sendBroadcast(intent);
   }
 
@@ -62,13 +59,12 @@
   public void onCreate(Context context, Bundle extras) {
     super.onCreate(context, extras);
     mPhone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
-    mSyncType = extras.getString(EXTRA_SYNC_TYPE);
   }
 
   @Override
   public void onExecuteInBackgroundThread() {
     OmtpVvmSyncService service = new OmtpVvmSyncService(getContext());
-    service.sync(this, mSyncType, mPhone, null, mRetryPolicy.getVoicemailStatusEditor());
+    service.sync(this, mPhone, null, mRetryPolicy.getVoicemailStatusEditor());
   }
 
   @Override
@@ -76,7 +72,6 @@
     LoggerUtils.logImpressionOnMainThread(getContext(), DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
     Intent intent = super.createRestartIntent();
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, mPhone);
-    intent.putExtra(EXTRA_SYNC_TYPE, mSyncType);
     return intent;
   }
 }
diff --git a/java/com/android/voicemail/impl/sync/UploadTask.java b/java/com/android/voicemail/impl/sync/UploadTask.java
index f2b2036..d8f06db 100644
--- a/java/com/android/voicemail/impl/sync/UploadTask.java
+++ b/java/com/android/voicemail/impl/sync/UploadTask.java
@@ -63,10 +63,6 @@
       return;
     }
     service.sync(
-        this,
-        OmtpVvmSyncService.SYNC_UPLOAD_ONLY,
-        phoneAccountHandle,
-        null,
-        VoicemailStatus.edit(getContext(), phoneAccountHandle));
+        this, phoneAccountHandle, null, VoicemailStatus.edit(getContext(), phoneAccountHandle));
   }
 }
diff --git a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
index 9b295db..316e1ca 100644
--- a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
+++ b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
@@ -49,8 +49,6 @@
   public static final int DELETED = 3;
   public static final int TRANSCRIPTION = 4;
 
-  static final String READ_SELECTION =
-      Voicemails.DIRTY + "=1 AND " + Voicemails.DELETED + "!=1 AND " + Voicemails.IS_READ + "=1";
   static final String DELETED_SELECTION = Voicemails.DELETED + "=1";
   static final String ARCHIVED_SELECTION = Voicemails.ARCHIVED + "=0";
 
@@ -65,15 +63,6 @@
   }
 
   /**
-   * Get all the local read voicemails that have not been synced to the server.
-   *
-   * @return A list of read voicemails.
-   */
-  public List<Voicemail> getReadVoicemails(@NonNull PhoneAccountHandle phoneAccountHandle) {
-    return getLocalVoicemails(phoneAccountHandle, READ_SELECTION);
-  }
-
-  /**
    * Get all the locally deleted voicemails that have not been synced to the server.
    *
    * @return A list of deleted voicemails.
diff --git a/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java b/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
index 067eff8..068b19b 100644
--- a/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
+++ b/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
@@ -128,7 +128,7 @@
 
   @CallSuper
   public void onUnavailable() {
-    // TODO: b/32637799 this is hidden, do we really need this?
+    // TODO(twyen): b/32637799 this is hidden, do we really need this?
     mResultReceived = true;
     onFailed(NETWORK_REQUEST_FAILED_TIMEOUT);
   }
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
index 3e80a7f..9a781e6 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
@@ -24,7 +24,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.StrictMode;
 import android.support.annotation.MainThread;
 import android.support.annotation.VisibleForTesting;
 import android.support.v4.os.BuildCompat;
@@ -32,6 +31,7 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.constants.ScheduledJobIds;
+import com.android.dialer.strictmode.DialerStrictMode;
 import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -48,7 +48,6 @@
   private JobParameters jobParameters;
   private TranscriptionClientFactory clientFactory;
   private TranscriptionConfigProvider configProvider;
-  private StrictMode.VmPolicy originalPolicy;
 
   /** Callback used by a task to indicate it has finished processing its work item */
   interface JobCallback {
@@ -111,8 +110,7 @@
       LogUtil.i(
           "TranscriptionService.onStartJob",
           "transcription server address: " + configProvider.getServerAddress());
-      originalPolicy = StrictMode.getVmPolicy();
-      StrictMode.enableDefaults();
+      DialerStrictMode.disableDeathPenalty(); // Re-enabled in cleanup.
       jobParameters = params;
       return checkForWork();
     }
@@ -142,10 +140,7 @@
       executorService.shutdownNow();
       executorService = null;
     }
-    if (originalPolicy != null) {
-      StrictMode.setVmPolicy(originalPolicy);
-      originalPolicy = null;
-    }
+    DialerStrictMode.enableDeathPenalty();
   }
 
   @MainThread
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto b/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto
index 4b1e19b..dd2170a 100644
--- a/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto
+++ b/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto
@@ -5,9 +5,10 @@
 package google.internal.communications.voicemailtranscription.v1;
 
 option java_multiple_files = true;
-option java_package = "com.google.internal.communications.voicemailtranscription.v1";
 option optimize_for = LITE_RUNTIME;
 
+option java_package = "com.google.internal.communications.voicemailtranscription.v1";
+
 // Enum that specifies supported audio formats.
 enum AudioFormat {
   // Default but invalid value.
