diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2018-03-01 18:01:15 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-03-01 18:01:15 +0000 |
commit | 2e72cdf3c154d308613f3516882e38f666ba1097 (patch) | |
tree | 35825f02ce30399bc8b7bdf9a298ebff8affab14 | |
parent | 4865a35f4b6eb3c0f987ac0917ee2a775429e447 (diff) | |
parent | 9e335e2d4fb43b22c7f95b2e9d4e048798e8e239 (diff) |
Merge changes I3d2b23b5,I9463e2c9
* changes:
Updating SecondaryInfo value class to use AutoValue with builder pattern.
Added same primes metrics that existed in Dialtacts to NUI.
9 files changed, 115 insertions, 83 deletions
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java index 293ec9563..8af41a8a6 100644 --- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java +++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java @@ -65,6 +65,7 @@ import com.android.dialer.callintent.CallSpecificAppData; import com.android.dialer.common.FragmentUtils.FragmentUtilListener; import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.DialerExecutorComponent; +import com.android.dialer.common.concurrent.ThreadUtil; import com.android.dialer.common.concurrent.UiListener; import com.android.dialer.compat.CompatUtils; import com.android.dialer.configprovider.ConfigProviderBindings; @@ -87,6 +88,8 @@ import com.android.dialer.main.impl.bottomnav.BottomNavBar; import com.android.dialer.main.impl.bottomnav.BottomNavBar.OnBottomNavTabSelectedListener; import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex; import com.android.dialer.main.impl.toolbar.MainToolbar; +import com.android.dialer.metrics.Metrics; +import com.android.dialer.metrics.MetricsComponent; import com.android.dialer.postcall.PostCall; import com.android.dialer.precall.PreCall; import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentListener; @@ -404,6 +407,14 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen } else { bottomNav.setVisibility(View.VISIBLE); } + + // add 1 sec delay to get memory snapshot so that dialer wont react slowly on resume. + ThreadUtil.postDelayedOnUiThread( + () -> + MetricsComponent.get(mainActivity) + .metrics() + .recordMemory(Metrics.OLD_MAIN_ACTIVITY_PEER_ON_RESUME_MEMORY_EVENT_NAME), + 1000); } @Override diff --git a/java/com/android/dialer/metrics/Metrics.java b/java/com/android/dialer/metrics/Metrics.java index 383b3a3f3..b460f3ecf 100644 --- a/java/com/android/dialer/metrics/Metrics.java +++ b/java/com/android/dialer/metrics/Metrics.java @@ -23,11 +23,13 @@ public interface Metrics { String APPLICATION_ON_CREATE_EVENT_NAME = "Application.onCreate"; String DIALTACTS_ON_CREATE_EVENT_NAME = "GoogleDialtactsActivity.onCreate"; + String MAIN_ACTIVITY_ON_CREATE_EVENT_NAME = "GoogleMainActivity.onCreate"; String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_INCOMING = "CallList.onCallAdded_To_InCallActivity.onCreate_Incoming"; String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING = "CallList.onCallAdded_To_InCallActivity.onCreate_Outgoing"; String DIALTACTS_ON_RESUME_MEMORY_EVENT_NAME = "GoogleDialtactsActivity.onResume"; + String OLD_MAIN_ACTIVITY_PEER_ON_RESUME_MEMORY_EVENT_NAME = "OldMainActivityPeer.onResume"; String INCALL_ACTIVITY_ON_RESUME_MEMORY_EVENT_NAME = "IncallActivity.OnResume"; String INCALL_ACTIVITY_ON_STOP_MEMORY_EVENT_NAME = "IncallActivity.OnStop"; String OLD_CALL_LOG_JANK_EVENT_NAME = "OldCallLog.Jank"; diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java index ad92f57c9..c60da63d6 100644 --- a/java/com/android/incallui/CallCardPresenter.java +++ b/java/com/android/incallui/CallCardPresenter.java @@ -907,7 +907,7 @@ public class CallCardPresenter if (secondary == null) { // Clear the secondary display info. - inCallScreen.setSecondary(SecondaryInfo.createEmptySecondaryInfo(isFullscreen)); + inCallScreen.setSecondary(SecondaryInfo.builder().setIsFullscreen(isFullscreen).build()); return; } @@ -915,39 +915,39 @@ public class CallCardPresenter LogUtil.i( "CallCardPresenter.updateSecondaryDisplayInfo", "secondary call is merge in process, clearing info"); - inCallScreen.setSecondary(SecondaryInfo.createEmptySecondaryInfo(isFullscreen)); + inCallScreen.setSecondary(SecondaryInfo.builder().setIsFullscreen(isFullscreen).build()); return; } if (secondary.isConferenceCall()) { inCallScreen.setSecondary( - new SecondaryInfo( - true /* show */, - CallerInfoUtils.getConferenceString( - context, secondary.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE)), - false /* nameIsNumber */, - null /* label */, - secondary.getCallProviderLabel(), - true /* isConference */, - secondary.isVideoCall(), - isFullscreen)); + SecondaryInfo.builder() + .setShouldShow(true) + .setName( + CallerInfoUtils.getConferenceString( + context, secondary.hasProperty(Details.PROPERTY_GENERIC_CONFERENCE))) + .setProviderLabel(secondary.getCallProviderLabel()) + .setIsConference(true) + .setIsVideoCall(secondary.isVideoCall()) + .setIsFullscreen(isFullscreen) + .build()); } else if (secondaryContactInfo != null) { LogUtil.v("CallCardPresenter.updateSecondaryDisplayInfo", "" + secondaryContactInfo); String name = getNameForCall(secondaryContactInfo); boolean nameIsNumber = name != null && name.equals(secondaryContactInfo.number); inCallScreen.setSecondary( - new SecondaryInfo( - true /* show */, - secondary.updateNameIfRestricted(name), - nameIsNumber, - secondaryContactInfo.label, - secondary.getCallProviderLabel(), - false /* isConference */, - secondary.isVideoCall(), - isFullscreen)); + SecondaryInfo.builder() + .setShouldShow(true) + .setName(secondary.updateNameIfRestricted(name)) + .setNameIsNumber(nameIsNumber) + .setLabel(secondaryContactInfo.label) + .setProviderLabel(secondary.getCallProviderLabel()) + .setIsVideoCall(secondary.isVideoCall()) + .setIsFullscreen(isFullscreen) + .build()); } else { // Clear the secondary display info. - inCallScreen.setSecondary(SecondaryInfo.createEmptySecondaryInfo(isFullscreen)); + inCallScreen.setSecondary(SecondaryInfo.builder().setIsFullscreen(isFullscreen).build()); } } diff --git a/java/com/android/incallui/hold/OnHoldFragment.java b/java/com/android/incallui/hold/OnHoldFragment.java index 33ca158d3..bddb9bafb 100644 --- a/java/com/android/incallui/hold/OnHoldFragment.java +++ b/java/com/android/incallui/hold/OnHoldFragment.java @@ -59,14 +59,14 @@ public class OnHoldFragment extends Fragment { ((TextView) view.findViewById(R.id.hold_contact_name)) .setText( - secondaryInfo.nameIsNumber + secondaryInfo.nameIsNumber() ? PhoneNumberUtils.createTtsSpannable( BidiFormatter.getInstance() - .unicodeWrap(secondaryInfo.name, TextDirectionHeuristics.LTR)) - : secondaryInfo.name); + .unicodeWrap(secondaryInfo.name(), TextDirectionHeuristics.LTR)) + : secondaryInfo.name()); ((ImageView) view.findViewById(R.id.hold_phone_icon)) .setImageResource( - secondaryInfo.isVideoCall + secondaryInfo.isVideoCall() ? R.drawable.quantum_ic_videocam_white_18 : R.drawable.quantum_ic_phone_paused_vd_theme_24); view.addOnAttachStateChangeListener( diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java index 29160abef..5f558a4ce 100644 --- a/java/com/android/incallui/incall/impl/InCallFragment.java +++ b/java/com/android/incallui/incall/impl/InCallFragment.java @@ -305,7 +305,7 @@ public class InCallFragment extends Fragment savedSecondaryInfo = null; FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); Fragment oldBanner = getChildFragmentManager().findFragmentById(R.id.incall_on_hold_banner); - if (secondaryInfo.shouldShow) { + if (secondaryInfo.shouldShow()) { transaction.replace(R.id.incall_on_hold_banner, OnHoldFragment.newInstance(secondaryInfo)); } else { if (oldBanner != null) { diff --git a/java/com/android/incallui/incall/protocol/SecondaryInfo.java b/java/com/android/incallui/incall/protocol/SecondaryInfo.java index cadfca6bf..2dfd220a4 100644 --- a/java/com/android/incallui/incall/protocol/SecondaryInfo.java +++ b/java/com/android/incallui/incall/protocol/SecondaryInfo.java @@ -18,41 +18,62 @@ package com.android.incallui.incall.protocol; import android.os.Parcel; import android.os.Parcelable; +import android.support.annotation.Nullable; import com.android.dialer.common.LogUtil; +import com.google.auto.value.AutoValue; import java.util.Locale; /** Information about the secondary call. */ -public class SecondaryInfo implements Parcelable { - public final boolean shouldShow; - public final String name; - public final boolean nameIsNumber; - public final String label; - public final String providerLabel; - public final boolean isConference; - public final boolean isVideoCall; - public final boolean isFullscreen; - - public static SecondaryInfo createEmptySecondaryInfo(boolean isFullScreen) { - return new SecondaryInfo(false, null, false, null, null, false, false, isFullScreen); +@AutoValue +public abstract class SecondaryInfo implements Parcelable { + public abstract boolean shouldShow(); + + @Nullable + public abstract String name(); + + public abstract boolean nameIsNumber(); + + @Nullable + public abstract String label(); + + @Nullable + public abstract String providerLabel(); + + public abstract boolean isConference(); + + public abstract boolean isVideoCall(); + + public abstract boolean isFullscreen(); + + public static Builder builder() { + return new AutoValue_SecondaryInfo.Builder() + .setShouldShow(false) + .setNameIsNumber(false) + .setIsConference(false) + .setIsVideoCall(false) + .setIsFullscreen(false); } - public SecondaryInfo( - boolean shouldShow, - String name, - boolean nameIsNumber, - String label, - String providerLabel, - boolean isConference, - boolean isVideoCall, - boolean isFullscreen) { - this.shouldShow = shouldShow; - this.name = name; - this.nameIsNumber = nameIsNumber; - this.label = label; - this.providerLabel = providerLabel; - this.isConference = isConference; - this.isVideoCall = isVideoCall; - this.isFullscreen = isFullscreen; + /** Builder class for secondary info. */ + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setShouldShow(boolean shouldShow); + + public abstract Builder setName(String name); + + public abstract Builder setNameIsNumber(boolean nameIsNumber); + + public abstract Builder setLabel(String label); + + public abstract Builder setProviderLabel(String providerLabel); + + public abstract Builder setIsConference(boolean isConference); + + public abstract Builder setIsVideoCall(boolean isVideoCall); + + public abstract Builder setIsFullscreen(boolean isFullscreen); + + public abstract SecondaryInfo build(); } @Override @@ -60,28 +81,26 @@ public class SecondaryInfo implements Parcelable { return String.format( Locale.US, "SecondaryInfo, show: %b, name: %s, label: %s, " + "providerLabel: %s", - shouldShow, - LogUtil.sanitizePii(name), - label, - providerLabel); - } - - protected SecondaryInfo(Parcel in) { - shouldShow = in.readByte() != 0; - name = in.readString(); - nameIsNumber = in.readByte() != 0; - label = in.readString(); - providerLabel = in.readString(); - isConference = in.readByte() != 0; - isVideoCall = in.readByte() != 0; - isFullscreen = in.readByte() != 0; + shouldShow(), + LogUtil.sanitizePii(name()), + label(), + providerLabel()); } public static final Creator<SecondaryInfo> CREATOR = new Creator<SecondaryInfo>() { @Override public SecondaryInfo createFromParcel(Parcel in) { - return new SecondaryInfo(in); + return builder() + .setShouldShow(in.readByte() != 0) + .setName(in.readString()) + .setNameIsNumber(in.readByte() != 0) + .setLabel(in.readString()) + .setProviderLabel(in.readString()) + .setIsConference(in.readByte() != 0) + .setIsVideoCall(in.readByte() != 0) + .setIsFullscreen(in.readByte() != 0) + .build(); } @Override @@ -97,13 +116,13 @@ public class SecondaryInfo implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeByte((byte) (shouldShow ? 1 : 0)); - dest.writeString(name); - dest.writeByte((byte) (nameIsNumber ? 1 : 0)); - dest.writeString(label); - dest.writeString(providerLabel); - dest.writeByte((byte) (isConference ? 1 : 0)); - dest.writeByte((byte) (isVideoCall ? 1 : 0)); - dest.writeByte((byte) (isFullscreen ? 1 : 0)); + dest.writeByte((byte) (shouldShow() ? 1 : 0)); + dest.writeString(name()); + dest.writeByte((byte) (nameIsNumber() ? 1 : 0)); + dest.writeString(label()); + dest.writeString(providerLabel()); + dest.writeByte((byte) (isConference() ? 1 : 0)); + dest.writeByte((byte) (isVideoCall() ? 1 : 0)); + dest.writeByte((byte) (isFullscreen() ? 1 : 0)); } } diff --git a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java index 631cc1d68..28ee774ba 100644 --- a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java +++ b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java @@ -846,7 +846,7 @@ public class SurfaceViewVideoCallFragment extends Fragment updateButtonStates(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); Fragment oldBanner = getChildFragmentManager().findFragmentById(R.id.videocall_on_hold_banner); - if (secondaryInfo.shouldShow) { + if (secondaryInfo.shouldShow()) { OnHoldFragment onHoldFragment = OnHoldFragment.newInstance(secondaryInfo); onHoldFragment.setPadTopInset(!isInFullscreenMode); transaction.replace(R.id.videocall_on_hold_banner, onHoldFragment); diff --git a/java/com/android/incallui/video/impl/SwitchOnHoldCallController.java b/java/com/android/incallui/video/impl/SwitchOnHoldCallController.java index 372b56b4e..3efdfd7fa 100644 --- a/java/com/android/incallui/video/impl/SwitchOnHoldCallController.java +++ b/java/com/android/incallui/video/impl/SwitchOnHoldCallController.java @@ -74,7 +74,7 @@ public class SwitchOnHoldCallController implements OnClickListener { } private boolean hasSecondaryInfo() { - return secondaryInfo != null && secondaryInfo.shouldShow; + return secondaryInfo != null && secondaryInfo.shouldShow(); } public void updateButtonState() { diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java index 0793d1830..6b5a9797f 100644 --- a/java/com/android/incallui/video/impl/VideoCallFragment.java +++ b/java/com/android/incallui/video/impl/VideoCallFragment.java @@ -887,7 +887,7 @@ public class VideoCallFragment extends Fragment updateButtonStates(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); Fragment oldBanner = getChildFragmentManager().findFragmentById(R.id.videocall_on_hold_banner); - if (secondaryInfo.shouldShow) { + if (secondaryInfo.shouldShow()) { OnHoldFragment onHoldFragment = OnHoldFragment.newInstance(secondaryInfo); onHoldFragment.setPadTopInset(!isInFullscreenMode); transaction.replace(R.id.videocall_on_hold_banner, onHoldFragment); |