зеркало из https://github.com/mozilla/gecko-dev.git
Remove aForceType argument of LoadObject, make it a capability instead
bug 322128 r+sr=bz
This commit is contained in:
Родитель
0ea5eacb9a
Коммит
2f52d47057
|
@ -702,7 +702,6 @@ nsresult
|
|||
nsObjectLoadingContent::LoadObject(const nsAString& aURI,
|
||||
PRBool aNotify,
|
||||
const nsCString& aTypeHint,
|
||||
PRBool aForceType,
|
||||
PRBool aForceLoad)
|
||||
{
|
||||
LOG(("OBJLC [%p]: Loading object: URI string=<%s> notify=%i type=<%s> forcetype=%i forceload=%i\n",
|
||||
|
@ -730,18 +729,17 @@ nsObjectLoadingContent::LoadObject(const nsAString& aURI,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
return LoadObject(uri, aNotify, aTypeHint, aForceType, aForceLoad);
|
||||
return LoadObject(uri, aNotify, aTypeHint, aForceLoad);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsObjectLoadingContent::LoadObject(nsIURI* aURI,
|
||||
PRBool aNotify,
|
||||
const nsCString& aTypeHint,
|
||||
PRBool aForceType,
|
||||
PRBool aForceLoad)
|
||||
{
|
||||
LOG(("OBJLC [%p]: Loading object: URI=<%p> notify=%i type=<%s> forcetype=%i forceload=%i\n",
|
||||
this, aURI, aNotify, aTypeHint.get(), aForceType, aForceLoad));
|
||||
LOG(("OBJLC [%p]: Loading object: URI=<%p> notify=%i type=<%s> forceload=%i\n",
|
||||
this, aURI, aNotify, aTypeHint.get(), aForceLoad));
|
||||
|
||||
if (mURI && aURI && !aForceLoad) {
|
||||
PRBool equal;
|
||||
|
@ -849,10 +847,13 @@ nsObjectLoadingContent::LoadObject(nsIURI* aURI,
|
|||
// change the order of the declarations!
|
||||
AutoFallback fallback(this, &rv);
|
||||
|
||||
if (aForceType && !aTypeHint.IsEmpty()) {
|
||||
PRUint32 caps = GetCapabilities();
|
||||
LOG(("OBJLC [%p]: Capabilities: %04x\n", this, caps));
|
||||
|
||||
if ((caps & eOverrideServerType) && !aTypeHint.IsEmpty()) {
|
||||
ObjectType newType = GetTypeOfContent(aTypeHint);
|
||||
if (newType != mType) {
|
||||
LOG(("OBJLC [%p]: (aForceType) Changing type from %u to %u\n", this, mType, newType));
|
||||
LOG(("OBJLC [%p]: (eOverrideServerType) Changing type from %u to %u\n", this, mType, newType));
|
||||
|
||||
UnloadContent();
|
||||
|
||||
|
@ -908,7 +909,7 @@ nsObjectLoadingContent::LoadObject(nsIURI* aURI,
|
|||
PRBool isSupportedClassID = PR_FALSE;
|
||||
nsCAutoString typeForID; // Will be set iff isSupportedClassID == PR_TRUE
|
||||
PRBool hasID = PR_FALSE;
|
||||
if (GetCapabilities() & eSupportClassID) {
|
||||
if (caps & eSupportClassID) {
|
||||
nsAutoString classid;
|
||||
thisContent->GetAttr(kNameSpaceID_None, nsHTMLAtoms::classid, classid);
|
||||
if (!classid.IsEmpty()) {
|
||||
|
|
|
@ -126,9 +126,8 @@ class nsObjectLoadingContent : public nsImageLoadingContent
|
|||
* @param aURI The URI to load.
|
||||
* @param aNotify If true, nsIDocumentObserver state change notifications
|
||||
* will be sent as needed.
|
||||
* @param aTypeHint MIME Type hint. Overridden by the server.
|
||||
* @param aForceType Whether to always use aTypeHint as the type, instead
|
||||
* of letting the server override it.
|
||||
* @param aTypeHint MIME Type hint. Overridden by the server unless this
|
||||
* class has the eOverrideServerType capability.
|
||||
* @param aForceLoad If true, the object will be refetched even if the URI
|
||||
* is the same as the currently-loaded object.
|
||||
* @note Prefer the nsIURI-taking version of this function if a URI object
|
||||
|
@ -139,7 +138,6 @@ class nsObjectLoadingContent : public nsImageLoadingContent
|
|||
nsresult LoadObject(const nsAString& aURI,
|
||||
PRBool aNotify,
|
||||
const nsCString& aTypeHint = EmptyCString(),
|
||||
PRBool aForceType = PR_FALSE,
|
||||
PRBool aForceLoad = PR_FALSE);
|
||||
/**
|
||||
* Loads the object from the given URI.
|
||||
|
@ -165,16 +163,12 @@ class nsObjectLoadingContent : public nsImageLoadingContent
|
|||
* Otherwise a request to that URI is made and the type sent by the server
|
||||
* is used to find a suitable handler.
|
||||
*
|
||||
* @param aForceType Whether the passed-in type should override
|
||||
* server-supplied MIME types. Will be ignored if
|
||||
* aTypeHint is empty.
|
||||
* @param aForceLoad If true, the object will be refetched even if the URI
|
||||
* is the same as the currently-loaded object.
|
||||
*/
|
||||
nsresult LoadObject(nsIURI* aURI,
|
||||
PRBool aNotify,
|
||||
const nsCString& aTypeHint = EmptyCString(),
|
||||
PRBool aForceType = PR_FALSE,
|
||||
PRBool aForceLoad = PR_FALSE);
|
||||
|
||||
enum Capabilities {
|
||||
|
@ -186,7 +180,9 @@ class nsObjectLoadingContent : public nsImageLoadingContent
|
|||
#ifdef MOZ_SVG
|
||||
eSupportSVG = PR_BIT(3), // SVG is supported (image/svg+xml)
|
||||
#endif
|
||||
eSupportClassID = PR_BIT(4) // The classid attribute is supported
|
||||
eSupportClassID = PR_BIT(4), // The classid attribute is supported
|
||||
eOverrideServerType = PR_BIT(5) // The server-sent MIME type is ignored
|
||||
// (ignored if no type is specified)
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -141,7 +141,7 @@ nsHTMLAppletElement::IsDoneAddingChildren()
|
|||
PRUint32
|
||||
nsHTMLAppletElement::GetCapabilities() const
|
||||
{
|
||||
return eSupportPlugins;
|
||||
return eSupportPlugins | eOverrideServerType;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -286,9 +286,8 @@ nsHTMLAppletElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
|
|||
// Skip the LoadObject call in that case.
|
||||
if (aNotify &&
|
||||
aNameSpaceID == kNameSpaceID_None && aName == nsHTMLAtoms::code) {
|
||||
LoadObject(aValue, aNotify,
|
||||
NS_LITERAL_CSTRING("application/x-java-vm"),
|
||||
PR_TRUE, PR_TRUE);
|
||||
LoadObject(aValue, aNotify, NS_LITERAL_CSTRING("application/x-java-vm"),
|
||||
PR_TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -301,8 +300,7 @@ nsHTMLAppletElement::StartAppletLoad(PRBool aNotify)
|
|||
{
|
||||
nsAutoString uri;
|
||||
if (GetAttr(kNameSpaceID_None, nsHTMLAtoms::code, uri)) {
|
||||
LoadObject(uri, aNotify,
|
||||
NS_LITERAL_CSTRING("application/x-java-vm"), PR_TRUE);
|
||||
LoadObject(uri, aNotify, NS_LITERAL_CSTRING("application/x-java-vm"));
|
||||
} else {
|
||||
// The constructor set the type to eType_Loading; but if we have no code
|
||||
// attribute, then we aren't really a plugin
|
||||
|
|
|
@ -233,7 +233,7 @@ nsHTMLObjectElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
|
|||
aNameSpaceID == kNameSpaceID_None && aName == nsHTMLAtoms::data) {
|
||||
nsAutoString type;
|
||||
GetAttr(kNameSpaceID_None, nsHTMLAtoms::type, type);
|
||||
LoadObject(aValue, aNotify, NS_ConvertUTF16toUTF8(type), PR_FALSE, PR_TRUE);
|
||||
LoadObject(aValue, aNotify, NS_ConvertUTF16toUTF8(type), PR_TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -532,11 +532,11 @@ nsHTMLSharedElement::BindToTree(nsIDocument* aDocument,
|
|||
nsAutoString uri;
|
||||
if (GetAttr(kNameSpaceID_None, nsHTMLAtoms::src, uri)) {
|
||||
// Don't notify: We aren't in a document yet, so we have no frames
|
||||
LoadObject(uri, PR_FALSE, NS_ConvertUTF16toUTF8(type), PR_TRUE);
|
||||
LoadObject(uri, PR_FALSE, NS_ConvertUTF16toUTF8(type));
|
||||
} else {
|
||||
// Sometimes, code uses <embed> with no src attributes, for example using
|
||||
// code="...". Handle that case.
|
||||
LoadObject(nsnull, PR_FALSE, NS_ConvertUTF16toUTF8(type), PR_TRUE);
|
||||
LoadObject(nsnull, PR_FALSE, NS_ConvertUTF16toUTF8(type));
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
|
@ -569,7 +569,7 @@ nsHTMLSharedElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
|
|||
aNameSpaceID == kNameSpaceID_None && aName == nsHTMLAtoms::src) {
|
||||
nsAutoString type;
|
||||
GetAttr(kNameSpaceID_None, nsHTMLAtoms::type, type);
|
||||
LoadObject(aValue, aNotify, NS_ConvertUTF16toUTF8(type), PR_TRUE, PR_TRUE);
|
||||
LoadObject(aValue, aNotify, NS_ConvertUTF16toUTF8(type), PR_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -580,7 +580,7 @@ nsHTMLSharedElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
|
|||
PRUint32
|
||||
nsHTMLSharedElement::GetCapabilities() const
|
||||
{
|
||||
return eSupportImages | eSupportPlugins
|
||||
return eSupportImages | eSupportPlugins | eOverrideServerType
|
||||
#ifdef MOZ_SVG
|
||||
| eSupportSVG
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче