⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jbrowserstartup.c

📁 MTK_MMI的部分源代码,从code中大致了解到MMI的执行流程
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -