NPAPI-浏览器开发之网络文件SRC下载(NPN_GetURLNotify,NPP_NewStream....)(三)

2014-11-24 02:24:22 · 作者: · 浏览: 7
n (instance len : NPERR_INVALID_INSTANCE_ERROR);
}
NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPError reason)
{
TrcMsgP("NPP_DestroyStream: Start, instance=$%X, stream=$%X, reason=$%X\n",instance,stream,reason);
CTESTNPPlugin *pPlugin = (CTESTNPPlugin *)instance->pdata;
TrcMsg("NPP_DestroyStream: Headers ...\n");
TrcMsg((const LPSTR)stream->headers);
TrcMsg("\n");
if (reason)
{
}
else
{
switch (pPlugin->m_iDownloadState)
{
case STATE_DOWNLOAD_SMALLFILE:
TrcMsgP("NPP_DestroyStream: Download of small file %s\n",(pPlugin->m_szSmallFilePath "successed":"FAILED !!!"));
break;
case STATE_DOWNLOAD_LARGEFILE:
{
OFSTRUCT of;
HFILE hFile = OpenFile(pPlugin->m_szLargeFilePath, &of, OF_EXIST);
if (hFile == HFILE_ERROR)
{
DWORD dwLastErr = GetLastError();
TrcMsgP("NPP_DestroyStream: Downloaded large file '%s' does not exist, error=$%X\n",pPlugin->m_szLargeFilePath,dwLastErr);
}
else
{
TrcMsgP("NPP_DestroyStream: Downloaded large file '%s' exists\n",pPlugin->m_szLargeFilePath);
}
break;
}
}
}
TrcMsg("NPP_DestroyStream: End\n");
return (instance NPERR_NO_ERROR : NPERR_INVALID_INSTANCE_ERROR);
}
void NPP_StreamAsFile(NPP instance, NPStream *stream, const char *fname)
{
#ifdef TEST_TRACE
TrcMsgP("NPP_StreamAsFile: instance=$%X, stream=$%X, fname=%s\n",instance,stream,fname);
#endif
if (fname)
{
CTESTNPPlugin *pPlugin = (CTESTNPPlugin *)instance->pdata;
switch (pPlugin->m_iDownloadState)
{
case STATE_DOWNLOAD_SMALLFILE:
TrcMsgP("NPP_StreamAsFile: play.png downloaded to '%s'\n",fname);
strcpy_s(pPlugin->m_szSmallFilePath, MAX_PATH, fname);
break;
case STATE_DOWNLOAD_LARGEFILE:
{
TrcMsgP("NPP_StreamAsFile: Large file downloaded to '%s'\n",fname);
strcpy_s(pPlugin->m_szLargeFilePath, MAX_PATH, fname);
break;
}
}
}
TrcMsg("NPP_StreamAsFile: End\n");
}
void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyData)
{
TrcMsgP("NPP_URLNotify: Start, instance=$%X, url='%s', reason=$%X, notifyData=$%X\n",instance,url,reason,notifyData);
CTESTNPPlugin *pPlugin = (CTESTNPPlugin *)notifyData;
switch (pPlugin->m_iDownloadState)
{
case STATE_DOWNLOAD_SMALLFILE:
TrcMsg("NPP_URLNotify: STATE_DOWNLOAD_SMALLFILE\n");
if (!pPlugin->m_szSmallFilePath[0] && (pPlugin->m_iRetries++ <= NUM_RETRIES))
{
TrcMsg("NPP_URLNotify: 'Small file download' failed, retry\n");
pPlugin->DownloadFileRetry(STATE_DOWNLOAD_SMALLFILE, pPlugin->m_szSmallFileURL);
}
else
MessageBox(NULL, "'Small file download' test complete", "Mozilla bug 644716", MB_OK|MB_SETFOREGROUND);
break;
case STATE_DOWNLOAD_LARGEFILE:
TrcMsg("