diff --git a/modules/plugin/base/src/ns4xPlugin.h b/modules/plugin/base/src/ns4xPlugin.h index c0e97673e51f..b4a1a7dff45e 100644 --- a/modules/plugin/base/src/ns4xPlugin.h +++ b/modules/plugin/base/src/ns4xPlugin.h @@ -38,6 +38,7 @@ #ifndef ns4xPlugin_h__ #define ns4xPlugin_h__ +#include "nsIFactory.h" #include "nsIPlugin.h" #include "nsIPluginInstancePeer.h" #include "nsIWindowlessPlugInstPeer.h" @@ -116,34 +117,9 @@ public: virtual ~ns4xPlugin(void); NS_DECL_ISUPPORTS - - //nsIFactory interface - - NS_IMETHOD CreateInstance(nsISupports *aOuter, - REFNSIID aIID, - void **aResult); - - NS_IMETHOD LockFactory(PRBool aLock); - - //nsIPlugin interface - - /** - * Creates a new plugin instance, based on a MIME type. This - * allows different impelementations to be created depending on - * the specified MIME type. - */ - NS_IMETHOD CreatePluginInstance(nsISupports *aOuter, REFNSIID aIID, - const char* aPluginMIMEType, - void **aResult); + NS_DECL_NSIFACTORY + NS_DECL_NSIPLUGIN - NS_IMETHOD Initialize(void); - - NS_IMETHOD Shutdown(void); - - NS_IMETHOD GetMIMEDescription(const char* *resultingDesc); - - NS_IMETHOD GetValue(nsPluginVariable variable, void *value); - //////////////////////////////////////////////////////////////////// // ns4xPlugin-specific methods diff --git a/modules/plugin/base/src/ns4xPluginInstance.h b/modules/plugin/base/src/ns4xPluginInstance.h index 319a445399aa..c8f86a969c22 100644 --- a/modules/plugin/base/src/ns4xPluginInstance.h +++ b/modules/plugin/base/src/ns4xPluginInstance.h @@ -90,42 +90,8 @@ class ns4xPluginInstance : public nsIPluginInstance, public: NS_DECL_ISUPPORTS - - //////////////////////////////////////////////////////////////////////// - // nsIPluginInstance methods - - /** - * Actually initialize the plugin instance. This calls the 4.x newp - * callback, and may return an error (which is why it is distinct from the - * constructor.) If an error is returned, the caller should not - * continue to use the ns4xPluginInstance object. - */ - NS_METHOD Initialize(nsIPluginInstancePeer* peer); - - NS_IMETHOD GetPeer(nsIPluginInstancePeer* *resultingPeer); - - NS_IMETHOD Start(void); - - NS_IMETHOD Stop(void); - - NS_IMETHOD Destroy(void); - - NS_IMETHOD SetWindow(nsPluginWindow* window); - - NS_IMETHOD NewStream(nsIPluginStreamListener** listener); - - NS_IMETHOD Print(nsPluginPrint* platformPrint); - - NS_IMETHOD GetValue(nsPluginInstanceVariable variable, void *value); - - NS_IMETHOD HandleEvent(nsPluginEvent* event, PRBool* handled); - - //////////////////////////////////////////////////////////////////////// - // nsIScriptablePlugin methods - - NS_IMETHOD GetScriptablePeer(void * *aScriptablePeer); - - NS_IMETHOD GetScriptableInterface(nsIID * *aScriptableInterface); + NS_DECL_NSIPLUGININSTANCE + NS_DECL_NSISCRIPTABLEPLUGIN //////////////////////////////////////////////////////////////////////// // nsIPluginInstanceInternal methods diff --git a/modules/plugin/base/src/ns4xPluginStreamListener.h b/modules/plugin/base/src/ns4xPluginStreamListener.h index 0081e3e98126..2ebef2062e5f 100644 --- a/modules/plugin/base/src/ns4xPluginStreamListener.h +++ b/modules/plugin/base/src/ns4xPluginStreamListener.h @@ -54,16 +54,7 @@ class ns4xPluginStreamListener : public nsIPluginStreamListener, { public: NS_DECL_ISUPPORTS - - // from nsIPluginStreamListener: - NS_IMETHOD OnStartBinding(nsIPluginStreamInfo* pluginInfo); - NS_IMETHOD OnDataAvailable(nsIPluginStreamInfo* pluginInfo, - nsIInputStream* input, PRUint32 length); - NS_IMETHOD OnFileAvailable( nsIPluginStreamInfo* pluginInfo, - const char* fileName); - NS_IMETHOD OnStopBinding(nsIPluginStreamInfo* pluginInfo, nsresult status); - NS_IMETHOD GetStreamType(nsPluginStreamType *result); - + NS_DECL_NSIPLUGINSTREAMLISTENER NS_DECL_NSITIMERCALLBACK // ns4xPluginStreamListener specific methods: diff --git a/modules/plugin/base/src/nsPluginHostImpl.cpp b/modules/plugin/base/src/nsPluginHostImpl.cpp index 243149ecb079..a9d3c62f012b 100644 --- a/modules/plugin/base/src/nsPluginHostImpl.cpp +++ b/modules/plugin/base/src/nsPluginHostImpl.cpp @@ -297,7 +297,9 @@ PRBool ReadSectionHeader(nsPluginManifestLineReader& reader, const char *token) class nsPluginDocReframeEvent: public nsRunnable { public: nsPluginDocReframeEvent(nsISupportsArray* aDocs) { mDocs = aDocs; } - NS_IMETHOD Run(); + + NS_DECL_NSIRUNNABLE + nsCOMPtr mDocs; }; @@ -955,20 +957,23 @@ public: nsPluginUnloadEvent(PRLibrary* aLibrary) : mLibrary(aLibrary) {} - - NS_IMETHOD Run() { - if (mLibrary) { - // put our unload call in a saftey wrapper - NS_TRY_SAFE_CALL_VOID(PR_UnloadLibrary(mLibrary), nsnull, nsnull); - } else { - NS_WARNING("missing library from nsPluginUnloadEvent"); - } - return NS_OK; - } - + + NS_DECL_NSIRUNNABLE + PRLibrary* mLibrary; }; +NS_IMETHODIMP nsPluginUnloadEvent::Run() +{ + if (mLibrary) { + // put our unload call in a saftey wrapper + NS_TRY_SAFE_CALL_VOID(PR_UnloadLibrary(mLibrary), nsnull, nsnull); + } else { + NS_WARNING("missing library from nsPluginUnloadEvent"); + } + return NS_OK; +} + // unload plugin asynchronously if possible, otherwise just unload now nsresult PostPluginUnloadEvent(PRLibrary* aLibrary) { @@ -1050,8 +1055,8 @@ public: NS_DECL_ISUPPORTS - // nsIPluginStreamInfo interface - + // nsI4xPluginStreamInfo interface + NS_IMETHOD GetContentType(nsMIMEType* result); diff --git a/modules/plugin/base/src/nsPluginHostImpl.h b/modules/plugin/base/src/nsPluginHostImpl.h index fe486a5b4fe0..4b6e55454b7f 100644 --- a/modules/plugin/base/src/nsPluginHostImpl.h +++ b/modules/plugin/base/src/nsPluginHostImpl.h @@ -64,6 +64,9 @@ #include "nsIPrefBranch.h" #include "nsWeakReference.h" +// XXX this file really doesn't think this is possible, but ... +#include "nsIFactory.h" + class ns4xPlugin; class nsIComponentManager; class nsIFile; @@ -274,139 +277,18 @@ public: //nsIPluginHost interface - used to communicate to the nsPluginInstanceOwner - NS_IMETHOD - Init(void); - - NS_IMETHOD - Destroy(void); - - NS_IMETHOD - LoadPlugins(void); - - NS_IMETHOD - GetPluginFactory(const char *aMimeType, nsIPlugin** aPlugin); - - - NS_IMETHOD - InstantiatePluginForChannel(nsIChannel* aChannel, - nsIPluginInstanceOwner* aOwner, - nsIStreamListener** aListener); - - NS_IMETHOD - InstantiateEmbeddedPlugin(const char *aMimeType, nsIURI* aURL, nsIPluginInstanceOwner *aOwner); - - NS_IMETHOD - InstantiateFullPagePlugin(const char *aMimeType, nsIURI* aURI, nsIStreamListener *&aStreamListener, nsIPluginInstanceOwner *aOwner); - - NS_IMETHOD - SetUpPluginInstance(const char *aMimeType, nsIURI *aURL, nsIPluginInstanceOwner *aOwner); - - NS_IMETHOD - IsPluginEnabledForType(const char* aMimeType); - - NS_IMETHOD - IsPluginEnabledForExtension(const char* aExtension, const char* &aMimeType); - - NS_IMETHOD - GetPluginCount(PRUint32* aPluginCount); - - NS_IMETHOD - GetPlugins(PRUint32 aPluginCount, nsIDOMPlugin** aPluginArray); - - NS_IMETHOD - HandleBadPlugin(PRLibrary* aLibrary, nsIPluginInstance *instance); - - //nsIPluginManager2 interface - secondary methods that nsIPlugin communicates to - - NS_IMETHOD - BeginWaitCursor(void); - - NS_IMETHOD - EndWaitCursor(void); - - NS_IMETHOD - SupportsURLProtocol(const char* protocol, PRBool *result); - - NS_IMETHOD - NotifyStatusChange(nsIPlugin* plugin, nsresult errorStatus); - - NS_IMETHOD - FindProxyForURL(const char* url, char* *result); - - NS_IMETHOD - RegisterWindow(nsIEventHandler* handler, nsPluginPlatformWindowRef window); - - NS_IMETHOD - UnregisterWindow(nsIEventHandler* handler, nsPluginPlatformWindowRef window); - - NS_IMETHOD - AllocateMenuID(nsIEventHandler* handler, PRBool isSubmenu, PRInt16 *result); - - NS_IMETHOD - DeallocateMenuID(nsIEventHandler* handler, PRInt16 menuID); - - NS_IMETHOD - HasAllocatedMenuID(nsIEventHandler* handler, PRInt16 menuID, PRBool *result); + NS_DECL_NSIPLUGINHOST + NS_DECL_NSIPLUGINMANAGER2 NS_IMETHOD ProcessNextEvent(PRBool *bEventHandled); - // nsIFactory interface, from nsIPlugin. // XXX not currently used? - NS_IMETHOD CreateInstance(nsISupports *aOuter, - REFNSIID aIID, - void **aResult); - - NS_IMETHOD LockFactory(PRBool aLock); - - // nsIFileUtilities interface - - NS_IMETHOD GetProgramPath(const char* *result); - - NS_IMETHOD GetTempDirPath(const char* *result); - - NS_IMETHOD NewTempFileName(const char* prefix, PRUint32 bufLen, char* resultBuf); - - // nsICookieStorage interface - - /** - * Retrieves a cookie from the browser's persistent cookie store. - * @param inCookieURL URL string to look up cookie with. - * @param inOutCookieBuffer buffer large enough to accomodate cookie data. - * @param inOutCookieSize on input, size of the cookie buffer, on output cookie's size. - */ - NS_IMETHOD - GetCookie(const char* inCookieURL, void* inOutCookieBuffer, PRUint32& inOutCookieSize); - - /** - * Stores a cookie in the browser's persistent cookie store. - * @param inCookieURL URL string store cookie with. - * @param inCookieBuffer buffer containing cookie data. - * @param inCookieSize specifies size of cookie data. - */ - NS_IMETHOD - SetCookie(const char* inCookieURL, const void* inCookieBuffer, PRUint32 inCookieSize); - - // Methods from nsIObserver - NS_IMETHOD - Observe(nsISupports *aSubject, const char *aTopic, const PRUnichar *someData); - - // Methods from nsPIPluginHost - NS_IMETHOD - SetIsScriptableInstance(nsIPluginInstance *aPluginInstance, PRBool aScriptable); - - NS_IMETHOD - ParsePostBufferToFixHeaders(const char *inPostData, PRUint32 inPostDataLen, - char **outPostData, PRUint32 *outPostDataLen); - - NS_IMETHOD - CreateTmpFileToPost(const char *postDataURL, char **pTmpFileName); - - NS_IMETHOD - NewPluginNativeWindow(nsPluginNativeWindow ** aPluginNativeWindow); - - NS_IMETHOD - DeletePluginNativeWindow(nsPluginNativeWindow * aPluginNativeWindow); + NS_DECL_NSIFACTORY + NS_DECL_NSIFILEUTILITIES + NS_DECL_NSICOOKIESTORAGE + NS_DECL_NSIOBSERVER + NS_DECL_NSPIPLUGINHOST /* Called by GetURL and PostURL */ @@ -428,9 +310,6 @@ public: AddHeadersToChannel(const char *aHeadersData, PRUint32 aHeadersDataLen, nsIChannel *aGenericChannel); - NS_IMETHOD - StopPluginInstance(nsIPluginInstance* aInstance); - NS_IMETHOD AddUnusedLibrary(PRLibrary * aLibrary); diff --git a/modules/plugin/base/src/nsPluginInstancePeer.h b/modules/plugin/base/src/nsPluginInstancePeer.h index 7893e2326e91..b680729b5061 100644 --- a/modules/plugin/base/src/nsPluginInstancePeer.h +++ b/modules/plugin/base/src/nsPluginInstancePeer.h @@ -61,104 +61,13 @@ public: virtual ~nsPluginInstancePeerImpl(); NS_DECL_ISUPPORTS + NS_DECL_NSIPLUGININSTANCEPEER + NS_DECL_NSIWINDOWLESSPLUGININSTANCEPEER + NS_DECL_NSIPLUGININSTANCEPEER2 + NS_DECL_NSIPLUGINTAGINFO + NS_DECL_NSIPLUGINTAGINFO2 - // nsIPluginInstancePeer interface - - NS_IMETHOD - GetValue(nsPluginInstancePeerVariable variable, void *value); - - NS_IMETHOD - GetMIMEType(nsMIMEType *result); - - NS_IMETHOD - GetMode(nsPluginMode *result); - - NS_IMETHOD - NewStream(nsMIMEType type, const char* target, nsIOutputStream* *result); - - NS_IMETHOD - ShowStatus(const char* message); - - NS_IMETHOD - SetWindowSize(PRUint32 width, PRUint32 height); - - // nsIPluginInstancePeer2 interface - - NS_IMETHOD - GetJSWindow(JSObject* *outJSWindow); - - NS_IMETHOD - GetJSThread(PRUint32 *outThreadID); - - NS_IMETHOD - GetJSContext(JSContext* *outContext); - - // nsIWindowlessPluginInstancePeer - - // (Corresponds to NPN_InvalidateRect.) - NS_IMETHOD - InvalidateRect(nsPluginRect *invalidRect); - - // (Corresponds to NPN_InvalidateRegion.) - NS_IMETHOD - InvalidateRegion(nsPluginRegion invalidRegion); - - // (Corresponds to NPN_ForceRedraw.) - NS_IMETHOD - ForceRedraw(void); - - /* The tag info interfaces all pass through calls to the - nsPluginInstanceOwner (see nsObjectFrame.cpp) */ - - //nsIPluginTagInfo interface - - NS_IMETHOD - GetAttributes(PRUint16& n, const char*const*& names, const char*const*& values); - - NS_IMETHOD - GetAttribute(const char* name, const char* *result); - - NS_IMETHOD - GetDOMElement(nsIDOMElement* *result); - - //nsIPluginTagInfo2 interface - - NS_IMETHOD - GetTagType(nsPluginTagType *result); - - NS_IMETHOD - GetTagText(const char* *result); - - NS_IMETHOD - GetParameters(PRUint16& n, const char*const*& names, const char*const*& values); - - NS_IMETHOD - GetParameter(const char* name, const char* *result); - - NS_IMETHOD - GetDocumentBase(const char* *result); - - NS_IMETHOD - GetDocumentEncoding(const char* *result); - - NS_IMETHOD - GetAlignment(const char* *result); - - NS_IMETHOD - GetWidth(PRUint32 *result); - - NS_IMETHOD - GetHeight(PRUint32 *result); - - NS_IMETHOD - GetBorderVertSpace(PRUint32 *result); - - NS_IMETHOD - GetBorderHorizSpace(PRUint32 *result); - - NS_IMETHOD - GetUniqueID(PRUint32 *result); - + //XXX Why isn't this ifdef'd like the class declaration? //nsIJVMPluginTagInfo interface NS_IMETHOD @@ -176,10 +85,7 @@ public: NS_IMETHOD GetMayScript(PRBool *result); - // nsPIPluginInstancePeer interface - - NS_IMETHOD - GetOwner(nsIPluginInstanceOwner **aOwner); + NS_DECL_NSPIPLUGININSTANCEPEER //locals diff --git a/modules/plugin/base/src/nsPluginNativeWindowOS2.cpp b/modules/plugin/base/src/nsPluginNativeWindowOS2.cpp index abe63ed579c6..901878bbe5b4 100644 --- a/modules/plugin/base/src/nsPluginNativeWindowOS2.cpp +++ b/modules/plugin/base/src/nsPluginNativeWindowOS2.cpp @@ -77,8 +77,8 @@ public: MPARAM GetWParam() { return mWParam; }; MPARAM GetLParam() { return mLParam; }; PRBool InUse() { return (mWnd!=NULL || mMsg!=0); }; - - NS_IMETHOD Run(); + + NS_DECL_NSIRUNNABLE protected: PluginWindowWeakRef mPluginWindowRef; diff --git a/modules/plugin/base/src/nsPluginNativeWindowWin.cpp b/modules/plugin/base/src/nsPluginNativeWindowWin.cpp index 1108cb3000c0..c4d0a724dd3a 100644 --- a/modules/plugin/base/src/nsPluginNativeWindowWin.cpp +++ b/modules/plugin/base/src/nsPluginNativeWindowWin.cpp @@ -81,7 +81,7 @@ public: LPARAM GetLParam() { return mLParam; }; PRBool InUse() { return (mWnd!=NULL || mMsg!=0); }; - NS_IMETHOD Run(); + NS_DECL_NSIRUNNABLE protected: PluginWindowWeakRef mPluginWindowRef; @@ -183,14 +183,19 @@ public: nsDelayedPopupsEnabledEvent(nsIPluginInstanceInternal *inst) : mInst(inst) {} - NS_IMETHOD Run() { - mInst->PushPopupsEnabledState(PR_FALSE); - return NS_OK; - } + + NS_DECL_NSIRUNNABLE + private: nsCOMPtr mInst; }; +NS_IMETHODIMP nsDelayedPopupsEnabledEvent::Run() +{ + mInst->PushPopupsEnabledState(PR_FALSE); + return NS_OK; +} + /** * New plugin window procedure */