Merge change I98276091 into eclair-mr2

* changes:
  Change to a int64_t usecs representation for timestamps and duration throughout stagefright.
diff --git a/core/java/android/pim/vcard/VCardComposer.java b/core/java/android/pim/vcard/VCardComposer.java
index b23fc3d..9cb9c90 100644
--- a/core/java/android/pim/vcard/VCardComposer.java
+++ b/core/java/android/pim/vcard/VCardComposer.java
@@ -288,6 +288,7 @@
     private final boolean mUsesUtf8;
     private final boolean mUsesShiftJis;
     private final boolean mUsesQPToPrimaryProperties;
+    private final boolean mAppendTypeParamName;
 
     private Cursor mCursor;
     private int mIdColumn;
@@ -353,6 +354,7 @@
         mUsesUtf8 = VCardConfig.usesUtf8(vcardType);
         mUsesShiftJis = VCardConfig.usesShiftJis(vcardType);
         mUsesQPToPrimaryProperties = VCardConfig.usesQPToPrimaryProperties(vcardType);
+        mAppendTypeParamName = VCardConfig.appendTypeParamName(vcardType);
         mHandlerList = new ArrayList<OneEntryHandler>();
 
         if (mIsDoCoMo) {
@@ -1756,7 +1758,7 @@
 
     private void appendTypeAttribute(final StringBuilder builder, final String type) {
         // Note: In vCard 3.0, Type strings also can be like this: "TYPE=HOME,PREF"
-        if (mIsV30) {
+        if (mIsV30 || mAppendTypeParamName) {
             builder.append(Constants.ATTR_TYPE).append(VCARD_ATTR_EQUAL);
         }
         builder.append(type);
diff --git a/core/java/android/pim/vcard/VCardConfig.java b/core/java/android/pim/vcard/VCardConfig.java
index 665fd4b..03ed329 100644
--- a/core/java/android/pim/vcard/VCardConfig.java
+++ b/core/java/android/pim/vcard/VCardConfig.java
@@ -106,6 +106,21 @@
      */
     public static final int FLAG_USE_QP_TO_PRIMARY_PROPERTIES = 0x10000000;
 
+    /**
+     * The flag indicating the vCard composer "for 2.1" emits "TYPE=" string every time
+     * possible. The default behavior does not emit it and is valid, while adding "TYPE="
+     * is also valid. In vCrad 3.0, this flag is unnecessary, since "TYPE=" is MUST in
+     * vCard 3.0 specification.
+     *
+     * If you are targeting to some importer which cannot accept type attributes (params)
+     * without "TYPE=" string (which should be rare though), please use this flag.
+     *
+     * XXX: Really rare?
+     *
+     * e.g. int vcardType = (VCARD_TYPE_V21_GENERIC | FLAG_APPEND_TYPE_PARAM);
+     */
+    public static final int FLAG_APPEND_TYPE_PARAM = 0x08000000;
+
     //// The followings are VCard types available from importer/exporter. ////
 
     /**
@@ -300,6 +315,10 @@
                ((vcardType & FLAG_USE_QP_TO_PRIMARY_PROPERTIES) != 0));
     }
 
+    public static boolean appendTypeParamName(int vcardType) {
+        return (vcardType & FLAG_APPEND_TYPE_PARAM) != 0;
+    }
+
     private VCardConfig() {
     }
 }
\ No newline at end of file
diff --git a/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardTests.java b/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardTests.java
new file mode 100644
index 0000000..b4bb14b
--- /dev/null
+++ b/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardTests.java
@@ -0,0 +1,15 @@
+package com.android.unit_tests.vcard;
+
+import com.android.unit_tests.AndroidTests;
+
+import android.test.suitebuilder.TestSuiteBuilder;
+
+import junit.framework.TestSuite;
+
+public class VCardTests extends TestSuite {
+    public static TestSuite suite() {
+        TestSuiteBuilder suiteBuilder = new TestSuiteBuilder(AndroidTests.class);
+        suiteBuilder.includeAllPackagesUnderHere();
+        return suiteBuilder.build();
+    }
+}
\ No newline at end of file