Set default mimeType for BufferJob
authorCheng Zhao <zcbenz@gmail.com>
Sat, 28 May 2016 13:36:22 +0000 (22:36 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Sat, 28 May 2016 13:36:22 +0000 (22:36 +0900)
atom/browser/net/url_request_buffer_job.cc
lib/browser/chrome-extension.js

index c0c8e15..c713099 100644 (file)
@@ -8,10 +8,24 @@
 
 #include "atom/common/atom_constants.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/utf_string_conversions.h"
+#include "net/base/mime_util.h"
 #include "net/base/net_errors.h"
 
 namespace atom {
 
+namespace {
+
+std::string GetExtFromURL(const GURL& url) {
+  std::string spec = url.spec();
+  size_t index = spec.find_last_of('.');
+  if (index == std::string::npos || index == spec.size())
+    return std::string();
+  return spec.substr(index + 1, spec.size() - index - 1);
+}
+
+}  // namespace
+
 URLRequestBufferJob::URLRequestBufferJob(
     net::URLRequest* request, net::NetworkDelegate* network_delegate)
     : JsAsker<net::URLRequestSimpleJob>(request, network_delegate),
@@ -30,6 +44,15 @@ void URLRequestBufferJob::StartAsync(std::unique_ptr<base::Value> options) {
     options->GetAsBinary(&binary);
   }
 
+  if (mime_type_.empty()) {
+    std::string ext = GetExtFromURL(request()->url());
+#if defined(OS_WIN)
+    net::GetWellKnownMimeTypeFromExtension(base::UTF8ToUTF16(ext), &mime_type_);
+#else
+    net::GetWellKnownMimeTypeFromExtension(ext, &mime_type_);
+#endif
+  }
+
   if (!binary) {
     NotifyStartError(net::URLRequestStatus(
           net::URLRequestStatus::FAILED, net::ERR_NOT_IMPLEMENTED));
index 9cdebdb..609fdd6 100644 (file)
@@ -227,7 +227,7 @@ app.once('ready', function () {
       if (err) {
         return callback(-6)  // FILE_NOT_FOUND
       } else {
-        return callback({mimeType: 'text/html', data: content})
+        return callback(content)
       }
     })
   }