Hi Andrew,

On 01/09/13 16:56, Andrew Eikum wrote:
> ---
>
> This should fix the Office 2007 half of Bug 17271.
>
> try2: Fix test failures on XP by expanding the expected path name.
>
>  dlls/ieframe/navigate.c         |  7 +++++-
>  dlls/ieframe/tests/webbrowser.c | 56 
> ++++++++++++++++++++++++++++++++++++++---
>  2 files changed, 59 insertions(+), 4 deletions(-)
>
>
> 0001-ieframe-Strip-file-from-file-URLs-in-BEFORENAVIGATE2.patch
>
>
> diff --git a/dlls/ieframe/navigate.c b/dlls/ieframe/navigate.c
> index dd4a976..2601ba8 100644
> --- a/dlls/ieframe/navigate.c
> +++ b/dlls/ieframe/navigate.c
> @@ -566,6 +566,8 @@ static void on_before_navigate2(DocHost *This, LPCWSTR 
> url, SAFEARRAY *post_data
>      VARIANT var_url, var_flags, var_frame_name, var_post_data, 
> var_post_data2, var_headers;
>      DISPPARAMS dispparams;
>      VARIANTARG params[7];
> +    WCHAR file_path[MAX_PATH];
> +    DWORD file_path_len = sizeof(file_path) / sizeof(*file_path);
>  
>      dispparams.cArgs = 7;
>      dispparams.cNamedArgs = 0;
> @@ -607,7 +609,10 @@ static void on_before_navigate2(DocHost *This, LPCWSTR 
> url, SAFEARRAY *post_data
>      V_VT(params+5) = (VT_BYREF|VT_VARIANT);
>      V_VARIANTREF(params+5) = &var_url;
>      V_VT(&var_url) = VT_BSTR;
> -    V_BSTR(&var_url) = SysAllocString(url);
> +    if(PathCreateFromUrlW(url, file_path, &file_path_len, 0) == S_OK)
> +        V_BSTR(&var_url) = SysAllocString(file_path);
> +    else
> +        V_BSTR(&var_url) = SysAllocString(url);
>  
>      V_VT(params+6) = (VT_DISPATCH);
>      V_DISPATCH(params+6) = (IDispatch*)This->wb;
> diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c
> index 25cce8a..70c785b 100644
> --- a/dlls/ieframe/tests/webbrowser.c
> +++ b/dlls/ieframe/tests/webbrowser.c
> @@ -151,7 +151,7 @@ static VARIANT_BOOL exvb;
>  static IWebBrowser2 *wb;
>  
>  static HWND container_hwnd, shell_embedding_hwnd;
> -static BOOL is_downloading, is_first_load, use_container_olecmd, test_close, 
> is_http, use_container_dochostui;
> +static BOOL is_downloading, is_first_load, use_container_olecmd, test_close, 
> is_http, is_file, use_container_dochostui;
>  static HRESULT hr_dochost_TranslateAccelerator = E_NOTIMPL;
>  static HRESULT hr_site_TranslateAccelerator = E_NOTIMPL;
>  static const char *current_url;
> @@ -690,8 +690,14 @@ static void test_OnBeforeNavigate(const VARIANT *disp, 
> const VARIANT *url, const
>          ok(V_VT(V_VARIANTREF(url)) == VT_BSTR, "V_VT(V_VARIANTREF(url))=%d, 
> expected VT_BSTR\n",
>             V_VT(V_VARIANTREF(url)));
>          ok(V_BSTR(V_VARIANTREF(url)) != NULL, "V_BSTR(V_VARIANTREF(url)) == 
> NULL\n");
> -        ok(!strcmp_wa(V_BSTR(V_VARIANTREF(url)), current_url), "unexpected 
> url %s, expected %s\n",
> -           wine_dbgstr_w(V_BSTR(V_VARIANTREF(url))), current_url);
> +        if(is_file){
> +            char full_path[MAX_PATH];
> +            GetLongPathNameA(current_url, full_path, sizeof(full_path));


I think expanding the path would be better done while constructing the URL 
instead of here.


+    test_DoVerb(webbrowser);
+    test_Navigate2(webbrowser, file_url);
+
+    IWebBrowser2_Release(webbrowser);


This is not enough for proper clean up. You may verify that by checking ref 
count here. At least setting client site to NULL is needed.


Cheers,
Jacek



Reply via email to