📄 jbrowserstartup.c
字号:
if(g_brw_cntx.showDownloadAbortedPopup)
{
DisplayPopup((PU8) GetString(STR_GLOBAL_ERROR), IMG_GLOBAL_ERROR, 1, JBROWSER_POPUP_TIME, ERROR_TONE);
}
}
#ifdef __JBROWSER_DLS_SUPPORT__
/*****************************************************************************
* FUNCTION
* mmi_brw_dls_header_info_callback_hdlr
* DESCRIPTION
*
* PARAMETERS
* pAppArg [?]
* pBrowserHeaderIndication [?]
* RETURNS
* JC_RETCODE
*****************************************************************************/
JC_RETCODE mmi_brw_dls_header_info_callback_hdlr(void *pAppArg, COMM_HEADER_INDICATION *pBrowserHeaderIndication)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_RETCODE eRet;
JC_UINT32 navlist_count;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "ENTER: mmi_brw_dls_header_info_callback_hdlr"));
eRet = jdi_BrowserSuspendRequest(pBrowserCtxt);
if (eRet != JC_OK)
{
jdi_BrowserFetchStop(pBrowserCtxt);
return eRet;
}
g_brw_cntx.isDownloadSuspended = TRUE;
g_brw_cntx.total_content_length = 0;
g_brw_cntx.downloaded_content_length = 0;
g_brw_dls_cntx.session_id = pBrowserHeaderIndication->uiRequestID;
g_brw_dls_cntx.seq_num = 0;
g_brw_dls_cntx.progress_flag = TRUE;
if (pBrowserHeaderIndication->uiContentLength)
{
g_brw_cntx.total_content_length = pBrowserHeaderIndication->uiContentLength;
}
g_brw_page_cntx.brw_PageFetchStatus = 0;
// PMTSW00006571 Start
jdi_BrowserGetNavListCount(pBrowserCtxt, &navlist_count);
if (!navlist_count)
{
ClearExitHandler();
}
// PMTSW00006571 End
mmi_brw_dls_send_file_dl_ind(pBrowserHeaderIndication);
return JC_OK;
}
/*****************************************************************************
* FUNCTION
* mmi_brw_dls_fetch_indication_info_callback_hdlr
* DESCRIPTION
*
* PARAMETERS
* pAppArg [?]
* pBrowserFetchURLIndResp [?]
* RETURNS
* void
*****************************************************************************/
JC_RETCODE mmi_brw_dls_fetch_indication_info_callback_hdlr(void *pAppArg, COMM_FETCH_URL_IND_RESP *pBrowserFetchURLIndResp)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_RETCODE eRet;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)(%d)", "ENTER: mmi_brw_dls_fetch_indication_info_callback_hdlr", pBrowserFetchURLIndResp->uiCurrentLength, pBrowserFetchURLIndResp->bHasMoreData));
if (g_brw_cntx.isDownloading == TRUE )
{
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)
{
if ( g_brw_dls_cntx.progress_flag == TRUE )
mmi_brw_dls_send_file_dl_progress_ind(WAP_DL_STATUS_DOWNLOADING,WAP_DL_ERROR_OK);
}
else
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "ERROR: jdd_FSWrite", eRet));
g_brw_cntx.isDownloading = FALSE;
jdd_FSClose(g_brw_cntx.dwnld_file_handle);
g_brw_cntx.dwnld_file_handle = NULL;
if (g_brw_dls_cntx.p_file_name != NULL)
{
jdd_MemFree(g_brw_dls_cntx.p_file_name);
g_brw_dls_cntx.p_file_name = NULL;
}
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
g_brw_cntx.dwnld_fs_handle = NULL;
jdi_BrowserFetchStop(pBrowserCtxt);
switch (eRet)
{
case JC_ERR_FILE_INVALID_PATH:
mmi_brw_dls_send_file_dl_progress_ind(WAP_DL_STATUS_ABORTED, WAP_DL_ERROR_INVALID_FILE);
break;
case JC_ERR_FILE_FULL:
mmi_brw_dls_send_file_dl_progress_ind(WAP_DL_STATUS_ABORTED, WAP_DL_ERROR_DISK_FULL);
break;
case JC_ERR_FILE_INVALID_ACCESS:
default:
mmi_brw_dls_send_file_dl_progress_ind(WAP_DL_STATUS_ABORTED, WAP_DL_ERROR_FILE_ACCESS);
break;
}
return eRet;
}
}
if (!pBrowserFetchURLIndResp->bHasMoreData)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Download Complete"));
g_brw_cntx.isDownloading = FALSE;
if (g_brw_cntx.dwnld_file_handle)
{
jdd_FSClose(g_brw_cntx.dwnld_file_handle);
g_brw_cntx.dwnld_file_handle = NULL;
if (g_brw_dls_cntx.p_file_name!=NULL)
{
jdd_MemFree(g_brw_dls_cntx.p_file_name);
g_brw_dls_cntx.p_file_name = NULL;
}
}
if (g_brw_cntx.dwnld_fs_handle)
{
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
g_brw_cntx.dwnld_fs_handle = NULL;
}
if (IsScreenPresent(SCR_ID_BRW_JBROWSER_MAIN))
{
g_brw_page_cntx.brw_pageRenderStatus = 1;
}
mmi_brw_dls_send_file_dl_progress_ind(WAP_DL_STATUS_COMPLETE,WAP_DL_ERROR_OK);
}
}
else
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "EXIT: mmi_brw_dls_fetch_indication_info_callback_hdlr and g_brw_cntx.isDownloading is False" ));
return JC_OK;
}
return JC_OK;
}
/*****************************************************************************
* FUNCTION
* mmi_brw_dls_fetch_error_info_callback_hdlr
* DESCRIPTION
*
* PARAMETERS
* pAppArg [?]
* uiReferenceID [IN]
* eRet [IN]
* RETURNS
* void
*****************************************************************************/
void mmi_brw_dls_fetch_error_info_callback_hdlr(void *pAppArg, JC_UINT32 uiReferenceID, JC_RETCODE eRet)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)(%d)", "ENTER: mmi_brw_dls_fetch_error_info_callback_hdlr", g_brw_cntx.isDownloading, g_brw_cntx.isDownloadSuspended));
if ( g_brw_cntx.isDownloading == TRUE ) // Connection loss while downloading
{
mmi_brw_dls_send_file_dl_progress_ind(WAP_DL_STATUS_ABORTED,WAP_DL_ERROR_CONNECTION_CLOSED);
}
g_brw_cntx.isDownloading = FALSE;
g_brw_cntx.isDownloadSuspended = FALSE;
if (g_brw_cntx.dwnld_file_handle)
{
jdd_FSClose(g_brw_cntx.dwnld_file_handle);
g_brw_cntx.dwnld_file_handle = NULL;
if (g_brw_dls_cntx.p_file_name != NULL && g_brw_cntx.dwnld_fs_handle != NULL)
{
jdd_FSDelete(g_brw_cntx.dwnld_fs_handle, g_brw_dls_cntx.p_file_name); // Delete file
jdd_MemFree(g_brw_dls_cntx.p_file_name);
g_brw_dls_cntx.p_file_name = NULL;
}
}
if (g_brw_cntx.dwnld_fs_handle)
{
jdd_FSDeinitialize(g_brw_cntx.dwnld_fs_handle);
g_brw_cntx.dwnld_fs_handle = NULL;
}
}
/*****************************************************************************
* FUNCTION
* mmi_brw_dls_send_file_dl_ind
* DESCRIPTION
* To send file download indication to DA
* PARAMETERS
* pBrowserHeaderIndication [?]
* RETURNS
* void
*****************************************************************************/
void mmi_brw_dls_send_file_dl_ind(COMM_HEADER_INDICATION *pBrowserHeaderIndication)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MYQUEUE Message;
wap_mmi_file_dl_ind_struct *p_dl_ind_st = NULL;
wap_mmi_file_dl_var_struct *p_dl_var_st = NULL;
peer_buff_struct *peer_buff_ptr = NULL;
U16 peer_pdu_len = 0;
JC_CHAR *tempFileName;
FS_HANDLE fHandle;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "ENTER: mmi_brw_dls_send_file_dl_ind"));
p_dl_ind_st = (wap_mmi_file_dl_ind_struct*) construct_local_para(sizeof(wap_mmi_file_dl_ind_struct), TD_CTRL);
p_dl_ind_st->session_id = pBrowserHeaderIndication->uiRequestID;
pfnUnicodeStrcpy((S8*)p_dl_ind_st->url, (S8*) pBrowserHeaderIndication->psUrl);
mmi_brw_dls_set_file_name(p_dl_ind_st->url, '/'); // Get file name in g_brw_dls_cntx.p_file_name
if(g_brw_dls_cntx.p_file_name != NULL)
{
fHandle = FS_GetAttributes (g_brw_dls_cntx.p_file_name);
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "FS_GetAttributes returns", fHandle));
}
if ( g_brw_dls_cntx.p_file_name == NULL || fHandle == FS_INVALID_FILENAME )
{
// File Name is not valid. Creating a temp file name
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Invalid file name"));
if (g_brw_dls_cntx.p_file_name != NULL )
{
jdd_MemFree(g_brw_dls_cntx.p_file_name);
g_brw_dls_cntx.p_file_name = NULL;
}
jdd_FSGetDownloadFileName(&tempFileName);
mmi_brw_dls_set_file_name((U8*)tempFileName, '\\'); // Get file name in g_brw_dls_cntx.p_file_name
jdd_MemFree(tempFileName);
}
pfnUnicodeStrcpy((S8*)p_dl_ind_st->file_name ,(S8*) g_brw_dls_cntx.p_file_name);
jdd_MemFree(g_brw_dls_cntx.p_file_name);
g_brw_dls_cntx.p_file_name = NULL;
pfnUnicodeStrcpy((S8*)p_dl_ind_st->mime_type, pBrowserHeaderIndication->pszContentType);
p_dl_ind_st->file_length = pBrowserHeaderIndication->uiContentLength;
peer_buff_ptr = (peer_buff_struct*)construct_peer_buff(sizeof(wap_mmi_file_dl_var_struct), 0, 0, TD_CTRL);
p_dl_var_st = get_pdu_ptr(peer_buff_ptr, &peer_pdu_len);
if(p_dl_var_st)
{
p_dl_var_st->content_len = pBrowserHeaderIndication->uiHeaderLength;
pfnUnicodeStrcpy((S8*)p_dl_var_st->content, (S8*)pBrowserHeaderIndication->pucHeader ) ;
}
Message.oslSrcId = MOD_WAP;
Message.oslDestId = MOD_MMI;
Message.oslMsgId = MSG_ID_WAP_MMI_FILE_DL_IND;
Message.oslDataPtr = (oslParaType*) p_dl_ind_st;
Message.oslPeerBuffPtr = peer_buff_ptr;
OslMsgSendExtQueue(&Message);
}
/*****************************************************************************
* FUNCTION
* mmi_brw_dls_file_dl_res_hdlr
* DESCRIPTION
* To handle response message of file download indication from DA
* PARAMETERS
* Msg [?]
* RETURNS
* void
*****************************************************************************/
void mmi_brw_dls_file_dl_res_hdlr(void *Msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_RETCODE eRet;
wap_mmi_file_dl_res_struct * p_dl_res_st = (wap_mmi_file_dl_res_struct *) Msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)(%d)", "ENTER: mmi_brw_dls_file_dl_res_hdlr", p_dl_res_st->result, g_brw_cntx.isDownloadSuspended));
if ( g_brw_cntx.isDownloadSuspended == TRUE )
{
if ( p_dl_res_st->result == WAP_DL_ERROR_CANCELLED)
{
g_brw_cntx.isDownloading = FALSE;
g_brw_cntx.isDownloadSuspended = FALSE;
jdi_BrowserFetchStop(pBrowserCtxt); // Download Cancel
}
else if ( p_dl_res_st->result == WAP_DL_ERROR_OK) // Start Download
{
if(p_dl_res_st->session_id == g_brw_dls_cntx.session_id )
{
if (g_brw_cntx.total_content_length != 0 && mmi_brw_dls_is_free_space_available(p_dl_res_st->file_path) == FALSE) // Free Space not available
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "ERROR: mmi_brw_dls_is_free_space_available"));
g_brw_cntx.isDownloading = FALSE;
g_brw_cntx.isDownloadSuspended = FALSE;
jdi_BrowserFetchStop(pBrowserCtxt);
mmi_brw_dls_send_file_dl_progress_ind(WAP_DL_STATUS_ABORTED,WAP_DL_ERROR_DISK_FULL);
}
else
{
eRet = jdd_FSInitialize(&g_brw_cntx.dwnld_fs_handle);
if (eRet == JC_OK)
{
g_brw_dls_cntx.p_file_name = (JC_CHAR *)jdd_MemAlloc(pfnUnicodeStrlen((S8* )p_dl_res_st->file_path) * ENCODING_LENGTH + 2, sizeof(S8));
pfnUnicodeStrcpy ((S8*)g_brw_dls_cntx.p_file_name, (S8*) p_dl_res_st->file_path);
g_brw_cntx.dwnld_file_handle = jdd_FSOpen(g_brw_cntx.dwnld_fs_handle, p_dl_res_st->file_path, E_CREATE_WRITE_MODE);
if (!g_brw_cntx.dwnld_file_handle)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "ERROR: jdd_FSOpen"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -