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

Commit 639ed345 authored by Tony Mak's avatar Tony Mak Committed by Android (Google) Code Review
Browse files

Merge "Show Briefcase icon not displayed in in-call UI for work SIP calls" into nyc-dev

parents 4acb5737 83583b73
Loading
Loading
Loading
Loading
+33 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.incallui;

import com.android.dialer.util.PhoneLookupUtil;
import com.google.common.primitives.Longs;

import android.content.Context;
@@ -32,6 +33,8 @@ import android.provider.ContactsContract.RawContacts;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;

import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.compat.PhoneLookupSdkCompat;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.ContactsUtils.UserType;
import com.android.contacts.common.util.PhoneNumberHelper;
@@ -44,7 +47,23 @@ import com.android.dialer.calllog.ContactInfoHelper;
public class CallerInfo {
    private static final String TAG = "CallerInfo";

    public static final String[] DEFAULT_PHONELOOKUP_PROJECTION = new String[] {
    // We should always use this projection starting from NYC onward.
    private static final String[] DEFAULT_PHONELOOKUP_PROJECTION = new String[] {
            PhoneLookupSdkCompat.CONTACT_ID,
            PhoneLookup.DISPLAY_NAME,
            PhoneLookup.LOOKUP_KEY,
            PhoneLookup.NUMBER,
            PhoneLookup.NORMALIZED_NUMBER,
            PhoneLookup.LABEL,
            PhoneLookup.TYPE,
            PhoneLookup.PHOTO_URI,
            PhoneLookup.CUSTOM_RINGTONE,
            PhoneLookup.SEND_TO_VOICEMAIL
    };

    // In pre-N, contact id is stored in {@link PhoneLookup._ID} in non-sip query.
    private static final String[] BACKWARD_COMPATIBLE_NON_SIP_DEFAULT_PHONELOOKUP_PROJECTION =
            new String[] {
                    PhoneLookup._ID,
                    PhoneLookup.DISPLAY_NAME,
                    PhoneLookup.LOOKUP_KEY,
@@ -57,6 +76,17 @@ public class CallerInfo {
                    PhoneLookup.SEND_TO_VOICEMAIL
    };

    public static String[] getDefaultPhoneLookupProjection(Uri phoneLookupUri) {
        if (CompatUtils.isNCompatible()) {
            return DEFAULT_PHONELOOKUP_PROJECTION;
        }
        // Pre-N
        boolean isSip = phoneLookupUri.getBooleanQueryParameter(
                        ContactsContract.PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, false);
        return (isSip) ? DEFAULT_PHONELOOKUP_PROJECTION
                : BACKWARD_COMPATIBLE_NON_SIP_DEFAULT_PHONELOOKUP_PROJECTION;
    }

    /**
     * Please note that, any one of these member variables can be null,
     * and any accesses to them should be prepared to handle such a case.
@@ -480,7 +510,7 @@ public class CallerInfo {
            // for phone numbers.
            // MIME type: PhoneLookup.CONTENT_TYPE (= "vnd.android.cursor.dir/phone_lookup")
            Log.v(TAG, "'phone_lookup' URI; using PhoneLookup._ID");
            columnName = PhoneLookup._ID;
            columnName = PhoneLookupUtil.getContactIdColumnNameForUri(contactRef);
        } else {
            Log.v(TAG, "Unexpected prefix for contactRef '" + url + "'");
        }
+8 −6
Original line number Diff line number Diff line
@@ -407,10 +407,12 @@ public class CallerInfoAsyncQuery {
            cw.event = EVENT_NEW_QUERY;
        }


        String[] proejection = CallerInfo.getDefaultPhoneLookupProjection(contactRef);
        c.mHandler.startQuery(token,
                cw,  // cookie
                contactRef,  // uri
                              CallerInfo.DEFAULT_PHONELOOKUP_PROJECTION,  // projection
                proejection, // projection
                null,  // selection
                null,  // selectionArgs
                null);  // orderBy
+1 −2
Original line number Diff line number Diff line
@@ -164,8 +164,7 @@ public class ContactInfoHelper {

        Cursor phoneLookupCursor = null;
        try {
            String[] projection = (isSip) ? PhoneQuery.SIP_PHONE_LOOKUP_PROJECTION
                    : PhoneQuery.PHONE_LOOKUP_PROJECTION;
            String[] projection = PhoneQuery.getPhoneLookupProjection(uri);
            phoneLookupCursor = mContext.getContentResolver().query(uri, projection, null, null,
                    null);
        } catch (NullPointerException e) {
+35 −18
Original line number Diff line number Diff line
@@ -16,10 +16,15 @@

package com.android.dialer.calllog;

import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.PhoneLookup;

import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.compat.PhoneLookupSdkCompat;
import com.android.contacts.common.ContactsUtils;

/**
 * The queries to look up the {@link ContactInfo} for a given number in the Call Log.
 */
@@ -27,10 +32,11 @@ final class PhoneQuery {

    /**
     * Projection to look up the ContactInfo. Does not include DISPLAY_NAME_ALTERNATIVE as that
     * column isn't available in ContactsCommon.PhoneLookup
     * column isn't available in ContactsCommon.PhoneLookup.
     * We should always use this projection starting from NYC onward.
     */
    public static final String[] PHONE_LOOKUP_PROJECTION = new String[] {
            PhoneLookup._ID,
    private static final String[] PHONE_LOOKUP_PROJECTION = new String[] {
            PhoneLookupSdkCompat.CONTACT_ID,
            PhoneLookup.DISPLAY_NAME,
            PhoneLookup.TYPE,
            PhoneLookup.LABEL,
@@ -42,12 +48,12 @@ final class PhoneQuery {
    };

    /**
     * Similar to {@link PHONE_LOOKUP_PROJECTION}. Due to a bug in framework, the column name of
     * contact id in normal phonelookup query is _id, but that in sip phonelookup query is
     * contact_id.
     * Similar to {@link PHONE_LOOKUP_PROJECTION}. In pre-N, contact id is stored in
     * {@link PhoneLookup#_ID} in non-sip query.
     */
    public static final String[] SIP_PHONE_LOOKUP_PROJECTION = new String[] {
            Data.CONTACT_ID,
    private static final String[] BACKWARD_COMPATIBLE_NON_SIP_PHONE_LOOKUP_PROJECTION =
            new String[] {
                    PhoneLookup._ID,
                    PhoneLookup.DISPLAY_NAME,
                    PhoneLookup.TYPE,
                    PhoneLookup.LABEL,
@@ -58,6 +64,17 @@ final class PhoneQuery {
                    PhoneLookup.PHOTO_URI
            };

    public static String[] getPhoneLookupProjection(Uri phoneLookupUri) {
        if (CompatUtils.isNCompatible()) {
            return PHONE_LOOKUP_PROJECTION;
        }
        // Pre-N
        boolean isSip = phoneLookupUri.getBooleanQueryParameter(
                ContactsContract.PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, false);
        return (isSip) ? PHONE_LOOKUP_PROJECTION
                : BACKWARD_COMPATIBLE_NON_SIP_PHONE_LOOKUP_PROJECTION;
    }

    public static final int PERSON_ID = 0;
    public static final int NAME = 1;
    public static final int PHONE_TYPE = 2;
+40 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 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.util;

import android.net.Uri;
import android.provider.ContactsContract;

import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.compat.PhoneLookupSdkCompat;

public final class PhoneLookupUtil {
    /**
     * @return the column name that stores contact id for phone lookup query.
     */
    public static String getContactIdColumnNameForUri(Uri phoneLookupUri) {
        if (CompatUtils.isNCompatible()) {
            return PhoneLookupSdkCompat.CONTACT_ID;
        }
        // In pre-N, contact id is stored in {@link PhoneLookup#_ID} in non-sip query.
        boolean isSip = phoneLookupUri.getBooleanQueryParameter(
                ContactsContract.PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, false);
        return (isSip) ? PhoneLookupSdkCompat.CONTACT_ID : ContactsContract.PhoneLookup._ID;
    }

    private PhoneLookupUtil() {}
}
Loading