mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-30 11:18:39 +09:00
[DOM] Update YouTube embed rewrites.
Youtube's usage patterns have changed regarding video embeds, so we can remove special handling for the enablejsapi flag. Applies YouTube embed URL replacement to the path component only.
This commit is contained in:
parent
1c8e994b65
commit
0c2770ff7b
2 changed files with 15 additions and 17 deletions
|
|
@ -1546,26 +1546,22 @@ nsObjectLoadingContent::MaybeRewriteYoutubeEmbed(nsIURI* aURI, nsIURI* aBaseURI,
|
|||
}
|
||||
|
||||
// See if requester is planning on using the JS API.
|
||||
nsAutoCString uri;
|
||||
nsresult rv = aURI->GetSpec(uri);
|
||||
nsAutoCString prePath;
|
||||
nsresult rv = aURI->GetPrePath(prePath);
|
||||
if (NS_FAILED(rv)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (uri.Find("enablejsapi=1", true, 0, -1) != kNotFound) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Some YouTube urls have parameters in path components, e.g.
|
||||
// http://youtube.com/embed/7LcUOEP7Brc&start=35. These URLs work with flash,
|
||||
// but break iframe/object embedding. If this situation occurs with rewritten
|
||||
// URLs, convert the parameters to query in order to make the video load
|
||||
// correctly as an iframe. In either case, warn about it in the
|
||||
// developer console.
|
||||
int32_t ampIndex = uri.FindChar('&', 0);
|
||||
int32_t ampIndex = path.FindChar('&', 0);
|
||||
bool replaceQuery = false;
|
||||
if (ampIndex != -1) {
|
||||
int32_t qmIndex = uri.FindChar('?', 0);
|
||||
int32_t qmIndex = path.FindChar('?', 0);
|
||||
if (qmIndex == -1 ||
|
||||
qmIndex > ampIndex) {
|
||||
replaceQuery = true;
|
||||
|
|
@ -1576,20 +1572,22 @@ nsObjectLoadingContent::MaybeRewriteYoutubeEmbed(nsIURI* aURI, nsIURI* aBaseURI,
|
|||
return;
|
||||
}
|
||||
|
||||
nsAutoString utf16OldURI = NS_ConvertUTF8toUTF16(uri);
|
||||
NS_ConvertUTF8toUTF16 utf16OldURI(prePath);
|
||||
AppendUTF8toUTF16(path, utf16OldURI);
|
||||
// If we need to convert the URL, it means an ampersand comes first.
|
||||
// Use the index we found earlier.
|
||||
if (replaceQuery) {
|
||||
// Replace question marks with ampersands.
|
||||
uri.ReplaceChar('?', '&');
|
||||
path.ReplaceChar('?', '&');
|
||||
// Replace the first ampersand with a question mark.
|
||||
uri.SetCharAt('?', ampIndex);
|
||||
path.SetCharAt('?', ampIndex);
|
||||
}
|
||||
// Switch out video access url formats, which should possibly allow HTML5
|
||||
// video loading.
|
||||
uri.ReplaceSubstring(NS_LITERAL_CSTRING("/v/"),
|
||||
NS_LITERAL_CSTRING("/embed/"));
|
||||
nsAutoString utf16URI = NS_ConvertUTF8toUTF16(uri);
|
||||
path.ReplaceSubstring(NS_LITERAL_CSTRING("/v/"),
|
||||
NS_LITERAL_CSTRING("/embed/"));
|
||||
NS_ConvertUTF8toUTF16 utf16URI(prePath);
|
||||
AppendUTF8toUTF16(path, utf16URI);
|
||||
rv = nsContentUtils::NewURIWithDocumentCharset(aOutURI,
|
||||
utf16URI,
|
||||
thisContent->OwnerDoc(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue