summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/main
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-05-10 01:14:47 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-05-10 01:14:47 +0000
commitced93f2d22bffce3b4cfb9c3bfce862b385537dd (patch)
tree2b4715070bcf45b8a8395ee0ae5c7fbb0ef8274c /java/com/android/dialer/main
parentc49c914e53500fc661ec47e365621c9d33e046ca (diff)
parent2f4a0075e9f546514359eda60a24ac9cd49ea80a (diff)
Merge changes Ia54e3421,Id2176e6e,I0311770e,I79f99c34,I8579afff, ...
* changes: Add some annotations that won't influence aosp. Update answer button logic. Hide new after call spam blocking promo behind an additional flag. Allow the TextView for call log primary text to adjust size when recycled. Format callback phone number. Added getLoggingName() to CallLogDataSource and PhoneLookup interfaces. Do not show bubble for outgoing call if it's not a background call. Always fetch status onResume and add logging for voicemail status in OldMainPeer and Place Duo calls with PreCall Creating CallIntent, AutoValue builder, to replace CallIntentBuilder. Set the DisplayNameSource to PHONE in DefaultLookupUriGenerator. Config correct layout boundaries to accommodate long text (call log & bottom sheet) Use info from EmergencyPhoneLookup to render UI for an emergency number. Implement EmergencyPhoneLookup for checking if a number is an emergency number. Add GlobalSpamListStatus and UserSpamListStatus Move SpamStatus classes into subpackage Delete obsolete checkSpamStatus(Listener) API Update callers of checkSpamStatus to use Future based API Fix bug that showing block option for private number. Add a null check for digitsHint. Don't commit fragment transactions if it's not safe. Add ListenableFuture based APIs for checkSpamStatus Pass activity between new call log's adapter/view holder. Replace assert checks with safety checks instead. Add SimpleSpamStatus and use it in FakeSpam and SpamStub Show calls to/from emergency numbers as "Emergency number" in call log & call details
Diffstat (limited to 'java/com/android/dialer/main')
-rw-r--r--java/com/android/dialer/main/impl/MainActivity.java8
-rw-r--r--java/com/android/dialer/main/impl/MainSearchController.java62
-rw-r--r--java/com/android/dialer/main/impl/OldMainActivityPeer.java31
-rw-r--r--java/com/android/dialer/main/impl/toolbar/MainToolbar.java18
4 files changed, 74 insertions, 45 deletions
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index 3f660f56c..2046b048f 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -24,7 +24,6 @@ import com.android.dialer.blockreportspam.ShowBlockReportSpamDialogReceiver;
import com.android.dialer.calllog.config.CallLogConfigComponent;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.duo.PlaceDuoCallReceiver;
import com.android.dialer.interactions.PhoneNumberInteraction.DisambigDialogDismissedListener;
import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorListener;
@@ -48,9 +47,6 @@ public class MainActivity extends TransactionSafeActivity
*/
private ShowBlockReportSpamDialogReceiver showBlockReportSpamDialogReceiver;
- /** {@link android.content.BroadcastReceiver} that starts a Duo call. */
- private PlaceDuoCallReceiver placeDuoCallReceiver;
-
public static Intent getShowCallLogIntent(Context context) {
return getShowTabIntent(context, TabIndex.CALL_LOG);
}
@@ -83,7 +79,6 @@ public class MainActivity extends TransactionSafeActivity
activePeer.onActivityCreate(savedInstanceState);
showBlockReportSpamDialogReceiver = new ShowBlockReportSpamDialogReceiver(getFragmentManager());
- placeDuoCallReceiver = new PlaceDuoCallReceiver(/* activity = */ this);
}
protected MainActivityPeer getNewPeer() {
@@ -109,8 +104,6 @@ public class MainActivity extends TransactionSafeActivity
LocalBroadcastManager.getInstance(this)
.registerReceiver(
showBlockReportSpamDialogReceiver, ShowBlockReportSpamDialogReceiver.getIntentFilter());
- LocalBroadcastManager.getInstance(this)
- .registerReceiver(placeDuoCallReceiver, PlaceDuoCallReceiver.getIntentFilter());
}
@Override
@@ -125,7 +118,6 @@ public class MainActivity extends TransactionSafeActivity
activePeer.onActivityPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(showBlockReportSpamDialogReceiver);
- LocalBroadcastManager.getInstance(this).unregisterReceiver(placeDuoCallReceiver);
}
@Override
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index b9a6654b6..72c46cc7a 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -35,7 +35,6 @@ import com.android.contacts.common.dialog.ClearFrequentsDialog;
import com.android.dialer.app.calllog.CallLogActivity;
import com.android.dialer.app.settings.DialerSettingsActivity;
import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.constants.ActivityRequestCodes;
import com.android.dialer.dialpadview.DialpadFragment;
@@ -136,7 +135,10 @@ public class MainSearchController implements SearchBarListener {
}
private void showDialpad(boolean animate, boolean fromNewIntent) {
- Assert.checkArgument(!isDialpadVisible());
+ if (isDialpadVisible()) {
+ LogUtil.e("MainSearchController.showDialpad", "Dialpad is already visible.");
+ return;
+ }
Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_DIALPAD, activity);
@@ -187,14 +189,32 @@ public class MainSearchController implements SearchBarListener {
*/
private void hideDialpad(boolean animate) {
LogUtil.enterBlock("MainSearchController.hideDialpad");
- assertDialpadVisible();
+ DialpadFragment dialpadFragment = getDialpadFragment();
+ if (dialpadFragment == null) {
+ LogUtil.e("MainSearchController.hideDialpad", "Dialpad fragment is null.");
+ return;
+ }
+
+ if (!dialpadFragment.isAdded()) {
+ LogUtil.e("MainSearchController.hideDialpad", "Dialpad fragment is not added.");
+ return;
+ }
+
+ if (dialpadFragment.isHidden()) {
+ LogUtil.e("MainSearchController.hideDialpad", "Dialpad fragment is already hidden.");
+ return;
+ }
+
+ if (!dialpadFragment.isDialpadSlideUp()) {
+ LogUtil.e("MainSearchController.hideDialpad", "Dialpad fragment is already slide down.");
+ return;
+ }
fab.show();
toolbar.slideDown(animate, fragmentContainer);
toolbar.transferQueryFromDialpad(getDialpadFragment().getQuery());
activity.setTitle(R.string.main_activity_label);
- DialpadFragment dialpadFragment = getDialpadFragment();
dialpadFragment.setAnimate(animate);
dialpadFragment.slideDown(
animate,
@@ -295,7 +315,22 @@ public class MainSearchController implements SearchBarListener {
/** Calls {@link #hideDialpad(boolean)}, removes the search fragment and clears the dialpad. */
private void closeSearch(boolean animate) {
LogUtil.enterBlock("MainSearchController.closeSearch");
- assertSearchIsVisible();
+ NewSearchFragment searchFragment = getSearchFragment();
+ if (searchFragment == null) {
+ LogUtil.e("MainSearchController.closeSearch", "Search fragment is null.");
+ return;
+ }
+
+ if (!searchFragment.isAdded()) {
+ LogUtil.e("MainSearchController.closeSearch", "Search fragment isn't added.");
+ return;
+ }
+
+ if (searchFragment.isHidden()) {
+ LogUtil.e("MainSearchController.closeSearch", "Search fragment is already hidden.");
+ return;
+ }
+
if (isDialpadVisible()) {
hideDialpad(animate);
} else if (!fab.isShown()) {
@@ -304,7 +339,7 @@ public class MainSearchController implements SearchBarListener {
showBottomNav();
toolbar.collapse(animate);
toolbarShadow.setVisibility(View.GONE);
- activity.getFragmentManager().beginTransaction().hide(getSearchFragment()).commit();
+ activity.getFragmentManager().beginTransaction().hide(searchFragment).commit();
// Clear the dialpad so the phone number isn't persisted between search sessions.
DialpadFragment dialpadFragment = getDialpadFragment();
@@ -341,26 +376,11 @@ public class MainSearchController implements SearchBarListener {
&& fragment.isDialpadSlideUp();
}
- private void assertDialpadVisible() {
- DialpadFragment fragment = getDialpadFragment();
- Assert.checkArgument(fragment != null, "Dialpad Fragment is null");
- Assert.checkArgument(fragment.isAdded(), "Dialpad Fragment is no added");
- Assert.checkArgument(!fragment.isHidden(), "Dialpad Fragment is hidden");
- Assert.checkArgument(fragment.isDialpadSlideUp(), "Dialpad Fragment is slide down");
- }
-
private boolean isSearchVisible() {
NewSearchFragment fragment = getSearchFragment();
return fragment != null && fragment.isAdded() && !fragment.isHidden();
}
- private void assertSearchIsVisible() {
- NewSearchFragment fragment = getSearchFragment();
- Assert.checkArgument(fragment != null, "Search Fragment is null");
- Assert.checkArgument(fragment.isAdded(), "Search Fragment is not added");
- Assert.checkArgument(!fragment.isHidden(), "Search Fragment is hidden.");
- }
-
/** Returns true if the search UI is visible. */
public boolean isInSearch() {
return isSearchVisible();
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index e3d42fa9e..e426ed215 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -460,6 +460,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
@SuppressLint("MissingPermission")
@Override
public void onActivityResume() {
+ LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onActivityResume");
callLogFragmentListener.onActivityResume();
// Start the thread that updates the smart dial database if the activity is recreated with a
// language change.
@@ -866,6 +867,10 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
+ LogUtil.i(
+ "MainCallLogFragmentListener",
+ "voicemailStatusObserver.onChange selfChange:%b",
+ selfChange);
super.onChange(selfChange);
callLogQueryHandler.fetchVoicemailStatus();
}
@@ -885,9 +890,10 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
private void registerVoicemailStatusContentObserver(Context context) {
-
+ LogUtil.enterBlock("MainCallLogFragmentListener.registerVoicemailStatusContentObserver");
if (PermissionsUtil.hasReadVoicemailPermissions(context)
&& PermissionsUtil.hasAddVoicemailPermissions(context)) {
+ LogUtil.i("MainCallLogFragmentListener.registerVoicemailStatusContentObserver", "register");
context
.getContentResolver()
.registerContentObserver(
@@ -1013,11 +1019,12 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
public void onActivityResume() {
+ LogUtil.enterBlock("MainCallLogFragmentListener.onActivityResume");
activityIsAlive = true;
registerVoicemailStatusContentObserver(context);
- if (!bottomNavTabListener.newVoicemailFragmentActive()) {
- callLogQueryHandler.fetchVoicemailStatus();
- }
+ // TODO(a bug): Don't use callLogQueryHandler
+ callLogQueryHandler.fetchVoicemailStatus();
+
if (!bottomNavTabListener.newCallLogFragmentActive()) {
callLogQueryHandler.fetchMissedCallsUnreadCount();
}
@@ -1234,7 +1241,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
private static final String CONTACTS_TAG = "contacts";
private static final String VOICEMAIL_TAG = "voicemail";
- private final AppCompatActivity activity;
+ private final TransactionSafeActivity activity;
private final FragmentManager fragmentManager;
private final android.support.v4.app.FragmentManager supportFragmentManager;
private final FloatingActionButton fab;
@@ -1242,7 +1249,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
@TabIndex private int selectedTab = -1;
private MainBottomNavBarBottomNavTabListener(
- AppCompatActivity activity,
+ TransactionSafeActivity activity,
FragmentManager fragmentManager,
android.support.v4.app.FragmentManager supportFragmentManager,
FloatingActionButton fab) {
@@ -1300,7 +1307,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
android.support.v4.app.Fragment supportFragment =
supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
if (supportFragment != null) {
- supportFragmentManager.beginTransaction().remove(supportFragment).commit();
+ supportFragmentManager.beginTransaction().remove(supportFragment).commitAllowingStateLoss();
// If the NewCallLogFragment was showing, immediately show the old call log fragment
// instead.
if (selectedTab == TabIndex.CALL_LOG) {
@@ -1317,7 +1324,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
android.support.v4.app.Fragment supportFragment =
supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
if (supportFragment != null) {
- supportFragmentManager.beginTransaction().remove(supportFragment).commit();
+ supportFragmentManager.beginTransaction().remove(supportFragment).commitAllowingStateLoss();
// If the NewVoicemailFragment was showing, immediately show the old voicemail fragment
// instead.
if (selectedTab == TabIndex.VOICEMAIL) {
@@ -1445,7 +1452,9 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
"MainBottomNavBarBottomNavTabListener.showFragment", "Not added yet: " + fragment);
transaction.add(R.id.fragment_container, fragment, tag);
}
- transaction.commit();
+ if (activity.isSafeToCommitTransactions()) {
+ transaction.commit();
+ }
// Handle support fragments.
// TODO(calderwoodra): Handle other new fragments.
@@ -1471,7 +1480,9 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
"Not added yet: " + supportFragment);
supportTransaction.add(R.id.fragment_container, supportFragment, tag);
}
- supportTransaction.commit();
+ if (activity.isSafeToCommitTransactions()) {
+ supportTransaction.commit();
+ }
}
private void showSupportFragment(
diff --git a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
index 851d7a0b4..475383bd3 100644
--- a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
+++ b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
@@ -28,6 +28,7 @@ import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
import com.android.dialer.util.ViewUtil;
import com.google.common.base.Optional;
@@ -41,7 +42,6 @@ public final class MainToolbar extends Toolbar implements PopupMenu.OnMenuItemCl
private SearchBarView searchBar;
private SearchBarListener listener;
private MainToolbarMenu overflowMenu;
- private boolean isSlideUp;
private boolean hasGlobalLayoutListener;
public MainToolbar(Context context, AttributeSet attrs) {
@@ -78,7 +78,6 @@ public final class MainToolbar extends Toolbar implements PopupMenu.OnMenuItemCl
return;
}
- Assert.checkArgument(!isSlideUp);
if (getHeight() == 0) {
hasGlobalLayoutListener = true;
ViewUtil.doOnGlobalLayout(
@@ -89,7 +88,12 @@ public final class MainToolbar extends Toolbar implements PopupMenu.OnMenuItemCl
});
return;
}
- isSlideUp = true;
+
+ if (isSlideUp()) {
+ LogUtil.e("MainToolbar.slideDown", "Already slide up.");
+ return;
+ }
+
animate()
.translationY(-getHeight())
.setDuration(animate ? SLIDE_DURATION : 0)
@@ -105,8 +109,10 @@ public final class MainToolbar extends Toolbar implements PopupMenu.OnMenuItemCl
/** Slides the toolbar down and back onto the screen. */
public void slideDown(boolean animate, View container) {
- Assert.checkArgument(isSlideUp);
- isSlideUp = false;
+ if (getTranslationY() == 0) {
+ LogUtil.e("MainToolbar.slideDown", "Already slide down.");
+ return;
+ }
animate()
.translationY(0)
.setDuration(animate ? SLIDE_DURATION : 0)
@@ -131,7 +137,7 @@ public final class MainToolbar extends Toolbar implements PopupMenu.OnMenuItemCl
}
public boolean isSlideUp() {
- return isSlideUp;
+ return getHeight() != 0 && getTranslationY() == -getHeight();
}
public boolean isExpanded() {