Additional clean-up of dialer split.

- Moving resource only used by dialer.
- Moving out common utilities.

Bug: 6993891
Change-Id: Ieb851adb1d6a3492290b84a56aa2cd00cae2f260
diff --git a/src/com/android/contacts/CallContactActivity.java b/src/com/android/contacts/CallContactActivity.java
index c4b4dc7..3aacfd5 100644
--- a/src/com/android/contacts/CallContactActivity.java
+++ b/src/com/android/contacts/CallContactActivity.java
@@ -22,6 +22,7 @@
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
 
+import com.android.contacts.common.CallUtil;
 import com.android.contacts.interactions.PhoneNumberInteraction;
 
 /**
@@ -48,7 +49,7 @@
         if (Contacts.CONTENT_ITEM_TYPE.equals(getContentResolver().getType(contactUri))) {
             PhoneNumberInteraction.startInteractionForPhoneCall(this, contactUri);
         } else {
-            startActivity(ContactsUtils.getCallIntent(contactUri));
+            startActivity(CallUtil.getCallIntent(contactUri));
             finish();
         }
     }
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index 226061e..d1c80c7 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -37,8 +37,6 @@
 import com.android.contacts.model.account.AccountType;
 import com.android.contacts.model.account.AccountWithDataSet;
 import com.android.contacts.test.NeededForTesting;
-import com.android.contacts.util.Constants;
-import com.android.phone.common.PhoneConstants;
 
 import java.util.List;
 
@@ -224,57 +222,6 @@
     }
 
     /**
-     * Return Uri with an appropriate scheme, accepting Voicemail, SIP, and usual phone call
-     * numbers.
-     */
-    public static Uri getCallUri(String number) {
-        if (PhoneNumberUtils.isVoiceMailNumber(number)) {
-            return Uri.parse("voicemail:");
-        }
-        if (PhoneNumberUtils.isUriNumber(number)) {
-             return Uri.fromParts(Constants.SCHEME_SIP, number, null);
-        }
-        return Uri.fromParts(Constants.SCHEME_TEL, number, null);
-     }
-
-    /**
-     * Return an Intent for making a phone call. Scheme (e.g. tel, sip) will be determined
-     * automatically.
-     */
-    public static Intent getCallIntent(String number) {
-        return getCallIntent(number, null);
-    }
-
-    /**
-     * Return an Intent for making a phone call. A given Uri will be used as is (without any
-     * sanity check).
-     */
-    public static Intent getCallIntent(Uri uri) {
-        return getCallIntent(uri, null);
-    }
-
-    /**
-     * A variant of {@link #getCallIntent(String)} but also accept a call origin. For more
-     * information about call origin, see comments in Phone package (PhoneApp).
-     */
-    public static Intent getCallIntent(String number, String callOrigin) {
-        return getCallIntent(getCallUri(number), callOrigin);
-    }
-
-    /**
-     * A variant of {@link #getCallIntent(Uri)} but also accept a call origin. For more
-     * information about call origin, see comments in Phone package (PhoneApp).
-     */
-    public static Intent getCallIntent(Uri uri, String callOrigin) {
-        final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, uri);
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        if (callOrigin != null) {
-            intent.putExtra(PhoneConstants.EXTRA_CALL_ORIGIN, callOrigin);
-        }
-        return intent;
-    }
-
-    /**
      * Return an Intent for launching voicemail screen.
      */
     public static Intent getVoicemailIntent() {
diff --git a/src/com/android/contacts/activities/ShowOrCreateActivity.java b/src/com/android/contacts/activities/ShowOrCreateActivity.java
index 1dc0197..a8077cb 100755
--- a/src/com/android/contacts/activities/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/activities/ShowOrCreateActivity.java
@@ -32,9 +32,9 @@
 import android.provider.ContactsContract.RawContacts;
 import android.util.Log;
 
+import com.android.contacts.common.CallUtil;
 import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
-import com.android.contacts.util.Constants;
 import com.android.contacts.util.NotifyingAsyncQueryHandler;
 
 /**
@@ -119,13 +119,13 @@
         mCreateForce = intent.getBooleanExtra(Intents.EXTRA_FORCE_CREATE, false);
 
         // Handle specific query request
-        if (Constants.SCHEME_MAILTO.equals(scheme)) {
+        if (CallUtil.SCHEME_MAILTO.equals(scheme)) {
             mCreateExtras.putString(Intents.Insert.EMAIL, ssp);
 
             Uri uri = Uri.withAppendedPath(Email.CONTENT_FILTER_URI, Uri.encode(ssp));
             mQueryHandler.startQuery(QUERY_TOKEN, null, uri, CONTACTS_PROJECTION, null, null, null);
 
-        } else if (Constants.SCHEME_TEL.equals(scheme)) {
+        } else if (CallUtil.SCHEME_TEL.equals(scheme)) {
             mCreateExtras.putString(Intents.Insert.PHONE, ssp);
 
             Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, ssp);
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 3dfaf8d..4d5458b 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -68,6 +68,7 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
+import com.android.contacts.common.CallUtil;
 import com.android.contacts.Collapser;
 import com.android.contacts.Collapser.Collapsible;
 import com.android.contacts.ContactPresenceIconUtil;
@@ -77,6 +78,7 @@
 import com.android.contacts.R;
 import com.android.contacts.TypePrecedence;
 import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
+import com.android.contacts.common.ClipboardUtils;
 import com.android.contacts.editor.SelectAccountDialogFragment;
 import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.model.Contact;
@@ -104,8 +106,6 @@
 import com.android.contacts.model.dataitem.StructuredPostalDataItem;
 import com.android.contacts.model.dataitem.WebsiteDataItem;
 import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
-import com.android.contacts.util.ClipboardUtils;
-import com.android.contacts.util.Constants;
 import com.android.contacts.util.DataStatus;
 import com.android.contacts.util.DateUtils;
 import com.android.contacts.util.PhoneCapabilityTester;
@@ -575,9 +575,9 @@
                     // Build phone entries
                     entry.data = phone.getFormattedPhoneNumber();
                     final Intent phoneIntent = mHasPhone ?
-                            ContactsUtils.getCallIntent(entry.data) : null;
+                            CallUtil.getCallIntent(entry.data) : null;
                     final Intent smsIntent = mHasSms ? new Intent(Intent.ACTION_SENDTO,
-                            Uri.fromParts(Constants.SCHEME_SMSTO, entry.data, null)) : null;
+                            Uri.fromParts(CallUtil.SCHEME_SMSTO, entry.data, null)) : null;
 
                     // Configure Icons and Intents.
                     if (mHasPhone && mHasSms) {
@@ -609,7 +609,7 @@
                 } else if (dataItem instanceof EmailDataItem && hasData) {
                     // Build email entries
                     entry.intent = new Intent(Intent.ACTION_SENDTO,
-                            Uri.fromParts(Constants.SCHEME_MAILTO, entry.data, null));
+                            Uri.fromParts(CallUtil.SCHEME_MAILTO, entry.data, null));
                     entry.isPrimary = isSuperPrimary;
                     // If entry is a primary entry, then render it first in the view.
                     if (entry.isPrimary) {
@@ -680,8 +680,8 @@
                     // Build SipAddress entries
                     entry.uri = null;
                     if (mHasSip) {
-                        entry.intent = ContactsUtils.getCallIntent(
-                                Uri.fromParts(Constants.SCHEME_SIP, entry.data, null));
+                        entry.intent = CallUtil.getCallIntent(
+                                Uri.fromParts(CallUtil.SCHEME_SIP, entry.data, null));
                     } else {
                         entry.intent = null;
                     }
@@ -990,7 +990,7 @@
 
             if (!TextUtils.isEmpty(host)) {
                 final String authority = host.toLowerCase();
-                final Uri imUri = new Uri.Builder().scheme(Constants.SCHEME_IMTO).authority(
+                final Uri imUri = new Uri.Builder().scheme(CallUtil.SCHEME_IMTO).authority(
                         authority).appendPath(data).build();
                 entry.intent = new Intent(Intent.ACTION_SENDTO, imUri);
             }
@@ -1955,7 +1955,7 @@
                     }
                 } else if (mPrimaryPhoneUri != null) {
                     // There isn't anything selected, call the default number
-                    mContext.startActivity(ContactsUtils.getCallIntent(mPrimaryPhoneUri));
+                    mContext.startActivity(CallUtil.getCallIntent(mPrimaryPhoneUri));
                     return true;
                 }
                 return false;
diff --git a/src/com/android/contacts/interactions/PhoneNumberInteraction.java b/src/com/android/contacts/interactions/PhoneNumberInteraction.java
index 551eab4..12ab431 100644
--- a/src/com/android/contacts/interactions/PhoneNumberInteraction.java
+++ b/src/com/android/contacts/interactions/PhoneNumberInteraction.java
@@ -46,6 +46,7 @@
 import android.widget.ListAdapter;
 import android.widget.TextView;
 
+import com.android.contacts.common.CallUtil;
 import com.android.contacts.Collapser;
 import com.android.contacts.Collapser.Collapsible;
 import com.android.contacts.ContactSaveService;
@@ -330,7 +331,7 @@
                         Intent.ACTION_SENDTO, Uri.fromParts("sms", phoneNumber, null));
                 break;
             default:
-                intent = ContactsUtils.getCallIntent(phoneNumber, callOrigin);
+                intent = CallUtil.getCallIntent(phoneNumber, callOrigin);
                 break;
         }
         context.startActivity(intent);
diff --git a/src/com/android/contacts/list/ShortcutIntentBuilder.java b/src/com/android/contacts/list/ShortcutIntentBuilder.java
index 1578524..447328b 100644
--- a/src/com/android/contacts/list/ShortcutIntentBuilder.java
+++ b/src/com/android/contacts/list/ShortcutIntentBuilder.java
@@ -40,8 +40,8 @@
 import android.text.TextUtils;
 import android.text.TextUtils.TruncateAt;
 
+import com.android.contacts.common.CallUtil;
 import com.android.contacts.R;
-import com.android.contacts.util.Constants;
 
 /**
  * Constructs shortcut intents.
@@ -293,11 +293,11 @@
         Uri phoneUri;
         if (Intent.ACTION_CALL.equals(shortcutAction)) {
             // Make the URI a direct tel: URI so that it will always continue to work
-            phoneUri = Uri.fromParts(Constants.SCHEME_TEL, phoneNumber, null);
+            phoneUri = Uri.fromParts(CallUtil.SCHEME_TEL, phoneNumber, null);
             bitmap = generatePhoneNumberIcon(bitmap, phoneType, phoneLabel,
                     R.drawable.badge_action_call);
         } else {
-            phoneUri = Uri.fromParts(Constants.SCHEME_SMSTO, phoneNumber, null);
+            phoneUri = Uri.fromParts(CallUtil.SCHEME_SMSTO, phoneNumber, null);
             bitmap = generatePhoneNumberIcon(bitmap, phoneType, phoneLabel,
                     R.drawable.badge_action_sms);
         }
diff --git a/src/com/android/contacts/quickcontact/DataAction.java b/src/com/android/contacts/quickcontact/DataAction.java
index c10c338..02c792d 100644
--- a/src/com/android/contacts/quickcontact/DataAction.java
+++ b/src/com/android/contacts/quickcontact/DataAction.java
@@ -28,6 +28,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.contacts.common.CallUtil;
 import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
 import com.android.contacts.model.account.AccountType.EditType;
@@ -39,7 +40,6 @@
 import com.android.contacts.model.dataitem.SipAddressDataItem;
 import com.android.contacts.model.dataitem.StructuredPostalDataItem;
 import com.android.contacts.model.dataitem.WebsiteDataItem;
-import com.android.contacts.util.Constants;
 import com.android.contacts.util.PhoneCapabilityTester;
 import com.android.contacts.util.StructuredPostalUtils;
 
@@ -110,10 +110,10 @@
                 final String number = phone.getNumber();
                 if (!TextUtils.isEmpty(number)) {
 
-                    final Intent phoneIntent = hasPhone ? ContactsUtils.getCallIntent(number)
+                    final Intent phoneIntent = hasPhone ? CallUtil.getCallIntent(number)
                             : null;
                     final Intent smsIntent = hasSms ? new Intent(Intent.ACTION_SENDTO,
-                            Uri.fromParts(Constants.SCHEME_SMSTO, number, null)) : null;
+                            Uri.fromParts(CallUtil.SCHEME_SMSTO, number, null)) : null;
 
                     // Configure Icons and Intents. Notice actionIcon is already set to the phone
                     if (hasPhone && hasSms) {
@@ -133,8 +133,8 @@
                 final SipAddressDataItem sip = (SipAddressDataItem) item;
                 final String address = sip.getSipAddress();
                 if (!TextUtils.isEmpty(address)) {
-                    final Uri callUri = Uri.fromParts(Constants.SCHEME_SIP, address, null);
-                    mIntent = ContactsUtils.getCallIntent(callUri);
+                    final Uri callUri = Uri.fromParts(CallUtil.SCHEME_SIP, address, null);
+                    mIntent = CallUtil.getCallIntent(callUri);
                     // Note that this item will get a SIP-specific variant
                     // of the "call phone" icon, rather than the standard
                     // app icon for the Phone app (which we show for
@@ -147,7 +147,7 @@
             final EmailDataItem email = (EmailDataItem) item;
             final String address = email.getData();
             if (!TextUtils.isEmpty(address)) {
-                final Uri mailUri = Uri.fromParts(Constants.SCHEME_MAILTO, address, null);
+                final Uri mailUri = Uri.fromParts(CallUtil.SCHEME_MAILTO, address, null);
                 mIntent = new Intent(Intent.ACTION_SENDTO, mailUri);
             }
 
@@ -182,7 +182,7 @@
 
                 if (!TextUtils.isEmpty(host) && !TextUtils.isEmpty(data)) {
                     final String authority = host.toLowerCase();
-                    final Uri imUri = new Uri.Builder().scheme(Constants.SCHEME_IMTO).authority(
+                    final Uri imUri = new Uri.Builder().scheme(CallUtil.SCHEME_IMTO).authority(
                             authority).appendPath(data).build();
                     mIntent = new Intent(Intent.ACTION_SENDTO, imUri);
 
diff --git a/src/com/android/contacts/util/ClipboardUtils.java b/src/com/android/contacts/util/ClipboardUtils.java
deleted file mode 100644
index 1d0a3c1..0000000
--- a/src/com/android/contacts/util/ClipboardUtils.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2012 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.contacts.util;
-
-import android.content.ClipData;
-import android.content.ClipboardManager;
-import android.content.Context;
-import android.text.TextUtils;
-import android.widget.Toast;
-
-import com.android.contacts.R;
-
-public class ClipboardUtils {
-    private static final String TAG = "ClipboardUtils";
-
-    private ClipboardUtils() { }
-
-    /**
-     * Copy a text to clipboard.
-     *
-     * @param context Context
-     * @param label Label to show to the user describing this clip.
-     * @param text Text to copy.
-     * @param showToast If {@code true}, a toast is shown to the user.
-     */
-    public static void copyText(Context context, CharSequence label, CharSequence text,
-            boolean showToast) {
-        if (TextUtils.isEmpty(text)) return;
-
-        ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(
-                Context.CLIPBOARD_SERVICE);
-        ClipData clipData = ClipData.newPlainText(label == null ? "" : label, text);
-        clipboardManager.setPrimaryClip(clipData);
-
-        if (showToast) {
-            String toastText = context.getString(R.string.toast_text_copied);
-            Toast.makeText(context, toastText, Toast.LENGTH_SHORT).show();
-        }
-    }
-}
diff --git a/src/com/android/contacts/util/Constants.java b/src/com/android/contacts/util/Constants.java
index eb68f5a..17e9c0c 100644
--- a/src/com/android/contacts/util/Constants.java
+++ b/src/com/android/contacts/util/Constants.java
@@ -19,12 +19,6 @@
 public class Constants {
     public static final String MIME_TYPE_VIDEO_CHAT = "vnd.android.cursor.item/video-chat-address";
 
-    public static final String SCHEME_TEL = "tel";
-    public static final String SCHEME_SMSTO = "smsto";
-    public static final String SCHEME_MAILTO = "mailto";
-    public static final String SCHEME_IMTO = "imto";
-    public static final String SCHEME_SIP = "sip";
-
     /**
      * Log tag for performance measurement.
      * To enable: adb shell setprop log.tag.ContactsPerf VERBOSE
diff --git a/src/com/android/contacts/util/PhoneCapabilityTester.java b/src/com/android/contacts/util/PhoneCapabilityTester.java
index 421341c..13259f9 100644
--- a/src/com/android/contacts/util/PhoneCapabilityTester.java
+++ b/src/com/android/contacts/util/PhoneCapabilityTester.java
@@ -24,6 +24,7 @@
 import android.net.sip.SipManager;
 import android.telephony.TelephonyManager;
 
+import com.android.contacts.common.CallUtil;
 import com.android.contacts.R;
 
 import java.util.List;
@@ -78,7 +79,7 @@
     public static boolean isSmsIntentRegistered(Context context) {
         // Don't cache the result as the user might install third party apps to send SMS
         final Intent intent = new Intent(Intent.ACTION_SENDTO,
-                Uri.fromParts(Constants.SCHEME_SMSTO, "", null));
+                Uri.fromParts(CallUtil.SCHEME_SMSTO, "", null));
         return isIntentRegistered(context, intent);
     }