void MediaPlayer::load(const String& url, const ContentType& contentType) { String type = contentType.type().lower(); String typeCodecs = contentType.parameter(codecs()); // If the MIME type is missing or is not meaningful, try to figure it out from the URL. if (type.isEmpty() || type == applicationOctetStream() || type == textPlain()) { if (protocolIs(url, "data")) type = mimeTypeFromDataURL(url); else { size_t pos = url.reverseFind('.'); if (pos != notFound) { String extension = url.substring(pos + 1); String mediaType = MIMETypeRegistry::getMediaMIMETypeForExtension(extension); if (!mediaType.isEmpty()) type = mediaType; } } } m_url = url; m_contentMIMEType = type; m_contentTypeCodecs = typeCodecs; loadWithNextMediaEngine(0); }
bool MediaPlayer::load(const URL& url, const ContentType& contentType, const String& keySystem) { ASSERT(!m_reloadTimer.isActive()); m_contentMIMEType = contentType.type().lower(); m_contentTypeCodecs = contentType.parameter(codecs()); m_url = url; m_keySystem = keySystem.lower(); m_contentMIMETypeWasInferredFromExtension = false; #if ENABLE(MEDIA_SOURCE) m_mediaSource = nullptr; #endif #if ENABLE(MEDIA_STREAM) m_mediaStream = nullptr; #endif // If the MIME type is missing or is not meaningful, try to figure it out from the URL. if (m_contentMIMEType.isEmpty() || m_contentMIMEType == applicationOctetStream() || m_contentMIMEType == textPlain()) { if (m_url.protocolIsData()) m_contentMIMEType = mimeTypeFromDataURL(m_url.string()); else { String lastPathComponent = url.lastPathComponent(); size_t pos = lastPathComponent.reverseFind('.'); if (pos != notFound) { String extension = lastPathComponent.substring(pos + 1); String mediaType = MIMETypeRegistry::getMediaMIMETypeForExtension(extension); if (!mediaType.isEmpty()) { m_contentMIMEType = mediaType; m_contentMIMETypeWasInferredFromExtension = true; } } } } loadWithNextMediaEngine(0); return m_currentMediaEngine; }