summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Erfanian <erfanian@google.com>2017-06-19 17:28:33 -0700
committerEric Erfanian <erfanian@google.com>2017-06-19 17:28:33 -0700
commit2d6bc36921c4a41b17bc1870c133ee42f1388b51 (patch)
treeccf7310c8466dbc94a5646969613db81833c1ddd
parentecc0957193e971e8f94f39efdbb37b0e4ed4f988 (diff)
Add "Simulator" for Enriched Calling
An annoying part of development on enriched calling is that it was difficult to determine what sessions were in memory. We have a number of bugs related to incorrect sessions being shown, and knowing exactly what sessions are available in memory can help debug them. This CL adds a "Simulator" for enriched calling. This is more of a debug tool than a simulator since it doesn't yet support adding a new enriched calling session. To allow the simulator to view all of the sessions in memory, a new EnrichedCallManager API was introduced: getAllSessionsView. This API was designed in a way to prevent abuse, so it returns a list of string representations of the sessions. Just returning the full list of sessions would have allowed clients to bypass the getSession logic and examine sessions that shouldn't be available. Also in this change: * Integrate changes to form a base for future copybara imports. Test: TH PiperOrigin-RevId: 159445010 Change-Id: Ie8fc35d817a4e3b0eac37e0c34a6592060c43b23
-rw-r--r--Android.mk43
-rw-r--r--AndroidManifest.xml1
-rw-r--r--CONTRIBUTING27
-rw-r--r--java/com/android/contacts/common/res/values/colors.xml1
-rwxr-xr-x[-rw-r--r--]java/com/android/dialer/about/res/raw/third_party_license_metadata0
-rwxr-xr-x[-rw-r--r--]java/com/android/dialer/about/res/raw/third_party_licenses0
-rwxr-xr-x[-rw-r--r--]java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_add_call.pngbin1649 -> 1649 bytes
-rwxr-xr-x[-rw-r--r--]java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_current_call.pngbin2305 -> 2305 bytes
-rwxr-xr-x[-rw-r--r--]java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_tt_keypad.pngbin2419 -> 2419 bytes
-rw-r--r--java/com/android/dialer/binary/google/AndroidManifest.xml118
-rw-r--r--java/com/android/dialer/binary/google/GoogleStubDialerApplication.java37
-rw-r--r--java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java52
-rw-r--r--java/com/android/dialer/buildtype/bugfood/BuildTypeAccessorImpl.java30
-rw-r--r--java/com/android/dialer/buildtype/dogfood/BuildTypeAccessorImpl.java30
-rw-r--r--java/com/android/dialer/buildtype/fishfood/BuildTypeAccessorImpl.java30
-rw-r--r--java/com/android/dialer/buildtype/test/BuildTypeAccessorImpl.java30
-rw-r--r--java/com/android/dialer/callintent/call_initiation_type.proto1
-rw-r--r--java/com/android/dialer/calllog/testing/FakeCallLogApplication.java53
-rw-r--r--java/com/android/dialer/constants/googledialer/ConstantsImpl.java43
-rw-r--r--java/com/android/dialer/enrichedcall/EnrichedCallManager.java9
-rw-r--r--java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml26
-rw-r--r--java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java110
-rw-r--r--java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java37
-rw-r--r--java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java51
-rw-r--r--java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml38
-rw-r--r--java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml23
-rw-r--r--java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml24
-rw-r--r--java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java9
-rwxr-xr-x[-rw-r--r--]java/com/android/dialer/interactions/res/layout/phone_disambig_item.xml0
-rw-r--r--java/com/android/dialer/logging/contact_lookup_result.proto1
-rw-r--r--java/com/android/dialer/logging/contact_source.proto1
-rw-r--r--java/com/android/dialer/logging/dialer_impression.proto23
-rw-r--r--java/com/android/dialer/logging/interaction_event.proto1
-rw-r--r--java/com/android/dialer/logging/reporting_location.proto1
-rw-r--r--java/com/android/dialer/logging/screen_event.proto1
-rw-r--r--java/com/android/dialer/logging/ui_action.proto1
-rw-r--r--java/com/android/dialer/searchfragment/README.md4
-rw-r--r--java/com/android/dialer/simulator/impl/SimulatorActionProvider.java8
-rw-r--r--java/com/android/incallui/calllocation/impl/AndroidManifest.xml1
-rw-r--r--java/com/android/incallui/maps/impl/AndroidManifest.xml1
-rw-r--r--java/com/android/voicemail/impl/res/xml/vvm_config.xml1
41 files changed, 770 insertions, 97 deletions
diff --git a/Android.mk b/Android.mk
index dc34cc4a4..15bf8bcae 100644
--- a/Android.mk
+++ b/Android.mk
@@ -33,7 +33,6 @@ SRC_DIRS := \
# Exclude files incompatible with AOSP.
EXCLUDE_FILES := \
- $(BASE_DIR)/dialer/calllog/testing/FakeCallLogApplication.java \
$(BASE_DIR)/incallui/calllocation/impl/AuthException.java \
$(BASE_DIR)/incallui/calllocation/impl/CallLocationImpl.java \
$(BASE_DIR)/incallui/calllocation/impl/CallLocationModule.java \
@@ -54,6 +53,16 @@ EXCLUDE_FILES := \
EXCLUDE_FILES += \
$(BASE_DIR)/contacts/common/format/testing/SpannedTestUtils.java
+# Exclude build variants for now
+EXCLUDE_FILES += \
+ $(BASE_DIR)/dialer/buildtype/bugfood/BuildTypeAccessorImpl.java \
+ $(BASE_DIR)/dialer/buildtype/dogfood/BuildTypeAccessorImpl.java \
+ $(BASE_DIR)/dialer/buildtype/fishfood/BuildTypeAccessorImpl.java \
+ $(BASE_DIR)/dialer/buildtype/test/BuildTypeAccessorImpl.java \
+ $(BASE_DIR)/dialer/constants/googledialer/ConstantsImpl.java \
+ $(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 := \
@@ -74,22 +83,23 @@ RES_DIRS := \
$(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)/dialer/searchfragment/common/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)/dialershared/bubble/res \
$(BASE_DIR)/incallui/answer/impl/affordance/res \
$(BASE_DIR)/incallui/answer/impl/answermethod/res \
$(BASE_DIR)/incallui/answer/impl/hint/res \
@@ -132,15 +142,17 @@ DIALER_MANIFEST_FILES += \
$(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)/dialer/searchfragment/common/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 \
@@ -148,7 +160,6 @@ DIALER_MANIFEST_FILES += \
$(BASE_DIR)/dialer/util/AndroidManifest.xml \
$(BASE_DIR)/dialer/voicemailstatus/AndroidManifest.xml \
$(BASE_DIR)/dialer/widget/AndroidManifest.xml \
- $(BASE_DIR)/dialershared/bubble/AndroidManifest.xml \
$(BASE_DIR)/incallui/AndroidManifest.xml \
$(BASE_DIR)/incallui/answer/impl/affordance/AndroidManifest.xml \
$(BASE_DIR)/incallui/answer/impl/AndroidManifest.xml \
@@ -166,8 +177,8 @@ DIALER_MANIFEST_FILES += \
$(BASE_DIR)/incallui/video/impl/AndroidManifest.xml \
$(BASE_DIR)/incallui/video/protocol/AndroidManifest.xml \
$(BASE_DIR)/incallui/wifi/AndroidManifest.xml \
- $(BASE_DIR)/voicemail/impl/AndroidManifest.xml \
$(BASE_DIR)/voicemail/AndroidManifest.xml \
+ $(BASE_DIR)/voicemail/impl/AndroidManifest.xml \
# Merge all manifest files.
@@ -206,22 +217,23 @@ LOCAL_AAPT_FLAGS := \
--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.dialer.searchfragment.common \
+ --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.dialershared.bubble \
--extra-packages com.android.incallui \
--extra-packages com.android.incallui.answer.impl \
--extra-packages com.android.incallui.answer.impl.affordance \
@@ -249,7 +261,8 @@ LOCAL_AAPT_FLAGS := \
--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
+ --extra-packages me.leolin.shortcutbadger \
+
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
@@ -260,12 +273,12 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
dialer-disklrucache-target \
dialer-gifdecoder-target \
dialer-glide-target \
- dialer-guava-target \
dialer-grpc-all-target \
dialer-grpc-core-target \
dialer-grpc-okhttp-target \
dialer-grpc-protobuf-lite-target \
dialer-grpc-stub-target \
+ dialer-guava-target \
dialer-javax-annotation-api-target \
dialer-javax-inject-target \
dialer-libshortcutbadger-target \
@@ -285,18 +298,18 @@ LOCAL_STATIC_ANDROID_LIBRARIES := \
android-support-v7-recyclerview \
LOCAL_JAVA_LIBRARIES := \
- org.apache.http.legacy \
dialer-auto-value \
+ org.apache.http.legacy \
# Libraries needed by the compiler (JACK) to generate code.
PROCESSOR_LIBRARIES_TARGET := \
- dialer-dagger2-compiler \
+ dialer-auto-value \
dialer-dagger2 \
+ dialer-dagger2-compiler \
dialer-dagger2-producers \
dialer-guava \
dialer-javax-annotation-api \
dialer-javax-inject \
- dialer-auto-value \
# Resolve the jar paths.
PROCESSOR_JARS := $(call java-lib-deps, $(PROCESSOR_LIBRARIES_TARGET))
@@ -352,16 +365,16 @@ PROCESSOR_JARS :=
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
- dialer-dagger2-compiler:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-compiler/2.7/dagger-compiler-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-auto-value:../../../prebuilts/tools/common/m2/repository/com/google/auto/value/auto-value/1.3/auto-value-1.3$(COMMON_JAVA_PACKAGE_SUFFIX) \
+ dialer-dagger2-compiler:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-compiler/2.7/dagger-compiler-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-dagger2:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger/2.7/dagger-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-dagger2-producers:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-producers/2.7/dagger-producers-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \
- dialer-guava:../../../prebuilts/tools/common/m2/repository/com/google/guava/guava/20.0/guava-20.0$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-grpc-all:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-all/1.0.3/grpc-all-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-grpc-core:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-core/1.0.3/grpc-core-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-grpc-okhttp:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-okhttp/1.0.3/grpc-okhttp-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-grpc-protobuf-lite:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-protobuf-lite/1.0.3/grpc-protobuf-lite-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-grpc-stub:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-stub/1.0.3/grpc-stub-1.0.3$(COMMON_JAVA_PACKAGE_SUFFIX) \
+ dialer-guava:../../../prebuilts/tools/common/m2/repository/com/google/guava/guava/20.0/guava-20.0$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-javax-annotation-api:../../../prebuilts/tools/common/m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2$(COMMON_JAVA_PACKAGE_SUFFIX) \
dialer-javax-inject:../../../prebuilts/tools/common/m2/repository/javax/inject/javax.inject/1/javax.inject-1$(COMMON_JAVA_PACKAGE_SUFFIX)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 8dc9f6bb9..f9abe4364 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -114,6 +114,7 @@
android:usesCleartextTraffic="false">
+
</application>
</manifest>
diff --git a/CONTRIBUTING b/CONTRIBUTING
deleted file mode 100644
index 2827b7d3f..000000000
--- a/CONTRIBUTING
+++ /dev/null
@@ -1,27 +0,0 @@
-Want to contribute? Great! First, read this page (including the small print at the end).
-
-### Before you contribute
-Before we can use your code, you must sign the
-[Google Individual Contributor License Agreement]
-(https://cla.developers.google.com/about/google-individual)
-(CLA), which you can do online. The CLA is necessary mainly because you own the
-copyright to your changes, even after your contribution becomes part of our
-codebase, so we need your permission to use and distribute your code. We also
-need to be sure of various other things—for instance that you'll tell us if you
-know that your code infringes on other people's patents. You don't have to sign
-the CLA until after you've submitted your code for review and a member has
-approved it, but you must do it before we can put your code into our codebase.
-Before you start working on a larger contribution, you should get in touch with
-us first through the issue tracker with your idea so that we can help out and
-possibly guide you. Coordinating up front makes it much easier to avoid
-frustration later on.
-
-### Code reviews
-All submissions, including submissions by project members, require review. We
-use Github pull requests for this purpose.
-
-### The small print
-Contributions made by corporations are covered by a different agreement than
-the one above, the
-[Software Grant and Corporate Contributor License Agreement]
-(https://cla.developers.google.com/about/google-corporate).
diff --git a/java/com/android/contacts/common/res/values/colors.xml b/java/com/android/contacts/common/res/values/colors.xml
index 434d193c7..20b28c9d9 100644
--- a/java/com/android/contacts/common/res/values/colors.xml
+++ b/java/com/android/contacts/common/res/values/colors.xml
@@ -60,6 +60,7 @@
<color name="textColorIconOverlayShadow">#000</color>
+
<array name="letter_tile_colors">
<item>#DB4437</item>
<item>#E91E63</item>
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
index 1acf3480c..1acf3480c 100644..100755
--- a/java/com/android/dialer/about/res/raw/third_party_license_metadata
+++ b/java/com/android/dialer/about/res/raw/third_party_license_metadata
diff --git a/java/com/android/dialer/about/res/raw/third_party_licenses b/java/com/android/dialer/about/res/raw/third_party_licenses
index c56f8a42c..c56f8a42c 100644..100755
--- a/java/com/android/dialer/about/res/raw/third_party_licenses
+++ b/java/com/android/dialer/about/res/raw/third_party_licenses
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
index 4e0d5649e..4e0d5649e 100644..100755
--- 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
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
index 2cf41d598..2cf41d598 100644..100755
--- 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
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
index 043685fd9..043685fd9 100644..100755
--- 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
Binary files differ
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 000000000..f393b8b11
--- /dev/null
+++ b/java/com/android/dialer/binary/google/AndroidManifest.xml
@@ -0,0 +1,118 @@
+<!-- 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="140000"
+ android:versionName="11.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: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.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 000000000..e9289af73
--- /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 000000000..2b4de974b
--- /dev/null
+++ b/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
@@ -0,0 +1,52 @@
+/*
+ * 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.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,
+ StubEnrichedCallModule.class,
+ MapsModule.class,
+ VoicemailModule.class,
+ StubLightbringerModule.class
+ }
+)
+public interface GoogleStubDialerRootComponent extends BaseDialerRootComponent {}
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 000000000..45d72e05c
--- /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 000000000..e1f2cdc79
--- /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 000000000..e5ad9015f
--- /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 000000000..80a1cb728
--- /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/callintent/call_initiation_type.proto b/java/com/android/dialer/callintent/call_initiation_type.proto
index 994399fd9..3caf0305b 100644
--- a/java/com/android/dialer/callintent/call_initiation_type.proto
+++ b/java/com/android/dialer/callintent/call_initiation_type.proto
@@ -7,6 +7,7 @@ option optimize_for = LITE_RUNTIME;
package com.android.dialer.callintent;
+
// Different ways a call can be initiated.
message CallInitiationType {
enum Type {
diff --git a/java/com/android/dialer/calllog/testing/FakeCallLogApplication.java b/java/com/android/dialer/calllog/testing/FakeCallLogApplication.java
deleted file mode 100644
index 8aee7dd56..000000000
--- a/java/com/android/dialer/calllog/testing/FakeCallLogApplication.java
+++ /dev/null
@@ -1,53 +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.android.dialer.calllog.testing;
-
-import android.app.Application;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.CallLogModule;
-import com.android.dialer.calllog.database.CallLogDatabaseComponent;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.testing.TestDialerExecutorModule;
-import com.android.dialer.inject.ContextModule;
-import com.android.dialer.inject.HasRootComponent;
-import dagger.Component;
-import javax.inject.Singleton;
-
-/**
- * Fake application for call log robolectric tests which uses all real bindings but doesn't require
- * tests to depend on and use all of DialerApplication.
- */
-public final class FakeCallLogApplication extends Application implements HasRootComponent {
- private Object rootComponent;
-
- @Override
- public final synchronized Object component() {
- if (rootComponent == null) {
- rootComponent =
- DaggerFakeCallLogApplication_FakeComponent.builder()
- .contextModule(new ContextModule(this))
- .build();
- }
- return rootComponent;
- }
-
- @Singleton
- @Component(modules = {CallLogModule.class, ContextModule.class, TestDialerExecutorModule.class})
- interface FakeComponent
- extends CallLogDatabaseComponent.HasComponent,
- CallLogComponent.HasComponent,
- DialerExecutorComponent.HasComponent {}
-}
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 000000000..28d8b2514
--- /dev/null
+++ b/java/com/android/dialer/constants/googledialer/ConstantsImpl.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.dialer.constants;
+
+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";
+ }
+}
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
index 0d3ed9e43..b97e6adaf 100644
--- a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
+++ b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
@@ -185,6 +185,15 @@ public interface EnrichedCallManager {
@Nullable
Session getSession(long sessionId);
+ /**
+ * Returns a list containing viewable string representations of all existing sessions.
+ *
+ * <p>Intended for debug display purposes only.
+ */
+ @MainThread
+ @NonNull
+ List<String> getAllSessionsForDisplay();
+
@NonNull
Filter createIncomingCallComposerFilter();
diff --git a/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml b/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml
new file mode 100644
index 000000000..003ff19d5
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<!--
+ ~ 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
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.dialer.calldetails">
+ <application android:theme="@style/Theme.AppCompat">
+ <activity
+ android:label="@string/enriched_call_simulator_activity"
+ android:name="com.android.dialer.enrichedcall.simulator.EnrichedCallSimulatorActivity"
+ android:theme="@style/DialerThemeBase.NoActionBar">
+ </activity>
+ </application>
+</manifest>
diff --git a/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java b/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java
new file mode 100644
index 000000000..bbc1ada6f
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java
@@ -0,0 +1,110 @@
+/*
+ * 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.simulator;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.Toolbar;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.enrichedcall.EnrichedCallComponent;
+import com.android.dialer.enrichedcall.EnrichedCallManager;
+import com.android.dialer.enrichedcall.EnrichedCallManager.StateChangedListener;
+
+/**
+ * Activity used to display Enriched call sessions that are currently in memory, and create new
+ * outgoing sessions with various bits of data.
+ *
+ * <p>This activity will dynamically refresh as new sessions are added or updated, but there's no
+ * update when sessions are deleted from memory. Use the refresh button to update the view.
+ */
+public class EnrichedCallSimulatorActivity extends AppCompatActivity
+ implements StateChangedListener, OnClickListener {
+
+ public static Intent newIntent(@NonNull Context context) {
+ return new Intent(Assert.isNotNull(context), EnrichedCallSimulatorActivity.class);
+ }
+
+ private Button refreshButton;
+
+ private SessionsAdapter sessionsAdapter;
+
+ @Override
+ protected void onCreate(@Nullable Bundle bundle) {
+ LogUtil.enterBlock("EnrichedCallSimulatorActivity.onCreate");
+ super.onCreate(bundle);
+ setContentView(R.layout.enriched_call_simulator_activity);
+ Toolbar toolbar = findViewById(R.id.toolbar);
+ toolbar.setTitle(R.string.enriched_call_simulator_activity);
+
+ refreshButton = findViewById(R.id.refresh);
+ refreshButton.setOnClickListener(this);
+
+ RecyclerView recyclerView = findViewById(R.id.sessions_recycler_view);
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+
+ sessionsAdapter = new SessionsAdapter();
+ sessionsAdapter.setSessionStrings(getEnrichedCallManager().getAllSessionsForDisplay());
+ recyclerView.setAdapter(sessionsAdapter);
+ }
+
+ @Override
+ protected void onResume() {
+ LogUtil.enterBlock("EnrichedCallSimulatorActivity.onResume");
+ super.onResume();
+ getEnrichedCallManager().registerStateChangedListener(this);
+ }
+
+ @Override
+ protected void onPause() {
+ LogUtil.enterBlock("EnrichedCallSimulatorActivity.onPause");
+ super.onPause();
+ getEnrichedCallManager().unregisterStateChangedListener(this);
+ }
+
+ @Override
+ public void onEnrichedCallStateChanged() {
+ LogUtil.enterBlock("EnrichedCallSimulatorActivity.onEnrichedCallStateChanged");
+ refreshSessions();
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v == refreshButton) {
+ LogUtil.i("EnrichedCallSimulatorActivity.onClick", "refreshing sessions");
+ refreshSessions();
+ }
+ }
+
+ private void refreshSessions() {
+ sessionsAdapter.setSessionStrings(getEnrichedCallManager().getAllSessionsForDisplay());
+ sessionsAdapter.notifyDataSetChanged();
+ }
+
+ private EnrichedCallManager getEnrichedCallManager() {
+ return EnrichedCallComponent.get(this).getEnrichedCallManager();
+ }
+}
diff --git a/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java b/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java
new file mode 100644
index 000000000..44431253d
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.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.enrichedcall.simulator;
+
+import android.support.annotation.NonNull;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+
+/** ViewHolder for an Enriched call session. */
+class SessionViewHolder extends RecyclerView.ViewHolder {
+
+ private final TextView sessionStringView;
+
+ SessionViewHolder(View view) {
+ super(view);
+ sessionStringView = view.findViewById(R.id.session_string);
+ }
+
+ void updateSession(@NonNull String sessionString) {
+ sessionStringView.setText(sessionString);
+ }
+}
diff --git a/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java b/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java
new file mode 100644
index 000000000..25edfc7dd
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java
@@ -0,0 +1,51 @@
+/*
+ * 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.simulator;
+
+import android.support.annotation.NonNull;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+import com.android.dialer.common.Assert;
+import java.util.List;
+
+/** Adapter for the RecyclerView in {@link EnrichedCallSimulatorActivity}. */
+class SessionsAdapter extends RecyclerView.Adapter<SessionViewHolder> {
+
+ /** List of the string representation of all in-memory sessions */
+ private List<String> sessionStrings;
+
+ void setSessionStrings(@NonNull List<String> sessionStrings) {
+ this.sessionStrings = Assert.isNotNull(sessionStrings);
+ }
+
+ @Override
+ public SessionViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
+ LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
+ return new SessionViewHolder(inflater.inflate(R.layout.session_view_holder, viewGroup, false));
+ }
+
+ @Override
+ public void onBindViewHolder(SessionViewHolder viewHolder, int i) {
+ viewHolder.updateSession(sessionStrings.get(i));
+ }
+
+ @Override
+ public int getItemCount() {
+ return sessionStrings.size();
+ }
+}
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml b/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml
new file mode 100644
index 000000000..be9aa7dea
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml
@@ -0,0 +1,38 @@
+<?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"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <com.android.dialer.widget.DialerToolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+
+ <android.support.v7.widget.RecyclerView
+ android:id="@+id/sessions_recycler_view"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"/>
+
+ <Button
+ android:id="@+id/refresh"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/refresh"/>
+</LinearLayout> \ No newline at end of file
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml b/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml
new file mode 100644
index 000000000..65543bd0f
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml
@@ -0,0 +1,23 @@
+<?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
+ -->
+
+<TextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/session_string"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="2dp"/>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml
new file mode 100644
index 000000000..5cc252761
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml
@@ -0,0 +1,24 @@
+<?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="enriched_call_simulator_activity" translatable="false">Enriched Call Simulator Activity</string>
+
+ <string name="important" translatable="false">important</string>
+ <string name="not_important" translatable="false">not important</string>
+
+ <string name="refresh" translatable="false">refresh</string>
+</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
index 0540d912e..65d440cb8 100644
--- a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
+++ b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
@@ -28,6 +28,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.multimedia.MultimediaData;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -85,6 +86,14 @@ public final class EnrichedCallManagerStub implements EnrichedCallManager {
return null;
}
+ @MainThread
+ @NonNull
+ @Override
+ public List<String> getAllSessionsForDisplay() {
+ Assert.isMainThread();
+ return Collections.emptyList();
+ }
+
@NonNull
@Override
public Filter createIncomingCallComposerFilter() {
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
index 879ea0e96..879ea0e96 100644..100755
--- a/java/com/android/dialer/interactions/res/layout/phone_disambig_item.xml
+++ b/java/com/android/dialer/interactions/res/layout/phone_disambig_item.xml
diff --git a/java/com/android/dialer/logging/contact_lookup_result.proto b/java/com/android/dialer/logging/contact_lookup_result.proto
index 13ea3c8e5..5237c6887 100644
--- a/java/com/android/dialer/logging/contact_lookup_result.proto
+++ b/java/com/android/dialer/logging/contact_lookup_result.proto
@@ -6,6 +6,7 @@ option java_multiple_files = true;
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 ffd32de0e..9504c64ed 100644
--- a/java/com/android/dialer/logging/contact_source.proto
+++ b/java/com/android/dialer/logging/contact_source.proto
@@ -6,6 +6,7 @@ option java_multiple_files = true;
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 ba8d92249..4e96a5073 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -6,6 +6,7 @@ option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
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 @@ message DialerImpression {
// 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 @@ message DialerImpression {
// 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 @@ message DialerImpression {
// 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 @@ message DialerImpression {
// 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 @@ message DialerImpression {
// 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
@@ -362,14 +380,19 @@ message DialerImpression {
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;
diff --git a/java/com/android/dialer/logging/interaction_event.proto b/java/com/android/dialer/logging/interaction_event.proto
index 89cf46fc9..3d14a1a2d 100644
--- a/java/com/android/dialer/logging/interaction_event.proto
+++ b/java/com/android/dialer/logging/interaction_event.proto
@@ -6,6 +6,7 @@ option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
message InteractionEvent {
// Next Tag: 38
enum Type {
diff --git a/java/com/android/dialer/logging/reporting_location.proto b/java/com/android/dialer/logging/reporting_location.proto
index d436564df..ddaa37331 100644
--- a/java/com/android/dialer/logging/reporting_location.proto
+++ b/java/com/android/dialer/logging/reporting_location.proto
@@ -6,6 +6,7 @@ option java_multiple_files = true;
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 ca624774d..ddf663286 100644
--- a/java/com/android/dialer/logging/screen_event.proto
+++ b/java/com/android/dialer/logging/screen_event.proto
@@ -6,6 +6,7 @@ option java_multiple_files = true;
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 784dbed9b..f1cbdf8bd 100644
--- a/java/com/android/dialer/logging/ui_action.proto
+++ b/java/com/android/dialer/logging/ui_action.proto
@@ -6,6 +6,7 @@ option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
+
message UiAction {
enum Type {
UNKNOWN = 0;
diff --git a/java/com/android/dialer/searchfragment/README.md b/java/com/android/dialer/searchfragment/README.md
index b3b9135e5..baeaa9caf 100644
--- a/java/com/android/dialer/searchfragment/README.md
+++ b/java/com/android/dialer/searchfragment/README.md
@@ -13,11 +13,11 @@ cp2 containing all of the relevant info needed to rendering.
### Business Search
-// TODO(calderwoodra)
+// TODO
### Google Directory Search
-// TODO(calderwoodra)
+// TODO
## Rendering
diff --git a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
index 8257d9853..f2749b2c5 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
@@ -30,6 +30,7 @@ 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.DialerExecutors;
+import com.android.dialer.enrichedcall.simulator.EnrichedCallSimulatorActivity;
import com.android.dialer.persistentlog.PersistentLogger;
/** Implements the simulator submenu. */
@@ -114,6 +115,13 @@ final class SimulatorActionProvider extends ActionProvider {
.executeSerial(null);
return true;
});
+ subMenu
+ .add("Enriched call simulator")
+ .setOnMenuItemClickListener(
+ (item) -> {
+ context.startActivity(EnrichedCallSimulatorActivity.newIntent(context));
+ return true;
+ });
}
private void populateDatabase() {
diff --git a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml b/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
index 550c5808c..fda940483 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/maps/impl/AndroidManifest.xml b/java/com/android/incallui/maps/impl/AndroidManifest.xml
index 4ad0b3b7e..bc921e906 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/voicemail/impl/res/xml/vvm_config.xml b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
index 2bac66be5..c7ed5ca92 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">