Merge change 24097 into eclair

* changes:
  Fix small bugs in VCardComposer.java.
diff --git a/core/java/android/pim/vcard/VCardComposer.java b/core/java/android/pim/vcard/VCardComposer.java
index 5a09c64f..6554827 100644
--- a/core/java/android/pim/vcard/VCardComposer.java
+++ b/core/java/android/pim/vcard/VCardComposer.java
@@ -103,7 +103,7 @@
         private OutputStream mOutputStream; // mWriter will close this.
         private Writer mWriter;
 
-        private boolean mFinishIsCalled = false;
+        private boolean mOnTerminateIsCalled = false;
 
         /**
          * Input stream will be closed on the detruction of this object.
@@ -152,6 +152,7 @@
         }
 
         public void onTerminate() {
+            mOnTerminateIsCalled = true;
             if (mWriter != null) {
                 try {
                     // Flush and sync the data so that a user is able to pull
@@ -177,7 +178,7 @@
 
         @Override
         public void finalize() {
-            if (!mFinishIsCalled) {
+            if (!mOnTerminateIsCalled) {
                 onTerminate();
             }
         }
@@ -604,11 +605,11 @@
 
                 // FN property
                 builder.append(VCARD_PROPERTY_FULL_NAME);
-                builder.append(VCARD_ATTR_SEPARATOR);
                 if (!VCardUtils.containsOnlyAscii(encodedFullname)) {
+                    builder.append(VCARD_ATTR_SEPARATOR);
                     builder.append(mVCardAttributeCharset);
-                    builder.append(VCARD_DATA_SEPARATOR);
                 }
+                builder.append(VCARD_DATA_SEPARATOR);
                 builder.append(encodedFullname);
                 builder.append(VCARD_COL_SEPARATOR);
             } else if (!TextUtils.isEmpty(displayName)) {
@@ -1242,6 +1243,9 @@
         case Email.TYPE_OTHER:
             builder.append(Constants.ATTR_TYPE_INTERNET);
             break;
+        case Email.TYPE_MOBILE:
+            builder.append(Constants.ATTR_TYPE_CELL);
+            break;
         default:
             Log.e(LOG_TAG, "Unknown Email type: " + type);
             builder.append(Constants.ATTR_TYPE_INTERNET);
diff --git a/core/java/android/pim/vcard/VCardParser_V30.java b/core/java/android/pim/vcard/VCardParser_V30.java
index 475be4e..384649a 100644
--- a/core/java/android/pim/vcard/VCardParser_V30.java
+++ b/core/java/android/pim/vcard/VCardParser_V30.java
@@ -47,6 +47,8 @@
 
     private String mPreviousLine;
     
+    private boolean mEmittedAgentWarning = false;
+    
     @Override
     protected String getVersion() {
         return Constants.VERSION_V30;
@@ -221,7 +223,7 @@
     }
 
     @Override
-    protected void handleAgent(String propertyValue) throws VCardException {
+    protected void handleAgent(String propertyValue) {
         // The way how vCard 3.0 supports "AGENT" is completely different from vCard 2.0.
         //
         // e.g.
@@ -238,7 +240,12 @@
         //  CID:JQPUBLIC.part3.960129T083020.xyzMail@host3.com
         //
         // This is not VCARD. Should we support this?
-        throw new VCardException("AGENT in vCard 3.0 is not supported yet.");
+        // throw new VCardException("AGENT in vCard 3.0 is not supported yet.");
+        if (!mEmittedAgentWarning) {
+            Log.w(LOG_TAG, "AGENT in vCard 3.0 is not supported yet. Ignore it");
+            mEmittedAgentWarning = true;
+        }
+        // Just ignore the line for now, since we cannot know how to handle it...
     }
     
     /**