diff options
Diffstat (limited to 'java/com/android/dialer/main')
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() { |