diff --git a/src/com/android/browser/DownloadHandler.java b/src/com/android/browser/DownloadHandler.java
index 15167a0..1ce33da 100644
--- a/src/com/android/browser/DownloadHandler.java
+++ b/src/com/android/browser/DownloadHandler.java
@@ -566,7 +566,7 @@
             downloadPath = downloadPath.replace(sdCardDir, sdCardLabel);
         } else if ((phoneStorageDir != null) && downloadPath.startsWith(phoneStorageDir)) {
             String phoneStorageLabel = activity.getResources().getString(
-                    R.string.download_path_phone_stroage_label);
+                    R.string.download_path_phone_storage_label);
             downloadPath = downloadPath.replace(phoneStorageDir, phoneStorageLabel);
         }
         return downloadPath;
diff --git a/src/com/android/browser/DownloadSettings.java b/src/com/android/browser/DownloadSettings.java
index aecb543..698fa88 100644
--- a/src/com/android/browser/DownloadSettings.java
+++ b/src/com/android/browser/DownloadSettings.java
@@ -36,6 +36,7 @@
 import java.lang.Thread;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Environment;
 import android.text.format.*;
 import android.util.Log;
 import android.view.View;
@@ -115,7 +116,8 @@
                 BrowserUtils.FILENAME_MAX_LENGTH);
 
         downloadFilenameET.setText(filenameBase);
-        downloadPath = BrowserSettings.getInstance().getDownloadPath();
+        downloadPath = chooseFolderFromMimeType(BrowserSettings.getInstance().getDownloadPath(),
+                mimetype);
         downloadPathForUser = DownloadHandler.getDownloadPathForUser(DownloadSettings.this,
                 downloadPath);
         setDownloadPathForUserText(downloadPathForUser);
@@ -238,6 +240,22 @@
         }
     }
 
+    // Add for carrier feature - download to related folders by mimetype.
+    private static String chooseFolderFromMimeType(String path, String mimeType) {
+        String destinationFolder = null;
+        if (!path.contains(Environment.DIRECTORY_DOWNLOADS) || null == mimeType)
+            return path;
+        if (mimeType.startsWith("audio"))
+            destinationFolder = Environment.DIRECTORY_MUSIC;
+        else if (mimeType.startsWith("video"))
+            destinationFolder = Environment.DIRECTORY_MOVIES;
+        else if (mimeType.startsWith("image"))
+            destinationFolder = Environment.DIRECTORY_PICTURES;
+        if (null != destinationFolder)
+            path = path.replace(Environment.DIRECTORY_DOWNLOADS, destinationFolder);
+        return path;
+    }
+
     /**
      * show download path for user
      *
