From f269134e33d53ba47a26351c34447a135f5fc70c Mon Sep 17 00:00:00 2001 From: "jst%netscape.com" Date: Sun, 8 Apr 2001 02:01:07 +0000 Subject: [PATCH] Adding Plugin helper. git-svn-id: svn://10.0.0.236/branches/XPCDOM_20010329_BRANCH@91672 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/dom/src/base/nsDOMClassInfo.cpp | 88 +++++++++++++++---------- mozilla/dom/src/base/nsDOMClassInfo.h | 40 +++++++++-- 2 files changed, 88 insertions(+), 40 deletions(-) diff --git a/mozilla/dom/src/base/nsDOMClassInfo.cpp b/mozilla/dom/src/base/nsDOMClassInfo.cpp index 2936baaf85e..81b9de84f96 100644 --- a/mozilla/dom/src/base/nsDOMClassInfo.cpp +++ b/mozilla/dom/src/base/nsDOMClassInfo.cpp @@ -375,7 +375,7 @@ nsDOMClassInfo::Init() WANT_PRECREATE); NS_DEFINE_CLASSINFO_DATA(Location, nsDOMGenericSH::Create, DEFAULT_SCRIPTABLE_FLAGS); - NS_DEFINE_CLASSINFO_DATA(Plugin, nsDOMGenericSH::Create, + NS_DEFINE_CLASSINFO_DATA(Plugin, nsPluginSH::Create, DEFAULT_SCRIPTABLE_FLAGS); NS_DEFINE_CLASSINFO_DATA(PluginArray, nsPluginArraySH::Create, ARRAY_SCRIPTABLE_FLAGS); @@ -1807,7 +1807,13 @@ nsNamedArraySH::GetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, nsCOMPtr item; - nsresult rv = GetNamedItem(native, id, getter_AddRefs(item)); + JSString *jsstr = JSVAL_TO_STRING(id); + + nsLiteralString name(NS_REINTERPRET_CAST(const PRUnichar *, + ::JS_GetStringChars(jsstr)), + ::JS_GetStringLength(jsstr)); + + nsresult rv = GetNamedItem(native, name, getter_AddRefs(item)); NS_ENSURE_SUCCESS(rv, rv); // Do we wanto fall through to nsArraySH::GetProperty() here if @@ -1842,20 +1848,15 @@ nsHTMLCollectionSH::GetItemAt(nsISupports *aNative, PRUint32 aIndex, } nsresult -nsHTMLCollectionSH::GetNamedItem(nsISupports *aNative, jsval id, +nsHTMLCollectionSH::GetNamedItem(nsISupports *aNative, + nsAReadableString& aName, nsISupports **aResult) { nsCOMPtr collection(do_QueryInterface(aNative)); NS_ENSURE_TRUE(collection, NS_ERROR_UNEXPECTED); - JSString *jsstr = JSVAL_TO_STRING(id); - - nsLiteralString name(NS_REINTERPRET_CAST(const PRUnichar *, - ::JS_GetStringChars(jsstr)), - ::JS_GetStringLength(jsstr)); - nsIDOMNode *node = nsnull; // Weak, transfer the ownership over to aResult - nsresult rv = collection->NamedItem(name, &node); + nsresult rv = collection->NamedItem(aName, &node); *aResult = node; @@ -1866,19 +1867,14 @@ nsHTMLCollectionSH::GetNamedItem(nsISupports *aNative, jsval id, // FomrControlList helper nsresult -nsFormControlListSH::GetNamedItem(nsISupports *aNative, jsval id, +nsFormControlListSH::GetNamedItem(nsISupports *aNative, + nsAReadableString& aName, nsISupports **aResult) { nsCOMPtr list(do_QueryInterface(aNative)); NS_ENSURE_TRUE(list, NS_ERROR_UNEXPECTED); - JSString *jsstr = JSVAL_TO_STRING(id); - - nsLiteralString name(NS_REINTERPRET_CAST(const PRUnichar *, - ::JS_GetStringChars(jsstr)), - ::JS_GetStringLength(jsstr)); - - return list->NamedItem(name, aResult); + return list->NamedItem(aName, aResult); } // Document helper for document.location and document.on* @@ -2117,6 +2113,40 @@ nsHTMLOptionCollectionSH::SetProperty(nsIXPConnectWrappedNative *wrapper, } +// Plugin helper + +nsresult +nsPluginSH::GetItemAt(nsISupports *aNative, PRUint32 aIndex, + nsISupports **aResult) +{ + nsCOMPtr plugin(do_QueryInterface(aNative)); + NS_ENSURE_TRUE(plugin, NS_ERROR_UNEXPECTED); + + nsIDOMMimeType *mime_type = nsnull; + nsresult rv = plugin->Item(aIndex, &mime_type); + + *aResult = mime_type; + + return rv; +} + +nsresult +nsPluginSH::GetNamedItem(nsISupports *aNative, nsAReadableString& aName, + nsISupports **aResult) +{ + nsCOMPtr plugin(do_QueryInterface(aNative)); + NS_ENSURE_TRUE(plugin, NS_ERROR_UNEXPECTED); + + nsIDOMMimeType *mime_type = nsnull; + + nsresult rv = plugin->NamedItem(aName, &mime_type); + + *aResult = mime_type; + + return rv; +} + + // PluginArray helper nsresult @@ -2135,21 +2165,15 @@ nsPluginArraySH::GetItemAt(nsISupports *aNative, PRUint32 aIndex, } nsresult -nsPluginArraySH::GetNamedItem(nsISupports *aNative, jsval id, +nsPluginArraySH::GetNamedItem(nsISupports *aNative, nsAReadableString& aName, nsISupports **aResult) { nsCOMPtr array(do_QueryInterface(aNative)); NS_ENSURE_TRUE(array, NS_ERROR_UNEXPECTED); - JSString *jsstr = JSVAL_TO_STRING(id); - - nsLiteralString name(NS_REINTERPRET_CAST(const PRUnichar *, - ::JS_GetStringChars(jsstr)), - ::JS_GetStringLength(jsstr)); - nsIDOMPlugin *plugin = nsnull; - nsresult rv = array->NamedItem(name, &plugin); + nsresult rv = array->NamedItem(aName, &plugin); *aResult = plugin; @@ -2157,7 +2181,7 @@ nsPluginArraySH::GetNamedItem(nsISupports *aNative, jsval id, } -// PluginArray helper +// MimeTypeArray helper nsresult nsMimeTypeArraySH::GetItemAt(nsISupports *aNative, PRUint32 aIndex, @@ -2175,21 +2199,15 @@ nsMimeTypeArraySH::GetItemAt(nsISupports *aNative, PRUint32 aIndex, } nsresult -nsMimeTypeArraySH::GetNamedItem(nsISupports *aNative, jsval id, +nsMimeTypeArraySH::GetNamedItem(nsISupports *aNative, nsAReadableString& aName, nsISupports **aResult) { nsCOMPtr array(do_QueryInterface(aNative)); NS_ENSURE_TRUE(array, NS_ERROR_UNEXPECTED); - JSString *jsstr = JSVAL_TO_STRING(id); - - nsLiteralString name(NS_REINTERPRET_CAST(const PRUnichar *, - ::JS_GetStringChars(jsstr)), - ::JS_GetStringLength(jsstr)); - nsIDOMMimeType *mime_type = nsnull; - nsresult rv = array->NamedItem(name, &mime_type); + nsresult rv = array->NamedItem(aName, &mime_type); *aResult = mime_type; diff --git a/mozilla/dom/src/base/nsDOMClassInfo.h b/mozilla/dom/src/base/nsDOMClassInfo.h index f9678c7b033..dd9ab83a0d1 100644 --- a/mozilla/dom/src/base/nsDOMClassInfo.h +++ b/mozilla/dom/src/base/nsDOMClassInfo.h @@ -293,7 +293,7 @@ protected: { } - virtual nsresult GetNamedItem(nsISupports *aNative, jsval id, + virtual nsresult GetNamedItem(nsISupports *aNative, nsAReadableString& aName, nsISupports **aResult) = 0; public: @@ -321,7 +321,7 @@ protected: nsISupports **aResult); // Override nsNamedArraySH::GetNamedItem() - virtual nsresult GetNamedItem(nsISupports *aNative, jsval id, + virtual nsresult GetNamedItem(nsISupports *aNative, nsAReadableString& aName, nsISupports **aResult); public: @@ -347,7 +347,7 @@ protected: // Override nsNamedArraySH::GetNamedItem() since our NamedItem() can // return either a nsIDOMNode or a nsIHTMLCollection - virtual nsresult GetNamedItem(nsISupports *aNative, jsval id, + virtual nsresult GetNamedItem(nsISupports *aNative, nsAReadableString& aName, nsISupports **aResult); public: @@ -460,6 +460,36 @@ public: }; +// Plugin helper + +class nsPluginSH : public nsNamedArraySH +{ +protected: + nsPluginSH(nsDOMClassInfoID aID) : nsNamedArraySH(aID) + { + } + + virtual ~nsPluginSH() + { + } + + // Override nsArraySH::GetItemAt() since our list isn't a + // nsIDOMNodeList + virtual nsresult GetItemAt(nsISupports *aNative, PRUint32 aIndex, + nsISupports **aResult); + + // Override nsNamedArraySH::GetNamedItem() + virtual nsresult GetNamedItem(nsISupports *aNative, nsAReadableString& aName, + nsISupports **aResult); + +public: + static nsIClassInfo *Create(nsDOMClassInfoID aID) + { + return new nsPluginSH(aID); + } +}; + + // PluginArray helper class nsPluginArraySH : public nsNamedArraySH @@ -479,7 +509,7 @@ protected: nsISupports **aResult); // Override nsNamedArraySH::GetNamedItem() - virtual nsresult GetNamedItem(nsISupports *aNative, jsval id, + virtual nsresult GetNamedItem(nsISupports *aNative, nsAReadableString& aName, nsISupports **aResult); public: @@ -509,7 +539,7 @@ protected: nsISupports **aResult); // Override nsNamedArraySH::GetNamedItem() - virtual nsresult GetNamedItem(nsISupports *aNative, jsval id, + virtual nsresult GetNamedItem(nsISupports *aNative, nsAReadableString& aName, nsISupports **aResult); public: