Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7efc03f4 authored by Stephen Bird's avatar Stephen Bird
Browse files

[4/4] Update dialer for CallMethodHelper refactor

Change-Id: I79f5e6285de5237f5a50a5cc1534f590e03a6996
parent 38fec3be
Loading
Loading
Loading
Loading
+4 −16
Original line number Diff line number Diff line
@@ -26,30 +26,22 @@ import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.os.PowerManager;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.VoicemailContract.Voicemails;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
import android.widget.Toast;

import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.util.PermissionsUtil;
import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.activity.fragment.BlockContactDialogFragment;
@@ -59,24 +51,19 @@ import com.android.dialer.calllog.CallDetailHistoryAdapter;
import com.android.dialer.calllog.CallLogAsyncTaskUtil.CallLogAsyncTaskListener;
import com.android.dialer.calllog.CallLogAsyncTaskUtil;
import com.android.dialer.calllog.CallTypeHelper;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.calllog.ContactInfoHelper;
import com.android.dialer.calllog.PhoneAccountUtils;
import com.android.dialer.calllog.PhoneNumberDisplayUtil;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
import com.android.dialer.util.PhoneNumberUtil;
import com.android.dialer.util.TelecomUtil;
import com.android.phone.common.incall.DialerDataSubscription;
import com.android.services.callrecorder.CallRecordingDataStore;
import com.android.dialer.widget.DialerQuickContact;
import com.android.phone.common.incall.CallMethodHelper;
import com.android.phone.common.incall.CallMethodInfo;

import com.cyanogen.ambient.incall.extension.OriginCodes;
import com.cyanogen.lookup.phonenumber.provider.LookupProviderImpl;

import java.util.List;

/**
 * Displays the details of a specific call log entry.
 * <p>
@@ -275,7 +262,8 @@ public class CallDetailActivity extends Activity
            @Override
            public void onClick(View view) {
                if (mInCallComponentName != null) {
                    CallMethodInfo cmi = CallMethodHelper.getCallMethod(mInCallComponentName);
                    CallMethodInfo cmi = DialerDataSubscription.get(mContext)
                            .getPluginIfExists(mInCallComponentName);
                    if (cmi != null) {
                        cmi.placeCall(OriginCodes.CALL_LOG_CALL, mNumber, mContext);
                        return;
@@ -366,7 +354,7 @@ public class CallDetailActivity extends Activity
        if (cn == null) {
            mDialerQuickContact.setAttributionBadge(null);
        } else {
            CallMethodInfo cmi = CallMethodHelper.getCallMethod(cn);
            CallMethodInfo cmi = DialerDataSubscription.get(mContext).getPluginIfExists(cn);
            if (cmi == null) {
                mDialerQuickContact.setAttributionBadge(null);
                if (DEBUG) Log.d(TAG, "Call Method was Null for: " + cn.toShortString());
+2 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ import com.android.contacts.common.extensions.ExtensionsFactory;
import com.android.contacts.commonbind.analytics.AnalyticsUtil;
import com.android.dialer.discovery.WifiCallStatusNudgeListener;
import com.android.dialer.incall.InCallMetricsHelper;
import com.android.phone.common.incall.CallMethodHelper;
import com.android.phone.common.incall.DialerDataSubscription;
import com.android.dialer.util.MetricsHelper;


@@ -44,7 +44,7 @@ public class DialerApplication extends Application {
        AnalyticsUtil.initialize(this);
        Trace.endSection();

        CallMethodHelper.init(this);
        DialerDataSubscription.init(this);
        MetricsHelper.init(this);
        WifiCallStatusNudgeListener.init(this);
        InCallMetricsHelper.init(this);
+12 −17
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.dialer;

import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
@@ -31,7 +30,6 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Bundle;
@@ -40,7 +38,6 @@ import android.os.Looper;
import android.os.Trace;
import android.provider.CallLog.Calls;
import android.preference.PreferenceManager;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.speech.RecognizerIntent;
@@ -49,7 +46,6 @@ import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
@@ -66,12 +62,10 @@ import android.view.ViewTreeObserver;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import android.widget.Spinner;
import android.widget.Toast;

import com.android.contacts.common.activity.TransactionSafeActivity;
@@ -111,9 +105,10 @@ import com.android.phone.common.animation.AnimUtils;
import com.android.phone.common.ambient.AmbientConnection;
import com.android.phone.common.incall.CreditBarHelper;
import com.android.phone.common.incall.CallMethodInfo;
import com.android.phone.common.incall.CallMethodHelper;
import com.android.phone.common.incall.DialerDataSubscription;
import com.android.phone.common.incall.CallMethodSpinnerAdapter;
import com.android.phone.common.incall.CallMethodUtils;
import com.android.phone.common.incall.StartInCallCallReceiver;
import com.android.phone.common.incall.utils.CallMethodFilters;
import com.android.phone.common.util.SettingsUtil;
import com.android.phone.common.animation.AnimationListenerAdapter;

@@ -121,7 +116,6 @@ import com.cyanogen.ambient.incall.InCallServices;
import com.cyanogen.ambient.incall.extension.StartCallRequest;
import com.cyanogen.ambient.incall.extension.OriginCodes;

import com.android.phone.common.util.StartInCallCallReceiver;
import junit.framework.Assert;

import java.util.ArrayList;
@@ -290,11 +284,11 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
    private CallMethodInfo mCurrentCallMethod;
    private String AMBIENT_SUBSCRIPTION_ID = "DialtactsActivity";

    private CallMethodHelper.CallMethodReceiver pluginsUpdatedReceiver =
            new CallMethodHelper.CallMethodReceiver() {
    private DialerDataSubscription.PluginChanged<CallMethodInfo> pluginsUpdatedReceiver =
            new DialerDataSubscription.PluginChanged<CallMethodInfo>() {
                @Override
                public void onChanged(HashMap<ComponentName, CallMethodInfo> callMethodInfos) {
                    providersUpdated(callMethodInfos);
                public void onChanged(HashMap<ComponentName, CallMethodInfo> pluginInfos) {
                    providersUpdated(pluginInfos);
                }
            };

@@ -363,7 +357,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
        // we may miss some data.
        updateSmartDialDatabase();
        mAvailableProviders.clear();
        CallMethodHelper.removeDisabled(availableCallMethods, mAvailableProviders);
        CallMethodFilters.removeDisabled(availableCallMethods, mAvailableProviders);
        if (mSmartDialSearchFragment != null) {
            mSmartDialSearchFragment.setAvailableProviders(mAvailableProviders);
        }
@@ -679,9 +673,10 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
        Trace.beginSection(TAG + " onResume");
        super.onResume();

        if (CallMethodHelper.subscribe(AMBIENT_SUBSCRIPTION_ID, pluginsUpdatedReceiver)) {
            providersUpdated(CallMethodHelper.getAllCallMethods());
            CallMethodHelper.refreshDynamicItems();
        DialerDataSubscription subscription = DialerDataSubscription.get(this);
        if (subscription.subscribe(AMBIENT_SUBSCRIPTION_ID, pluginsUpdatedReceiver)) {
            providersUpdated(subscription.getPluginInfo());
            subscription.refreshDynamicItems();
        }

        mStateSaved = false;
+7 −10
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ import android.view.ViewGroup;

import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.activity.fragment.BlockContactDialogFragment;
import com.android.contacts.common.util.BlockContactHelper;
import com.android.contacts.common.util.PermissionsUtil;
import com.android.dialer.R;
import com.android.dialer.util.EmptyLoader;
@@ -48,15 +47,12 @@ import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
import com.android.dialer.widget.EmptyContentView;
import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
import com.android.dialerbind.ObjectFactory;
import com.android.phone.common.incall.CallMethodHelper;
import com.android.phone.common.incall.CallMethodInfo;
import com.android.phone.common.incall.DialerDataSubscription;
import com.cyanogen.ambient.incall.CallLogConstants;

import java.util.HashMap;

import android.util.Log;
import com.cyanogen.lookup.phonenumber.provider.LookupProviderImpl;

/**
 * Displays a list of call log entries. To filter for a particular kind of call
 * (all, missed or voicemails), specify it in the constructor.
@@ -144,10 +140,10 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis
    /* InCall Plugin Listener ID */
    private static final String AMBIENT_SUBSCRIPTION_ID = "CallLogFragment";

    private CallMethodHelper.CallMethodReceiver pluginsUpdatedReceiver =
            new CallMethodHelper.CallMethodReceiver() {
    private DialerDataSubscription.PluginChanged<CallMethodInfo> pluginsUpdatedReceiver =
            new DialerDataSubscription.PluginChanged<CallMethodInfo>() {
                @Override
                public void onChanged(HashMap<ComponentName, CallMethodInfo> callMethodInfos) {
                public void onChanged(HashMap<ComponentName, CallMethodInfo> pluginInfos) {
                    // We moved this here because well, getting our call method data takes some time
                    // we _should_cache this icon somewhere -> load that, then when this updates
                    // we could update the icons. Currentlly the user has some ugly ugly flash
@@ -353,7 +349,8 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis
        }
        mHasReadCallLogPermission = hasReadCallLogPermission;

        if (CallMethodHelper.subscribe(AMBIENT_SUBSCRIPTION_ID, pluginsUpdatedReceiver)) {
        if (DialerDataSubscription.get(getActivity())
                .subscribe(AMBIENT_SUBSCRIPTION_ID, pluginsUpdatedReceiver)) {
            refreshData();
            mAdapter.startCache();
        }
@@ -366,7 +363,7 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis
        }
        mAdapter.pauseCache();

        CallMethodHelper.unsubscribe(AMBIENT_SUBSCRIPTION_ID);
        DialerDataSubscription.get(getActivity()).unsubscribe(AMBIENT_SUBSCRIPTION_ID);

        super.onPause();
    }
+6 −10
Original line number Diff line number Diff line
@@ -17,12 +17,10 @@
package com.android.dialer.calllog;

import android.app.Activity;
import android.app.DialogFragment;
import android.content.ComponentName;
import android.content.Context;
import android.content.res.Resources;
import android.content.Intent;
import android.graphics.PorterDuff.Mode;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -39,15 +37,12 @@ import android.widget.QuickContactBadge;
import android.widget.ImageView;
import android.widget.TextView;

import com.android.contacts.common.util.BlockContactHelper;
import com.android.dialer.widget.DialerQuickContact;
import com.android.internal.telephony.util.BlacklistUtils;

import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.dialog.CallSubjectDialog;
import com.android.contacts.common.testing.NeededForTesting;
import com.android.contacts.common.util.BlockContactHelper;
import com.android.contacts.common.util.UriUtils;
import com.android.dialer.R;
import com.android.dialer.util.DialerUtils;
@@ -55,10 +50,10 @@ import com.android.dialer.util.PhoneNumberUtil;
import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
import com.android.dialer.voicemail.VoicemailPlaybackLayout;

import com.android.phone.common.incall.CallMethodHelper;
import com.android.phone.common.incall.CallMethodInfo;
import com.android.phone.common.incall.DialerDataSubscription;
import com.android.phone.common.incall.utils.CallMethodFilters;
import com.cyanogen.ambient.incall.extension.OriginCodes;
import com.cyanogen.lookup.phonenumber.provider.LookupProviderImpl;

/**
 * This is an object containing references to views contained by the call log list item. This
@@ -371,7 +366,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder

        CallMethodInfo cmi = null;
        if (inCallComponentName != null) {
            cmi = CallMethodHelper.getCallMethod(inCallComponentName);
            cmi = DialerDataSubscription.get(mContext).getPluginIfExists(inCallComponentName);
        }

        if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) {
@@ -507,7 +502,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
        if (cn == null) {
            dialerQuickContact.setAttributionBadge(null);
        } else {
            CallMethodInfo cmi = CallMethodHelper.getCallMethod(cn);
            CallMethodInfo cmi = DialerDataSubscription.get(mContext).getPluginIfExists(cn);
            if (cmi == null) {
                dialerQuickContact.setAttributionBadge(null);
                Log.v(TAG, "Call Method was Null for: " + cn.toShortString());
@@ -567,7 +562,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
        } else {
            final String inCallAction = (String) view.getTag(R.id.incall_provider_action_type);
            if (inCallComponentName != null && !TextUtils.isEmpty(inCallAction)) {
                CallMethodInfo cmi = CallMethodHelper.getCallMethod(inCallComponentName);
                CallMethodInfo cmi = DialerDataSubscription.get(mContext)
                        .getPluginIfExists(inCallComponentName);
                if (cmi != null) {
                    switch (inCallAction) {
                        case INCALL_ACTION_TYPE_VIDEO:
Loading