📄 browserimpl.cpp
字号:
}NS_IMETHODIMP CBrowserImpl::SetFocus(){ if (! m_pBrowserFrame || gQuitMode) return NS_ERROR_FAILURE; m_pBrowserFrame->SetFocus(); return NS_OK;}NS_IMETHODIMP CBrowserImpl::GetTitle(PRUnichar** aTitle){ if (! m_pBrowserFrame || gQuitMode) return NS_ERROR_FAILURE; m_pBrowserFrame->GetBrowserFrameTitle(aTitle); return NS_OK;}NS_IMETHODIMP CBrowserImpl::SetTitle(const PRUnichar* aTitle){ if (! m_pBrowserFrame || gQuitMode) return NS_ERROR_FAILURE; m_pBrowserFrame->SetBrowserFrameTitle(aTitle); char buf[1024]; PRInt32 id = m_pBrowserFrame->GetBrowserId(); sprintf(buf, "%s", NS_ConvertUCS2toUTF8(aTitle).get()); SendSocketMessage(id, CEVENT_TITLE_CHANGE, buf); return NS_OK;}NS_IMETHODIMP CBrowserImpl::GetVisibility(PRBool *aVisibility){ if (! m_pBrowserFrame || gQuitMode) return NS_ERROR_FAILURE; m_pBrowserFrame->GetBrowserFrameVisibility(aVisibility); return NS_OK;}NS_IMETHODIMP CBrowserImpl::SetVisibility(PRBool aVisibility){ if (! m_pBrowserFrame || gQuitMode) return NS_ERROR_FAILURE; m_pBrowserFrame->ShowBrowserFrame(aVisibility); return NS_OK;}//*****************************************************************************// CBrowserImpl::nsIEmbeddingSiteWindow2//*****************************************************************************NS_IMETHODIMP CBrowserImpl::Blur(){ return NS_OK;}//*****************************************************************************// CBrowserImpl::nsITooltipListener//*****************************************************************************/* void onShowTooltip (in long aXCoords, in long aYCoords, in wstring aTipText); */NS_IMETHODIMP CBrowserImpl::OnShowTooltip(PRInt32 aXCoords, PRInt32 aYCoords, const PRUnichar *aTipText){ if (! m_pBrowserFrame || gQuitMode) return NS_ERROR_FAILURE; m_pBrowserFrame->ShowTooltip(aXCoords, aYCoords, aTipText); return NS_OK;}/* void onHideTooltip (); */NS_IMETHODIMP CBrowserImpl::OnHideTooltip(){ if (! m_pBrowserFrame || gQuitMode) return NS_ERROR_FAILURE; m_pBrowserFrame->HideTooltip(); return NS_OK;}//*****************************************************************************// CBrowserImpl::nsIWebProgressListener Implementation//*****************************************************************************//// - Implements browser progress update functionality// while loading a page into the embedded browser//// - Calls methods via the IBrowserFrameGlue interace// (available thru' the m_pBrowserFrame member var)// to do the actual statusbar/progress bar updates.//NS_IMETHODIMP CBrowserImpl::OnProgressChange(nsIWebProgress *progress, nsIRequest *request, PRInt32 curSelfProgress, PRInt32 maxSelfProgress, PRInt32 curTotalProgress, PRInt32 maxTotalProgress){ if (! m_pBrowserFrame || gQuitMode) { // always return NS_OK return NS_OK; } PRInt32 nProgress = curTotalProgress; PRInt32 nProgressMax = maxTotalProgress; if (nProgressMax == 0) nProgressMax = LONG_MAX; if (nProgress > nProgressMax) nProgress = nProgressMax; // Progress complete m_pBrowserFrame->UpdateProgress(nProgress, nProgressMax); char buf[20]; PRInt32 id = m_pBrowserFrame->GetBrowserId(); sprintf(buf, "%d", nProgress * 100 / nProgressMax); SendSocketMessage(id, CEVENT_DOWNLOAD_PROGRESS, buf); return NS_OK;}NS_IMETHODIMP CBrowserImpl::OnStateChange(nsIWebProgress *progress, nsIRequest *request, PRUint32 progressStateFlags, nsresult status){ if (! m_pBrowserFrame || gQuitMode) { // always return NS_OK return NS_OK; } PRInt32 id = m_pBrowserFrame->GetBrowserId(); if (progressStateFlags & STATE_IS_DOCUMENT) { if (progressStateFlags & STATE_START) { // Navigation has begun m_pBrowserFrame->UpdateBusyState(PR_TRUE); // Fire a DownloadBegin event SendSocketMessage(id, CEVENT_DOWNLOAD_STARTED); } else if (progressStateFlags & STATE_STOP) { nsCOMPtr<nsIWebBrowserFocus> focus(do_GetInterface(mWebBrowser)); if (focus) focus->Activate(); // We've completed the navigation m_pBrowserFrame->UpdateBusyState(PR_FALSE); m_pBrowserFrame->UpdateProgress(0, 100); // Clear the prog bar m_pBrowserFrame->UpdateStatusBarText(nsnull); // Clear the status bar // Fire a DownloadComplete event SendSocketMessage(id, CEVENT_DOWNLOAD_COMPLETED); } } if (progressStateFlags & STATE_IS_NETWORK) { if (progressStateFlags & STATE_START) { } else if (progressStateFlags & STATE_STOP) { // Fire a DocumentComplete event, the document finishes loading. SendSocketMessage(id, CEVENT_DOCUMENT_COMPLETED); // Fire a CommandStateChange event char buf[20]; nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(mWebBrowser)); PRBool aCanGoForward = PR_FALSE; webNav->GetCanGoForward(&aCanGoForward); sprintf(buf, "forward=%d", aCanGoForward ? 1 : 0); SendSocketMessage(id, CEVENT_COMMAND_STATE_CHANGE, buf); PRBool aCanGoBack = PR_FALSE; webNav->GetCanGoBack(&aCanGoBack); sprintf(buf, "back=%d", aCanGoBack ? 1 : 0); SendSocketMessage(id, CEVENT_COMMAND_STATE_CHANGE, buf); } } return NS_OK;}NS_IMETHODIMP CBrowserImpl::OnLocationChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest, nsIURI *location){ if (! m_pBrowserFrame || gQuitMode) { // always return NS_OK return NS_OK; } PRBool isSubFrameLoad = PR_FALSE; // Is this a subframe load if (aWebProgress) { nsCOMPtr<nsIDOMWindow> domWindow; nsCOMPtr<nsIDOMWindow> topDomWindow; aWebProgress->GetDOMWindow(getter_AddRefs(domWindow)); if (domWindow) { // Get root domWindow domWindow->GetTop(getter_AddRefs(topDomWindow)); } if (domWindow != topDomWindow) isSubFrameLoad = PR_TRUE; } if (!isSubFrameLoad) // Update urlbar only if it is not a subframe load m_pBrowserFrame->UpdateCurrentURI(location); return NS_OK;}NS_IMETHODIMPCBrowserImpl::OnStatusChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest, nsresult aStatus, const PRUnichar* aMessage){ if (m_pBrowserFrame) { m_pBrowserFrame->UpdateStatusBarText(aMessage); char buf[1024]; PRInt32 id = m_pBrowserFrame->GetBrowserId(); sprintf(buf, "%s", NS_ConvertUCS2toUTF8(aMessage).get()); SendSocketMessage(id, CEVENT_STATUSTEXT_CHANGE, buf); } return NS_OK;}NS_IMETHODIMPCBrowserImpl::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 state){ m_pBrowserFrame->UpdateSecurityStatus(state); return NS_OK;}//*****************************************************************************// CBrowserImpl::nsIURIContentListener Implementation//*****************************************************************************NS_IMETHODIMP CBrowserImpl::OnStartURIOpen(nsIURI *pURI, PRBool *aAbortOpen){ *aAbortOpen = PR_FALSE; nsCAutoString uriString; nsresult rv = pURI->GetAsciiSpec(uriString); if (NS_FAILED(rv)) return NS_ERROR_ABORT; PRInt32 id = m_pBrowserFrame->GetBrowserId(); if (id >= 0) { // native browser needs a yes or no confirmation from the // Java side for event CEVENT_BEFORE_NAVIGATE. int bCmdCanceled = -1, waitCount = 0; AddTrigger(id, CEVENT_BEFORE_NAVIGATE, &bCmdCanceled); SendSocketMessage(id, CEVENT_BEFORE_NAVIGATE, uriString.get()); while (bCmdCanceled < 0 && waitCount++ < MAX_WAIT) { Sleep(1); } WBTRACE("waitCount = %d\n", waitCount); if (bCmdCanceled == 1) { *aAbortOpen = PR_TRUE; return NS_ERROR_ABORT; } } return NS_OK;}NS_IMETHODIMP CBrowserImpl::DoContent(const char *aContentType, PRBool aIsContentPreferred, nsIRequest *request, nsIStreamListener **aContentHandler, PRBool *aAbortProcess){ return NS_ERROR_NOT_IMPLEMENTED;}NS_IMETHODIMP CBrowserImpl::IsPreferred(const char *aContentType, char **aDesiredContentType, PRBool *_retval){ return CanHandleContent(aContentType, PR_TRUE, aDesiredContentType, _retval);}NS_IMETHODIMP CBrowserImpl::CanHandleContent(const char *aContentType, PRBool aIsContentPreferred, char **aDesiredContentType, PRBool *_retval){ if (aContentType) { nsCOMPtr<nsICategoryManager> catMgr; nsresult rv; catMgr = do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv); nsXPIDLCString value; rv = catMgr->GetCategoryEntry("Gecko-Content-Viewers", aContentType, getter_Copies(value)); // If the category manager can't find what we're looking for // it returns NS_ERROR_NOT_AVAILABLE, we don't want to propagate // that to the caller since it's really not a failure if (NS_FAILED(rv) && rv != NS_ERROR_NOT_AVAILABLE) return rv; if (value && *value) *_retval = PR_TRUE; } return NS_OK;}NS_IMETHODIMP CBrowserImpl::GetLoadCookie(nsISupports * *aLoadCookie){ return NS_ERROR_NOT_IMPLEMENTED;}NS_IMETHODIMP CBrowserImpl::SetLoadCookie(nsISupports * aLoadCookie){ return NS_ERROR_NOT_IMPLEMENTED;}NS_IMETHODIMP CBrowserImpl::GetParentContentListener(nsIURIContentListener * *aParentContentListener){ return NS_ERROR_NOT_IMPLEMENTED;}NS_IMETHODIMP CBrowserImpl::SetParentContentListener(nsIURIContentListener * aParentContentListener){ return NS_ERROR_NOT_IMPLEMENTED;}//*****************************************************************************// CBrowserImpl::nsIContextMenuListener2//*****************************************************************************NS_IMETHODIMP CBrowserImpl::OnShowContextMenu(PRUint32 aContextFlags, nsIContextMenuInfo *aInfo){ if(m_pBrowserFrame) m_pBrowserFrame->ShowContextMenu(aContextFlags, aInfo); return NS_OK;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -