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

Commit 581585d9 authored by Walter Jang's avatar Walter Jang
Browse files

Start ContactSheet instead of QuickContacts (1/2)

Test: Manually start QuickContact and ContactSheet from
  1. DefaultContactBrowseListFragment
  2. Me profile (preferences)
  3. Group members
  4. Duplicates (with result)
  5. Editor (known issue here that ContactSheet doesn't refresh)
  6. Shortcuts (this one always ones QuickContact)

Bug: 31666272
Change-Id: Ia939b89fee4f18b62b3d72c87a5077cf350ded24
parent d10391e9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import com.android.contacts.common.util.DeviceLocalAccountTypeFactory;

import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;

/**
 * Creates default bindings for overlays.
@@ -47,4 +49,8 @@ public class ObjectFactory {
    public static Fragment getDuplicatesUtilFragment() {
        return null;
    }

    public static Intent getContactSheetIntent(Context context, Uri contactLookupUri) {
        return null;
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.QuickContact;
import android.provider.ContactsContract.RawContacts;
import android.util.Log;
import android.view.View;
@@ -284,6 +285,14 @@ public class CompactContactEditorActivity extends ContactsActivity implements
                    if (mFinishActivityOnSaveCompleted) {
                        setResult(resultIntent == null ? RESULT_CANCELED : RESULT_OK, resultIntent);
                    } else if (resultIntent != null) {
                        // If it's a smart profile Intent it must be started "for result"
                        if (QuickContact.ACTION_QUICK_CONTACT.equals(resultIntent.getAction())) {
                            ImplicitIntentsUtil.startActivityInApp(
                                    CompactContactEditorActivity.this, resultIntent);
                        } else {
                            startActivityForResult(resultIntent, /* requestCode */ 0);
                        }

                        ImplicitIntentsUtil.startActivityInApp(
                                CompactContactEditorActivity.this, resultIntent);
                    }
+5 −5
Original line number Diff line number Diff line
@@ -20,6 +20,11 @@ package com.android.contacts.common;
 */
public final class Experiments {

    /**
     * Whether to open contact sheet (aka smart profile) instead of our own QuickContact.
     */
    public static final String CONTACT_SHEET = "QuickContact__contact_sheet";

    /**
     * Experiment to enable dynamic strequent shortcuts.
     */
@@ -35,11 +40,6 @@ public final class Experiments {
     */
    public static final String SEARCH_YENTA = "Search__yenta";

    /**
     * Whether to open contact sheet (aka smart profile) instead of our own QuickContact.
     */
    public static final String CONTACT_SHEET = "QuickContact__contact_sheet";

    /**
     * Flags for minimum content update time
     */
+16 −0
Original line number Diff line number Diff line
@@ -28,9 +28,12 @@ import android.provider.ContactsContract.QuickContact;
import android.provider.Settings;
import android.text.TextUtils;

import com.android.contacts.common.Experiments;
import com.android.contacts.common.logging.ScreenEvent.ScreenType;
import com.android.contacts.common.model.account.GoogleAccountType;
import com.android.contacts.quickcontact.QuickContactActivity;
import com.android.contactsbind.ObjectFactory;
import com.android.contactsbind.experiments.Flags;

import java.util.List;

@@ -115,10 +118,23 @@ public class ImplicitIntentsUtil {

    private static void startQuickContact(Activity activity, Uri contactLookupUri,
            int previousScreenType, int requestCode) {

        if (Flags.getInstance(activity).getBoolean(Experiments.CONTACT_SHEET)) {
            final Intent intent = ObjectFactory.getContactSheetIntent(activity, contactLookupUri);
            if (intent != null) {
                // We must start ContactSheet "for result" with a requestCode that is >= 0
                // so that ContactSheet can validate that the caller is a 1P app.
                activity.startActivityForResult(intent, requestCode >= 0 ? requestCode : 0);
                return;
            }
        }

        final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
                activity, contactLookupUri, previousScreenType);

        // For the non ContactSheet case we only start "for result" if specifically requested.
        if (requestCode >= 0) {
            intent.setPackage(activity.getPackageName());
            activity.startActivityForResult(intent, requestCode);
        } else {
            startActivityInApp(activity, intent);
+12 −4
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import com.android.contacts.activities.CompactContactEditorActivity;
import com.android.contacts.activities.CompactContactEditorActivity.ContactEditor;
import com.android.contacts.activities.ContactEditorAccountsChangedActivity;
import com.android.contacts.activities.ContactSelectionActivity;
import com.android.contacts.common.Experiments;
import com.android.contacts.common.logging.ScreenEvent.ScreenType;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.Contact;
@@ -83,6 +84,8 @@ import com.android.contacts.util.ContactPhotoUtils;
import com.android.contacts.util.HelpUtils;
import com.android.contacts.util.PhoneCapabilityTester;
import com.android.contacts.util.UiClosables;
import com.android.contactsbind.ObjectFactory;
import com.android.contactsbind.experiments.Flags;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
@@ -1542,13 +1545,18 @@ public class CompactContactEditorFragment extends Fragment implements
        }
        switch (saveMode) {
            case SaveMode.CLOSE: {
                final Intent resultIntent;
                Intent resultIntent = null;
                if (saveSucceeded && contactLookupUri != null) {
                    final Uri lookupUri = ContactEditorUtils.maybeConvertToLegacyLookupUri(
                            mContext, contactLookupUri, mLookupUri);
                    if (Flags.getInstance(mContext).getBoolean(Experiments.CONTACT_SHEET)) {
                        resultIntent = ObjectFactory.getContactSheetIntent(mContext, lookupUri);
                    }
                    if (resultIntent == null) {
                        resultIntent = ImplicitIntentsUtil.composeQuickContactIntent(
                                mContext, lookupUri, ScreenType.EDITOR);
                        resultIntent.putExtra(QuickContactActivity.EXTRA_CONTACT_EDITED, true);
                    }
                } else {
                    resultIntent = null;
                }