Changeset 110361 in webkit
- Timestamp:
- Mar 9, 2012 6:55:55 PM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r110360 r110361 1 2012-03-09 Tyler Abbott <tabbott@rim.com> 2 3 BlackBerry PlayBook doesn't sniff mime types 4 https://bugs.webkit.org/show_bug.cgi?id=73869 5 6 Reviewed by Rob Buis. 7 8 Hook up MIMESniffing for BlackBerry. Override Content-Types will 9 not be overriden. File extensions will be trusted when content 10 is loaded from disk. 11 12 No tests, BlackBerry tests are not yet present in webkit.org codebase. 13 14 * PlatformBlackBerry.cmake: 15 * platform/network/blackberry/NetworkJob.cpp: 16 (WebCore::NetworkJob::NetworkJob): 17 (WebCore::NetworkJob::initialize): 18 (WebCore::NetworkJob::handleNotifyDataReceived): 19 (WebCore::NetworkJob::sendResponseIfNeeded): 20 * platform/network/blackberry/NetworkJob.h: 21 (NetworkJob): 22 1 23 2012-03-09 Enrica Casucci <enrica@apple.com> 2 24 -
trunk/Source/WebCore/PlatformBlackBerry.cmake
r110334 r110361 88 88 # Networking sources 89 89 LIST(APPEND WebCore_SOURCES 90 platform/network/MIMESniffing.cpp 90 91 platform/network/ProxyServer.cpp 91 92 platform/network/blackberry/DeferredData.cpp -
trunk/Source/WebCore/platform/network/blackberry/NetworkJob.cpp
r110176 r110361 28 28 #include "HTTPParsers.h" 29 29 #include "KURL.h" 30 #include "MIMESniffing.h" 30 31 #include "MIMETypeRegistry.h" 31 32 #include "NetworkManager.h" … … 108 109 , m_isXHR(false) 109 110 , m_needsRetryAsFTPDirectory(false) 111 , m_isOverrideContentType(false) 110 112 , m_extendedStatusCode(0) 111 113 , m_redirectCount(0) … … 152 154 // We don't need to explicitly call notifyHeaderReceived, as the Content-Type 153 155 // will ultimately get parsed when sendResponseIfNeeded gets called. 154 if (!request.getOverrideContentType().empty()) 156 if (!request.getOverrideContentType().empty()) { 155 157 m_contentType = String(request.getOverrideContentType().c_str()); 158 m_isOverrideContentType = true; 159 } 156 160 157 161 // No need to create the streams for data and about. … … 383 387 return; 384 388 389 // The loadFile API sets the override content type, 390 // this will always be used as the content type and should not be overridden. 391 if (!m_dataReceived && !m_isOverrideContentType) { 392 bool shouldSniff = true; 393 394 // Don't bother sniffing the content type of a file that 395 // is on a file system if it has a MIME mappable file extension. 396 // The file extension is likely to be correct. 397 if (m_isFile) { 398 String urlFilename = m_response.url().lastPathComponent(); 399 size_t pos = urlFilename.reverseFind('.'); 400 if (pos != WTF::notFound) { 401 String extension = urlFilename.substring(pos + 1); 402 String mimeType = MIMETypeRegistry::getMIMETypeForExtension(extension); 403 if (!mimeType.isEmpty()) 404 shouldSniff = false; 405 } 406 } 407 408 if (shouldSniff) { 409 MIMESniffer sniffer = MIMESniffer(m_contentType.latin1().data(), MIMETypeRegistry::isSupportedImageResourceMIMEType(m_contentType)); 410 if (const char* type = sniffer.sniff(buf, std::min(len, sniffer.dataSize()))) 411 m_sniffedMimeType = String(type); 412 } 413 } 414 385 415 m_dataReceived = true; 386 416 … … 584 614 // if there's no custom sniffer header, try to set it from the Content-Type header 585 615 // if this fails, guess it from extension. 586 String mimeType ;616 String mimeType = m_sniffedMimeType; 587 617 if (m_isFTP && m_isFTPDir) 588 618 mimeType = "application/x-ftp-directory"; 589 else590 mimeType = m_response.httpHeaderField(BlackBerry::Platform::NetworkRequest::HEADER_RIM_SNIFFED_MIME_TYPE);591 619 if (mimeType.isNull()) 592 620 mimeType = extractMIMETypeFromMediaType(m_contentType); -
trunk/Source/WebCore/platform/network/blackberry/NetworkJob.h
r106931 r110361 159 159 Timer<NetworkJob> m_deleteJobTimer; 160 160 String m_contentType; 161 String m_sniffedMimeType; 161 162 String m_contentDisposition; 162 163 BlackBerry::Platform::NetworkStreamFactory* m_streamFactory; … … 176 177 bool m_isXHR; // FIXME - After 7.0, remove this. Only the Qt port reports HTTP error statuses as didFails, so we probably shouldn't. 177 178 bool m_needsRetryAsFTPDirectory; 179 bool m_isOverrideContentType; 178 180 179 181 // If an HTTP status code is received, m_extendedStatusCode and m_response.httpStatusCode will both be set to it.
Note: See TracChangeset
for help on using the changeset viewer.