зеркало из https://github.com/mozilla/gecko-dev.git
massive overhaul for new stream APIs.
This commit is contained in:
Родитель
9666b10acf
Коммит
d1d3db243c
|
@ -74,8 +74,6 @@ public:
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
UserAgent(const char* *result);
|
UserAgent(const char* *result);
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
GetURL(nsISupports* pluginInst,
|
GetURL(nsISupports* pluginInst,
|
||||||
const char* url,
|
const char* url,
|
||||||
|
@ -99,30 +97,17 @@ public:
|
||||||
PRUint32 postHeadersLength = 0,
|
PRUint32 postHeadersLength = 0,
|
||||||
const char* postHeaders = NULL);
|
const char* postHeaders = NULL);
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
/**
|
||||||
|
* RegisterService may be called explicitly to register a service
|
||||||
|
* with the service manager. If a service is not registered explicitly,
|
||||||
|
* the component manager will be used to create an instance according
|
||||||
|
* to the class ID specified.
|
||||||
|
*/
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
GetURL(nsISupports* peer, const char* url, const char* target,
|
RegisterService(const nsCID& aClass, nsISupports* aService)
|
||||||
void* notifyData = NULL, const char* altHost = NULL,
|
{
|
||||||
const char* referrer = NULL, PRBool forceJSEnabled = PR_FALSE);
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
NS_IMETHOD
|
|
||||||
PostURL(nsISupports* peer, const char* url, const char* target,
|
|
||||||
PRUint32 postDataLen, const char* postData,
|
|
||||||
PRBool isFile = PR_FALSE, void* notifyData = NULL,
|
|
||||||
const char* altHost = NULL, const char* referrer = NULL,
|
|
||||||
PRBool forceJSEnabled = PR_FALSE,
|
|
||||||
PRUint32 postHeadersLength = 0, const char* postHeaders = NULL);
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
NS_IMETHOD
|
|
||||||
GetService(const nsCID& aClass, const nsIID& aIID,
|
|
||||||
nsISupports* *result,
|
|
||||||
nsIShutdownListener* shutdownListener = NULL);
|
|
||||||
|
|
||||||
NS_IMETHOD
|
|
||||||
ReleaseService(const nsCID& aClass, nsISupports* service,
|
|
||||||
nsIShutdownListener* shutdownListener = NULL);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests a service to be shut down, possibly unloading its DLL.
|
* Requests a service to be shut down, possibly unloading its DLL.
|
||||||
|
@ -135,7 +120,34 @@ public:
|
||||||
* a shutdown listener.
|
* a shutdown listener.
|
||||||
*/
|
*/
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
ShutdownService(const nsCID& aClass) { return NS_OK; }
|
UnregisterService(const nsCID& aClass)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
GetService(const nsCID& aClass, const nsIID& aIID,
|
||||||
|
nsISupports* *result,
|
||||||
|
nsIShutdownListener* shutdownListener = NULL);
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
ReleaseService(const nsCID& aClass, nsISupports* service,
|
||||||
|
nsIShutdownListener* shutdownListener = NULL);
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
GetService(const char* aProgID, const nsIID& aIID,
|
||||||
|
nsISupports* *result,
|
||||||
|
nsIShutdownListener* shutdownListener = NULL)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
ReleaseService(const char* aProgID, nsISupports* service,
|
||||||
|
nsIShutdownListener* shutdownListener = NULL)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates a block of memory of a particular size.
|
* Allocates a block of memory of a particular size.
|
||||||
|
@ -316,15 +328,12 @@ protected:
|
||||||
char** values_list;
|
char** values_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
|
|
||||||
class CPluginStreamInfo : public nsIPluginStreamInfo {
|
class CPluginStreamInfo : public nsIPluginStreamInfo {
|
||||||
public:
|
public:
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
CPluginStreamInfo(nsIPluginInputStream* inStr, nsMIMEType type, PRBool seekable)
|
CPluginStreamInfo(const char* URL, nsIPluginInputStream* inStr, nsMIMEType type, PRBool seekable)
|
||||||
: mInputStream(inStr), mMimeType(type), mIsSeekable(seekable) {}
|
: mURL(URL), mInputStream(inStr), mMimeType(type), mIsSeekable(seekable) {}
|
||||||
|
|
||||||
virtual ~CPluginStreamInfo() {}
|
virtual ~CPluginStreamInfo() {}
|
||||||
|
|
||||||
|
@ -354,6 +363,13 @@ public:
|
||||||
return mInputStream->GetLastModified(result);
|
return mInputStream->GetLastModified(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_METHOD
|
||||||
|
GetURL(const char** result)
|
||||||
|
{
|
||||||
|
*result = mURL;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_METHOD
|
NS_METHOD
|
||||||
RequestRead(nsByteRange* rangeList)
|
RequestRead(nsByteRange* rangeList)
|
||||||
{
|
{
|
||||||
|
@ -361,6 +377,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
const char* mURL;
|
||||||
nsIPluginInputStream* mInputStream;
|
nsIPluginInputStream* mInputStream;
|
||||||
nsMIMEType mMimeType;
|
nsMIMEType mMimeType;
|
||||||
PRBool mIsSeekable;
|
PRBool mIsSeekable;
|
||||||
|
@ -445,9 +462,9 @@ public:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsIPluginStreamInfo* CreatePluginStreamInfo(nsMIMEType type, PRBool seekable) {
|
nsIPluginStreamInfo* CreatePluginStreamInfo(const char* url, nsMIMEType type, PRBool seekable) {
|
||||||
if (mStreamInfo == NULL) {
|
if (mStreamInfo == NULL) {
|
||||||
mStreamInfo = new CPluginStreamInfo(this, type, seekable);
|
mStreamInfo = new CPluginStreamInfo(url, this, type, seekable);
|
||||||
mStreamInfo->AddRef();
|
mStreamInfo->AddRef();
|
||||||
}
|
}
|
||||||
return mStreamInfo;
|
return mStreamInfo;
|
||||||
|
@ -469,74 +486,6 @@ protected:
|
||||||
nsIPluginStreamInfo* mStreamInfo;
|
nsIPluginStreamInfo* mStreamInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// CPluginStreamPeer
|
|
||||||
//
|
|
||||||
// This is the dummy stream peer that interacts with the 5.0 plugin.
|
|
||||||
//
|
|
||||||
class CPluginStreamPeer : public nsISeekablePluginStreamPeer, public nsIPluginStreamPeer {
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
CPluginStreamPeer(nsMIMEType type, NPStream* npStream,
|
|
||||||
PRBool seekable, PRUint16* stype);
|
|
||||||
virtual ~CPluginStreamPeer();
|
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS
|
|
||||||
|
|
||||||
// (Corresponds to NPStream's url field.)
|
|
||||||
NS_IMETHOD
|
|
||||||
GetURL(const char* *result);
|
|
||||||
|
|
||||||
// (Corresponds to NPStream's end field.)
|
|
||||||
NS_IMETHOD
|
|
||||||
GetEnd(PRUint32 *result);
|
|
||||||
|
|
||||||
// (Corresponds to NPStream's lastmodified field.)
|
|
||||||
NS_IMETHOD
|
|
||||||
GetLastModified(PRUint32 *result);
|
|
||||||
|
|
||||||
// (Corresponds to NPStream's notifyData field.)
|
|
||||||
NS_IMETHOD
|
|
||||||
GetNotifyData(void* *result);
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// From nsIPluginStreamPeer
|
|
||||||
//
|
|
||||||
|
|
||||||
// Corresponds to NPP_DestroyStream's reason argument.
|
|
||||||
NS_IMETHOD
|
|
||||||
GetReason(nsPluginReason *result);
|
|
||||||
|
|
||||||
// Corresponds to NPP_NewStream's MIMEType argument.
|
|
||||||
NS_IMETHOD
|
|
||||||
GetMIMEType(nsMIMEType *result);
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// From nsISeekablePluginStreamPeer
|
|
||||||
//
|
|
||||||
|
|
||||||
// Corresponds to NPN_RequestRead.
|
|
||||||
NS_IMETHOD
|
|
||||||
RequestRead(nsByteRange* rangeList);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
nsMIMEType type;
|
|
||||||
NPStream* npStream;
|
|
||||||
PRBool seekable;
|
|
||||||
PRUint16* stype;
|
|
||||||
nsPluginReason reason;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifdef XP_UNIX
|
#ifdef XP_UNIX
|
||||||
|
@ -582,15 +531,11 @@ nsIPlugin* thePlugin = NULL;
|
||||||
// Interface IDs for nsISupports
|
// Interface IDs for nsISupports
|
||||||
//
|
//
|
||||||
NS_DEFINE_IID(kPluginCID, NS_PLUGIN_CID);
|
NS_DEFINE_IID(kPluginCID, NS_PLUGIN_CID);
|
||||||
NS_DEFINE_IID(kCAllocatorCID, NS_ALLOCATOR_CID);
|
static NS_DEFINE_IID(kPluginManagerCID, NS_PLUGINMANAGER_CID);
|
||||||
|
static NS_DEFINE_IID(kAllocatorCID, NS_ALLOCATOR_CID);
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
NS_DEFINE_IID(kIPluginStreamInfoIID, NS_IPLUGINSTREAMINFO_IID);
|
NS_DEFINE_IID(kIPluginStreamInfoIID, NS_IPLUGINSTREAMINFO_IID);
|
||||||
NS_DEFINE_IID(kIPluginInputStreamIID, NS_IPLUGININPUTSTREAM_IID);
|
NS_DEFINE_IID(kIPluginInputStreamIID, NS_IPLUGININPUTSTREAM_IID);
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
NS_DEFINE_IID(kIPluginStreamPeerIID, NS_IPLUGINSTREAMPEER_IID);
|
|
||||||
NS_DEFINE_IID(kISeekablePluginStreamPeerIID, NS_ISEEKABLEPLUGINSTREAMPEER_IID);
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
// mapping from NPError to nsresult
|
// mapping from NPError to nsresult
|
||||||
nsresult fromNPError[] = {
|
nsresult fromNPError[] = {
|
||||||
|
@ -920,44 +865,18 @@ NPP_NewStream(NPP instance,
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return NPERR_INVALID_INSTANCE_ERROR;
|
return NPERR_INVALID_INSTANCE_ERROR;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->notifyData;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->notifyData;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return NPERR_GENERIC_ERROR;
|
return NPERR_GENERIC_ERROR;
|
||||||
|
|
||||||
nsIPluginStreamInfo* info = inStr->CreatePluginStreamInfo(type, seekable);
|
nsIPluginStreamInfo* info = inStr->CreatePluginStreamInfo(stream->url, type, seekable);
|
||||||
nsresult err = inStr->GetListener()->OnStartBinding(stream->url, info);
|
nsresult err = inStr->GetListener()->OnStartBinding(info);
|
||||||
if (err) return err;
|
if (err) return err;
|
||||||
|
|
||||||
inStr->SetStreamInfo(instance, stream);
|
inStr->SetStreamInfo(instance, stream);
|
||||||
stream->pdata = inStr;
|
stream->pdata = inStr;
|
||||||
*stype = inStr->GetStreamType();
|
*stype = inStr->GetStreamType();
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
// Create a new plugin stream peer and plugin stream.
|
|
||||||
CPluginStreamPeer* speer = new CPluginStreamPeer((nsMIMEType)type, stream,
|
|
||||||
(PRBool)seekable, stype);
|
|
||||||
if (speer == NULL) return NPERR_OUT_OF_MEMORY_ERROR;
|
|
||||||
speer->AddRef();
|
|
||||||
|
|
||||||
nsIPluginStream* pluginStream = NULL;
|
|
||||||
CPluginInstancePeer* peer = (CPluginInstancePeer*) instance->pdata;
|
|
||||||
nsIPluginInstance* pluginInstance = peer->GetInstance();
|
|
||||||
nsresult err = pluginInstance->NewStream(speer, &pluginStream);
|
|
||||||
if (err) return NPERR_OUT_OF_MEMORY_ERROR;
|
|
||||||
speer->Release();
|
|
||||||
|
|
||||||
if (pluginStream == NULL)
|
|
||||||
return NPERR_OUT_OF_MEMORY_ERROR;
|
|
||||||
|
|
||||||
stream->pdata = (void*) pluginStream;
|
|
||||||
err = pluginStream->GetStreamType((nsPluginStreamType*)stype);
|
|
||||||
assert(err == NS_OK);
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
return NPERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -975,22 +894,10 @@ NPP_WriteReady(NPP instance, NPStream *stream)
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
return NP_MAXREADY;
|
return NP_MAXREADY;
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
nsIPluginStream* theStream = (nsIPluginStream*) stream->pdata;
|
|
||||||
if( theStream == 0 )
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 8192;
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1007,28 +914,14 @@ NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
nsresult err = inStr->SetReadBuffer((PRUint32)len, (const char*)buffer);
|
nsresult err = inStr->SetReadBuffer((PRUint32)len, (const char*)buffer);
|
||||||
if (err != NS_OK) return -1;
|
if (err != NS_OK) return -1;
|
||||||
err = inStr->GetListener()->OnDataAvailable(stream->url, inStr, offset, len, inStr->GetPluginStreamInfo());
|
err = inStr->GetListener()->OnDataAvailable(inStr->GetPluginStreamInfo(), inStr, len);
|
||||||
if (err != NS_OK) return -1;
|
if (err != NS_OK) return -1;
|
||||||
return len;
|
return len;
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
nsIPluginStream* theStream = (nsIPluginStream*) stream->pdata;
|
|
||||||
if( theStream == 0 )
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
PRUint32 count;
|
|
||||||
nsresult err = theStream->Write((const char* )buffer, offset, len, &count);
|
|
||||||
return (err == NS_OK) ? count : -1;
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
@ -1047,26 +940,13 @@ NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason)
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return NPERR_INVALID_INSTANCE_ERROR;
|
return NPERR_INVALID_INSTANCE_ERROR;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return NPERR_GENERIC_ERROR;
|
return NPERR_GENERIC_ERROR;
|
||||||
inStr->GetListener()->OnStopBinding(stream->url, (nsPluginReason)reason, inStr->GetPluginStreamInfo());
|
inStr->GetListener()->OnStopBinding(inStr->GetPluginStreamInfo(), (nsPluginReason)reason);
|
||||||
// inStr->Release();
|
// inStr->Release();
|
||||||
stream->pdata = NULL;
|
stream->pdata = NULL;
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
nsIPluginStream* theStream = (nsIPluginStream*) stream->pdata;
|
|
||||||
if( theStream == 0 )
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
|
|
||||||
theStream->Release();
|
|
||||||
stream->pdata = NULL;
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
return NPERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1083,22 +963,10 @@ NPP_StreamAsFile(NPP instance, NPStream *stream, const char* fname)
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return;
|
return;
|
||||||
(void)inStr->GetListener()->OnFileAvailable(stream->url, fname);
|
(void)inStr->GetListener()->OnFileAvailable(inStr->GetPluginStreamInfo(), fname);
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
nsIPluginStream* theStream = (nsIPluginStream*) stream->pdata;
|
|
||||||
if( theStream == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
theStream->AsFile( fname );
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
@ -1132,19 +1000,9 @@ NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
|
||||||
// TRACE("NPP_URLNotify\n");
|
// TRACE("NPP_URLNotify\n");
|
||||||
|
|
||||||
if (instance != NULL) {
|
if (instance != NULL) {
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)notifyData;
|
CPluginInputStream* inStr = (CPluginInputStream*)notifyData;
|
||||||
(void)inStr->GetListener()->OnStopBinding(url, (nsPluginReason)reason, inStr->GetPluginStreamInfo());
|
(void)inStr->GetListener()->OnStopBinding(inStr->GetPluginStreamInfo(), (nsPluginReason)reason);
|
||||||
inStr->Release();
|
inStr->Release();
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInstancePeer* peer = (CPluginInstancePeer*) instance->pdata;
|
|
||||||
nsIPluginInstance* pluginInstance = peer->GetInstance();
|
|
||||||
pluginInstance->URLNotify(url, NULL, (nsPluginReason)reason, notifyData);
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1223,8 +1081,6 @@ CPluginManager::ReloadPlugins(PRBool reloadPages)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
NS_METHOD
|
NS_METHOD
|
||||||
CPluginManager::GetURL(nsISupports* pluginInst,
|
CPluginManager::GetURL(nsISupports* pluginInst,
|
||||||
const char* url,
|
const char* url,
|
||||||
|
@ -1319,92 +1175,13 @@ CPluginManager::PostURL(nsISupports* pluginInst,
|
||||||
return fromNPError[err];
|
return fromNPError[err];
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
// (Corresponds to NPN_GetURL and NPN_GetURLNotify.)
|
|
||||||
// notifyData: When present, URLNotify is called passing the notifyData back
|
|
||||||
// to the client. When NULL, this call behaves like NPN_GetURL.
|
|
||||||
// New arguments:
|
|
||||||
// peer: A plugin instance peer. The peer's window will be used to display
|
|
||||||
// progress information. If NULL, the load happens in the background.
|
|
||||||
// altHost: An IP-address string that will be used instead of the host
|
|
||||||
// specified in the URL. This is used to prevent DNS-spoofing attacks.
|
|
||||||
// Can be defaulted to NULL meaning use the host in the URL.
|
|
||||||
// referrer:
|
|
||||||
// forceJSEnabled: Forces JavaScript to be enabled for 'javascript:' URLs,
|
|
||||||
// even if the user currently has JavaScript disabled.
|
|
||||||
NS_METHOD
|
|
||||||
CPluginManager::GetURL(nsISupports* pinst, const char* url, const char* target,
|
|
||||||
void* notifyData, const char* altHost,
|
|
||||||
const char* referrer, PRBool forceJSEnabled)
|
|
||||||
{
|
|
||||||
nsIPluginInstance* inst = NULL;
|
|
||||||
nsresult rslt = pinst->QueryInterface(nsIPluginInstance::GetIID(), (void**)&inst);
|
|
||||||
if (rslt != NS_OK) return rslt;
|
|
||||||
CPluginInstancePeer* instancePeer = NULL;
|
|
||||||
rslt = inst->GetPeer((nsIPluginInstancePeer**)&instancePeer);
|
|
||||||
if (rslt != NS_OK) {
|
|
||||||
inst->Release();
|
|
||||||
return rslt;
|
|
||||||
}
|
|
||||||
NPP npp = instancePeer->GetNPPInstance();
|
|
||||||
|
|
||||||
NPError err;
|
|
||||||
// Call the correct GetURL* function.
|
|
||||||
// This is determinded by checking notifyData.
|
|
||||||
if (notifyData == NULL) {
|
|
||||||
err = NPN_GetURL(npp, url, target);
|
|
||||||
} else {
|
|
||||||
err = NPN_GetURLNotify(npp, url, target, notifyData);
|
|
||||||
}
|
|
||||||
instancePeer->Release();
|
|
||||||
inst->Release();
|
|
||||||
return fromNPError[err];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginManager::PostURL(nsISupports* pinst, const char* url, const char* target,
|
|
||||||
PRUint32 postDataLen, const char* postData,
|
|
||||||
PRBool isFile, void* notifyData,
|
|
||||||
const char* altHost, const char* referrer,
|
|
||||||
PRBool forceJSEnabled,
|
|
||||||
PRUint32 postHeadersLength, const char* postHeaders)
|
|
||||||
{
|
|
||||||
nsIPluginInstance* inst = NULL;
|
|
||||||
nsresult rslt = pinst->QueryInterface(nsIPluginInstance::GetIID(), (void**)&inst);
|
|
||||||
if (rslt != NS_OK) return rslt;
|
|
||||||
CPluginInstancePeer* instancePeer = NULL;
|
|
||||||
rslt = inst->GetPeer((nsIPluginInstancePeer**)&instancePeer);
|
|
||||||
if (rslt != NS_OK) {
|
|
||||||
inst->Release();
|
|
||||||
return rslt;
|
|
||||||
}
|
|
||||||
NPP npp = instancePeer->GetNPPInstance();
|
|
||||||
|
|
||||||
NPError err;
|
|
||||||
// Call the correct PostURL* function.
|
|
||||||
// This is determinded by checking notifyData.
|
|
||||||
if (notifyData == NULL) {
|
|
||||||
err = NPN_PostURL(npp, url, target, postDataLen, postData, isFile);
|
|
||||||
} else {
|
|
||||||
err = NPN_PostURLNotify(npp, url, target, postDataLen, postData, isFile, notifyData);
|
|
||||||
}
|
|
||||||
instancePeer->Release();
|
|
||||||
inst->Release();
|
|
||||||
return fromNPError[err];
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
|
|
||||||
NS_METHOD
|
NS_METHOD
|
||||||
CPluginManager::GetService(const nsCID& aClass, const nsIID& aIID,
|
CPluginManager::GetService(const nsCID& aClass, const nsIID& aIID,
|
||||||
nsISupports* *result,
|
nsISupports* *result,
|
||||||
nsIShutdownListener* shutdownListener)
|
nsIShutdownListener* shutdownListener)
|
||||||
{
|
{
|
||||||
// the only service we support currently is nsIAllocator.
|
// the only service we support currently is nsIAllocator.
|
||||||
if (aClass.Equals(kCAllocatorCID)) {
|
if (aClass.Equals(kPluginManagerCID) || aClass.Equals(kAllocatorCID)) {
|
||||||
return QueryInterface(aIID, (void**) result);
|
return QueryInterface(aIID, (void**) result);
|
||||||
}
|
}
|
||||||
return NS_ERROR_SERVICE_NOT_FOUND;
|
return NS_ERROR_SERVICE_NOT_FOUND;
|
||||||
|
@ -1903,8 +1680,6 @@ NS_IMPL_QUERY_INTERFACE(CPluginManagerStream, nsIOutputStream::GetIID());
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS(CPluginStreamInfo, kIPluginStreamInfoIID);
|
NS_IMPL_ISUPPORTS(CPluginStreamInfo, kIPluginStreamInfoIID);
|
||||||
|
|
||||||
CPluginInputStream::CPluginInputStream(nsIPluginStreamListener* listener)
|
CPluginInputStream::CPluginInputStream(nsIPluginStreamListener* listener)
|
||||||
|
@ -1973,128 +1748,6 @@ CPluginInputStream::RequestRead(nsByteRange* rangeList)
|
||||||
return fromNPError[err];
|
return fromNPError[err];
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// CPluginStreamPeer
|
|
||||||
//
|
|
||||||
|
|
||||||
CPluginStreamPeer::CPluginStreamPeer(nsMIMEType type, NPStream* npStream,
|
|
||||||
PRBool seekable, PRUint16* stype)
|
|
||||||
: type(type), npStream(npStream), seekable(seekable),
|
|
||||||
stype(stype), reason(nsPluginReason_NoReason)
|
|
||||||
{
|
|
||||||
// Set the reference count to 0.
|
|
||||||
NS_INIT_REFCNT();
|
|
||||||
}
|
|
||||||
|
|
||||||
CPluginStreamPeer::~CPluginStreamPeer(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetURL:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetURL(const char* *result)
|
|
||||||
{
|
|
||||||
*result = npStream->url;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetEnd:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetEnd(PRUint32 *result)
|
|
||||||
{
|
|
||||||
*result = npStream->end;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetLastModified:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetLastModified(PRUint32 *result)
|
|
||||||
{
|
|
||||||
*result = npStream->lastmodified;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetNotifyData:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetNotifyData(void* *result)
|
|
||||||
{
|
|
||||||
*result = npStream->notifyData;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetReason:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetReason(nsPluginReason *result)
|
|
||||||
{
|
|
||||||
*result = reason;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetMIMEType:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetMIMEType(nsMIMEType *result)
|
|
||||||
{
|
|
||||||
*result = type;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// RequestRead:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::RequestRead(nsByteRange* rangeList)
|
|
||||||
{
|
|
||||||
return fromNPError[NPN_RequestRead(npStream, (NPByteRange* )rangeList)];
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// nsISupports functions
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_IMPL_ADDREF(CPluginStreamPeer);
|
|
||||||
NS_IMPL_RELEASE(CPluginStreamPeer);
|
|
||||||
|
|
||||||
nsresult CPluginStreamPeer::QueryInterface(const nsIID& iid, void** ptr)
|
|
||||||
{
|
|
||||||
if (NULL == ptr) {
|
|
||||||
return NS_ERROR_NULL_POINTER;
|
|
||||||
}
|
|
||||||
if (iid.Equals(kISeekablePluginStreamPeerIID)) {
|
|
||||||
*ptr = (void*) ((nsISeekablePluginStreamPeer*)this);
|
|
||||||
AddRef();
|
|
||||||
return NS_OK;
|
|
||||||
} else if (iid.Equals(kIPluginStreamPeerIID) ||
|
|
||||||
iid.Equals(nsISupports::GetIID())) {
|
|
||||||
*ptr = (void*) ((nsIPluginStreamPeer*)this);
|
|
||||||
AddRef();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
return NS_NOINTERFACE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
|
@ -74,8 +74,6 @@ public:
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
UserAgent(const char* *result);
|
UserAgent(const char* *result);
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
GetURL(nsISupports* pluginInst,
|
GetURL(nsISupports* pluginInst,
|
||||||
const char* url,
|
const char* url,
|
||||||
|
@ -99,30 +97,17 @@ public:
|
||||||
PRUint32 postHeadersLength = 0,
|
PRUint32 postHeadersLength = 0,
|
||||||
const char* postHeaders = NULL);
|
const char* postHeaders = NULL);
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
/**
|
||||||
|
* RegisterService may be called explicitly to register a service
|
||||||
|
* with the service manager. If a service is not registered explicitly,
|
||||||
|
* the component manager will be used to create an instance according
|
||||||
|
* to the class ID specified.
|
||||||
|
*/
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
GetURL(nsISupports* peer, const char* url, const char* target,
|
RegisterService(const nsCID& aClass, nsISupports* aService)
|
||||||
void* notifyData = NULL, const char* altHost = NULL,
|
{
|
||||||
const char* referrer = NULL, PRBool forceJSEnabled = PR_FALSE);
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
NS_IMETHOD
|
|
||||||
PostURL(nsISupports* peer, const char* url, const char* target,
|
|
||||||
PRUint32 postDataLen, const char* postData,
|
|
||||||
PRBool isFile = PR_FALSE, void* notifyData = NULL,
|
|
||||||
const char* altHost = NULL, const char* referrer = NULL,
|
|
||||||
PRBool forceJSEnabled = PR_FALSE,
|
|
||||||
PRUint32 postHeadersLength = 0, const char* postHeaders = NULL);
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
NS_IMETHOD
|
|
||||||
GetService(const nsCID& aClass, const nsIID& aIID,
|
|
||||||
nsISupports* *result,
|
|
||||||
nsIShutdownListener* shutdownListener = NULL);
|
|
||||||
|
|
||||||
NS_IMETHOD
|
|
||||||
ReleaseService(const nsCID& aClass, nsISupports* service,
|
|
||||||
nsIShutdownListener* shutdownListener = NULL);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests a service to be shut down, possibly unloading its DLL.
|
* Requests a service to be shut down, possibly unloading its DLL.
|
||||||
|
@ -135,7 +120,34 @@ public:
|
||||||
* a shutdown listener.
|
* a shutdown listener.
|
||||||
*/
|
*/
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
ShutdownService(const nsCID& aClass) { return NS_OK; }
|
UnregisterService(const nsCID& aClass)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
GetService(const nsCID& aClass, const nsIID& aIID,
|
||||||
|
nsISupports* *result,
|
||||||
|
nsIShutdownListener* shutdownListener = NULL);
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
ReleaseService(const nsCID& aClass, nsISupports* service,
|
||||||
|
nsIShutdownListener* shutdownListener = NULL);
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
GetService(const char* aProgID, const nsIID& aIID,
|
||||||
|
nsISupports* *result,
|
||||||
|
nsIShutdownListener* shutdownListener = NULL)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHOD
|
||||||
|
ReleaseService(const char* aProgID, nsISupports* service,
|
||||||
|
nsIShutdownListener* shutdownListener = NULL)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates a block of memory of a particular size.
|
* Allocates a block of memory of a particular size.
|
||||||
|
@ -316,15 +328,12 @@ protected:
|
||||||
char** values_list;
|
char** values_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
|
|
||||||
class CPluginStreamInfo : public nsIPluginStreamInfo {
|
class CPluginStreamInfo : public nsIPluginStreamInfo {
|
||||||
public:
|
public:
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
CPluginStreamInfo(nsIPluginInputStream* inStr, nsMIMEType type, PRBool seekable)
|
CPluginStreamInfo(const char* URL, nsIPluginInputStream* inStr, nsMIMEType type, PRBool seekable)
|
||||||
: mInputStream(inStr), mMimeType(type), mIsSeekable(seekable) {}
|
: mURL(URL), mInputStream(inStr), mMimeType(type), mIsSeekable(seekable) {}
|
||||||
|
|
||||||
virtual ~CPluginStreamInfo() {}
|
virtual ~CPluginStreamInfo() {}
|
||||||
|
|
||||||
|
@ -354,6 +363,13 @@ public:
|
||||||
return mInputStream->GetLastModified(result);
|
return mInputStream->GetLastModified(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_METHOD
|
||||||
|
GetURL(const char** result)
|
||||||
|
{
|
||||||
|
*result = mURL;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_METHOD
|
NS_METHOD
|
||||||
RequestRead(nsByteRange* rangeList)
|
RequestRead(nsByteRange* rangeList)
|
||||||
{
|
{
|
||||||
|
@ -361,6 +377,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
const char* mURL;
|
||||||
nsIPluginInputStream* mInputStream;
|
nsIPluginInputStream* mInputStream;
|
||||||
nsMIMEType mMimeType;
|
nsMIMEType mMimeType;
|
||||||
PRBool mIsSeekable;
|
PRBool mIsSeekable;
|
||||||
|
@ -445,9 +462,9 @@ public:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsIPluginStreamInfo* CreatePluginStreamInfo(nsMIMEType type, PRBool seekable) {
|
nsIPluginStreamInfo* CreatePluginStreamInfo(const char* url, nsMIMEType type, PRBool seekable) {
|
||||||
if (mStreamInfo == NULL) {
|
if (mStreamInfo == NULL) {
|
||||||
mStreamInfo = new CPluginStreamInfo(this, type, seekable);
|
mStreamInfo = new CPluginStreamInfo(url, this, type, seekable);
|
||||||
mStreamInfo->AddRef();
|
mStreamInfo->AddRef();
|
||||||
}
|
}
|
||||||
return mStreamInfo;
|
return mStreamInfo;
|
||||||
|
@ -469,74 +486,6 @@ protected:
|
||||||
nsIPluginStreamInfo* mStreamInfo;
|
nsIPluginStreamInfo* mStreamInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// CPluginStreamPeer
|
|
||||||
//
|
|
||||||
// This is the dummy stream peer that interacts with the 5.0 plugin.
|
|
||||||
//
|
|
||||||
class CPluginStreamPeer : public nsISeekablePluginStreamPeer, public nsIPluginStreamPeer {
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
CPluginStreamPeer(nsMIMEType type, NPStream* npStream,
|
|
||||||
PRBool seekable, PRUint16* stype);
|
|
||||||
virtual ~CPluginStreamPeer();
|
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS
|
|
||||||
|
|
||||||
// (Corresponds to NPStream's url field.)
|
|
||||||
NS_IMETHOD
|
|
||||||
GetURL(const char* *result);
|
|
||||||
|
|
||||||
// (Corresponds to NPStream's end field.)
|
|
||||||
NS_IMETHOD
|
|
||||||
GetEnd(PRUint32 *result);
|
|
||||||
|
|
||||||
// (Corresponds to NPStream's lastmodified field.)
|
|
||||||
NS_IMETHOD
|
|
||||||
GetLastModified(PRUint32 *result);
|
|
||||||
|
|
||||||
// (Corresponds to NPStream's notifyData field.)
|
|
||||||
NS_IMETHOD
|
|
||||||
GetNotifyData(void* *result);
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// From nsIPluginStreamPeer
|
|
||||||
//
|
|
||||||
|
|
||||||
// Corresponds to NPP_DestroyStream's reason argument.
|
|
||||||
NS_IMETHOD
|
|
||||||
GetReason(nsPluginReason *result);
|
|
||||||
|
|
||||||
// Corresponds to NPP_NewStream's MIMEType argument.
|
|
||||||
NS_IMETHOD
|
|
||||||
GetMIMEType(nsMIMEType *result);
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// From nsISeekablePluginStreamPeer
|
|
||||||
//
|
|
||||||
|
|
||||||
// Corresponds to NPN_RequestRead.
|
|
||||||
NS_IMETHOD
|
|
||||||
RequestRead(nsByteRange* rangeList);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
nsMIMEType type;
|
|
||||||
NPStream* npStream;
|
|
||||||
PRBool seekable;
|
|
||||||
PRUint16* stype;
|
|
||||||
nsPluginReason reason;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifdef XP_UNIX
|
#ifdef XP_UNIX
|
||||||
|
@ -582,15 +531,11 @@ nsIPlugin* thePlugin = NULL;
|
||||||
// Interface IDs for nsISupports
|
// Interface IDs for nsISupports
|
||||||
//
|
//
|
||||||
NS_DEFINE_IID(kPluginCID, NS_PLUGIN_CID);
|
NS_DEFINE_IID(kPluginCID, NS_PLUGIN_CID);
|
||||||
NS_DEFINE_IID(kCAllocatorCID, NS_ALLOCATOR_CID);
|
static NS_DEFINE_IID(kPluginManagerCID, NS_PLUGINMANAGER_CID);
|
||||||
|
static NS_DEFINE_IID(kAllocatorCID, NS_ALLOCATOR_CID);
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
NS_DEFINE_IID(kIPluginStreamInfoIID, NS_IPLUGINSTREAMINFO_IID);
|
NS_DEFINE_IID(kIPluginStreamInfoIID, NS_IPLUGINSTREAMINFO_IID);
|
||||||
NS_DEFINE_IID(kIPluginInputStreamIID, NS_IPLUGININPUTSTREAM_IID);
|
NS_DEFINE_IID(kIPluginInputStreamIID, NS_IPLUGININPUTSTREAM_IID);
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
NS_DEFINE_IID(kIPluginStreamPeerIID, NS_IPLUGINSTREAMPEER_IID);
|
|
||||||
NS_DEFINE_IID(kISeekablePluginStreamPeerIID, NS_ISEEKABLEPLUGINSTREAMPEER_IID);
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
// mapping from NPError to nsresult
|
// mapping from NPError to nsresult
|
||||||
nsresult fromNPError[] = {
|
nsresult fromNPError[] = {
|
||||||
|
@ -920,44 +865,18 @@ NPP_NewStream(NPP instance,
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return NPERR_INVALID_INSTANCE_ERROR;
|
return NPERR_INVALID_INSTANCE_ERROR;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->notifyData;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->notifyData;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return NPERR_GENERIC_ERROR;
|
return NPERR_GENERIC_ERROR;
|
||||||
|
|
||||||
nsIPluginStreamInfo* info = inStr->CreatePluginStreamInfo(type, seekable);
|
nsIPluginStreamInfo* info = inStr->CreatePluginStreamInfo(stream->url, type, seekable);
|
||||||
nsresult err = inStr->GetListener()->OnStartBinding(stream->url, info);
|
nsresult err = inStr->GetListener()->OnStartBinding(info);
|
||||||
if (err) return err;
|
if (err) return err;
|
||||||
|
|
||||||
inStr->SetStreamInfo(instance, stream);
|
inStr->SetStreamInfo(instance, stream);
|
||||||
stream->pdata = inStr;
|
stream->pdata = inStr;
|
||||||
*stype = inStr->GetStreamType();
|
*stype = inStr->GetStreamType();
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
// Create a new plugin stream peer and plugin stream.
|
|
||||||
CPluginStreamPeer* speer = new CPluginStreamPeer((nsMIMEType)type, stream,
|
|
||||||
(PRBool)seekable, stype);
|
|
||||||
if (speer == NULL) return NPERR_OUT_OF_MEMORY_ERROR;
|
|
||||||
speer->AddRef();
|
|
||||||
|
|
||||||
nsIPluginStream* pluginStream = NULL;
|
|
||||||
CPluginInstancePeer* peer = (CPluginInstancePeer*) instance->pdata;
|
|
||||||
nsIPluginInstance* pluginInstance = peer->GetInstance();
|
|
||||||
nsresult err = pluginInstance->NewStream(speer, &pluginStream);
|
|
||||||
if (err) return NPERR_OUT_OF_MEMORY_ERROR;
|
|
||||||
speer->Release();
|
|
||||||
|
|
||||||
if (pluginStream == NULL)
|
|
||||||
return NPERR_OUT_OF_MEMORY_ERROR;
|
|
||||||
|
|
||||||
stream->pdata = (void*) pluginStream;
|
|
||||||
err = pluginStream->GetStreamType((nsPluginStreamType*)stype);
|
|
||||||
assert(err == NS_OK);
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
return NPERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -975,22 +894,10 @@ NPP_WriteReady(NPP instance, NPStream *stream)
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
return NP_MAXREADY;
|
return NP_MAXREADY;
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
nsIPluginStream* theStream = (nsIPluginStream*) stream->pdata;
|
|
||||||
if( theStream == 0 )
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 8192;
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1007,28 +914,14 @@ NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
nsresult err = inStr->SetReadBuffer((PRUint32)len, (const char*)buffer);
|
nsresult err = inStr->SetReadBuffer((PRUint32)len, (const char*)buffer);
|
||||||
if (err != NS_OK) return -1;
|
if (err != NS_OK) return -1;
|
||||||
err = inStr->GetListener()->OnDataAvailable(stream->url, inStr, offset, len, inStr->GetPluginStreamInfo());
|
err = inStr->GetListener()->OnDataAvailable(inStr->GetPluginStreamInfo(), inStr, len);
|
||||||
if (err != NS_OK) return -1;
|
if (err != NS_OK) return -1;
|
||||||
return len;
|
return len;
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
nsIPluginStream* theStream = (nsIPluginStream*) stream->pdata;
|
|
||||||
if( theStream == 0 )
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
PRUint32 count;
|
|
||||||
nsresult err = theStream->Write((const char* )buffer, offset, len, &count);
|
|
||||||
return (err == NS_OK) ? count : -1;
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
@ -1047,26 +940,13 @@ NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason)
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return NPERR_INVALID_INSTANCE_ERROR;
|
return NPERR_INVALID_INSTANCE_ERROR;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return NPERR_GENERIC_ERROR;
|
return NPERR_GENERIC_ERROR;
|
||||||
inStr->GetListener()->OnStopBinding(stream->url, (nsPluginReason)reason, inStr->GetPluginStreamInfo());
|
inStr->GetListener()->OnStopBinding(inStr->GetPluginStreamInfo(), (nsPluginReason)reason);
|
||||||
// inStr->Release();
|
// inStr->Release();
|
||||||
stream->pdata = NULL;
|
stream->pdata = NULL;
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
nsIPluginStream* theStream = (nsIPluginStream*) stream->pdata;
|
|
||||||
if( theStream == 0 )
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
|
|
||||||
theStream->Release();
|
|
||||||
stream->pdata = NULL;
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
return NPERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1083,22 +963,10 @@ NPP_StreamAsFile(NPP instance, NPStream *stream, const char* fname)
|
||||||
if (instance == NULL)
|
if (instance == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
CPluginInputStream* inStr = (CPluginInputStream*)stream->pdata;
|
||||||
if (inStr == NULL)
|
if (inStr == NULL)
|
||||||
return;
|
return;
|
||||||
(void)inStr->GetListener()->OnFileAvailable(stream->url, fname);
|
(void)inStr->GetListener()->OnFileAvailable(inStr->GetPluginStreamInfo(), fname);
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
nsIPluginStream* theStream = (nsIPluginStream*) stream->pdata;
|
|
||||||
if( theStream == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
theStream->AsFile( fname );
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
@ -1132,19 +1000,9 @@ NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
|
||||||
// TRACE("NPP_URLNotify\n");
|
// TRACE("NPP_URLNotify\n");
|
||||||
|
|
||||||
if (instance != NULL) {
|
if (instance != NULL) {
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInputStream* inStr = (CPluginInputStream*)notifyData;
|
CPluginInputStream* inStr = (CPluginInputStream*)notifyData;
|
||||||
(void)inStr->GetListener()->OnStopBinding(url, (nsPluginReason)reason, inStr->GetPluginStreamInfo());
|
(void)inStr->GetListener()->OnStopBinding(inStr->GetPluginStreamInfo(), (nsPluginReason)reason);
|
||||||
inStr->Release();
|
inStr->Release();
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
CPluginInstancePeer* peer = (CPluginInstancePeer*) instance->pdata;
|
|
||||||
nsIPluginInstance* pluginInstance = peer->GetInstance();
|
|
||||||
pluginInstance->URLNotify(url, NULL, (nsPluginReason)reason, notifyData);
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1223,8 +1081,6 @@ CPluginManager::ReloadPlugins(PRBool reloadPages)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
NS_METHOD
|
NS_METHOD
|
||||||
CPluginManager::GetURL(nsISupports* pluginInst,
|
CPluginManager::GetURL(nsISupports* pluginInst,
|
||||||
const char* url,
|
const char* url,
|
||||||
|
@ -1319,92 +1175,13 @@ CPluginManager::PostURL(nsISupports* pluginInst,
|
||||||
return fromNPError[err];
|
return fromNPError[err];
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
// (Corresponds to NPN_GetURL and NPN_GetURLNotify.)
|
|
||||||
// notifyData: When present, URLNotify is called passing the notifyData back
|
|
||||||
// to the client. When NULL, this call behaves like NPN_GetURL.
|
|
||||||
// New arguments:
|
|
||||||
// peer: A plugin instance peer. The peer's window will be used to display
|
|
||||||
// progress information. If NULL, the load happens in the background.
|
|
||||||
// altHost: An IP-address string that will be used instead of the host
|
|
||||||
// specified in the URL. This is used to prevent DNS-spoofing attacks.
|
|
||||||
// Can be defaulted to NULL meaning use the host in the URL.
|
|
||||||
// referrer:
|
|
||||||
// forceJSEnabled: Forces JavaScript to be enabled for 'javascript:' URLs,
|
|
||||||
// even if the user currently has JavaScript disabled.
|
|
||||||
NS_METHOD
|
|
||||||
CPluginManager::GetURL(nsISupports* pinst, const char* url, const char* target,
|
|
||||||
void* notifyData, const char* altHost,
|
|
||||||
const char* referrer, PRBool forceJSEnabled)
|
|
||||||
{
|
|
||||||
nsIPluginInstance* inst = NULL;
|
|
||||||
nsresult rslt = pinst->QueryInterface(nsIPluginInstance::GetIID(), (void**)&inst);
|
|
||||||
if (rslt != NS_OK) return rslt;
|
|
||||||
CPluginInstancePeer* instancePeer = NULL;
|
|
||||||
rslt = inst->GetPeer((nsIPluginInstancePeer**)&instancePeer);
|
|
||||||
if (rslt != NS_OK) {
|
|
||||||
inst->Release();
|
|
||||||
return rslt;
|
|
||||||
}
|
|
||||||
NPP npp = instancePeer->GetNPPInstance();
|
|
||||||
|
|
||||||
NPError err;
|
|
||||||
// Call the correct GetURL* function.
|
|
||||||
// This is determinded by checking notifyData.
|
|
||||||
if (notifyData == NULL) {
|
|
||||||
err = NPN_GetURL(npp, url, target);
|
|
||||||
} else {
|
|
||||||
err = NPN_GetURLNotify(npp, url, target, notifyData);
|
|
||||||
}
|
|
||||||
instancePeer->Release();
|
|
||||||
inst->Release();
|
|
||||||
return fromNPError[err];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginManager::PostURL(nsISupports* pinst, const char* url, const char* target,
|
|
||||||
PRUint32 postDataLen, const char* postData,
|
|
||||||
PRBool isFile, void* notifyData,
|
|
||||||
const char* altHost, const char* referrer,
|
|
||||||
PRBool forceJSEnabled,
|
|
||||||
PRUint32 postHeadersLength, const char* postHeaders)
|
|
||||||
{
|
|
||||||
nsIPluginInstance* inst = NULL;
|
|
||||||
nsresult rslt = pinst->QueryInterface(nsIPluginInstance::GetIID(), (void**)&inst);
|
|
||||||
if (rslt != NS_OK) return rslt;
|
|
||||||
CPluginInstancePeer* instancePeer = NULL;
|
|
||||||
rslt = inst->GetPeer((nsIPluginInstancePeer**)&instancePeer);
|
|
||||||
if (rslt != NS_OK) {
|
|
||||||
inst->Release();
|
|
||||||
return rslt;
|
|
||||||
}
|
|
||||||
NPP npp = instancePeer->GetNPPInstance();
|
|
||||||
|
|
||||||
NPError err;
|
|
||||||
// Call the correct PostURL* function.
|
|
||||||
// This is determinded by checking notifyData.
|
|
||||||
if (notifyData == NULL) {
|
|
||||||
err = NPN_PostURL(npp, url, target, postDataLen, postData, isFile);
|
|
||||||
} else {
|
|
||||||
err = NPN_PostURLNotify(npp, url, target, postDataLen, postData, isFile, notifyData);
|
|
||||||
}
|
|
||||||
instancePeer->Release();
|
|
||||||
inst->Release();
|
|
||||||
return fromNPError[err];
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
|
|
||||||
NS_METHOD
|
NS_METHOD
|
||||||
CPluginManager::GetService(const nsCID& aClass, const nsIID& aIID,
|
CPluginManager::GetService(const nsCID& aClass, const nsIID& aIID,
|
||||||
nsISupports* *result,
|
nsISupports* *result,
|
||||||
nsIShutdownListener* shutdownListener)
|
nsIShutdownListener* shutdownListener)
|
||||||
{
|
{
|
||||||
// the only service we support currently is nsIAllocator.
|
// the only service we support currently is nsIAllocator.
|
||||||
if (aClass.Equals(kCAllocatorCID)) {
|
if (aClass.Equals(kPluginManagerCID) || aClass.Equals(kAllocatorCID)) {
|
||||||
return QueryInterface(aIID, (void**) result);
|
return QueryInterface(aIID, (void**) result);
|
||||||
}
|
}
|
||||||
return NS_ERROR_SERVICE_NOT_FOUND;
|
return NS_ERROR_SERVICE_NOT_FOUND;
|
||||||
|
@ -1903,8 +1680,6 @@ NS_IMPL_QUERY_INTERFACE(CPluginManagerStream, nsIOutputStream::GetIID());
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifdef NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS(CPluginStreamInfo, kIPluginStreamInfoIID);
|
NS_IMPL_ISUPPORTS(CPluginStreamInfo, kIPluginStreamInfoIID);
|
||||||
|
|
||||||
CPluginInputStream::CPluginInputStream(nsIPluginStreamListener* listener)
|
CPluginInputStream::CPluginInputStream(nsIPluginStreamListener* listener)
|
||||||
|
@ -1973,128 +1748,6 @@ CPluginInputStream::RequestRead(nsByteRange* rangeList)
|
||||||
return fromNPError[err];
|
return fromNPError[err];
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// CPluginStreamPeer
|
|
||||||
//
|
|
||||||
|
|
||||||
CPluginStreamPeer::CPluginStreamPeer(nsMIMEType type, NPStream* npStream,
|
|
||||||
PRBool seekable, PRUint16* stype)
|
|
||||||
: type(type), npStream(npStream), seekable(seekable),
|
|
||||||
stype(stype), reason(nsPluginReason_NoReason)
|
|
||||||
{
|
|
||||||
// Set the reference count to 0.
|
|
||||||
NS_INIT_REFCNT();
|
|
||||||
}
|
|
||||||
|
|
||||||
CPluginStreamPeer::~CPluginStreamPeer(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetURL:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetURL(const char* *result)
|
|
||||||
{
|
|
||||||
*result = npStream->url;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetEnd:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetEnd(PRUint32 *result)
|
|
||||||
{
|
|
||||||
*result = npStream->end;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetLastModified:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetLastModified(PRUint32 *result)
|
|
||||||
{
|
|
||||||
*result = npStream->lastmodified;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetNotifyData:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetNotifyData(void* *result)
|
|
||||||
{
|
|
||||||
*result = npStream->notifyData;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetReason:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetReason(nsPluginReason *result)
|
|
||||||
{
|
|
||||||
*result = reason;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// GetMIMEType:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::GetMIMEType(nsMIMEType *result)
|
|
||||||
{
|
|
||||||
*result = type;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// RequestRead:
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_METHOD
|
|
||||||
CPluginStreamPeer::RequestRead(nsByteRange* rangeList)
|
|
||||||
{
|
|
||||||
return fromNPError[NPN_RequestRead(npStream, (NPByteRange* )rangeList)];
|
|
||||||
}
|
|
||||||
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
// nsISupports functions
|
|
||||||
//+++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
|
|
||||||
NS_IMPL_ADDREF(CPluginStreamPeer);
|
|
||||||
NS_IMPL_RELEASE(CPluginStreamPeer);
|
|
||||||
|
|
||||||
nsresult CPluginStreamPeer::QueryInterface(const nsIID& iid, void** ptr)
|
|
||||||
{
|
|
||||||
if (NULL == ptr) {
|
|
||||||
return NS_ERROR_NULL_POINTER;
|
|
||||||
}
|
|
||||||
if (iid.Equals(kISeekablePluginStreamPeerIID)) {
|
|
||||||
*ptr = (void*) ((nsISeekablePluginStreamPeer*)this);
|
|
||||||
AddRef();
|
|
||||||
return NS_OK;
|
|
||||||
} else if (iid.Equals(kIPluginStreamPeerIID) ||
|
|
||||||
iid.Equals(nsISupports::GetIID())) {
|
|
||||||
*ptr = (void*) ((nsIPluginStreamPeer*)this);
|
|
||||||
AddRef();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
return NS_NOINTERFACE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // !NEW_PLUGIN_STREAM_API
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче