Module: wine Branch: master Commit: b1fd8dae192686fc31eb58585a846d7b39cf2ebe URL: https://gitlab.winehq.org/wine/wine/-/commit/b1fd8dae192686fc31eb58585a846d7...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Nov 7 12:19:15 2022 +0100
mshtml: Always use navigate_fragment for fragment-only navigation in navigate_uri.
---
dlls/mshtml/binding.h | 1 + dlls/mshtml/navigate.c | 6 +++++- dlls/mshtml/nsio.c | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/binding.h b/dlls/mshtml/binding.h index 479cb71cf15..948bfb1c02b 100644 --- a/dlls/mshtml/binding.h +++ b/dlls/mshtml/binding.h @@ -164,6 +164,7 @@ HRESULT read_stream(BSCallback*,IStream*,void*,DWORD,DWORD*) DECLSPEC_HIDDEN; HRESULT create_relative_uri(HTMLOuterWindow*,const WCHAR*,IUri**) DECLSPEC_HIDDEN; HRESULT create_uri(const WCHAR*,DWORD,IUri**) DECLSPEC_HIDDEN; IUri *get_uri_nofrag(IUri*) DECLSPEC_HIDDEN; +BOOL compare_uri_ignoring_frag(IUri *uri1, IUri *uri2) DECLSPEC_HIDDEN;
void set_current_mon(HTMLOuterWindow*,IMoniker*,DWORD) DECLSPEC_HIDDEN; void set_current_uri(HTMLOuterWindow*,IUri*) DECLSPEC_HIDDEN; diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index 66542fbd676..68f249d914a 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -2449,6 +2449,7 @@ HRESULT hlink_frame_navigate(HTMLDocumentObj *doc, LPCWSTR url, nsChannel *nscha static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *display_uri, const request_data_t *request_data, DWORD flags) { + DWORD post_data_len = request_data ? request_data->post_data_len : 0; nsWineURI *nsuri; HRESULT hres;
@@ -2458,7 +2459,6 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis return E_UNEXPECTED;
if(window->browser->doc->webbrowser) { - DWORD post_data_len = request_data ? request_data->post_data_len : 0; void *post_data = post_data_len ? request_data->post_data : NULL; const WCHAR *headers = request_data ? request_data->headers : NULL;
@@ -2485,6 +2485,10 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis return super_navigate(window, uri, flags, headers, post_data, post_data_len); }
+ if(!(flags & BINDING_NOFRAG) && window->uri_nofrag && !post_data_len && + compare_uri_ignoring_frag(window->uri_nofrag, uri)) + return navigate_fragment(window, uri); + if(is_main_content_window(window)) { BOOL cancel;
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 72f40979ace..6654018f8e6 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -115,7 +115,7 @@ IUri *get_uri_nofrag(IUri *uri) return ret; }
-static BOOL compare_ignoring_frag(IUri *uri1, IUri *uri2) +BOOL compare_uri_ignoring_frag(IUri *uri1, IUri *uri2) { IUri *uri_nofrag1, *uri_nofrag2; BOOL ret = FALSE; @@ -3029,7 +3029,7 @@ static nsresult NSAPI nsURI_EqualsExceptRef(nsIFileURL *iface, nsIURI *other, cp }
if(ensure_uri(This) && ensure_uri(other_obj)) { - *_retval = compare_ignoring_frag(This->uri, other_obj->uri); + *_retval = compare_uri_ignoring_frag(This->uri, other_obj->uri); nsres = NS_OK; }else { nsres = NS_ERROR_UNEXPECTED;