Jacek Caban : mshtml: Adder _parent target support to navigate_anchor.
Alexandre Julliard
julliard at winehq.org
Tue Mar 11 14:45:41 CDT 2014
Module: wine
Branch: master
Commit: 31faed571d5a846925b22c08dc488eb42344c41d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=31faed571d5a846925b22c08dc488eb42344c41d
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Mar 11 19:01:45 2014 +0100
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(-)
diff --git a/dlls/mshtml/htmlanchor.c b/dlls/mshtml/htmlanchor.c
index 97ef900..f177ff2 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 0000000..18ecdcb
--- /dev/null
+++ b/dlls/mshtml/tests/blank.html
@@ -0,0 +1 @@
+<html></html>
diff --git a/dlls/mshtml/tests/nav_test.html b/dlls/mshtml/tests/nav_test.html
new file mode 100644
index 0000000..d106dfc
--- /dev/null
+++ b/dlls/mshtml/tests/nav_test.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+<script>
+function ok(b,m) {
+ return external.ok(b, m);
+}
+
+function nav_back_test() {
+ external.trace("Running _parent navigation tests...");
+
+ var iframe = document.getElementById("testframe");
+ var subframe = iframe.contentWindow.document.createElement("iframe");
+
+ subframe.onload = function() {
+ var doc = subframe.contentWindow.document;
+ doc.body.innerHTML = '<a href="blank2.html" id="aid" target="_parent">test</a>';
+ doc.getElementById("aid").click();
+ }
+
+ iframe.onload = function() {
+ var href = iframe.contentWindow.location.href;
+ ok(/.*blank2.html/.test(href), "Unexpected href " + href);
+ next_test();
+ }
+
+ iframe.contentWindow.document.body.appendChild(subframe);
+ subframe.src = "blank.html";
+}
+
+var tests = [
+ nav_back_test,
+ function() { external.reportSuccess(); }
+];
+
+function next_test() {
+ window.setTimeout(tests.shift(), 0);
+}
+</script>
+<body onload="next_test()">
+<iframe src="about:blank" id="testframe"></iframe>
+</body>
+</html>
diff --git a/dlls/mshtml/tests/rsrc.rc b/dlls/mshtml/tests/rsrc.rc
index 07d816d..d498b82 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 ac6b8a2..de0bf65 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)
More information about the wine-cvs
mailing list