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 // Detecting mime types is a tricky business because we need to balance | 5 // Detecting mime types is a tricky business because we need to balance |
6 // compatibility concerns with security issues. Here is a survey of how other | 6 // compatibility concerns with security issues. Here is a survey of how other |
7 // browsers behave and then a description of how we intend to behave. | 7 // browsers behave and then a description of how we intend to behave. |
8 // | 8 // |
9 // HTML payload, no Content-Type header: | 9 // HTML payload, no Content-Type header: |
10 // * IE 7: Render as HTML | 10 // * IE 7: Render as HTML |
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
797 return true; | 797 return true; |
798 } | 798 } |
799 | 799 |
800 bool ShouldSniffMimeType(const GURL& url, const std::string& mime_type) { | 800 bool ShouldSniffMimeType(const GURL& url, const std::string& mime_type) { |
801 static base::HistogramBase* should_sniff_counter(NULL); | 801 static base::HistogramBase* should_sniff_counter(NULL); |
802 if (!should_sniff_counter) { | 802 if (!should_sniff_counter) { |
803 should_sniff_counter = | 803 should_sniff_counter = |
804 UMASnifferHistogramGet("mime_sniffer.ShouldSniffMimeType2", 3); | 804 UMASnifferHistogramGet("mime_sniffer.ShouldSniffMimeType2", 3); |
805 } | 805 } |
806 bool sniffable_scheme = url.is_empty() || | 806 bool sniffable_scheme = url.is_empty() || |
807 url.SchemeIs("http") || | 807 url.SchemeIsHTTPOrHTTPS() || |
808 url.SchemeIs("https") || | |
809 url.SchemeIs("ftp") || | 808 url.SchemeIs("ftp") || |
810 #if defined(OS_ANDROID) | 809 #if defined(OS_ANDROID) |
811 url.SchemeIs("content") || | 810 url.SchemeIs("content") || |
812 #endif | 811 #endif |
813 url.SchemeIsFile() || | 812 url.SchemeIsFile() || |
814 url.SchemeIsFileSystem(); | 813 url.SchemeIsFileSystem(); |
815 if (!sniffable_scheme) { | 814 if (!sniffable_scheme) { |
816 should_sniff_counter->Add(1); | 815 should_sniff_counter->Add(1); |
817 return false; | 816 return false; |
818 } | 817 } |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
962 // First check the extra table. | 961 // First check the extra table. |
963 if (CheckForMagicNumbers(content, size, kExtraMagicNumbers, | 962 if (CheckForMagicNumbers(content, size, kExtraMagicNumbers, |
964 arraysize(kExtraMagicNumbers), NULL, result)) | 963 arraysize(kExtraMagicNumbers), NULL, result)) |
965 return true; | 964 return true; |
966 // Finally check the original table. | 965 // Finally check the original table. |
967 return CheckForMagicNumbers(content, size, kMagicNumbers, | 966 return CheckForMagicNumbers(content, size, kMagicNumbers, |
968 arraysize(kMagicNumbers), NULL, result); | 967 arraysize(kMagicNumbers), NULL, result); |
969 } | 968 } |
970 | 969 |
971 } // namespace net | 970 } // namespace net |
OLD | NEW |