From 31faed571d5a846925b22c08dc488eb42344c41d Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 11 Mar 2014 19:01:45 +0100 Subject: [PATCH] mshtml: Adder _parent target support to navigate_anchor. --- dlls/mshtml/htmlanchor.c | 12 ++++++++---- dlls/mshtml/tests/blank.html | 1 + dlls/mshtml/tests/nav_test.html | 42 +++++++++++++++++++++++++++++++++++++++++ dlls/mshtml/tests/rsrc.rc | 9 +++++++++ dlls/mshtml/tests/script.c | 1 + 5 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 dlls/mshtml/tests/blank.html create mode 100644 dlls/mshtml/tests/nav_test.html diff --git a/dlls/mshtml/htmlanchor.c b/dlls/mshtml/htmlanchor.c index 97ef900bbe2..f177ff2ad40 100644 --- a/dlls/mshtml/htmlanchor.c +++ b/dlls/mshtml/htmlanchor.c @@ -77,7 +77,7 @@ static HRESULT navigate_anchor(HTMLAnchorElement *This) nsresult nsres; HRESULT hres = E_FAIL; - static const WCHAR _parentW[] = {'p','a','r','e','n','t',0}; + static const WCHAR _parentW[] = {'_','p','a','r','e','n','t',0}; static const WCHAR _selfW[] = {'_','s','e','l','f',0}; static const WCHAR _topW[] = {'_','t','o','p',0}; @@ -93,9 +93,13 @@ static HRESULT navigate_anchor(HTMLAnchorElement *This) TRACE("target _top\n"); get_top_window(This->element.node.doc->basedoc.window, &window); }else if(!strcmpiW(target, _parentW)) { - FIXME("Navigating to target _parent is not implemented\n"); - nsAString_Finish(&target_str); - return S_OK; + window = This->element.node.doc->basedoc.window; + if(!window->parent) { + WARN("Window has no parent\n"); + nsAString_Finish(&target_str); + return S_OK; + } + window = window->parent; }else { HTMLOuterWindow *top_window; diff --git a/dlls/mshtml/tests/blank.html b/dlls/mshtml/tests/blank.html new file mode 100644 index 00000000000..18ecdcb795c --- /dev/null +++ b/dlls/mshtml/tests/blank.html @@ -0,0 +1 @@ + diff --git a/dlls/mshtml/tests/nav_test.html b/dlls/mshtml/tests/nav_test.html new file mode 100644 index 00000000000..d106dfc2412 --- /dev/null +++ b/dlls/mshtml/tests/nav_test.html @@ -0,0 +1,42 @@ + + + + + + + diff --git a/dlls/mshtml/tests/rsrc.rc b/dlls/mshtml/tests/rsrc.rc index 07d816d388c..d498b8295f3 100644 --- a/dlls/mshtml/tests/rsrc.rc +++ b/dlls/mshtml/tests/rsrc.rc @@ -31,6 +31,15 @@ events.html HTML "events.html" /* @makedep: externscr.js */ externscr.js HTML "externscr.js" +/* @makedep: nav_test.html */ +nav_test.html HTML "nav_test.html" + +/* @makedep: blank.html */ +blank.html HTML "blank.html" + +/* @makedep: blank.html */ +blank2.html HTML "blank.html" + /* @makedep: test_tlb.tlb */ 1 TYPELIB test_tlb.tlb diff --git a/dlls/mshtml/tests/script.c b/dlls/mshtml/tests/script.c index ac6b8a24569..de0bf656b5e 100644 --- a/dlls/mshtml/tests/script.c +++ b/dlls/mshtml/tests/script.c @@ -2831,6 +2831,7 @@ static void run_js_tests(void) run_js_script("exectest.html"); run_js_script("vbtest.html"); run_js_script("events.html"); + run_js_script("nav_test.html"); } static BOOL init_registry(BOOL init) -- 2.11.4.GIT