Chromium Code Reviews| Index: third_party/WebKit/Source/core/html/HTMLEmbedElement.cpp |
| diff --git a/third_party/WebKit/Source/core/html/HTMLEmbedElement.cpp b/third_party/WebKit/Source/core/html/HTMLEmbedElement.cpp |
| index dfb698dacd38e11963dcac100fb43ce12cac9db6..12d91dcc6a717023d50f215b73301eb4ef0b4881 100644 |
| --- a/third_party/WebKit/Source/core/html/HTMLEmbedElement.cpp |
| +++ b/third_party/WebKit/Source/core/html/HTMLEmbedElement.cpp |
| @@ -146,9 +146,48 @@ void HTMLEmbedElement::updateWidgetInternal() |
| if (!layoutObject()) |
| return; |
| + // If necessary (and possible), we will rewrite a YouTube Flash embed |
| + // to use HTML5 instead. |
| + KURL url = KURL(ParsedURLStringTag(), m_url); |
|
Mike West
2016/07/12 13:56:08
Nit: `s/ParsedURLStringTag()/ParsedURLString/`.
N
|
| + String base = SecurityOrigin::create(url)->domain(); |
| + |
| + // If the site is going to be accessing the YouTube Flash player using the |
| + // JS APIs, we don't want to modify the player. |
| + if (m_url.find("enablejsapi=1") == (size_t) -1 |
| + && rewriteYouTubeFlashEmbeds(base) && url.path().startsWith("/v/")) { |
| + |
| + // If the website is using an invalid YouTube URL, we'll try and |
| + // fix the url by ensuring that IF there are multiple parameters, |
| + // the parameter string begins with a "?" and then follows with "&" |
| + // for each subsequent parameter. |
| + size_t indexAmp = m_url.find("&"); |
| + bool invalidUrl = false; |
| + size_t indexQm = m_url.find("?"); |
| + |
| + if (indexQm == (size_t) -1 || indexQm > indexAmp) { |
| + invalidUrl = true; |
| + } |
| + |
| + if (invalidUrl) { |
| + m_url.replace("?", "&"); |
| + m_url.replace(indexAmp, 1, "?"); |
| + } |
| + |
| + m_url.replace("/v/", "/embed/"); |
| + m_serviceType = "text/html"; |
| + } |
| + |
| requestObject(m_url, m_serviceType, paramNames, paramValues); |
| } |
| +bool HTMLEmbedElement::rewriteYouTubeFlashEmbeds(String const & baseUrl) |
| +{ |
| + if (baseUrl == String("www.youtube.com")) { |
| + return true; |
| + } |
| + return false; |
| +} |
| + |
| bool HTMLEmbedElement::layoutObjectIsNeeded(const ComputedStyle& style) |
| { |
| if (isImageType()) |