mshtml: Improve loading document detection in AsyncOpen.
This commit is contained in:
parent
30157c3a70
commit
f35c66c693
|
@ -931,6 +931,7 @@ static nsresult NSAPI nsURIContentListener_OnStartURIOpen(nsIURIContentListener
|
||||||
}
|
}
|
||||||
|
|
||||||
nsIWineURI_SetNSContainer(wine_uri, This);
|
nsIWineURI_SetNSContainer(wine_uri, This);
|
||||||
|
nsIWineURI_SetIsDocumentURI(wine_uri, TRUE);
|
||||||
|
|
||||||
if(This->bscallback && This->bscallback->mon) {
|
if(This->bscallback && This->bscallback->mon) {
|
||||||
LPWSTR url = NULL;
|
LPWSTR url = NULL;
|
||||||
|
|
|
@ -1531,4 +1531,6 @@ interface nsIWineURI : nsIURI
|
||||||
nsresult SetNSContainer(NSContainer *aNSContainer);
|
nsresult SetNSContainer(NSContainer *aNSContainer);
|
||||||
nsresult GetMoniker(IMoniker **aMoniker);
|
nsresult GetMoniker(IMoniker **aMoniker);
|
||||||
nsresult SetMoniker(IMoniker *aMoniker);
|
nsresult SetMoniker(IMoniker *aMoniker);
|
||||||
|
nsresult GetIsDocumentURI(PRBool *aIsDocumentURI);
|
||||||
|
nsresult SetIsDocumentURI(PRBool aIsDocumentURI);
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,7 @@ typedef struct {
|
||||||
NSContainer *container;
|
NSContainer *container;
|
||||||
IMoniker *mon;
|
IMoniker *mon;
|
||||||
LPSTR spec;
|
LPSTR spec;
|
||||||
|
PRBool is_doc_uri;
|
||||||
} nsURI;
|
} nsURI;
|
||||||
|
|
||||||
#define NSURI(x) ((nsIURI*) &(x)->lpWineURIVtbl)
|
#define NSURI(x) ((nsIURI*) &(x)->lpWineURIVtbl)
|
||||||
|
@ -598,11 +599,14 @@ static nsresult NSAPI nsChannel_AsyncOpen(nsIHttpChannel *iface, nsIStreamListen
|
||||||
BSCallback *bscallback;
|
BSCallback *bscallback;
|
||||||
nsIWineURI *wine_uri;
|
nsIWineURI *wine_uri;
|
||||||
IMoniker *mon;
|
IMoniker *mon;
|
||||||
|
PRBool is_doc_uri;
|
||||||
nsresult nsres;
|
nsresult nsres;
|
||||||
|
|
||||||
TRACE("(%p)->(%p %p)\n", This, aListener, aContext);
|
TRACE("(%p)->(%p %p)\n", This, aListener, aContext);
|
||||||
|
|
||||||
if(This->load_flags & LOAD_INITIAL_DOCUMENT_URI) {
|
nsIWineURI_GetIsDocumentURI(This->uri, &is_doc_uri);
|
||||||
|
|
||||||
|
if(is_doc_uri && (This->load_flags & LOAD_INITIAL_DOCUMENT_URI)) {
|
||||||
NSContainer *container;
|
NSContainer *container;
|
||||||
|
|
||||||
nsIWineURI_GetNSContainer(This->uri, &container);
|
nsIWineURI_GetNSContainer(This->uri, &container);
|
||||||
|
@ -633,7 +637,6 @@ static nsresult NSAPI nsChannel_AsyncOpen(nsIHttpChannel *iface, nsIStreamListen
|
||||||
if(NS_FAILED(nsres))
|
if(NS_FAILED(nsres))
|
||||||
ERR("AddRequest failed:%08x\n", nsres);
|
ERR("AddRequest failed:%08x\n", nsres);
|
||||||
}
|
}
|
||||||
|
|
||||||
return WINE_NS_LOAD_FROM_MONIKER;
|
return WINE_NS_LOAD_FROM_MONIKER;
|
||||||
}
|
}
|
||||||
}else if(container->doc) {
|
}else if(container->doc) {
|
||||||
|
@ -1589,6 +1592,26 @@ static nsresult NSAPI nsURI_SetMoniker(nsIWineURI *iface, IMoniker *aMoniker)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static nsresult NSAPI nsURI_GetIsDocumentURI(nsIWineURI *iface, PRBool *aIsDocumentURI)
|
||||||
|
{
|
||||||
|
nsURI *This = NSURI_THIS(iface);
|
||||||
|
|
||||||
|
TRACE("(%p)->(%p)\n", This, aIsDocumentURI);
|
||||||
|
|
||||||
|
*aIsDocumentURI = This->is_doc_uri;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult NSAPI nsURI_SetIsDocumentURI(nsIWineURI *iface, PRBool aIsDocumentURI)
|
||||||
|
{
|
||||||
|
nsURI *This = NSURI_THIS(iface);
|
||||||
|
|
||||||
|
TRACE("(%p)->(%x)\n", This, aIsDocumentURI);
|
||||||
|
|
||||||
|
This->is_doc_uri = aIsDocumentURI;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
#undef NSURI_THIS
|
#undef NSURI_THIS
|
||||||
|
|
||||||
static const nsIWineURIVtbl nsWineURIVtbl = {
|
static const nsIWineURIVtbl nsWineURIVtbl = {
|
||||||
|
@ -1624,7 +1647,9 @@ static const nsIWineURIVtbl nsWineURIVtbl = {
|
||||||
nsURI_GetNSContainer,
|
nsURI_GetNSContainer,
|
||||||
nsURI_SetNSContainer,
|
nsURI_SetNSContainer,
|
||||||
nsURI_GetMoniker,
|
nsURI_GetMoniker,
|
||||||
nsURI_SetMoniker
|
nsURI_SetMoniker,
|
||||||
|
nsURI_GetIsDocumentURI,
|
||||||
|
nsURI_SetIsDocumentURI
|
||||||
};
|
};
|
||||||
|
|
||||||
static nsresult create_uri(nsIURI *uri, NSContainer *container, nsIURI **_retval)
|
static nsresult create_uri(nsIURI *uri, NSContainer *container, nsIURI **_retval)
|
||||||
|
@ -1637,6 +1662,7 @@ static nsresult create_uri(nsIURI *uri, NSContainer *container, nsIURI **_retval
|
||||||
ret->container = container;
|
ret->container = container;
|
||||||
ret->mon = NULL;
|
ret->mon = NULL;
|
||||||
ret->spec = NULL;
|
ret->spec = NULL;
|
||||||
|
ret->is_doc_uri = FALSE;
|
||||||
|
|
||||||
if(container)
|
if(container)
|
||||||
nsIWebBrowserChrome_AddRef(NSWBCHROME(container));
|
nsIWebBrowserChrome_AddRef(NSWBCHROME(container));
|
||||||
|
|
Loading…
Reference in New Issue