void CMSDNForumHelper::RevealHiddenLinks(IHTMLDocument2* pDocument) { CComBSTR url; HRESULT hr=pDocument->get_URL(&url); if(hr==S_OK) { url.ToLower(); CString urlString(url); if(urlString.Find(_T("microsoft.com"))==-1) return; if(urlString.Find(_T("social"))==1) return; } CComPtr<IHTMLElementCollection> linkElementCollection; // Get the collection of images from the DOM. hr = pDocument->get_links(&linkElementCollection); if (hr == S_OK && linkElementCollection != NULL) { // Get the number of images in the collection. long linkCount = 0; hr = linkElementCollection->get_length(&linkCount); if (hr == S_OK && linkCount > 0) { for (int i = 0; i < linkCount; i++) { CComVariant varItemIndex(i); CComVariant varEmpty; CComPtr<IDispatch> linkDispatch; // Get the link out of the collection by index. hr = linkElementCollection->item(varItemIndex, varEmpty, &linkDispatch); if (hr == S_OK && linkDispatch != NULL) { //filter out hot spot on images CComQIPtr<IHTMLAnchorElement> anchorElement(linkDispatch); if(anchorElement==NULL) continue; //query for the generic HTML element interface CComQIPtr<IHTMLElement> linkElement(linkDispatch); if (linkElement) { // ...then ask for the style interface. CComPtr<IHTMLStyle> linkStyle; hr = linkElement->get_style(&linkStyle); // Set display="none" to hide the image. if (hr == S_OK && linkStyle != NULL) { CComVariant linkCollor; hr=linkStyle->get_color(&linkCollor); if(linkCollor.vt==VT_BSTR) { CComBSTR linkCollorString(linkCollor.bstrVal); if (hr == S_OK && linkCollorString.Length()>0) { linkStyle->put_backgroundColor(CComVariant(_T("red"))); linkStyle->put_color(CComVariant(_T(""))); CComBSTR href,text; anchorElement->get_href(&href); linkElement->get_innerText(&text); CString newText; newText.Format(_T("hidden link, possible spam: text: %s, url: %s"),text,href); linkElement->put_innerText(CComBSTR(newText)); } } } } } } } } }
NS_IMETHODIMP EmbedWindow::OnShowContextMenu(PRUint32 aContextFlags, nsIDOMEvent *aEvent, nsIDOMNode *aNode) { PtMozillaWidget_t *moz = (PtMozillaWidget_t *) mOwner->mOwningWidget; PtCallbackList_t *cb; PtCallbackInfo_t cbinfo; PtMozillaContextCb_t cmenu; if (!moz->context_cb) return NS_OK; cb = moz->context_cb; memset(&cbinfo, 0, sizeof(cbinfo)); cbinfo.reason = Pt_CB_MOZ_CONTEXT; cbinfo.cbdata = &cmenu; memset(&cmenu, 0, sizeof(PtMozillaContextCb_t)); if (aContextFlags & CONTEXT_NONE) cmenu.flags |= Pt_MOZ_CONTEXT_NONE; else if (aContextFlags & CONTEXT_LINK) cmenu.flags |= Pt_MOZ_CONTEXT_LINK; else if (aContextFlags & CONTEXT_IMAGE) cmenu.flags |= Pt_MOZ_CONTEXT_IMAGE; else if (aContextFlags & CONTEXT_DOCUMENT) cmenu.flags |= Pt_MOZ_CONTEXT_DOCUMENT; else if (aContextFlags & CONTEXT_TEXT) cmenu.flags |= Pt_MOZ_CONTEXT_TEXT; else if (aContextFlags & CONTEXT_INPUT) cmenu.flags |= Pt_MOZ_CONTEXT_INPUT; nsCOMPtr<nsIDOMMouseEvent> mouseEvent (do_QueryInterface( aEvent )); if(!mouseEvent) return NS_OK; mouseEvent->GetScreenX( &cmenu.x ); mouseEvent->GetScreenY( &cmenu.y ); PtInvokeCallbackList(cb, (PtWidget_t *)moz, &cbinfo); if( aContextFlags & CONTEXT_IMAGE ) { /* store the url we clicked on */ nsAutoString rightClickUrl; // Get the IMG SRC nsresult rv = NS_OK; nsCOMPtr<nsIDOMHTMLImageElement> imgElement(do_QueryInterface(aNode, &rv)); if(NS_FAILED(rv)) return NS_OK; rv = imgElement->GetSrc(rightClickUrl); if( moz->rightClickUrl_image ) free( moz->rightClickUrl_image ); if(NS_FAILED(rv)) moz->rightClickUrl_image = NULL; else moz->rightClickUrl_image = ToNewCString(rightClickUrl); } if( aContextFlags & CONTEXT_LINK ) { /* CONTEXT_IMAGE|CONTEXT_LINK is set for an <IMG> with an <A> as an ancestor */ if( aContextFlags & CONTEXT_IMAGE ) { nsIDOMNode *parent; aNode->GetParentNode( &parent ); if( parent ) aNode = parent; } /* store the url we clicked on */ nsAutoString rightClickUrl; nsresult rv = NS_OK; nsCOMPtr<nsIDOMHTMLAnchorElement> linkElement(do_QueryInterface(aNode, &rv)); if(NS_FAILED(rv)) return NS_OK; // Note that this string is in UCS2 format rv = linkElement->GetHref( rightClickUrl ); if( moz->rightClickUrl_link ) free( moz->rightClickUrl_link ); if(NS_FAILED(rv)) moz->rightClickUrl_link = NULL; else moz->rightClickUrl_link = ToNewCString(rightClickUrl); } return NS_OK; }