📄 jbrowserstartup.c
字号:
if (mmi_usb_is_in_mass_storage_mode())
{
mmi_usb_app_unavailable_popup(0);
g_brw_cntx.isDownloading = FALSE;
goto error_handle;
}
#endif /* __USB_IN_NORMAL_MODE__ */
if (jdd_FSInitialize(&g_brw_cntx.dwnld_fs_handle) == JC_OK)
{
jdd_FSGetDownloadFileName(&filename);
g_brw_cntx.dwnld_mime_info.psFileName = filename;
g_brw_cntx.dwnld_file_handle = jdd_FSOpen(g_brw_cntx.dwnld_fs_handle, filename, E_CREATE_APPEND_WRITE_MODE);
if (g_brw_cntx.dwnld_file_handle)
{
eRet = jdd_FSWrite(
(void*)g_brw_cntx.dwnld_mime_info.pBuffer,
g_brw_cntx.dwnld_mime_info.iBufferLen,
1, g_brw_cntx.dwnld_file_handle);
if (eRet != 1)
{
jdd_FSClose(g_brw_cntx.dwnld_file_handle);
jdd_FSDelete(g_brw_cntx.dwnld_fs_handle, g_brw_cntx.dwnld_mime_info.psFileName);
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
DisplayPopup((PU8) GetString(STR_ID_BRW_FILE_SYSTEM_FULL), IMG_GLOBAL_ERROR, 1, JBROWSER_POPUP_TIME, ERROR_TONE);
}
else
{
if (!navlist_count)
{
mmi_brw_set_data_connection_deactive_flag(E_TRUE);
mmi_brw_deinit_all();
}
jdd_FSClose(g_brw_cntx.dwnld_file_handle);
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
eRet = jdd_MimeHandler(&g_brw_cntx.dwnld_mime_info);
if (eRet != JC_OK)
{
DisplayPopup((PU8) GetString(STR_GLOBAL_ERROR), IMG_GLOBAL_ERROR, 0, JBROWSER_POPUP_TIME, ERROR_TONE);
}
}
}
else
{
DisplayPopup((PU8) GetString(STR_ID_BRW_FILE_SYSTEM_ERROR), IMG_GLOBAL_ERROR, 1, JBROWSER_POPUP_TIME, ERROR_TONE);
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
}
}
else
{
DisplayPopup((PU8) GetString(STR_ID_BRW_FILE_SYSTEM_ERROR), IMG_GLOBAL_ERROR, 1, JBROWSER_POPUP_TIME, ERROR_TONE);
}
error_handle:
mmi_brw_free_dwnld_info_memory();
}
/*****************************************************************************
* FUNCTION
* mmi_brw_cancel_save_mime_content
* DESCRIPTION
* Dont save mime content
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_brw_cancel_save_mime_content(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_UINT32 navlist_count;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
mmi_brw_free_dwnld_info_memory();
jdi_BrowserGetNavListCount(pBrowserCtxt, &navlist_count);
if (navlist_count)
{
GoBackHistory();
}
else
{
mmi_brw_set_data_connection_deactive_flag(E_TRUE);
mmi_brw_deinit_all();
GoBacknHistory(1);
}
}
/*****************************************************************************
* FUNCTION
* mmi_brw_mime_callback_hdlr
* DESCRIPTION
* mime callback handler
* PARAMETERS
* pAppArg [?]
* pMimeInfo [?]
* pBrowserFetchCallBacks [?]
* RETURNS
*
*****************************************************************************/
JC_RETCODE mmi_brw_mime_callback_hdlr(
void *pAppArg,
JC_BROWSER_MIME_INFO *pMimeInfo,
JC_BROWSER_FETCH_CALLBACKS *pBrowserFetchCallBacks)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (!(pMimeInfo->psContentType) || !pfnUnicodeStrlen(pMimeInfo->psContentType))
{
jdd_MMINotificationMessage(JC_ERR_UNKNOWN_CONTENT_TYPE, E_NOTIFICATION_ERR, NULL, NULL);
return JC_ERR_UNKNOWN_CONTENT_TYPE;
}
#ifndef WAP_SEC_SUPPORT
if (jc_strcmp(pMimeInfo->psContentType, APPLICATION_X_X509_CA_CERT_VALUE) == 0
|| jc_strcmp(pMimeInfo->psContentType, APPLICATION_X_X509_USER_CERT_VALUE) == 0
|| jc_strcmp(pMimeInfo->psContentType, APPLICATION_VND_WAP_WTLS_CA_CERTIFICATE_VALUE) == 0
|| jc_strcmp(pMimeInfo->psContentType, APPLICATION_VND_WAP_WTLS_USER_CERTIFICATE_VALUE) == 0)
{
jdd_MMINotificationMessage(JC_ERR_UNKNOWN_CONTENT_TYPE_PROCESSED, E_NOTIFICATION_ERR, NULL, NULL);
return JC_ERR_UNKNOWN_CONTENT_TYPE;
}
#endif // if defined WAP_SEC_SUPPORT
if ((jdi_UtilsStartsWith(pMimeInfo->psContentType, "application/vnd.oma.drm.rights+xml") == 0) ||
(jdi_UtilsStartsWith(pMimeInfo->psContentType, "application/vnd.oma.drm.rights+wbxml") == 0))
{
pBrowserFetchCallBacks->CB_browserFetchHeaderInfo = mmi_brw_drm_rights_header_info_callback_hdlr;
pBrowserFetchCallBacks->CB_browserFetchResponseInfo = mmi_brw_drm_rights_fetch_indication_info_callback_hdlr;
pBrowserFetchCallBacks->CB_browserFetchErrorInfo = mmi_brw_drm_rights_fetch_error_info_callback_hdlr;
}
else
{
g_brw_cntx.isDownloading = FALSE;
g_brw_cntx.isDownloadSuspended = FALSE;
g_brw_cntx.showDownloadAbortedPopup = FALSE;
#ifdef __JBROWSER_DLS_SUPPORT__
pBrowserFetchCallBacks->CB_browserFetchHeaderInfo = mmi_brw_dls_header_info_callback_hdlr;
pBrowserFetchCallBacks->CB_browserFetchResponseInfo = mmi_brw_dls_fetch_indication_info_callback_hdlr;
pBrowserFetchCallBacks->CB_browserFetchErrorInfo = mmi_brw_dls_fetch_error_info_callback_hdlr;
#else
pBrowserFetchCallBacks->CB_browserFetchHeaderInfo = mmi_brw_header_info_callback_hdlr;
pBrowserFetchCallBacks->CB_browserFetchResponseInfo = mmi_brw_fetch_indication_info_callback_hdlr;
pBrowserFetchCallBacks->CB_browserFetchErrorInfo = mmi_brw_fetch_error_info_callback_hdlr;
#endif /* __JBROWSER_DLS_SUPPORT__*/
}
return JC_OK;
}
/*****************************************************************************
* FUNCTION
* mmi_brw_drm_rights_header_info_callback_hdlr
* DESCRIPTION
*
* PARAMETERS
* pAppArg [?]
* pBrowserHeaderIndication [?]
* RETURNS
*
*****************************************************************************/
JC_RETCODE mmi_brw_drm_rights_header_info_callback_hdlr(
void *pAppArg,
COMM_HEADER_INDICATION *pBrowserHeaderIndication)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_CHAR *filename;
JC_RETCODE eRet = JC_OK;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
g_brw_cntx.showDownloadAbortedPopup = TRUE;
#ifdef __USB_IN_NORMAL_MODE__
if (mmi_usb_is_in_mass_storage_mode())
{
mmi_usb_app_unavailable_popup(0);
jdi_BrowserFetchStop(pBrowserCtxt);
g_brw_cntx.showDownloadAbortedPopup = FALSE;
goto error_handle;
}
#endif /* __USB_IN_NORMAL_MODE__ */
memset((void*)&g_brw_cntx.dwnld_mime_info, 0, sizeof(JC_MIME_INFO));
eRet = jdd_FSInitialize(&g_brw_cntx.dwnld_fs_handle);
if (eRet == JC_OK)
{
jdd_FSGetDownloadFileName(&filename);
g_brw_cntx.dwnld_mime_info.psFileName = filename;
g_brw_cntx.dwnld_file_handle = jdd_FSOpen(g_brw_cntx.dwnld_fs_handle, filename, E_CREATE_APPEND_WRITE_MODE);
if (!g_brw_cntx.dwnld_file_handle)
{
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
eRet = JC_ERR_FILE_OPEN;
goto error_handle;
}
}
else
{
goto error_handle;
}
g_brw_cntx.total_content_length = 0;
g_brw_cntx.downloaded_content_length = 0;
g_brw_cntx.dwnld_mime_info.psContentType = jdi_UtilsStrdup(pBrowserHeaderIndication->pszContentType);
g_brw_cntx.dwnld_mime_info.psUrl = jdi_UtilsTcsDup(pBrowserHeaderIndication->psUrl);
if (pBrowserHeaderIndication->uiContentLength)
{
g_brw_cntx.total_content_length = pBrowserHeaderIndication->uiContentLength;
g_brw_cntx.dwnld_mime_info.iBufferLen = pBrowserHeaderIndication->uiContentLength;
}
g_brw_page_cntx.brw_PageFetchStatus = 0;
return JC_OK;
error_handle:
if(g_brw_cntx.dwnld_mime_info.psFileName)
{
jdd_MemFree(g_brw_cntx.dwnld_mime_info.psFileName);
g_brw_cntx.dwnld_mime_info.psFileName = NULL;
}
return eRet;
}
/*****************************************************************************
* FUNCTION
* mmi_brw_drm_rights_fetch_indication_info_callback_hdlr
* DESCRIPTION
*
* PARAMETERS
* pAppArg [?]
* pBrowserFetchURLIndResp [?]
* RETURNS
*
*****************************************************************************/
JC_RETCODE mmi_brw_drm_rights_fetch_indication_info_callback_hdlr(
void *pAppArg,
COMM_FETCH_URL_IND_RESP *pBrowserFetchURLIndResp)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_RETCODE eRet;
JC_UINT32 navlist_count;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if ((pBrowserFetchURLIndResp->bHasMoreData)
|| (!pBrowserFetchURLIndResp->bHasMoreData && pBrowserFetchURLIndResp->uiCurrentLength))
{
g_brw_cntx.downloaded_content_length += pBrowserFetchURLIndResp->uiCurrentLength;
eRet = jdd_FSWrite(
(void*)pBrowserFetchURLIndResp->pucBuffer,
pBrowserFetchURLIndResp->uiCurrentLength,
1,
g_brw_cntx.dwnld_file_handle);
if (eRet != 1)
{
jdd_FSClose(g_brw_cntx.dwnld_file_handle);
jdd_FSDelete(g_brw_cntx.dwnld_fs_handle, g_brw_cntx.dwnld_mime_info.psFileName);
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
if (IsScreenPresent(SCR_ID_BRW_JBROWSER_MAIN))
{
g_brw_page_cntx.brw_pageRenderStatus = 1;
}
goto error_handle;
}
}
if (!pBrowserFetchURLIndResp->bHasMoreData)
{
jdd_FSClose(g_brw_cntx.dwnld_file_handle);
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
if(IsScreenPresent(SCR_FMGR_DA_FILE_OPTION))
{
ClearExitHandler();
}
jdi_BrowserGetNavListCount(pBrowserCtxt, &navlist_count);
if (!navlist_count)
{
mmi_brw_set_data_connection_deactive_flag(E_TRUE);
mmi_brw_deinit_event();
}
if (IsScreenPresent(SCR_ID_BRW_JBROWSER_MAIN))
{
g_brw_page_cntx.brw_pageRenderStatus = 1;
}
eRet = jdd_MimeHandler(&g_brw_cntx.dwnld_mime_info);
goto error_handle;
}
return JC_OK;
error_handle:
mmi_brw_free_dwnld_info_memory();
return eRet;
}
/*****************************************************************************
* FUNCTION
* mmi_brw_drm_rights_fetch_error_info_callback_hdlr
* DESCRIPTION
*
* PARAMETERS
* pAppArg [?]
* uiReferenceID [IN]
* eRet [IN]
* RETURNS
* void
*****************************************************************************/
void mmi_brw_drm_rights_fetch_error_info_callback_hdlr(void *pAppArg, JC_UINT32 uiReferenceID, JC_RETCODE eRet)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_brw_cntx.dwnld_file_handle)
{
jdd_FSClose(g_brw_cntx.dwnld_file_handle);
jdd_FSDelete(g_brw_cntx.dwnld_fs_handle, g_brw_cntx.dwnld_mime_info.psFileName);
}
mmi_brw_free_dwnld_info_memory();
if (g_brw_cntx.dwnld_fs_handle)
{
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -