Provide authorization value to the download manager

- Provides the authorization code to the download manager
  while downloading a file.

CR-Fixed: SWE-6011

Change-Id: Id99349169c138d714b26340b3baa6c9b664ea33c

Conflicts:
	src/com/android/browser/DownloadHandler.java
diff --git a/src/com/android/browser/DownloadHandler.java b/src/com/android/browser/DownloadHandler.java
index 0148fda..3562f80 100644
--- a/src/com/android/browser/DownloadHandler.java
+++ b/src/com/android/browser/DownloadHandler.java
@@ -32,8 +32,11 @@
 import android.os.Environment;
 import android.os.StatFs;
 import android.os.storage.StorageManager;
+import android.text.TextUtils;
 import android.util.Log;
 import org.codeaurora.swe.CookieManager;
+import org.w3c.dom.Text;
+
 import android.webkit.URLUtil;
 import android.widget.Toast;
 
@@ -61,7 +64,8 @@
 
     public static void startingDownload(Activity activity,
             String url, String userAgent, String contentDisposition,
-            String mimetype, String referer, boolean privateBrowsing, long contentLength,
+            String mimetype, String referer, String auth,
+            boolean privateBrowsing, long contentLength,
             String filename, String downloadPath) {
         // java.net.URI is a lot stricter than KURL so we have to encode some
         // extra characters. Fix for b 2538060 and b 1634719
@@ -107,6 +111,9 @@
         request.addRequestHeader("User-Agent", userAgent);
         request.addRequestHeader("Referer", referer);
         request.setVisibleInDownloadsUi(!privateBrowsing);
+        if (!TextUtils.isEmpty(auth)) {
+            request.addRequestHeader("Authorization", auth);
+        }
         request.setNotificationVisibility(
                 DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
         final DownloadManager manager = (DownloadManager) activity
@@ -152,7 +159,8 @@
      */
     public static boolean onDownloadStart(final Activity activity, final String url,
             final String userAgent, final String contentDisposition, final String mimetype,
-            final String referer, final boolean privateBrowsing, final long contentLength) {
+            final String referer, final String auth, final boolean privateBrowsing,
+            final long contentLength) {
         // if we're dealing wih A/V content that's not explicitly marked
         //     for download, check if it's streamable.
         if (contentDisposition == null
@@ -184,7 +192,7 @@
                 .setPositiveButton(R.string.video_save, new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int which) {
                         onDownloadStartNoStream(activity, url, userAgent, contentDisposition,
-                                mimetype, referer, privateBrowsing, contentLength);
+                                mimetype, referer, auth, privateBrowsing, contentLength);
                     }
                  })
                 .setNegativeButton(R.string.video_play, new DialogInterface.OnClickListener() {
@@ -237,7 +245,7 @@
             }
         }
         onDownloadStartNoStream(activity, url, userAgent, contentDisposition,
-                mimetype, referer, privateBrowsing, contentLength);
+                mimetype, referer, auth, privateBrowsing, contentLength);
         return false;
     }
 
@@ -284,7 +292,8 @@
      */
     /* package */static void onDownloadStartNoStream(Activity activity,
             String url, String userAgent, String contentDisposition,
-            String mimetype, String referer, boolean privateBrowsing, long contentLength) {
+            String mimetype, String referer, String auth,
+            boolean privateBrowsing, long contentLength) {
 
         contentDisposition = trimContentDisposition(contentDisposition);
 
@@ -318,12 +327,12 @@
         if (mimetype == null) {
             // We must have long pressed on a link or image to download it. We
             // are not sure of the mimetype in this case, so do a head request
-            new FetchUrlMimeType(activity, url, userAgent, referer,
+            new FetchUrlMimeType(activity, url, userAgent, referer, auth,
                     privateBrowsing, filename).start();
         } else {
             if (DownloadDirRestriction.getInstance().downloadsAllowed()) {
                 startDownloadSettings(activity, url, userAgent, contentDisposition, mimetype, referer,
-                        privateBrowsing, contentLength, filename);
+                        auth, privateBrowsing, contentLength, filename);
             }
             else {
                 Toast.makeText(activity, R.string.managed_by_your_administrator, Toast.LENGTH_SHORT)
@@ -365,7 +374,8 @@
 
     public static void startDownloadSettings(Activity activity,
             String url, String userAgent, String contentDisposition,
-            String mimetype, String referer, boolean privateBrowsing, long contentLength,
+            String mimetype, String referer, String auth,
+            boolean privateBrowsing, long contentLength,
             String filename) {
         Bundle fileInfo = new Bundle();
         fileInfo.putString("url", url);
@@ -373,6 +383,7 @@
         fileInfo.putString("contentDisposition", contentDisposition);
         fileInfo.putString("mimetype", mimetype);
         fileInfo.putString("referer", referer);
+        fileInfo.putString("authorization", auth);
         fileInfo.putLong("contentLength", contentLength);
         fileInfo.putBoolean("privateBrowsing", privateBrowsing);
         fileInfo.putString("filename", filename);