diff --git a/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp b/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp index 10ccca21fb33..765b7b493064 100644 --- a/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp +++ b/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp @@ -323,11 +323,18 @@ mozJSSubScriptLoader::LoadSubScript (const PRUnichar * aURL tmp.Append(uriStr); uriStr = tmp; - } - - rv = NS_OpenURI(getter_AddRefs(instream), uri, serv, - nsnull, nsnull, nsIRequest::LOAD_NORMAL, - getter_AddRefs(chan)); + } + + // Instead of calling NS_OpenURI, we create the channel ourselves and call + // SetContentType, to avoid expensive MIME type lookups (bug 632490). + rv = NS_NewChannel(getter_AddRefs(chan), uri, serv, + nsnull, nsnull, nsIRequest::LOAD_NORMAL); + if (NS_SUCCEEDED(rv)) + { + chan->SetContentType(NS_LITERAL_CSTRING("application/javascript")); + rv = chan->Open(getter_AddRefs(instream)); + } + if (NS_FAILED(rv)) { errmsg = JS_NewStringCopyZ (cx, LOAD_ERROR_NOSTREAM);