From 58cefb413c11c02d0c1be8504df027724617f175 Mon Sep 17 00:00:00 2001 From: calderwoodra Date: Tue, 10 Oct 2017 17:15:07 -0700 Subject: Skeleton implementation of PhoneLookup and Cp2PhoneLookup. Bug: 67605130 Test: Cp2PhoneLookupTest PiperOrigin-RevId: 171757865 Change-Id: If92e759567456dda09a925e9c625df001f2d573f --- .../android/dialer/phonelookup/PhoneLookup.java | 46 ++++++++++++++++++++++ .../dialer/phonelookup/cp2/Cp2PhoneLookup.java | 42 ++++++++++++++++++++ .../dialer/phonelookup/phone_lookup_info.proto | 20 ++++++++++ 3 files changed, 108 insertions(+) create mode 100644 java/com/android/dialer/phonelookup/PhoneLookup.java create mode 100644 java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java create mode 100644 java/com/android/dialer/phonelookup/phone_lookup_info.proto (limited to 'java') diff --git a/java/com/android/dialer/phonelookup/PhoneLookup.java b/java/com/android/dialer/phonelookup/PhoneLookup.java new file mode 100644 index 000000000..63b01c8e6 --- /dev/null +++ b/java/com/android/dialer/phonelookup/PhoneLookup.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.phonelookup; + +import com.android.dialer.DialerPhoneNumber; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.util.concurrent.ListenableFuture; + +/** TODO(zachh) update documentation. */ +public interface PhoneLookup { + + /** + * For Call Log "isDirty" operation. + * + * @param phoneNumbers + * @param lastModified + * @return TODO(zachh) + */ + ListenableFuture isDirty( + ImmutableSet phoneNumbers, long lastModified); + + /** + * For Call Log "fill" operation. + * + * @param existingInfoMap + * @param lastModified + * @return TODO(zachh) + */ + ListenableFuture> bulkUpdate( + ImmutableMap existingInfoMap, long lastModified); +} diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java new file mode 100644 index 000000000..323ec7c65 --- /dev/null +++ b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java @@ -0,0 +1,42 @@ +/* + * 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.phonelookup.cp2; + +import com.android.dialer.DialerPhoneNumber; +import com.android.dialer.phonelookup.PhoneLookup; +import com.android.dialer.phonelookup.PhoneLookupInfo; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.util.concurrent.ListenableFuture; + +/** TODO(calderwoodra) */ +final class Cp2PhoneLookup implements PhoneLookup { + + @Override + public ListenableFuture isDirty( + ImmutableSet phoneNumbers, long lastModified) { + // TODO(calderwoodra) + return null; + } + + @Override + public ListenableFuture> bulkUpdate( + ImmutableMap existingInfoMap, long lastModified) { + // TODO(calderwoodra) + return null; + } +} diff --git a/java/com/android/dialer/phonelookup/phone_lookup_info.proto b/java/com/android/dialer/phonelookup/phone_lookup_info.proto new file mode 100644 index 000000000..b959e78df --- /dev/null +++ b/java/com/android/dialer/phonelookup/phone_lookup_info.proto @@ -0,0 +1,20 @@ +syntax = "proto2"; + +option java_package = "com.android.dialer.phonelookup"; +option java_multiple_files = true; +option optimize_for = LITE_RUNTIME; + + +package com.android.dialer.phonelookup; + +// TODO(zachh) documentation +message PhoneLookupInfo { + // TODO(calderwoodra): documentation + message Cp2Info { + optional string name = 1; + optional string photo_uri = 2; + optional fixed64 photo_id = 3; + optional string label = 4; // "Home", "Mobile", ect. + } + optional Cp2Info cp2_info = 1; +} \ No newline at end of file -- cgit v1.2.3 From 36a5f1a127ca18869cd25cef0315076591a0b518 Mon Sep 17 00:00:00 2001 From: maxwelb Date: Tue, 10 Oct 2017 17:17:18 -0700 Subject: Handle race condition with CallComposerActivity.onBackPressed For fast users/testing suites, it's possible to hit a race condition where onBackPressed is called multiple times in a way that allows the second call to endCallComposerSession to happen and crash. This CL fixes the issue by checking that the session still exists prior to calling endCallComposerSession. I tried to write tests for this, but since the code guards against this from happening, I wasn't able to get the code into a situation to cause the crash. Bug: 64136293 Test: none PiperOrigin-RevId: 171758119 Change-Id: Ie12fd2f4390329b9bebb503fa3cf0f26d3bc1caf --- java/com/android/dialer/callcomposer/CallComposerActivity.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'java') diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java index b02e32543..83fe2d9de 100644 --- a/java/com/android/dialer/callcomposer/CallComposerActivity.java +++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java @@ -528,12 +528,18 @@ public class CallComposerActivity extends AppCompatActivity @Override public void onBackPressed() { + LogUtil.enterBlock("CallComposerActivity.onBackPressed"); if (!isSendAndCallHidingOrHidden) { ((CallComposerFragment) adapter.instantiateItem(pager, currentIndex)).clearComposer(); } else if (!runningExitAnimation) { // Unregister first to avoid receiving a callback when the session closes getEnrichedCallManager().unregisterStateChangedListener(this); - getEnrichedCallManager().endCallComposerSession(sessionId); + + // If the user presses the back button when the session fails, there's a race condition here + // since we clean up failed sessions. + if (getEnrichedCallManager().getSession(sessionId) != null) { + getEnrichedCallManager().endCallComposerSession(sessionId); + } runExitAnimation(); } } -- cgit v1.2.3