diff --git a/src/com/android/contacts/ImportVCardActivity.java b/src/com/android/contacts/ImportVCardActivity.java
index 164f539..09c4980 100644
--- a/src/com/android/contacts/ImportVCardActivity.java
+++ b/src/com/android/contacts/ImportVCardActivity.java
@@ -288,7 +288,7 @@
                     ImportVCardActivity.this.getContentResolver();
             final int length = mDestUriStrings.length;
             try {
-                for (int i = 0; i < length; i++) {                     
+                for (int i = 0; i < length; i++) {
                     if (mCanceled) {
                         return false;
                     }
@@ -368,7 +368,7 @@
                     }
                     // XXX: better way to copy stream?
                     inputChannel = Channels.newChannel(resolver.openInputStream(mSourceUris[i]));
-                    final String filename = CACHE_FILE_PREFIX + i + ".vcf"; 
+                    final String filename = CACHE_FILE_PREFIX + i + ".vcf";
                     mDestUriStrings[i] =
                             context.getFileStreamPath(filename).toURI().toString();
                     Log.d("@@@", "temporary file: " + filename + ", dest: " + mDestUriStrings[i]);
@@ -391,7 +391,7 @@
                         }
                     }
 
-                    // Avoid double close() in the "finally" block bellow. 
+                    // Avoid double close() in the "finally" block bellow.
                     Channel tmp = inputChannel;
                     inputChannel = null;
                     tmp.close();
@@ -432,7 +432,7 @@
                 }
             }
         }
-        
+
         public void cancel() {
             mCanceled = true;
             if (mVCardParser != null) {
@@ -444,7 +444,7 @@
             cancel();
         }
     }
-    
+
     private class ImportTypeSelectedListener implements
             DialogInterface.OnClickListener {
         public static final int IMPORT_ONE = 0;
diff --git a/src/com/android/contacts/ImportVCardService.java b/src/com/android/contacts/ImportVCardService.java
index 2be6468..293255d 100644
--- a/src/com/android/contacts/ImportVCardService.java
+++ b/src/com/android/contacts/ImportVCardService.java
@@ -338,7 +338,7 @@
 
         public PendingInput(Account account,
                 Uri uri, int estimatedType, String estimatedCharset,
-                boolean useV30, int entryCount,   
+                boolean useV30, int entryCount,
                 int id) {
             this.account = account;
             this.uri = uri;
@@ -409,7 +409,7 @@
             intent.getBooleanArrayExtra(ImportVCardActivity.USE_V30_ARRAY);
         final int[] entryCountArray =
             intent.getIntArrayExtra(ImportVCardActivity.ENTRY_COUNT_ARRAY);
-        
+
         final Account account = tryGetAccount(intent);
         final Uri[] uris = tryGetUris(intent);
         if (uris == null) {
