Bug 1328605 - re-add support for type=content-foo in order to smooth the way for add-ons, r=bz
MozReview-Commit-ID: L4NeEAeEA
--- a/dom/base/nsFrameLoader.cpp
+++ b/dom/base/nsFrameLoader.cpp
@@ -983,18 +983,25 @@ nsFrameLoader::AddTreeItemToTreeOwner(ns
nsIDocShellTreeOwner* aOwner,
int32_t aParentType,
nsIDocShell* aParentNode)
{
NS_PRECONDITION(aItem, "Must have docshell treeitem");
NS_PRECONDITION(mOwnerContent, "Must have owning content");
nsAutoString value;
- bool isContent = mOwnerContent->AttrValueIs(
- kNameSpaceID_None, TypeAttrName(), nsGkAtoms::content, eIgnoreCase);
+ bool isContent = false;
+ mOwnerContent->GetAttr(kNameSpaceID_None, TypeAttrName(), value);
+
+ // we accept "content" and "content-xxx" values.
+ // We ignore anything that comes after 'content-'.
+ isContent = value.LowerCaseEqualsLiteral("content") ||
+ StringBeginsWith(value, NS_LITERAL_STRING("content-"),
+ nsCaseInsensitiveStringComparator());
+
// Force mozbrowser frames to always be typeContent, even if the
// mozbrowser interfaces are disabled.
nsCOMPtr<nsIDOMMozBrowserFrame> mozbrowser =
do_QueryInterface(mOwnerContent);
if (mozbrowser) {
bool isMozbrowser = false;
mozbrowser->GetMozbrowser(&isMozbrowser);
@@ -2888,18 +2895,22 @@ nsFrameLoader::TryRemoteBrowser()
return false;
}
}
if (!mOwnerContent->IsXULElement()) {
return false;
}
- if (!mOwnerContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
- nsGkAtoms::content, eIgnoreCase)) {
+ nsAutoString value;
+ mOwnerContent->GetAttr(kNameSpaceID_None, nsGkAtoms::type, value);
+
+ if (!value.LowerCaseEqualsLiteral("content") &&
+ !StringBeginsWith(value, NS_LITERAL_STRING("content-"),
+ nsCaseInsensitiveStringComparator())) {
return false;
}
// Try to get the related content parent from our browser element.
openerContentParent = GetContentParent(mOwnerContent);
}
uint32_t chromeFlags = 0;
@@ -3349,17 +3360,23 @@ nsFrameLoader::AttributeChanged(nsIDocum
if (!is_primary) {
nsXULPopupManager* pm = nsXULPopupManager::GetInstance();
if (pm)
pm->HidePopupsInDocShell(mDocShell);
}
#endif
parentTreeOwner->ContentShellRemoved(mDocShell);
- if (aElement->AttrValueIs(kNameSpaceID_None, TypeAttrName(), nsGkAtoms::content, eIgnoreCase)) {
+
+ nsAutoString value;
+ aElement->GetAttr(kNameSpaceID_None, TypeAttrName(), value);
+
+ if (value.LowerCaseEqualsLiteral("content") ||
+ StringBeginsWith(value, NS_LITERAL_STRING("content-"),
+ nsCaseInsensitiveStringComparator())) {
parentTreeOwner->ContentShellAdded(mDocShell, is_primary);
}
}
/**
* Send the RequestNotifyAfterRemotePaint message to the current Tab.
*/
NS_IMETHODIMP