Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
d3d8d4f3
Commit
d3d8d4f3
authored
May 09, 2017
by
Jacek Caban
Committed by
Alexandre Julliard
May 09, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Use IE version dependent on compatibility mode for conditional comments.
Signed-off-by:
Jacek Caban
<
jacek@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
ce80f1e4
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
79 additions
and
36 deletions
+79
-36
htmldoc.c
dlls/mshtml/htmldoc.c
+1
-13
mshtml_private.h
dlls/mshtml/mshtml_private.h
+7
-0
mutation.c
dlls/mshtml/mutation.c
+25
-16
documentmode.js
dlls/mshtml/tests/documentmode.js
+45
-6
script.c
dlls/mshtml/tests/script.c
+1
-1
No files found.
dlls/mshtml/htmldoc.c
View file @
d3d8d4f3
...
...
@@ -3096,16 +3096,6 @@ static HRESULT WINAPI HTMLDocument6_get_documentMode(IHTMLDocument6 *iface, VARI
{
HTMLDocument
*
This
=
impl_from_IHTMLDocument6
(
iface
);
static
const
int
docmode_values
[]
=
{
5
,
/* DOCMODE_QUIRKS */
5
,
/* DOCMODE_IE5 */
7
,
/* DOCMODE_IE7 */
8
,
/* DOCMODE_IE8 */
9
,
/* DOCMODE_IE8 */
10
,
/* DOCMODE_IE10 */
11
/* DOCMODE_IE11 */
};
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
p
);
if
(
!
This
->
doc_node
)
{
...
...
@@ -3113,10 +3103,8 @@ static HRESULT WINAPI HTMLDocument6_get_documentMode(IHTMLDocument6 *iface, VARI
return
E_UNEXPECTED
;
}
assert
(
This
->
doc_node
->
document_mode
<
sizeof
(
docmode_values
)
/
sizeof
(
*
docmode_values
));
V_VT
(
p
)
=
VT_I4
;
V_I4
(
p
)
=
docmode_values
[
This
->
doc_node
->
document_mode
]
;
V_I4
(
p
)
=
compat_mode_info
[
This
->
doc_node
->
document_mode
].
document_mode
;
return
S_OK
;
}
...
...
dlls/mshtml/mshtml_private.h
View file @
d3d8d4f3
...
...
@@ -244,6 +244,13 @@ typedef enum {
#define COMPAT_MODE_CNT (COMPAT_MODE_IE11+1)
#define COMPAT_MODE_NONE COMPAT_MODE_QUIRKS
typedef
struct
{
unsigned
document_mode
;
unsigned
ie_version
;
}
compat_mode_info_t
;
extern
const
compat_mode_info_t
compat_mode_info
[
COMPAT_MODE_CNT
]
DECLSPEC_HIDDEN
;
typedef
struct
dispex_data_t
dispex_data_t
;
typedef
struct
dispex_dynamic_data_t
dispex_dynamic_data_t
;
...
...
dlls/mshtml/mutation.c
View file @
d3d8d4f3
...
...
@@ -39,8 +39,15 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
mshtml
);
#define IE_MAJOR_VERSION 7
#define IE_MINOR_VERSION 0
const
compat_mode_info_t
compat_mode_info
[]
=
{
{
5
,
7
},
/* DOCMODE_QUIRKS */
{
5
,
5
},
/* DOCMODE_IE5 */
{
7
,
7
},
/* DOCMODE_IE7 */
{
8
,
8
},
/* DOCMODE_IE8 */
{
9
,
9
},
/* DOCMODE_IE8 */
{
10
,
10
},
/* DOCMODE_IE10 */
{
11
,
11
}
/* DOCMODE_IE11 */
};
static
const
IID
NS_ICONTENTUTILS_CID
=
{
0x762C4AE7
,
0xB923
,
0x422F
,{
0xB9
,
0x7E
,
0xB9
,
0xBF
,
0xC1
,
0xEF
,
0x7B
,
0xF0
}};
...
...
@@ -49,7 +56,7 @@ static nsIContentUtils *content_utils;
static
PRUnichar
*
handle_insert_comment
(
HTMLDocumentNode
*
doc
,
const
PRUnichar
*
comment
)
{
int
majorv
=
0
,
minorv
=
0
;
unsigned
majorv
=
0
,
minorv
=
0
,
compat_version
;
const
PRUnichar
*
ptr
,
*
end
;
PRUnichar
*
buf
;
DWORD
len
;
...
...
@@ -130,33 +137,35 @@ static PRUnichar *handle_insert_comment(HTMLDocumentNode *doc, const PRUnichar *
if
(
memcmp
(
end
,
endifW
,
sizeof
(
endifW
)))
return
NULL
;
compat_version
=
compat_mode_info
[
doc
->
document_mode
].
ie_version
;
if
(
compat_version
>
8
)
{
/*
* Ideally we should handle higher versions, but right now it would cause more problems than it's worth.
* We should revisit that once more IE9 features are implemented, most notably new events APIs.
*/
WARN
(
"Using compat version 8
\n
"
);
compat_version
=
8
;
}
switch
(
cmpt
)
{
case
CMP_EQ
:
if
(
majorv
==
IE_MAJOR_VERSION
&&
minorv
==
IE_MINOR_VERSION
)
if
(
compat_version
==
majorv
&&
!
minorv
)
break
;
return
NULL
;
case
CMP_LT
:
if
(
majorv
>
IE_MAJOR_VERSION
)
break
;
if
(
majorv
==
IE_MAJOR_VERSION
&&
minorv
>
IE_MINOR_VERSION
)
if
(
compat_version
<
majorv
||
(
compat_version
==
majorv
&&
minorv
))
break
;
return
NULL
;
case
CMP_LTE
:
if
(
majorv
>
IE_MAJOR_VERSION
)
break
;
if
(
majorv
==
IE_MAJOR_VERSION
&&
minorv
>=
IE_MINOR_VERSION
)
if
(
compat_version
<=
majorv
)
break
;
return
NULL
;
case
CMP_GT
:
if
(
majorv
<
IE_MAJOR_VERSION
)
break
;
if
(
majorv
==
IE_MAJOR_VERSION
&&
minorv
<
IE_MINOR_VERSION
)
if
(
compat_version
>
majorv
)
break
;
return
NULL
;
case
CMP_GTE
:
if
(
majorv
<
IE_MAJOR_VERSION
)
break
;
if
(
majorv
==
IE_MAJOR_VERSION
&&
minorv
<=
IE_MINOR_VERSION
)
if
(
compat_version
>=
majorv
||
(
compat_version
==
majorv
&&
!
minorv
))
break
;
return
NULL
;
}
...
...
dlls/mshtml/tests/documentmode.js
View file @
d3d8d4f3
...
...
@@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
var
compat_version
;
function
test_elem_props
()
{
var
elem
=
document
.
documentElement
;
...
...
@@ -35,17 +37,17 @@ function test_elem_props() {
}
function
test_doc_mode
()
{
var
opt
=
parseInt
(
document
.
location
.
search
.
substring
(
1
));
compat_version
=
parseInt
(
document
.
location
.
search
.
substring
(
1
));
trace
(
"Testing
document mode "
+
opt
);
trace
(
"Testing
compatibility mode "
+
compat_version
);
if
(
opt
>
document
.
documentMode
)
{
win_skip
(
"Document mode not supported (expected "
+
opt
+
" got "
+
document
.
documentMode
+
")"
);
if
(
compat_version
>
6
&&
compat_version
>
document
.
documentMode
)
{
win_skip
(
"Document mode not supported (expected "
+
compat_version
+
" got "
+
document
.
documentMode
+
")"
);
reportSuccess
();
return
;
}
ok
(
opt
===
document
.
documentMode
,
"documentMode = "
+
document
.
documentMode
);
ok
(
Math
.
max
(
compat_version
,
5
)
===
document
.
documentMode
,
"documentMode = "
+
document
.
documentMode
);
if
(
document
.
documentMode
>
5
)
ok
(
document
.
compatMode
===
"CSS1Compat"
,
"document.compatMode = "
+
document
.
compatMode
);
...
...
@@ -55,7 +57,44 @@ function test_doc_mode() {
next_test
();
}
function
test_conditional_comments
()
{
var
div
=
document
.
createElement
(
"div"
);
document
.
body
.
appendChild
(
div
);
function
test_version
(
v
)
{
var
version
=
compat_version
?
compat_version
:
7
;
/* Uncomment and fix tests below once we support that. */
if
(
version
>=
9
)
return
;
div
.
innerHTML
=
"<!--[if lte IE "
+
v
+
"]>true<![endif]-->"
;
ok
(
div
.
innerText
===
(
version
<=
v
?
"true"
:
""
),
"div.innerText = "
+
div
.
innerText
+
" for version (<=) "
+
v
);
div
.
innerHTML
=
"<!--[if lt IE "
+
v
+
"]>true<![endif]-->"
;
ok
(
div
.
innerText
===
(
version
<
v
?
"true"
:
""
),
"div.innerText = "
+
div
.
innerText
+
" for version (<) "
+
v
);
div
.
innerHTML
=
"<!--[if gte IE "
+
v
+
"]>true<![endif]-->"
;
ok
(
div
.
innerText
===
(
version
>=
v
?
"true"
:
""
),
"div.innerText = "
+
div
.
innerText
+
" for version (>=) "
+
v
);
div
.
innerHTML
=
"<!--[if gt IE "
+
v
+
"]>true<![endif]-->"
;
ok
(
div
.
innerText
===
(
version
>
v
?
"true"
:
""
),
"div.innerText = "
+
div
.
innerText
+
" for version (>) "
+
v
);
}
test_version
(
5
);
test_version
(
6
);
test_version
(
7
);
test_version
(
8
);
next_test
();
}
var
tests
=
[
test_doc_mode
,
test_elem_props
test_elem_props
,
test_conditional_comments
];
dlls/mshtml/tests/script.c
View file @
d3d8d4f3
...
...
@@ -3462,7 +3462,7 @@ static void run_js_tests(void)
run_script_as_http_with_mode
(
"navigation.js"
,
NULL
,
NULL
);
run_script_as_http_with_mode
(
"navigation.js"
,
NULL
,
"11"
);
run_script_as_http_with_mode
(
"documentmode.js"
,
"?
5
"
,
NULL
);
run_script_as_http_with_mode
(
"documentmode.js"
,
"?
0
"
,
NULL
);
run_script_as_http_with_mode
(
"documentmode.js"
,
"?5"
,
"5"
);
run_script_as_http_with_mode
(
"documentmode.js"
,
"?5"
,
"6"
);
run_script_as_http_with_mode
(
"documentmode.js"
,
"?7"
,
"7"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment