From 2f52d47057b0f9374f83b850c26821d7436907a4 Mon Sep 17 00:00:00 2001 From: "cbiesinger%web.de" Date: Thu, 5 Jan 2006 13:30:19 +0000 Subject: [PATCH] Remove aForceType argument of LoadObject, make it a capability instead bug 322128 r+sr=bz --- content/base/src/nsObjectLoadingContent.cpp | 17 +++++++++-------- content/base/src/nsObjectLoadingContent.h | 14 +++++--------- .../html/content/src/nsHTMLAppletElement.cpp | 10 ++++------ .../html/content/src/nsHTMLObjectElement.cpp | 2 +- .../html/content/src/nsHTMLSharedElement.cpp | 8 ++++---- 5 files changed, 23 insertions(+), 28 deletions(-) diff --git a/content/base/src/nsObjectLoadingContent.cpp b/content/base/src/nsObjectLoadingContent.cpp index 07358ad0c49b..3a31b2b8b3ef 100644 --- a/content/base/src/nsObjectLoadingContent.cpp +++ b/content/base/src/nsObjectLoadingContent.cpp @@ -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()) { diff --git a/content/base/src/nsObjectLoadingContent.h b/content/base/src/nsObjectLoadingContent.h index 02a56ae70ecc..b20a0a32dd5f 100644 --- a/content/base/src/nsObjectLoadingContent.h +++ b/content/base/src/nsObjectLoadingContent.h @@ -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) }; /** diff --git a/content/html/content/src/nsHTMLAppletElement.cpp b/content/html/content/src/nsHTMLAppletElement.cpp index 6ca89a27db5a..f284c5abadaa 100644 --- a/content/html/content/src/nsHTMLAppletElement.cpp +++ b/content/html/content/src/nsHTMLAppletElement.cpp @@ -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 diff --git a/content/html/content/src/nsHTMLObjectElement.cpp b/content/html/content/src/nsHTMLObjectElement.cpp index be3f035820e9..55419111e91e 100644 --- a/content/html/content/src/nsHTMLObjectElement.cpp +++ b/content/html/content/src/nsHTMLObjectElement.cpp @@ -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); } diff --git a/content/html/content/src/nsHTMLSharedElement.cpp b/content/html/content/src/nsHTMLSharedElement.cpp index febc964ed433..1e0f18a74d53 100644 --- a/content/html/content/src/nsHTMLSharedElement.cpp +++ b/content/html/content/src/nsHTMLSharedElement.cpp @@ -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 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