static HRESULT WINAPI SecManagerImpl_MapUrlToZone(IInternetSecurityManager *iface, LPCWSTR pwszUrl, DWORD *pdwZone, DWORD dwFlags) { SecManagerImpl *This = impl_from_IInternetSecurityManager(iface); HRESULT hres; TRACE("(%p)->(%s %p %08x)\n", iface, debugstr_w(pwszUrl), pdwZone, dwFlags); if(This->custom_manager) { hres = IInternetSecurityManager_MapUrlToZone(This->custom_manager, pwszUrl, pdwZone, dwFlags); if(hres != INET_E_DEFAULT_ACTION) return hres; } if(!pwszUrl) { *pdwZone = URLZONE_INVALID; return E_INVALIDARG; } if(dwFlags) FIXME("not supported flags: %08x\n", dwFlags); return map_url_to_zone(pwszUrl, pdwZone, NULL); }
static BOOL use_gecko_script(HTMLOuterWindow *window) { DWORD zone; HRESULT hres; hres = IInternetSecurityManager_MapUrlToZone(window->secmgr, window->url, &zone, 0); if(FAILED(hres)) { WARN("Could not map %s to zone: %08x\n", debugstr_w(window->url), hres); return TRUE; } TRACE("zone %d\n", zone); return zone == URLZONE_UNTRUSTED; }
static BOOL use_gecko_script(HTMLWindow *window) { DWORD zone; HRESULT hres; static const WCHAR aboutW[] = {'a','b','o','u','t',':'}; hres = IInternetSecurityManager_MapUrlToZone(window->secmgr, window->url, &zone, 0); if(FAILED(hres)) { WARN("Could not map %s to zone: %08x\n", debugstr_w(window->url), hres); return TRUE; } TRACE("zone %d\n", zone); return zone != URLZONE_LOCAL_MACHINE && zone != URLZONE_TRUSTED && strncmpiW(aboutW, window->url, sizeof(aboutW)/sizeof(WCHAR)); }
static void NSAPI nsDocumentObserver_BindToDocument(nsIDocumentObserver *iface, nsIDocument *aDocument, nsIContent *aContent) { HTMLDocumentNode *This = impl_from_nsIDocumentObserver(iface); nsIDOMHTMLIFrameElement *nsiframe; nsIDOMHTMLFrameElement *nsframe; nsIDOMHTMLScriptElement *nsscript; nsIDOMHTMLMetaElement *nsmeta; nsIDOMElement *nselem; nsIDOMComment *nscomment; nsresult nsres; TRACE("(%p)->(%p %p)\n", This, aDocument, aContent); if(This->document_mode < COMPAT_MODE_IE10) { nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMComment, (void**)&nscomment); if(NS_SUCCEEDED(nsres)) { TRACE("comment node\n"); add_script_runner(This, run_insert_comment, (nsISupports*)nscomment, NULL); nsIDOMComment_Release(nscomment); return; } } if(This->document_mode == COMPAT_MODE_QUIRKS) { nsIDOMDocumentType *nsdoctype; nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMDocumentType, (void**)&nsdoctype); if(NS_SUCCEEDED(nsres)) { compat_mode_t mode = COMPAT_MODE_IE7; TRACE("doctype node\n"); if(This->window && This->window->base.outer_window) { HTMLOuterWindow *window = This->window->base.outer_window; DWORD zone; HRESULT hres; /* * Internet URL zone is treated differently. Native defaults to latest supported * mode. We default to IE8. Ideally, we'd sync that with version used for IE=edge * X-UA-Compatible version, allow configuration and default to higher version * (once it's well supported). */ hres = IInternetSecurityManager_MapUrlToZone(get_security_manager(), window->url, &zone, 0); if(SUCCEEDED(hres) && zone == URLZONE_INTERNET) mode = COMPAT_MODE_IE8; } set_document_mode(This, mode, FALSE); nsIDOMDocumentType_Release(nsdoctype); } } nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMElement, (void**)&nselem); if(NS_FAILED(nsres)) return; check_event_attr(This, nselem); nsIDOMElement_Release(nselem); nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMHTMLIFrameElement, (void**)&nsiframe); if(NS_SUCCEEDED(nsres)) { TRACE("iframe node\n"); add_script_runner(This, run_bind_to_tree, (nsISupports*)nsiframe, NULL); nsIDOMHTMLIFrameElement_Release(nsiframe); return; } nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMHTMLFrameElement, (void**)&nsframe); if(NS_SUCCEEDED(nsres)) { TRACE("frame node\n"); add_script_runner(This, run_bind_to_tree, (nsISupports*)nsframe, NULL); nsIDOMHTMLFrameElement_Release(nsframe); return; } nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMHTMLScriptElement, (void**)&nsscript); if(NS_SUCCEEDED(nsres)) { TRACE("script element\n"); add_script_runner(This, run_bind_to_tree, (nsISupports*)nsscript, NULL); nsIDOMHTMLScriptElement_Release(nsscript); return; } nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMHTMLMetaElement, (void**)&nsmeta); if(NS_SUCCEEDED(nsres)) { process_meta_element(This, nsmeta); nsIDOMHTMLMetaElement_Release(nsmeta); } }