| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/base/platform_mime_util.h" | 5 #include "net/base/platform_mime_util.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 @end | 29 @end |
| 30 #endif // !defined(OS_IOS) | 30 #endif // !defined(OS_IOS) |
| 31 | 31 |
| 32 namespace net { | 32 namespace net { |
| 33 | 33 |
| 34 bool PlatformMimeUtil::GetPlatformMimeTypeFromExtension( | 34 bool PlatformMimeUtil::GetPlatformMimeTypeFromExtension( |
| 35 const base::FilePath::StringType& ext, std::string* result) const { | 35 const base::FilePath::StringType& ext, std::string* result) const { |
| 36 std::string ext_nodot = ext; | 36 std::string ext_nodot = ext; |
| 37 if (ext_nodot.length() >= 1 && ext_nodot[0] == L'.') | 37 if (ext_nodot.length() >= 1 && ext_nodot[0] == L'.') |
| 38 ext_nodot.erase(ext_nodot.begin()); | 38 ext_nodot.erase(ext_nodot.begin()); |
| 39 base::mac::ScopedCFTypeRef<CFStringRef> ext_ref( | 39 base::ScopedCFTypeRef<CFStringRef> ext_ref( |
| 40 base::SysUTF8ToCFStringRef(ext_nodot)); | 40 base::SysUTF8ToCFStringRef(ext_nodot)); |
| 41 if (!ext_ref) | 41 if (!ext_ref) |
| 42 return false; | 42 return false; |
| 43 base::mac::ScopedCFTypeRef<CFStringRef> uti( | 43 base::ScopedCFTypeRef<CFStringRef> uti(UTTypeCreatePreferredIdentifierForTag( |
| 44 UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, | 44 kUTTagClassFilenameExtension, ext_ref, NULL)); |
| 45 ext_ref, | |
| 46 NULL)); | |
| 47 if (!uti) | 45 if (!uti) |
| 48 return false; | 46 return false; |
| 49 base::mac::ScopedCFTypeRef<CFStringRef> mime_ref( | 47 base::ScopedCFTypeRef<CFStringRef> mime_ref( |
| 50 UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)); | 48 UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)); |
| 51 if (!mime_ref) | 49 if (!mime_ref) |
| 52 return false; | 50 return false; |
| 53 | 51 |
| 54 *result = base::SysCFStringRefToUTF8(mime_ref); | 52 *result = base::SysCFStringRefToUTF8(mime_ref); |
| 55 return true; | 53 return true; |
| 56 } | 54 } |
| 57 | 55 |
| 58 bool PlatformMimeUtil::GetPreferredExtensionForMimeType( | 56 bool PlatformMimeUtil::GetPreferredExtensionForMimeType( |
| 59 const std::string& mime_type, base::FilePath::StringType* ext) const { | 57 const std::string& mime_type, base::FilePath::StringType* ext) const { |
| 60 base::mac::ScopedCFTypeRef<CFStringRef> mime_ref( | 58 base::ScopedCFTypeRef<CFStringRef> mime_ref( |
| 61 base::SysUTF8ToCFStringRef(mime_type)); | 59 base::SysUTF8ToCFStringRef(mime_type)); |
| 62 if (!mime_ref) | 60 if (!mime_ref) |
| 63 return false; | 61 return false; |
| 64 base::mac::ScopedCFTypeRef<CFStringRef> uti( | 62 base::ScopedCFTypeRef<CFStringRef> uti(UTTypeCreatePreferredIdentifierForTag( |
| 65 UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, | 63 kUTTagClassMIMEType, mime_ref, NULL)); |
| 66 mime_ref, | |
| 67 NULL)); | |
| 68 if (!uti) | 64 if (!uti) |
| 69 return false; | 65 return false; |
| 70 base::mac::ScopedCFTypeRef<CFStringRef> ext_ref( | 66 base::ScopedCFTypeRef<CFStringRef> ext_ref( |
| 71 UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension)); | 67 UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension)); |
| 72 if (!ext_ref) | 68 if (!ext_ref) |
| 73 return false; | 69 return false; |
| 74 | 70 |
| 75 *ext = base::SysCFStringRefToUTF8(ext_ref); | 71 *ext = base::SysCFStringRefToUTF8(ext_ref); |
| 76 return true; | 72 return true; |
| 77 } | 73 } |
| 78 | 74 |
| 79 void PlatformMimeUtil::GetPlatformExtensionsForMimeType( | 75 void PlatformMimeUtil::GetPlatformExtensionsForMimeType( |
| 80 const std::string& mime_type, | 76 const std::string& mime_type, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 101 extensions->insert(base::SysNSStringToUTF8(extension)); | 97 extensions->insert(base::SysNSStringToUTF8(extension)); |
| 102 } else { | 98 } else { |
| 103 // Huh? Give up. | 99 // Huh? Give up. |
| 104 base::FilePath::StringType ext; | 100 base::FilePath::StringType ext; |
| 105 if (GetPreferredExtensionForMimeType(mime_type, &ext)) | 101 if (GetPreferredExtensionForMimeType(mime_type, &ext)) |
| 106 extensions->insert(ext); | 102 extensions->insert(ext); |
| 107 } | 103 } |
| 108 } | 104 } |
| 109 | 105 |
| 110 } // namespace net | 106 } // namespace net |
| OLD | NEW |