Chromium Code Reviews| Index: apps/launcher.cc |
| diff --git a/apps/launcher.cc b/apps/launcher.cc |
| index ba7c829b07d81746846a13804659d220ed369acc..37f92cfdddce68f1ae924ba75165543940af6323 100644 |
| --- a/apps/launcher.cc |
| +++ b/apps/launcher.cc |
| @@ -29,6 +29,8 @@ |
| #include "extensions/common/extension.h" |
| #include "extensions/common/extension_messages.h" |
| #include "extensions/common/manifest_handlers/kiosk_mode_info.h" |
| +#include "net/base/filename_util.h" |
| +#include "net/base/mime_sniffer.h" |
| #include "net/base/mime_util.h" |
| #include "net/base/net_util.h" |
| #include "url/gurl.h" |
| @@ -181,8 +183,21 @@ class PlatformAppPathLauncher |
| } |
| std::string mime_type; |
| - if (!net::GetMimeTypeFromFile(file_path_, &mime_type)) |
| - mime_type = kFallbackMimeType; |
| + if (!net::GetMimeTypeFromFile(file_path_, &mime_type)) { |
| + // If MIME type can't be determined by the file path, |
| + // Try to sniff by its content. |
| + std::vector<char> content(net::kMaxBytesToSniff); |
| + int bytes_read = base::ReadFile(file_path_, &content[0], content.size()); |
| + if (bytes_read >= 0) { |
| + net::SniffMimeType(&content[0], |
| + bytes_read, |
| + net::FilePathToFileURL(file_path_), |
| + std::string(), |
|
hashimoto
2014/04/10 09:29:12
nit: How about adding a comment like "// type_hit"
fukino
2014/04/10 11:12:06
Done.
|
| + &mime_type); |
| + } |
| + if (mime_type.empty()) |
| + mime_type = kFallbackMimeType; |
| + } |
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, base::Bind( |
| &PlatformAppPathLauncher::LaunchWithMimeType, this, mime_type)); |