Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
2507d6e5
Commit
2507d6e5
authored
Jul 20, 2011
by
Jacek Caban
Committed by
Alexandre Julliard
Jul 20, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Moved style tests to separated file.
parent
0a92c01a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
2369 additions
and
2089 deletions
+2369
-2089
Makefile.in
dlls/mshtml/tests/Makefile.in
+2
-1
dom.c
dlls/mshtml/tests/dom.c
+180
-2088
style.c
dlls/mshtml/tests/style.c
+2187
-0
No files found.
dlls/mshtml/tests/Makefile.in
View file @
2507d6e5
...
...
@@ -9,7 +9,8 @@ C_SRCS = \
htmllocation.c
\
misc.c
\
protocol.c
\
script.c
script.c
\
style.c
RC_SRCS
=
rsrc.rc
...
...
dlls/mshtml/tests/dom.c
View file @
2507d6e5
...
...
@@ -3144,137 +3144,6 @@ static void _test_doc_set_title(unsigned line, IHTMLDocument2 *doc, const char *
SysFreeString
(
tmp
);
}
#define test_border_styles(p, n) _test_border_styles(__LINE__, p, n)
static
void
_test_border_styles
(
unsigned
line
,
IHTMLStyle
*
pStyle
,
BSTR
Name
)
{
HRESULT
hres
;
DISPID
dispid
;
hres
=
IHTMLStyle_GetIDsOfNames
(
pStyle
,
&
IID_NULL
,
&
Name
,
1
,
LOCALE_USER_DEFAULT
,
&
dispid
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"GetIDsOfNames: %08x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
DISPPARAMS
params
=
{
NULL
,
NULL
,
0
,
0
};
DISPID
dispidNamed
=
DISPID_PROPERTYPUT
;
VARIANT
ret
;
VARIANT
vDefault
;
VARIANTARG
arg
;
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYGET
,
&
params
,
&
vDefault
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"get_default. ret: %08x
\n
"
,
hres
);
params
.
cArgs
=
1
;
params
.
cNamedArgs
=
1
;
params
.
rgdispidNamedArgs
=
&
dispidNamed
;
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"none"
);
params
.
rgvarg
=
&
arg
;
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"none. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"dotted"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"dotted. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"dashed"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"dashed. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"solid"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"solid. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"double"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"double. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"groove"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"groove. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"ridge"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"ridge. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"inset"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"inset. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"outset"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"outset. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"invalid"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
FAILED
(
hres
),
"invalid value passed.
\n
"
);
VariantClear
(
&
arg
);
params
.
rgvarg
=
&
vDefault
;
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"default. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
}
}
#define test_style_csstext(s,t) _test_style_csstext(__LINE__,s,t)
static
void
_test_style_csstext
(
unsigned
line
,
IHTMLStyle
*
style
,
const
char
*
extext
)
{
BSTR
text
=
(
void
*
)
0xdeadbeef
;
HRESULT
hres
;
hres
=
IHTMLStyle_get_cssText
(
style
,
&
text
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"get_cssText failed: %08x
\n
"
,
hres
);
if
(
extext
)
ok_
(
__FILE__
,
line
)(
!
strcmp_wa
(
text
,
extext
),
"cssText = %s
\n
"
,
wine_dbgstr_w
(
text
));
else
ok_
(
__FILE__
,
line
)(
!
text
,
"cssText = %s
\n
"
,
wine_dbgstr_w
(
text
));
SysFreeString
(
text
);
}
#define test_style_set_csstext(s,t) _test_style_set_csstext(__LINE__,s,t)
static
void
_test_style_set_csstext
(
unsigned
line
,
IHTMLStyle
*
style
,
const
char
*
text
)
{
BSTR
tmp
;
HRESULT
hres
;
tmp
=
a2bstr
(
text
);
hres
=
IHTMLStyle_put_cssText
(
style
,
tmp
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"put_cssText failed: %08x
\n
"
,
hres
);
SysFreeString
(
tmp
);
}
static
void
test_elem_bounding_client_rect
(
IUnknown
*
unk
)
{
IHTMLRect
*
rect
,
*
rect2
;
...
...
@@ -4070,2010 +3939,233 @@ static void test_screen(IHTMLWindow2 *window)
IHTMLScreen_Release
(
screen
);
}
static
void
test_
current_style
(
IHTMLCurrentStyle
*
current_style
)
static
void
test_
default_selection
(
IHTMLDocument2
*
doc
)
{
IHTMLSelectionObject
*
selection
;
IHTMLTxtRange
*
range
;
IDispatch
*
disp
;
BSTR
str
;
HRESULT
hres
;
VARIANT
v
;
test_disp
((
IUnknown
*
)
current_style
,
&
DIID_DispHTMLCurrentStyle
,
"[object]"
);
test_ifaces
((
IUnknown
*
)
current_style
,
cstyle_iids
);
hres
=
IHTMLCurrentStyle_get_display
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_display failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"block"
),
"get_display returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_position
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_position failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"absolute"
),
"get_position returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_fontFamily
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontFamily failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_fontStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"normal"
),
"get_fontStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_backgroundImage
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundImage failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_backgroundImage returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_fontVariant
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontVariant failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"normal"
),
"get_fontVariant returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLDocument2_get_selection
(
doc
,
&
selection
);
ok
(
hres
==
S_OK
,
"get_selection failed: %08x
\n
"
,
hres
);
hres
=
IHTML
CurrentStyle_get_borderTopStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_
borderTopStyl
e failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"
none"
),
"get_borderTopStyle returned
%s
\n
"
,
wine_dbgstr_w
(
str
));
hres
=
IHTML
SelectionObject_get_type
(
selection
,
&
str
);
ok
(
hres
==
S_OK
,
"get_
typ
e failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"
None"
),
"type =
%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_borderRightStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderRightStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_borderRightStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLSelectionObject_createRange
(
selection
,
&
disp
);
IHTMLSelectionObject_Release
(
selection
);
ok
(
hres
==
S_OK
,
"createRange failed: %08x
\n
"
,
hres
);
hres
=
IHTMLCurrentStyle_get_borderBottomStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderBottomStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_borderBottomStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IDispatch_QueryInterface
(
disp
,
&
IID_IHTMLTxtRange
,
(
void
**
)
&
range
);
IDispatch_Release
(
disp
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLTxtRange interface: %08x
\n
"
,
hres
);
hres
=
IHTMLCurrentStyle_get_borderLeftStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderLeftStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_borderLeftStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
test_range_text
(
range
,
NULL
);
IHTMLTxtRange_Release
(
range
);
}
hres
=
IHTMLCurrentStyle_get_textAlign
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textAlign failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"center"
),
"get_textAlign returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
static
void
test_doc_elem
(
IHTMLDocument2
*
doc
)
{
IHTMLDocument2
*
doc_node
,
*
owner_doc
;
IHTMLElement
*
elem
;
IHTMLDocument3
*
doc3
;
HRESULT
hres
;
hres
=
IHTMLCurrentStyle_get_textDecoration
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textDecoration failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_textDecoration returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLDocument2_QueryInterface
(
doc
,
&
IID_IHTMLDocument3
,
(
void
**
)
&
doc3
);
ok
(
hres
==
S_OK
,
"QueryInterface(IID_IHTMLDocument3) failed: %08x
\n
"
,
hres
);
hres
=
IHTMLCurrentStyle_get_cursor
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_cursor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"default"
),
"get_cursor returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLDocument3_get_documentElement
(
doc3
,
&
elem
);
IHTMLDocument3_Release
(
doc3
);
ok
(
hres
==
S_OK
,
"get_documentElement failed: %08x
\n
"
,
hres
);
hres
=
IHTMLCurrentStyle_get_backgroundRepeat
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundRepeat failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"repeat"
),
"get_backgroundRepeat returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
test_node_name
((
IUnknown
*
)
elem
,
"HTML"
);
test_elem_tag
((
IUnknown
*
)
elem
,
"HTML"
);
hres
=
IHTMLCurrentStyle_get_borderColor
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderColor failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
doc_node
=
get_doc_node
(
doc
);
owner_doc
=
get_owner_doc
((
IUnknown
*
)
elem
);
ok
(
iface_cmp
((
IUnknown
*
)
doc_node
,
(
IUnknown
*
)
owner_doc
),
"doc_node != owner_doc
\n
"
);
IHTMLDocument2_Release
(
owner_doc
);
hres
=
IHTMLCurrentStyle_get_borderStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
owner_doc
=
get_owner_doc
((
IUnknown
*
)
doc_node
);
ok
(
!
owner_doc
,
"owner_doc = %p
\n
"
,
owner_doc
);
IHTMLDocument2_Release
(
doc_node
);
hres
=
IHTMLCurrentStyle_get_visibility
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_visibility failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
test_elem_client_rect
((
IUnknown
*
)
elem
);
hres
=
IHTMLCurrentStyle_get_overflow
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
IHTMLElement_Release
(
elem
);
}
hres
=
IHTMLCurrentStyle_get_borderWidth
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderWidth failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
static
void
test_default_body
(
IHTMLBodyElement
*
body
)
{
LONG
l
;
BSTR
bstr
;
HRESULT
hres
;
VARIANT
v
;
hres
=
IHTMLCurrentStyle_get_margin
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_margin failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
bstr
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLBodyElement_get_background
(
body
,
&
bstr
);
ok
(
hres
==
S_OK
,
"get_background failed: %08x
\n
"
,
hres
);
ok
(
bstr
==
NULL
,
"bstr != NULL
\n
"
);
hres
=
IHTMLCurrentStyle_get_padding
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_padding failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
l
=
elem_get_scroll_height
((
IUnknown
*
)
body
);
ok
(
l
!=
-
1
,
"scrollHeight == -1
\n
"
);
l
=
elem_get_scroll_width
((
IUnknown
*
)
body
);
ok
(
l
!=
-
1
,
"scrollWidth == -1
\n
"
);
l
=
elem_get_scroll_top
((
IUnknown
*
)
body
);
ok
(
!
l
,
"scrollTop = %d
\n
"
,
l
);
elem_get_scroll_left
((
IUnknown
*
)
body
);
hres
=
IHTMLCurrentStyle_get_fontWeight
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_fontWeight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_I4
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
)
);
ok
(
V_I4
(
&
v
)
==
400
,
"expect 400 got (%d)
\n
"
,
V_I4
(
&
v
));
VariantClear
(
&
v
);
/* get_text tests */
hres
=
IHTMLBodyElement_get_text
(
body
,
&
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"Expected VT_BSTR got %d
\n
"
,
V_VT
(
&
v
));
ok
(
bstr
==
NULL
,
"bstr != NULL
\n
"
);
hres
=
IHTMLCurrentStyle_get_fontSize
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_fontSize failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
/* get_text - Invalid Text */
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"Invalid"
);
hres
=
IHTMLBodyElement_put_text
(
body
,
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_left
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLBodyElement_get_text
(
body
,
&
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"Expected VT_BSTR got %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"#00a0d0"
),
"v = %s, expected '#00a0d0'
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_top
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
/* get_text - Valid Text */
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"#FF0000"
);
hres
=
IHTMLBodyElement_put_text
(
body
,
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_width
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_width failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLBodyElement_get_text
(
body
,
&
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"Expected VT_BSTR got %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"#ff0000"
),
"v = %s, expected '#ff0000'
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
}
hres
=
IHTMLCurrentStyle_get_height
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_height failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
))
;
VariantClear
(
&
v
)
;
static
void
test_body_funs
(
IHTMLBodyElement
*
body
)
{
VARIANT
vbg
,
vDefaultbg
;
HRESULT
hres
;
hres
=
IHTML
CurrentStyle_get_paddingLeft
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_
paddingLeft
failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
)
);
VariantClear
(
&
v
);
hres
=
IHTML
BodyElement_get_bgColor
(
body
,
&
vDefaultbg
);
ok
(
hres
==
S_OK
,
"get_
bgColor
failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
Defaultbg
)
==
VT_BSTR
,
"bstr != NULL
\n
"
);
ok
(
!
V_BSTR
(
&
vDefaultbg
),
"V_BSTR(bgColor) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
vDefaultbg
))
);
hres
=
IHTMLCurrentStyle_get_zIndex
(
current_style
,
&
v
)
;
ok
(
hres
==
S_OK
,
"get_zIndex failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_I4
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
)
);
ok
(
V_I4
(
&
v
)
==
1
,
"expect 1 got (%d)
\n
"
,
V_I4
(
&
v
)
);
VariantClear
(
&
v
);
V_VT
(
&
vbg
)
=
VT_BSTR
;
V_BSTR
(
&
vbg
)
=
a2bstr
(
"red"
);
hres
=
IHTMLBodyElement_put_bgColor
(
body
,
vbg
);
ok
(
hres
==
S_OK
,
"put_bgColor failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
bg
);
hres
=
IHTML
CurrentStyle_get_verticalAlign
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_
verticalAlign
failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
)
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"middle"
),
"get_verticalAlign returned %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTML
BodyElement_get_bgColor
(
body
,
&
vbg
);
ok
(
hres
==
S_OK
,
"get_
bgColor
failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
Defaultbg
)
==
VT_BSTR
,
"V_VT(&vDefaultbg) != VT_BSTR
\n
"
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
bg
),
"#ff0000"
),
"Unexpected bgcolor %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
vbg
)));
VariantClear
(
&
v
bg
);
hres
=
IHTMLCurrentStyle_get_marginRight
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginRight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
/* Restore Originial */
hres
=
IHTMLBodyElement_put_bgColor
(
body
,
vDefaultbg
);
ok
(
hres
==
S_OK
,
"put_bgColor failed: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefaultbg
);
}
hres
=
IHTMLCurrentStyle_get_marginLeft
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginLeft failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
static
void
test_window
(
IHTMLDocument2
*
doc
)
{
IHTMLWindow2
*
window
,
*
window2
,
*
self
;
IHTMLDocument2
*
doc2
=
NULL
;
IDispatch
*
disp
;
IUnknown
*
unk
;
BSTR
str
;
HRESULT
hres
;
hres
=
IHTML
CurrentStyle_get_borderLeftWidth
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_
borderLeftWidth
failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
)
);
VariantClear
(
&
v
);
hres
=
IHTML
Document2_get_parentWindow
(
doc
,
&
window
);
ok
(
hres
==
S_OK
,
"get_
parentWindow
failed: %08x
\n
"
,
hres
);
test_ifaces
((
IUnknown
*
)
window
,
window_iids
);
test_disp
((
IUnknown
*
)
window
,
&
DIID_DispHTMLWindow2
,
"[object]"
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLCurrentStyle_get_borderRightWidth
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightWidth failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLWindow2_get_document
(
window
,
&
doc2
);
ok
(
hres
==
S_OK
,
"get_document failed: %08x
\n
"
,
hres
);
ok
(
doc2
!=
NULL
,
"doc2 == NULL
\n
"
);
hres
=
IHTMLCurrentStyle_get_borderBottomWidth
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomWidth failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
test_ifaces
((
IUnknown
*
)
doc2
,
doc_node_iids
);
test_disp
((
IUnknown
*
)
doc2
,
&
DIID_DispHTMLDocument
,
"[object]"
);
test_class_info
((
IUnknown
*
)
doc2
);
hres
=
IHTMLCurrentStyle_get_borderTopWidth
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopWidth failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
test_ifaces
((
IUnknown
*
)
doc
,
doc_obj_iids
);
test_disp
((
IUnknown
*
)
doc
,
&
DIID_DispHTMLDocument
,
"[object]"
);
test_class_info
((
IUnknown
*
)
doc
);
hres
=
IHTMLCurrentStyle_get_color
(
current_style
,
&
v
)
;
ok
(
hres
==
S_OK
,
"get_color failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
)
);
VariantClear
(
&
v
);
unk
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLDocument2_QueryInterface
(
doc2
,
&
IID_ICustomDoc
,
(
void
**
)
&
unk
);
ok
(
hres
==
E_NOINTERFACE
,
"QueryInterface(IID_ICustomDoc) returned: %08x
\n
"
,
hres
);
ok
(
!
unk
,
"unk = %p
\n
"
,
unk
);
hres
=
IHTMLCurrentStyle_get_backgroundColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
IHTMLDocument_Release
(
doc2
);
hres
=
IHTMLCurrentStyle_get_borderLeftColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLWindow2_get_window
(
window
,
&
window2
);
ok
(
hres
==
S_OK
,
"get_window failed: %08x
\n
"
,
hres
);
ok
(
window2
!=
NULL
,
"window2 == NULL
\n
"
);
hres
=
IHTMLCurrentStyle_get_borderTopColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLWindow2_get_self
(
window
,
&
self
);
ok
(
hres
==
S_OK
,
"get_self failed: %08x
\n
"
,
hres
);
ok
(
window2
!=
NULL
,
"self == NULL
\n
"
);
hres
=
IHTMLCurrentStyle_get_borderRightColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
ok
(
self
==
window2
,
"self != window2
\n
"
);
hres
=
IHTMLCurrentStyle_get_borderBottomColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
IHTMLWindow2_Release
(
window2
);
IHTMLWindow2_Release
(
self
);
hres
=
IHTMLCurrentStyle_get_paddingTop
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingTop failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
disp
=
NULL
;
hres
=
IHTMLDocument2_get_Script
(
doc
,
&
disp
);
ok
(
hres
==
S_OK
,
"get_Script failed: %08x
\n
"
,
hres
);
ok
(
disp
==
(
void
*
)
window
,
"disp != window
\n
"
);
IDispatch_Release
(
disp
);
hres
=
IHTMLCurrentStyle_get_paddingRight
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingRight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLWindow2_toString
(
window
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"toString failed: %08x
\n
"
,
hres
);
hres
=
IHTMLCurrentStyle_get_paddingBottom
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingRight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
str
=
NULL
;
hres
=
IHTMLWindow2_toString
(
window
,
&
str
);
ok
(
hres
==
S_OK
,
"toString failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"[object]"
),
"toString returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_letterSpacing
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_letterSpacing failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
)
);
VariantClear
(
&
v
);
test_window_name
(
window
,
NULL
);
set_window_name
(
window
,
"test"
);
test_window_length
(
window
,
0
);
test_screen
(
window
);
hres
=
IHTMLCurrentStyle_get_marginTop
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginTop failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
IHTMLWindow2_Release
(
window
);
}
hres
=
IHTMLCurrentStyle_get_marginBottom
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginBottom failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
static
void
test_defaults
(
IHTMLDocument2
*
doc
)
{
IHTMLStyleSheetsCollection
*
stylesheetcol
;
IHTMLCurrentStyle
*
cstyle
;
IHTMLBodyElement
*
body
;
IHTMLElement2
*
elem2
;
IHTMLElement
*
elem
;
IHTMLStyle
*
style
;
LONG
l
;
HRESULT
hres
;
IHTMLElementCollection
*
collection
;
hres
=
IHTMLCurrentStyle_get_right
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_Right failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
elem
=
doc_get_body
(
doc
);
hres
=
IHTMLCurrentStyle_get_bottom
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_bottom failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_lineHeight
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_lineHeight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_textIndent
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_textIndent failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
}
static
void
test_style2
(
IHTMLStyle2
*
style2
)
{
VARIANT
v
;
BSTR
str
;
HRESULT
hres
;
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle2_get_position
(
style2
,
&
str
);
ok
(
hres
==
S_OK
,
"get_position failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"str != NULL
\n
"
);
str
=
a2bstr
(
"absolute"
);
hres
=
IHTMLStyle2_put_position
(
style2
,
str
);
ok
(
hres
==
S_OK
,
"put_position failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle2_get_position
(
style2
,
&
str
);
ok
(
hres
==
S_OK
,
"get_position failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"absolute"
),
"get_position returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
/* Test right */
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle2_get_right
(
style2
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(right)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(right) != NULL
\n
"
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"3px"
);
hres
=
IHTMLStyle2_put_right
(
style2
,
v
);
ok
(
hres
==
S_OK
,
"put_right failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle2_get_right
(
style2
,
&
v
);
ok
(
hres
==
S_OK
,
"get_right failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"3px"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
}
static
void
test_style3
(
IHTMLStyle3
*
style3
)
{
BSTR
str
;
HRESULT
hres
;
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle3_get_wordWrap
(
style3
,
&
str
);
ok
(
hres
==
S_OK
,
"get_wordWrap failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"str != NULL
\n
"
);
str
=
a2bstr
(
"break-word"
);
hres
=
IHTMLStyle3_put_wordWrap
(
style3
,
str
);
ok
(
hres
==
S_OK
,
"put_wordWrap failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle3_get_wordWrap
(
style3
,
&
str
);
ok
(
hres
==
S_OK
,
"get_wordWrap failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"break-word"
),
"get_wordWrap returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
}
static
void
test_style4
(
IHTMLStyle4
*
style4
)
{
HRESULT
hres
;
VARIANT
v
;
VARIANT
vdefault
;
hres
=
IHTMLStyle4_get_minHeight
(
style4
,
&
vdefault
);
ok
(
hres
==
S_OK
,
"get_minHeight failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10px"
);
hres
=
IHTMLStyle4_put_minHeight
(
style4
,
v
);
ok
(
hres
==
S_OK
,
"put_minHeight failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle4_get_minHeight
(
style4
,
&
v
);
ok
(
hres
==
S_OK
,
"get_minHeight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expect 10px got (%s)
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle4_put_minHeight
(
style4
,
vdefault
);
ok
(
hres
==
S_OK
,
"put_minHeight failed: %08x
\n
"
,
hres
);
VariantClear
(
&
vdefault
);
}
static
void
test_default_style
(
IHTMLStyle
*
style
)
{
IHTMLStyle2
*
style2
;
IHTMLStyle3
*
style3
;
IHTMLStyle4
*
style4
;
VARIANT_BOOL
b
;
VARIANT
v
;
BSTR
str
;
HRESULT
hres
;
float
f
;
BSTR
sOverflowDefault
;
BSTR
sDefault
;
VARIANT
vDefault
;
test_disp
((
IUnknown
*
)
style
,
&
DIID_DispHTMLStyle
,
"[object]"
);
test_ifaces
((
IUnknown
*
)
style
,
style_iids
);
test_style_csstext
(
style
,
NULL
);
hres
=
IHTMLStyle_get_position
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_position failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_get_marginRight
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginRight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(marginRight) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(marginRight) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_get_marginLeft
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginLeft failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(marginLeft) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(marginLeft) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_fontFamily
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontFamily failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"fontFamily = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_fontWeight
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontWeight failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"fontWeight = %s
\n
"
,
wine_dbgstr_w
(
str
));
hres
=
IHTMLStyle_get_fontWeight
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_fontWeight failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"test"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"bold"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"bolder"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"lighter"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"100"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"200"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"300"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"400"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"500"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"600"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"700"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"800"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"900"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_fontWeight
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontWeight failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"900"
),
"str != style900
\n
"
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* font Variant */
hres
=
IHTMLStyle_get_fontVariant
(
style
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"get_fontVariant failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_fontVariant
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_fontVariant failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"test"
);
hres
=
IHTMLStyle_put_fontVariant
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"fontVariant failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"small-caps"
);
hres
=
IHTMLStyle_put_fontVariant
(
style
,
str
);
ok
(
hres
==
S_OK
,
"fontVariant failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"normal"
);
hres
=
IHTMLStyle_put_fontVariant
(
style
,
str
);
ok
(
hres
==
S_OK
,
"fontVariant failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_fontVariant
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"fontVariant failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_display
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_display failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"display = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_visibility
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_visibility failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"visibility = %s
\n
"
,
wine_dbgstr_w
(
str
));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_get_fontSize
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_fontSize failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(fontSize) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(fontSize) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_get_color
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_color failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(color) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(color) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationUnderline
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationUnderline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationUnderline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationUnderline
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationUnderline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationUnderline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationUnderline
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationUnderline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationUnderline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationUnderline
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"put_textDecorationUnderline failed: %08x
\n
"
,
hres
);
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationLineThrough
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationLineThrough failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationLineThrough = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationLineThrough
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationLineThrough failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationLineThrough = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationLineThrough
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationLineThrough failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationLineThrough = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationLineThrough
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"put_textDecorationLineThrough failed: %08x
\n
"
,
hres
);
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationNone
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationNone failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationNone = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationNone
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationNone failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationNone = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationNone
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationNone failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationNone = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationNone
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"put_textDecorationNone failed: %08x
\n
"
,
hres
);
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationOverline
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationOverline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationOverline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationOverline
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationOverline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationOverline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationOverline
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationOverline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationOverline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationOverline
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"put_textDecorationOverline failed: %08x
\n
"
,
hres
);
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationBlink
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationBlink failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationBlink = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationBlink
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationBlink failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationBlink = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationBlink
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationBlink failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationBlink = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationBlink
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"textDecorationBlink failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_textDecoration
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_textDecoration failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"invalid"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"none"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"underline"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"overline"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"line-through"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"blink"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_textDecoration
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textDecoration failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"blink"
),
"str != blink
\n
"
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
hres
=
IHTMLStyle_get_posWidth
(
style
,
NULL
);
ok
(
hres
==
E_POINTER
,
"get_posWidth failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posWidth
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posWidth failed: %08x
\n
"
,
hres
);
ok
(
f
==
0
.
0
f
,
"f = %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_width
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_width failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v)=%p
\n
"
,
V_BSTR
(
&
v
));
hres
=
IHTMLStyle_put_posWidth
(
style
,
2
.
2
);
ok
(
hres
==
S_OK
,
"put_posWidth failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posWidth
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posWidth failed: %08x
\n
"
,
hres
);
ok
(
f
==
2
.
0
f
||
f
==
2
.
2
f
,
/* IE8 */
"f = %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"auto"
);
hres
=
IHTMLStyle_put_width
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_width failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_width
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_width failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"auto"
),
"V_BSTR(v)=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_I4
;
V_I4
(
&
v
)
=
100
;
hres
=
IHTMLStyle_put_width
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_width failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_width
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_width failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"100px"
),
"V_BSTR(v)=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* margin tests */
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_margin
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_margin failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"margin = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
a2bstr
(
"1"
);
hres
=
IHTMLStyle_put_margin
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_margin failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_margin
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_margin failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"1px"
),
"margin = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_margin
(
style
,
NULL
);
ok
(
hres
==
S_OK
,
"put_margin failed: %08x
\n
"
,
hres
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_marginTop
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginTop failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(marginTop) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(marginTop) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"6px"
);
hres
=
IHTMLStyle_put_marginTop
(
style
,
v
);
SysFreeString
(
V_BSTR
(
&
v
));
ok
(
hres
==
S_OK
,
"put_marginTop failed: %08x
\n
"
,
hres
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_marginTop
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginTop failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(marginTop) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"6px"
),
"V_BSTR(marginTop) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
str
=
NULL
;
hres
=
IHTMLStyle_get_border
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_border failed: %08x
\n
"
,
hres
);
ok
(
!
str
||
!*
str
,
"str is not empty
\n
"
);
SysFreeString
(
str
);
str
=
a2bstr
(
"1px"
);
hres
=
IHTMLStyle_put_border
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_border failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_left
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
/* Test posLeft */
hres
=
IHTMLStyle_get_posLeft
(
style
,
NULL
);
ok
(
hres
==
E_POINTER
,
"get_posLeft failed: %08x
\n
"
,
hres
);
f
=
1
.
0
f
;
hres
=
IHTMLStyle_get_posLeft
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posLeft failed: %08x
\n
"
,
hres
);
ok
(
f
==
0
.
0
,
"expected 0.0 got %f
\n
"
,
f
);
hres
=
IHTMLStyle_put_posLeft
(
style
,
4
.
9
f
);
ok
(
hres
==
S_OK
,
"put_posLeft failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posLeft
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posLeft failed: %08x
\n
"
,
hres
);
ok
(
f
==
4
.
0
||
f
==
4
.
9
f
,
/* IE8 */
"expected 4.0 or 4.9 (IE8) got %f
\n
"
,
f
);
/* Ensure left is updated correctly. */
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_left
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"4px"
)
||
!
strcmp_wa
(
V_BSTR
(
&
v
),
"4.9px"
),
/* IE8 */
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* Test left */
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"3px"
);
hres
=
IHTMLStyle_put_left
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_left failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_posLeft
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posLeft failed: %08x
\n
"
,
hres
);
ok
(
f
==
3
.
0
,
"expected 3.0 got %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_left
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"3px"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_put_left
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_left failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_left
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_top
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
/* Test posTop */
hres
=
IHTMLStyle_get_posTop
(
style
,
NULL
);
ok
(
hres
==
E_POINTER
,
"get_posTop failed: %08x
\n
"
,
hres
);
f
=
1
.
0
f
;
hres
=
IHTMLStyle_get_posTop
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posTop failed: %08x
\n
"
,
hres
);
ok
(
f
==
0
.
0
,
"expected 0.0 got %f
\n
"
,
f
);
hres
=
IHTMLStyle_put_posTop
(
style
,
4
.
9
f
);
ok
(
hres
==
S_OK
,
"put_posTop failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posTop
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posTop failed: %08x
\n
"
,
hres
);
ok
(
f
==
4
.
0
||
f
==
4
.
9
f
,
/* IE8 */
"expected 4.0 or 4.9 (IE8) got %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"3px"
);
hres
=
IHTMLStyle_put_top
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_top failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_top
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"3px"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_posTop
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posTop failed: %08x
\n
"
,
hres
);
ok
(
f
==
3
.
0
,
"expected 3.0 got %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_put_top
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_top failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_top
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
/* Test posHeight */
hres
=
IHTMLStyle_get_posHeight
(
style
,
NULL
);
ok
(
hres
==
E_POINTER
,
"get_posHeight failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_height
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_height failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
f
=
1
.
0
f
;
hres
=
IHTMLStyle_get_posHeight
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posHeight failed: %08x
\n
"
,
hres
);
ok
(
f
==
0
.
0
,
"expected 0.0 got %f
\n
"
,
f
);
hres
=
IHTMLStyle_put_posHeight
(
style
,
4
.
9
f
);
ok
(
hres
==
S_OK
,
"put_posHeight failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posHeight
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posHeight failed: %08x
\n
"
,
hres
);
ok
(
f
==
4
.
0
||
f
==
4
.
9
f
,
/* IE8 */
"expected 4.0 or 4.9 (IE8) got %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"64px"
);
hres
=
IHTMLStyle_put_height
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_height failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_height
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_height failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"64px"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_posHeight
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posHeight failed: %08x
\n
"
,
hres
);
ok
(
f
==
64
.
0
,
"expected 64.0 got %f
\n
"
,
f
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_cursor
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_cursor failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"get_cursor != NULL
\n
"
);
SysFreeString
(
str
);
str
=
a2bstr
(
"default"
);
hres
=
IHTMLStyle_put_cursor
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_cursor failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle_get_cursor
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_cursor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"default"
),
"get_cursor returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_verticalAlign
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_vertivalAlign failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"middle"
);
hres
=
IHTMLStyle_put_verticalAlign
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_vertivalAlign failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_verticalAlign
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_verticalAlign failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"middle"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_textAlign
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textAlign failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"textAlign != NULL
\n
"
);
str
=
a2bstr
(
"center"
);
hres
=
IHTMLStyle_put_textAlign
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textAlign failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle_get_textAlign
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textAlign failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"center"
),
"textAlign = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
SysFreeString
(
str
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_filter
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_filter failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"filter != NULL
\n
"
);
str
=
a2bstr
(
"alpha(opacity=100)"
);
hres
=
IHTMLStyle_put_filter
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_filter failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_zIndex
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_zIndex failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_I4
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_I4
(
&
v
),
"V_I4(v) != 0
\n
"
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"1"
);
hres
=
IHTMLStyle_put_zIndex
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_zIndex failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_zIndex
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_zIndex failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_I4
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
V_I4
(
&
v
)
==
1
,
"V_I4(v) = %d
\n
"
,
V_I4
(
&
v
));
VariantClear
(
&
v
);
/* fontStyle */
hres
=
IHTMLStyle_get_fontStyle
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_fontStyle failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"test"
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"italic"
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"oblique"
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"normal"
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* overflow */
hres
=
IHTMLStyle_get_overflow
(
style
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"get_overflow failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_overflow
(
style
,
&
sOverflowDefault
);
ok
(
hres
==
S_OK
,
"get_overflow failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"test"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"visible"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"scroll"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"hidden"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"auto"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_overflow
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_overflow failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"auto"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
str
=
a2bstr
(
""
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_overflow
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_overflow failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
/* restore overflow default */
hres
=
IHTMLStyle_put_overflow
(
style
,
sOverflowDefault
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
sOverflowDefault
);
/* Attribute Tests*/
hres
=
IHTMLStyle_getAttribute
(
style
,
NULL
,
1
,
&
v
);
ok
(
hres
==
E_INVALIDARG
,
"getAttribute failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"position"
);
hres
=
IHTMLStyle_getAttribute
(
style
,
str
,
1
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"getAttribute failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_getAttribute
(
style
,
str
,
1
,
&
v
);
ok
(
hres
==
S_OK
,
"getAttribute failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"type failed: %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_setAttribute
(
style
,
NULL
,
v
,
1
);
ok
(
hres
==
E_INVALIDARG
,
"setAttribute failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"absolute"
);
hres
=
IHTMLStyle_setAttribute
(
style
,
str
,
v
,
1
);
ok
(
hres
==
S_OK
,
"setAttribute failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_getAttribute
(
style
,
str
,
1
,
&
v
);
ok
(
hres
==
S_OK
,
"getAttribute failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"type failed: %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"absolute"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_setAttribute
(
style
,
str
,
v
,
1
);
ok
(
hres
==
S_OK
,
"setAttribute failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
SysFreeString
(
str
);
str
=
a2bstr
(
"borderLeftStyle"
);
test_border_styles
(
style
,
str
);
SysFreeString
(
str
);
str
=
a2bstr
(
"borderbottomstyle"
);
test_border_styles
(
style
,
str
);
SysFreeString
(
str
);
str
=
a2bstr
(
"borderrightstyle"
);
test_border_styles
(
style
,
str
);
SysFreeString
(
str
);
str
=
a2bstr
(
"bordertopstyle"
);
test_border_styles
(
style
,
str
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_borderStyle
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderStyle failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"none dotted dashed solid"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"none dotted dashed solid"
);
hres
=
IHTMLStyle_get_borderStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none dotted dashed solid"
),
"expected (none dotted dashed solid) = (%s)
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
SysFreeString
(
str
);
str
=
a2bstr
(
"double groove ridge inset"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"window-inset outset ridge inset"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"window-inset"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"none none none none none"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"invalid none none none"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"none invalid none none"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* backgoundColor */
hres
=
IHTMLStyle_get_backgroundColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundColor: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"type failed: %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* padding */
hres
=
IHTMLStyle_get_padding
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_padding failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"padding = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
str
=
a2bstr
(
"1"
);
hres
=
IHTMLStyle_put_padding
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_padding failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_padding
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_padding failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"1px"
),
"padding = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
/* PaddingLeft */
hres
=
IHTMLStyle_get_paddingLeft
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_paddingLeft: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_paddingLeft
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_paddingLeft: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_paddingLeft
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingLeft: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expecte 10 = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_paddingLeft
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_paddingLeft: %08x
\n
"
,
hres
);
/* BackgroundRepeat */
hres
=
IHTMLStyle_get_backgroundRepeat
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_backgroundRepeat failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"invalid"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"repeat"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"no-repeat"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"repeat-x"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"repeat-y"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_backgroundRepeat
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundRepeat failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"repeat-y"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderColor */
hres
=
IHTMLStyle_get_borderColor
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderColor failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"red green red blue"
);
hres
=
IHTMLStyle_put_borderColor
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderColor failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_borderColor
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"red green red blue"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderColor
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderColor failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderRight */
hres
=
IHTMLStyle_get_borderRight
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderRight failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"thick dotted red"
);
hres
=
IHTMLStyle_put_borderRight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderRight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
/* IHTMLStyle_get_borderRight appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderRightColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderRightWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightWidth failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"thick"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderRightStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderRightStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"dotted"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderRight
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderRight failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderTop */
hres
=
IHTMLStyle_get_borderTop
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderTop failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"thick dotted red"
);
hres
=
IHTMLStyle_put_borderTop
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderTop failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
/* IHTMLStyle_get_borderTop appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderTopColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderTopWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopWidth failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"thick"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderTopStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderTopStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"dotted"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderTop
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderTop failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderBottom */
hres
=
IHTMLStyle_get_borderBottom
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderBottom failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"thick dotted red"
);
hres
=
IHTMLStyle_put_borderBottom
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderBottom failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
/* IHTMLStyle_get_borderBottom appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderBottomColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderBottomWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomWidth failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"thick"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderBottomStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderBottomStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"dotted"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderBottom
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderBottom failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderLeft */
hres
=
IHTMLStyle_get_borderLeft
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderLeft failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"thick dotted red"
);
hres
=
IHTMLStyle_put_borderLeft
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderLeft failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
/* IHTMLStyle_get_borderLeft appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderLeftColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderLeftWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftWidth failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"thick"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderLeftStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderLeftStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"dotted"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderLeft
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderLeft failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* backgroundPositionX */
hres
=
IHTMLStyle_get_backgroundPositionX
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionX failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"backgroundPositionX = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10px"
);
hres
=
IHTMLStyle_put_backgroundPositionX
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_backgroundPositionX failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_backgroundPositionX
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionX failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"backgroundPositionX = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* backgroundPositionY */
hres
=
IHTMLStyle_get_backgroundPositionY
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionY failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"15px"
);
hres
=
IHTMLStyle_put_backgroundPositionY
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_backgroundPositionY failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_backgroundPositionY
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionY failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"15px"
),
"backgroundPositionY = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* backgroundPosition */
str
=
NULL
;
hres
=
IHTMLStyle_get_backgroundPosition
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundPosition failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"10px 15px"
),
"backgroundPosition = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
str
=
a2bstr
(
"center 20%"
);
hres
=
IHTMLStyle_put_backgroundPosition
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundPosition failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle_get_backgroundPosition
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundPosition failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"center 20%"
),
"backgroundPosition = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_backgroundPositionX
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionX failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"center"
),
"backgroundPositionX = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_backgroundPositionY
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionY failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"20%"
),
"backgroundPositionY = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* borderTopWidth */
hres
=
IHTMLStyle_get_borderTopWidth
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderTopWidth: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10px"
);
hres
=
IHTMLStyle_put_borderTopWidth
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderTopWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderTopWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopWidth: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderTopWidth
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderTopWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* borderRightWidth */
hres
=
IHTMLStyle_get_borderRightWidth
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderRightWidth: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_borderRightWidth
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderRightWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderRightWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightWidth: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderRightWidth
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderRightWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* borderBottomWidth */
hres
=
IHTMLStyle_get_borderBottomWidth
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderBottomWidth: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_borderBottomWidth
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderBottomWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderBottomWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomWidth: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderBottomWidth
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderBottomWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* borderLeftWidth */
hres
=
IHTMLStyle_get_borderLeftWidth
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderLeftWidth: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_borderLeftWidth
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderLeftWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderLeftWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftWidth: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderLeftWidth
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderLeftWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* wordSpacing */
hres
=
IHTMLStyle_get_wordSpacing
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_wordSpacing: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_wordSpacing
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_wordSpacing: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_wordSpacing
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_wordSpacing: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_wordSpacing
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_wordSpacing: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* letterSpacing */
hres
=
IHTMLStyle_get_letterSpacing
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_letterSpacing: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"11"
);
hres
=
IHTMLStyle_put_letterSpacing
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_letterSpacing: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_letterSpacing
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_letterSpacing: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"11px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_letterSpacing
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_letterSpacing: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* borderTopColor */
hres
=
IHTMLStyle_get_borderTopColor
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderTopColor: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"red"
);
hres
=
IHTMLStyle_put_borderTopColor
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderTopColor: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderTopColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopColor: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"expecte red = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderTopColor
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderTopColor: %08x
\n
"
,
hres
);
/* borderRightColor */
hres
=
IHTMLStyle_get_borderRightColor
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderRightColor: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"blue"
);
hres
=
IHTMLStyle_put_borderRightColor
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderRightColor: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderRightColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightColor: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"blue"
),
"expected blue = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderRightColor
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"putborderRightColorr: %08x
\n
"
,
hres
);
/* borderBottomColor */
hres
=
IHTMLStyle_get_borderBottomColor
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderBottomColor: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"cyan"
);
hres
=
IHTMLStyle_put_borderBottomColor
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderBottomColor: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderBottomColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomColor: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"cyan"
),
"expected cyan = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderBottomColor
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderBottomColor: %08x
\n
"
,
hres
);
/* borderLeftColor */
hres
=
IHTMLStyle_get_borderLeftColor
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderLeftColor: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"cyan"
);
hres
=
IHTMLStyle_put_borderLeftColor
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderLeftColor: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderLeftColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftColor: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"cyan"
),
"expected cyan = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderLeftColor
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderLeftColor: %08x
\n
"
,
hres
);
/* clip */
hres
=
IHTMLStyle_get_clip
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_clip failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"clip = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
a2bstr
(
"rect(0px 1px 500px 505px)"
);
hres
=
IHTMLStyle_put_clip
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_clip failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_clip
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_clip failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"rect(0px 1px 500px 505px)"
),
"clip = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
/* pageBreakAfter */
hres
=
IHTMLStyle_get_pageBreakAfter
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_pageBreakAfter failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"pageBreakAfter = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
a2bstr
(
"always"
);
hres
=
IHTMLStyle_put_pageBreakAfter
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_pageBreakAfter failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_pageBreakAfter
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_pageBreakAfter failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"always"
),
"pageBreakAfter = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_QueryInterface
(
style
,
&
IID_IHTMLStyle2
,
(
void
**
)
&
style2
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLStyle2 iface: %08x
\n
"
,
hres
);
if
(
SUCCEEDED
(
hres
))
{
test_style2
(
style2
);
IHTMLStyle2_Release
(
style2
);
}
hres
=
IHTMLStyle_QueryInterface
(
style
,
&
IID_IHTMLStyle3
,
(
void
**
)
&
style3
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLStyle3 iface: %08x
\n
"
,
hres
);
if
(
SUCCEEDED
(
hres
))
{
test_style3
(
style3
);
IHTMLStyle3_Release
(
style3
);
}
hres
=
IHTMLStyle_QueryInterface
(
style
,
&
IID_IHTMLStyle4
,
(
void
**
)
&
style4
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLStyle4 iface: %08x
\n
"
,
hres
);
if
(
SUCCEEDED
(
hres
))
{
test_style4
(
style4
);
IHTMLStyle4_Release
(
style4
);
}
}
#define test_style_filter(a,b) _test_style_filter(__LINE__,a,b)
static
void
_test_style_filter
(
unsigned
line
,
IHTMLStyle
*
style
,
const
char
*
exval
)
{
BSTR
str
;
HRESULT
hres
;
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_filter
(
style
,
&
str
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"get_filter failed: %08x
\n
"
,
hres
);
if
(
exval
)
ok_
(
__FILE__
,
line
)(
str
&&
!
strcmp_wa
(
str
,
exval
),
"filter = %s, expected %s
\n
"
,
wine_dbgstr_w
(
str
),
exval
);
else
ok_
(
__FILE__
,
line
)(
!
str
,
"str = %s, expected NULL
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
}
#define set_style_filter(a,b) _set_style_filter(__LINE__,a,b)
static
void
_set_style_filter
(
unsigned
line
,
IHTMLStyle
*
style
,
const
char
*
val
)
{
BSTR
str
=
a2bstr
(
val
);
HRESULT
hres
;
hres
=
IHTMLStyle_put_filter
(
style
,
str
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"put_filter failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
_test_style_filter
(
line
,
style
,
val
);
}
static
void
test_style_filters
(
IHTMLElement
*
elem
)
{
IHTMLStyle
*
style
;
HRESULT
hres
;
hres
=
IHTMLElement_get_style
(
elem
,
&
style
);
ok
(
hres
==
S_OK
,
"get_style failed: %08x
\n
"
,
hres
);
test_style_filter
(
style
,
NULL
);
set_style_filter
(
style
,
"alpha(opacity=50.0040)"
);
set_style_filter
(
style
,
"alpha(opacity=100)"
);
IHTMLStyle_Release
(
style
);
hres
=
IHTMLElement_get_style
(
elem
,
&
style
);
ok
(
hres
==
S_OK
,
"get_style failed: %08x
\n
"
,
hres
);
test_style_filter
(
style
,
"alpha(opacity=100)"
);
set_style_filter
(
style
,
"xxx(a,b,c) alpha(opacity=100)"
);
set_style_filter
(
style
,
NULL
);
IHTMLStyle_Release
(
style
);
}
static
void
test_set_csstext
(
IHTMLStyle
*
style
)
{
VARIANT
v
;
HRESULT
hres
;
test_style_set_csstext
(
style
,
"background-color: black;"
);
hres
=
IHTMLStyle_get_backgroundColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundColor: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"type failed: %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"black"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
}
static
void
test_default_selection
(
IHTMLDocument2
*
doc
)
{
IHTMLSelectionObject
*
selection
;
IHTMLTxtRange
*
range
;
IDispatch
*
disp
;
BSTR
str
;
HRESULT
hres
;
hres
=
IHTMLDocument2_get_selection
(
doc
,
&
selection
);
ok
(
hres
==
S_OK
,
"get_selection failed: %08x
\n
"
,
hres
);
hres
=
IHTMLSelectionObject_get_type
(
selection
,
&
str
);
ok
(
hres
==
S_OK
,
"get_type failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"None"
),
"type = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLSelectionObject_createRange
(
selection
,
&
disp
);
IHTMLSelectionObject_Release
(
selection
);
ok
(
hres
==
S_OK
,
"createRange failed: %08x
\n
"
,
hres
);
hres
=
IDispatch_QueryInterface
(
disp
,
&
IID_IHTMLTxtRange
,
(
void
**
)
&
range
);
IDispatch_Release
(
disp
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLTxtRange interface: %08x
\n
"
,
hres
);
test_range_text
(
range
,
NULL
);
IHTMLTxtRange_Release
(
range
);
}
static
void
test_doc_elem
(
IHTMLDocument2
*
doc
)
{
IHTMLDocument2
*
doc_node
,
*
owner_doc
;
IHTMLElement
*
elem
;
IHTMLDocument3
*
doc3
;
HRESULT
hres
;
hres
=
IHTMLDocument2_QueryInterface
(
doc
,
&
IID_IHTMLDocument3
,
(
void
**
)
&
doc3
);
ok
(
hres
==
S_OK
,
"QueryInterface(IID_IHTMLDocument3) failed: %08x
\n
"
,
hres
);
hres
=
IHTMLDocument3_get_documentElement
(
doc3
,
&
elem
);
IHTMLDocument3_Release
(
doc3
);
ok
(
hres
==
S_OK
,
"get_documentElement failed: %08x
\n
"
,
hres
);
test_node_name
((
IUnknown
*
)
elem
,
"HTML"
);
test_elem_tag
((
IUnknown
*
)
elem
,
"HTML"
);
doc_node
=
get_doc_node
(
doc
);
owner_doc
=
get_owner_doc
((
IUnknown
*
)
elem
);
ok
(
iface_cmp
((
IUnknown
*
)
doc_node
,
(
IUnknown
*
)
owner_doc
),
"doc_node != owner_doc
\n
"
);
IHTMLDocument2_Release
(
owner_doc
);
owner_doc
=
get_owner_doc
((
IUnknown
*
)
doc_node
);
ok
(
!
owner_doc
,
"owner_doc = %p
\n
"
,
owner_doc
);
IHTMLDocument2_Release
(
doc_node
);
test_elem_client_rect
((
IUnknown
*
)
elem
);
IHTMLElement_Release
(
elem
);
}
static
void
test_default_body
(
IHTMLBodyElement
*
body
)
{
LONG
l
;
BSTR
bstr
;
HRESULT
hres
;
VARIANT
v
;
bstr
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLBodyElement_get_background
(
body
,
&
bstr
);
ok
(
hres
==
S_OK
,
"get_background failed: %08x
\n
"
,
hres
);
ok
(
bstr
==
NULL
,
"bstr != NULL
\n
"
);
l
=
elem_get_scroll_height
((
IUnknown
*
)
body
);
ok
(
l
!=
-
1
,
"scrollHeight == -1
\n
"
);
l
=
elem_get_scroll_width
((
IUnknown
*
)
body
);
ok
(
l
!=
-
1
,
"scrollWidth == -1
\n
"
);
l
=
elem_get_scroll_top
((
IUnknown
*
)
body
);
ok
(
!
l
,
"scrollTop = %d
\n
"
,
l
);
elem_get_scroll_left
((
IUnknown
*
)
body
);
/* get_text tests */
hres
=
IHTMLBodyElement_get_text
(
body
,
&
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"Expected VT_BSTR got %d
\n
"
,
V_VT
(
&
v
));
ok
(
bstr
==
NULL
,
"bstr != NULL
\n
"
);
/* get_text - Invalid Text */
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"Invalid"
);
hres
=
IHTMLBodyElement_put_text
(
body
,
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLBodyElement_get_text
(
body
,
&
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"Expected VT_BSTR got %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"#00a0d0"
),
"v = %s, expected '#00a0d0'
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* get_text - Valid Text */
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"#FF0000"
);
hres
=
IHTMLBodyElement_put_text
(
body
,
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLBodyElement_get_text
(
body
,
&
v
);
ok
(
hres
==
S_OK
,
"expect S_OK got 0x%08d
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"Expected VT_BSTR got %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"#ff0000"
),
"v = %s, expected '#ff0000'
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
}
static
void
test_body_funs
(
IHTMLBodyElement
*
body
)
{
VARIANT
vbg
,
vDefaultbg
;
HRESULT
hres
;
hres
=
IHTMLBodyElement_get_bgColor
(
body
,
&
vDefaultbg
);
ok
(
hres
==
S_OK
,
"get_bgColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
vDefaultbg
)
==
VT_BSTR
,
"bstr != NULL
\n
"
);
ok
(
!
V_BSTR
(
&
vDefaultbg
),
"V_BSTR(bgColor) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
vDefaultbg
)));
V_VT
(
&
vbg
)
=
VT_BSTR
;
V_BSTR
(
&
vbg
)
=
a2bstr
(
"red"
);
hres
=
IHTMLBodyElement_put_bgColor
(
body
,
vbg
);
ok
(
hres
==
S_OK
,
"put_bgColor failed: %08x
\n
"
,
hres
);
VariantClear
(
&
vbg
);
hres
=
IHTMLBodyElement_get_bgColor
(
body
,
&
vbg
);
ok
(
hres
==
S_OK
,
"get_bgColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
vDefaultbg
)
==
VT_BSTR
,
"V_VT(&vDefaultbg) != VT_BSTR
\n
"
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
vbg
),
"#ff0000"
),
"Unexpected bgcolor %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
vbg
)));
VariantClear
(
&
vbg
);
/* Restore Originial */
hres
=
IHTMLBodyElement_put_bgColor
(
body
,
vDefaultbg
);
ok
(
hres
==
S_OK
,
"put_bgColor failed: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefaultbg
);
}
static
void
test_window
(
IHTMLDocument2
*
doc
)
{
IHTMLWindow2
*
window
,
*
window2
,
*
self
;
IHTMLDocument2
*
doc2
=
NULL
;
IDispatch
*
disp
;
IUnknown
*
unk
;
BSTR
str
;
HRESULT
hres
;
hres
=
IHTMLDocument2_get_parentWindow
(
doc
,
&
window
);
ok
(
hres
==
S_OK
,
"get_parentWindow failed: %08x
\n
"
,
hres
);
test_ifaces
((
IUnknown
*
)
window
,
window_iids
);
test_disp
((
IUnknown
*
)
window
,
&
DIID_DispHTMLWindow2
,
"[object]"
);
hres
=
IHTMLWindow2_get_document
(
window
,
&
doc2
);
ok
(
hres
==
S_OK
,
"get_document failed: %08x
\n
"
,
hres
);
ok
(
doc2
!=
NULL
,
"doc2 == NULL
\n
"
);
test_ifaces
((
IUnknown
*
)
doc2
,
doc_node_iids
);
test_disp
((
IUnknown
*
)
doc2
,
&
DIID_DispHTMLDocument
,
"[object]"
);
test_class_info
((
IUnknown
*
)
doc2
);
test_ifaces
((
IUnknown
*
)
doc
,
doc_obj_iids
);
test_disp
((
IUnknown
*
)
doc
,
&
DIID_DispHTMLDocument
,
"[object]"
);
test_class_info
((
IUnknown
*
)
doc
);
unk
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLDocument2_QueryInterface
(
doc2
,
&
IID_ICustomDoc
,
(
void
**
)
&
unk
);
ok
(
hres
==
E_NOINTERFACE
,
"QueryInterface(IID_ICustomDoc) returned: %08x
\n
"
,
hres
);
ok
(
!
unk
,
"unk = %p
\n
"
,
unk
);
IHTMLDocument_Release
(
doc2
);
hres
=
IHTMLWindow2_get_window
(
window
,
&
window2
);
ok
(
hres
==
S_OK
,
"get_window failed: %08x
\n
"
,
hres
);
ok
(
window2
!=
NULL
,
"window2 == NULL
\n
"
);
hres
=
IHTMLWindow2_get_self
(
window
,
&
self
);
ok
(
hres
==
S_OK
,
"get_self failed: %08x
\n
"
,
hres
);
ok
(
window2
!=
NULL
,
"self == NULL
\n
"
);
ok
(
self
==
window2
,
"self != window2
\n
"
);
IHTMLWindow2_Release
(
window2
);
IHTMLWindow2_Release
(
self
);
disp
=
NULL
;
hres
=
IHTMLDocument2_get_Script
(
doc
,
&
disp
);
ok
(
hres
==
S_OK
,
"get_Script failed: %08x
\n
"
,
hres
);
ok
(
disp
==
(
void
*
)
window
,
"disp != window
\n
"
);
IDispatch_Release
(
disp
);
hres
=
IHTMLWindow2_toString
(
window
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"toString failed: %08x
\n
"
,
hres
);
str
=
NULL
;
hres
=
IHTMLWindow2_toString
(
window
,
&
str
);
ok
(
hres
==
S_OK
,
"toString failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"[object]"
),
"toString returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
test_window_name
(
window
,
NULL
);
set_window_name
(
window
,
"test"
);
test_window_length
(
window
,
0
);
test_screen
(
window
);
IHTMLWindow2_Release
(
window
);
}
static
void
test_defaults
(
IHTMLDocument2
*
doc
)
{
IHTMLStyleSheetsCollection
*
stylesheetcol
;
IHTMLCurrentStyle
*
cstyle
;
IHTMLBodyElement
*
body
;
IHTMLElement2
*
elem2
;
IHTMLElement
*
elem
;
IHTMLStyle
*
style
;
LONG
l
;
HRESULT
hres
;
IHTMLElementCollection
*
collection
;
elem
=
doc_get_body
(
doc
);
hres
=
IHTMLDocument2_get_images
(
doc
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"hres %08x
\n
"
,
hres
);
hres
=
IHTMLDocument2_get_images
(
doc
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"hres %08x
\n
"
,
hres
);
hres
=
IHTMLDocument2_get_images
(
doc
,
&
collection
);
ok
(
hres
==
S_OK
,
"get_images failed: %08x
\n
"
,
hres
);
...
...
@@ -6136,7 +4228,10 @@ static void test_defaults(IHTMLDocument2 *doc)
hres
=
IHTMLElement_get_style
(
elem
,
&
style
);
ok
(
hres
==
S_OK
,
"get_style failed: %08x
\n
"
,
hres
);
test_default_style
(
style
);
test_disp
((
IUnknown
*
)
style
,
&
DIID_DispHTMLStyle
,
"[object]"
);
test_ifaces
((
IUnknown
*
)
style
,
style_iids
);
IHTMLStyle_Release
(
style
);
test_window
(
doc
);
test_compatmode
(
doc
);
test_location
(
doc
);
...
...
@@ -6146,16 +4241,14 @@ static void test_defaults(IHTMLDocument2 *doc)
hres
=
IHTMLElement2_get_currentStyle
(
elem2
,
&
cstyle
);
ok
(
hres
==
S_OK
,
"get_currentStyle failed: %08x
\n
"
,
hres
);
if
(
SUCCEEDED
(
hres
))
{
test_current_style
(
cstyle
);
test_disp
((
IUnknown
*
)
cstyle
,
&
DIID_DispHTMLCurrentStyle
,
"[object]"
);
test_ifaces
((
IUnknown
*
)
cstyle
,
cstyle_iids
);
IHTMLCurrentStyle_Release
(
cstyle
);
}
IHTMLElement2_Release
(
elem2
);
IHTMLElement_Release
(
elem
);
test_set_csstext
(
style
);
IHTMLStyle_Release
(
style
);
hres
=
IHTMLDocument2_get_styleSheets
(
doc
,
&
stylesheetcol
);
ok
(
hres
==
S_OK
,
"get_styleSheets failed: %08x
\n
"
,
hres
);
...
...
@@ -7095,7 +5188,6 @@ static void test_elems2(IHTMLDocument2 *doc)
}
test_attr
(
div
);
test_style_filters
(
div
);
test_blocked
(
doc
,
div
);
IHTMLElement_Release
(
div
);
...
...
dlls/mshtml/tests/style.c
0 → 100644
View file @
2507d6e5
/*
* Copyright 2007-2011 Jacek Caban for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define COBJMACROS
#define CONST_VTABLE
#include <wine/test.h>
#include <stdarg.h>
#include <stdio.h>
#include "windef.h"
#include "winbase.h"
#include "ole2.h"
#include "mshtml.h"
#include "mshtmhst.h"
#include "docobj.h"
static
int
strcmp_wa
(
LPCWSTR
strw
,
const
char
*
stra
)
{
CHAR
buf
[
512
];
WideCharToMultiByte
(
CP_ACP
,
0
,
strw
,
-
1
,
buf
,
sizeof
(
buf
),
NULL
,
NULL
);
return
lstrcmpA
(
stra
,
buf
);
}
static
BSTR
a2bstr
(
const
char
*
str
)
{
BSTR
ret
;
int
len
;
if
(
!
str
)
return
NULL
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
);
ret
=
SysAllocStringLen
(
NULL
,
len
);
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
);
return
ret
;
}
static
IHTMLElement
*
get_element_by_id
(
IHTMLDocument2
*
doc
,
const
char
*
id
)
{
HRESULT
hres
;
IHTMLDocument3
*
doc3
;
IHTMLElement
*
result
;
BSTR
idW
=
a2bstr
(
id
);
hres
=
IHTMLDocument2_QueryInterface
(
doc
,
&
IID_IHTMLDocument3
,
(
void
**
)
&
doc3
);
ok
(
hres
==
S_OK
,
"QueryInterface(IID_IHTMLDocument3) failed: %08x
\n
"
,
hres
);
hres
=
IHTMLDocument3_getElementById
(
doc3
,
idW
,
&
result
);
ok
(
hres
==
S_OK
,
"getElementById failed: %08x
\n
"
,
hres
);
ok
(
result
!=
NULL
,
"result == NULL
\n
"
);
SysFreeString
(
idW
);
IHTMLDocument3_Release
(
doc3
);
return
result
;
}
#define get_current_style(e) _get_current_style(__LINE__,e)
static
IHTMLCurrentStyle
*
_get_current_style
(
unsigned
line
,
IHTMLElement
*
elem
)
{
IHTMLCurrentStyle
*
cstyle
;
IHTMLElement2
*
elem2
;
HRESULT
hres
;
hres
=
IHTMLElement_QueryInterface
(
elem
,
&
IID_IHTMLElement2
,
(
void
**
)
&
elem2
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLElement2 iface: %08x
\n
"
,
hres
);
cstyle
=
NULL
;
hres
=
IHTMLElement2_get_currentStyle
(
elem2
,
&
cstyle
);
ok
(
hres
==
S_OK
,
"get_currentStyle failed: %08x
\n
"
,
hres
);
ok
(
cstyle
!=
NULL
,
"cstyle = %p
\n
"
,
cstyle
);
IHTMLElement2_Release
(
elem2
);
return
cstyle
;
}
#define test_border_styles(p, n) _test_border_styles(__LINE__, p, n)
static
void
_test_border_styles
(
unsigned
line
,
IHTMLStyle
*
pStyle
,
BSTR
Name
)
{
HRESULT
hres
;
DISPID
dispid
;
hres
=
IHTMLStyle_GetIDsOfNames
(
pStyle
,
&
IID_NULL
,
&
Name
,
1
,
LOCALE_USER_DEFAULT
,
&
dispid
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"GetIDsOfNames: %08x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
{
DISPPARAMS
params
=
{
NULL
,
NULL
,
0
,
0
};
DISPID
dispidNamed
=
DISPID_PROPERTYPUT
;
VARIANT
ret
;
VARIANT
vDefault
;
VARIANTARG
arg
;
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYGET
,
&
params
,
&
vDefault
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"get_default. ret: %08x
\n
"
,
hres
);
params
.
cArgs
=
1
;
params
.
cNamedArgs
=
1
;
params
.
rgdispidNamedArgs
=
&
dispidNamed
;
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"none"
);
params
.
rgvarg
=
&
arg
;
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"none. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"dotted"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"dotted. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"dashed"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"dashed. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"solid"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"solid. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"double"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"double. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"groove"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"groove. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"ridge"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"ridge. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"inset"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"inset. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"outset"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"outset. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
arg
);
V_VT
(
&
arg
)
=
VT_BSTR
;
V_BSTR
(
&
arg
)
=
a2bstr
(
"invalid"
);
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
FAILED
(
hres
),
"invalid value passed.
\n
"
);
VariantClear
(
&
arg
);
params
.
rgvarg
=
&
vDefault
;
hres
=
IHTMLStyle_Invoke
(
pStyle
,
dispid
,
&
IID_NULL
,
LOCALE_SYSTEM_DEFAULT
,
DISPATCH_PROPERTYPUT
,
&
params
,
&
ret
,
NULL
,
NULL
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"default. ret: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
}
}
#define test_style_csstext(s,t) _test_style_csstext(__LINE__,s,t)
static
void
_test_style_csstext
(
unsigned
line
,
IHTMLStyle
*
style
,
const
char
*
extext
)
{
BSTR
text
=
(
void
*
)
0xdeadbeef
;
HRESULT
hres
;
hres
=
IHTMLStyle_get_cssText
(
style
,
&
text
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"get_cssText failed: %08x
\n
"
,
hres
);
if
(
extext
)
ok_
(
__FILE__
,
line
)(
!
strcmp_wa
(
text
,
extext
),
"cssText = %s
\n
"
,
wine_dbgstr_w
(
text
));
else
ok_
(
__FILE__
,
line
)(
!
text
,
"cssText = %s
\n
"
,
wine_dbgstr_w
(
text
));
SysFreeString
(
text
);
}
#define test_style_set_csstext(s,t) _test_style_set_csstext(__LINE__,s,t)
static
void
_test_style_set_csstext
(
unsigned
line
,
IHTMLStyle
*
style
,
const
char
*
text
)
{
BSTR
tmp
;
HRESULT
hres
;
tmp
=
a2bstr
(
text
);
hres
=
IHTMLStyle_put_cssText
(
style
,
tmp
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"put_cssText failed: %08x
\n
"
,
hres
);
SysFreeString
(
tmp
);
}
static
void
test_set_csstext
(
IHTMLStyle
*
style
)
{
VARIANT
v
;
HRESULT
hres
;
test_style_set_csstext
(
style
,
"background-color: black;"
);
hres
=
IHTMLStyle_get_backgroundColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundColor: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"type failed: %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"black"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
}
static
void
test_style2
(
IHTMLStyle2
*
style2
)
{
VARIANT
v
;
BSTR
str
;
HRESULT
hres
;
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle2_get_position
(
style2
,
&
str
);
ok
(
hres
==
S_OK
,
"get_position failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"str != NULL
\n
"
);
str
=
a2bstr
(
"absolute"
);
hres
=
IHTMLStyle2_put_position
(
style2
,
str
);
ok
(
hres
==
S_OK
,
"put_position failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle2_get_position
(
style2
,
&
str
);
ok
(
hres
==
S_OK
,
"get_position failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"absolute"
),
"get_position returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
/* Test right */
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle2_get_right
(
style2
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(right)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(right) != NULL
\n
"
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"3px"
);
hres
=
IHTMLStyle2_put_right
(
style2
,
v
);
ok
(
hres
==
S_OK
,
"put_right failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle2_get_right
(
style2
,
&
v
);
ok
(
hres
==
S_OK
,
"get_right failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"3px"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
}
static
void
test_style3
(
IHTMLStyle3
*
style3
)
{
BSTR
str
;
HRESULT
hres
;
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle3_get_wordWrap
(
style3
,
&
str
);
ok
(
hres
==
S_OK
,
"get_wordWrap failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"str != NULL
\n
"
);
str
=
a2bstr
(
"break-word"
);
hres
=
IHTMLStyle3_put_wordWrap
(
style3
,
str
);
ok
(
hres
==
S_OK
,
"put_wordWrap failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle3_get_wordWrap
(
style3
,
&
str
);
ok
(
hres
==
S_OK
,
"get_wordWrap failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"break-word"
),
"get_wordWrap returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
}
static
void
test_style4
(
IHTMLStyle4
*
style4
)
{
HRESULT
hres
;
VARIANT
v
;
VARIANT
vdefault
;
hres
=
IHTMLStyle4_get_minHeight
(
style4
,
&
vdefault
);
ok
(
hres
==
S_OK
,
"get_minHeight failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10px"
);
hres
=
IHTMLStyle4_put_minHeight
(
style4
,
v
);
ok
(
hres
==
S_OK
,
"put_minHeight failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle4_get_minHeight
(
style4
,
&
v
);
ok
(
hres
==
S_OK
,
"get_minHeight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expect 10px got (%s)
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle4_put_minHeight
(
style4
,
vdefault
);
ok
(
hres
==
S_OK
,
"put_minHeight failed: %08x
\n
"
,
hres
);
VariantClear
(
&
vdefault
);
}
static
void
test_body_style
(
IHTMLStyle
*
style
)
{
IHTMLStyle2
*
style2
;
IHTMLStyle3
*
style3
;
IHTMLStyle4
*
style4
;
VARIANT_BOOL
b
;
VARIANT
v
;
BSTR
str
;
HRESULT
hres
;
float
f
;
BSTR
sOverflowDefault
;
BSTR
sDefault
;
VARIANT
vDefault
;
test_style_csstext
(
style
,
NULL
);
hres
=
IHTMLStyle_get_position
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_position failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_get_marginRight
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginRight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(marginRight) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(marginRight) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_get_marginLeft
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginLeft failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(marginLeft) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(marginLeft) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_fontFamily
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontFamily failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"fontFamily = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_fontWeight
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontWeight failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"fontWeight = %s
\n
"
,
wine_dbgstr_w
(
str
));
hres
=
IHTMLStyle_get_fontWeight
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_fontWeight failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"test"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"bold"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"bolder"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"lighter"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"100"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"200"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"300"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"400"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"500"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"600"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"700"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"800"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"900"
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_fontWeight
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontWeight failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"900"
),
"str != style900
\n
"
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_fontWeight
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_fontWeight failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* font Variant */
hres
=
IHTMLStyle_get_fontVariant
(
style
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"get_fontVariant failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_fontVariant
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_fontVariant failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"test"
);
hres
=
IHTMLStyle_put_fontVariant
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"fontVariant failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"small-caps"
);
hres
=
IHTMLStyle_put_fontVariant
(
style
,
str
);
ok
(
hres
==
S_OK
,
"fontVariant failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"normal"
);
hres
=
IHTMLStyle_put_fontVariant
(
style
,
str
);
ok
(
hres
==
S_OK
,
"fontVariant failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_fontVariant
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"fontVariant failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_display
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_display failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"display = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_visibility
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_visibility failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"visibility = %s
\n
"
,
wine_dbgstr_w
(
str
));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_get_fontSize
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_fontSize failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(fontSize) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(fontSize) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_get_color
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_color failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(color) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(color) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationUnderline
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationUnderline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationUnderline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationUnderline
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationUnderline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationUnderline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationUnderline
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationUnderline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationUnderline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationUnderline
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"put_textDecorationUnderline failed: %08x
\n
"
,
hres
);
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationLineThrough
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationLineThrough failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationLineThrough = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationLineThrough
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationLineThrough failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationLineThrough = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationLineThrough
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationLineThrough failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationLineThrough = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationLineThrough
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"put_textDecorationLineThrough failed: %08x
\n
"
,
hres
);
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationNone
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationNone failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationNone = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationNone
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationNone failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationNone = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationNone
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationNone failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationNone = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationNone
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"put_textDecorationNone failed: %08x
\n
"
,
hres
);
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationOverline
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationOverline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationOverline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationOverline
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationOverline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationOverline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationOverline
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationOverline failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationOverline = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationOverline
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"put_textDecorationOverline failed: %08x
\n
"
,
hres
);
b
=
0xfefe
;
hres
=
IHTMLStyle_get_textDecorationBlink
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationBlink failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationBlink = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationBlink
(
style
,
VARIANT_TRUE
);
ok
(
hres
==
S_OK
,
"put_textDecorationBlink failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_FALSE
,
"textDecorationBlink = %x
\n
"
,
b
);
hres
=
IHTMLStyle_get_textDecorationBlink
(
style
,
&
b
);
ok
(
hres
==
S_OK
,
"get_textDecorationBlink failed: %08x
\n
"
,
hres
);
ok
(
b
==
VARIANT_TRUE
,
"textDecorationBlink = %x
\n
"
,
b
);
hres
=
IHTMLStyle_put_textDecorationBlink
(
style
,
VARIANT_FALSE
);
ok
(
hres
==
S_OK
,
"textDecorationBlink failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_textDecoration
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_textDecoration failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"invalid"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"none"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"underline"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"overline"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"line-through"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"blink"
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_textDecoration
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textDecoration failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"blink"
),
"str != blink
\n
"
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_textDecoration
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_textDecoration failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
hres
=
IHTMLStyle_get_posWidth
(
style
,
NULL
);
ok
(
hres
==
E_POINTER
,
"get_posWidth failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posWidth
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posWidth failed: %08x
\n
"
,
hres
);
ok
(
f
==
0
.
0
f
,
"f = %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_width
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_width failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v)=%p
\n
"
,
V_BSTR
(
&
v
));
hres
=
IHTMLStyle_put_posWidth
(
style
,
2
.
2
);
ok
(
hres
==
S_OK
,
"put_posWidth failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posWidth
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posWidth failed: %08x
\n
"
,
hres
);
ok
(
f
==
2
.
0
f
||
f
==
2
.
2
f
,
/* IE8 */
"f = %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"auto"
);
hres
=
IHTMLStyle_put_width
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_width failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_width
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_width failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"auto"
),
"V_BSTR(v)=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_I4
;
V_I4
(
&
v
)
=
100
;
hres
=
IHTMLStyle_put_width
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_width failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_width
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_width failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"100px"
),
"V_BSTR(v)=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* margin tests */
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_margin
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_margin failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"margin = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
a2bstr
(
"1"
);
hres
=
IHTMLStyle_put_margin
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_margin failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_margin
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_margin failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"1px"
),
"margin = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_margin
(
style
,
NULL
);
ok
(
hres
==
S_OK
,
"put_margin failed: %08x
\n
"
,
hres
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_marginTop
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginTop failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(marginTop) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(marginTop) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"6px"
);
hres
=
IHTMLStyle_put_marginTop
(
style
,
v
);
SysFreeString
(
V_BSTR
(
&
v
));
ok
(
hres
==
S_OK
,
"put_marginTop failed: %08x
\n
"
,
hres
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_marginTop
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginTop failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(marginTop) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"6px"
),
"V_BSTR(marginTop) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
str
=
NULL
;
hres
=
IHTMLStyle_get_border
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_border failed: %08x
\n
"
,
hres
);
ok
(
!
str
||
!*
str
,
"str is not empty
\n
"
);
SysFreeString
(
str
);
str
=
a2bstr
(
"1px"
);
hres
=
IHTMLStyle_put_border
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_border failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_left
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
/* Test posLeft */
hres
=
IHTMLStyle_get_posLeft
(
style
,
NULL
);
ok
(
hres
==
E_POINTER
,
"get_posLeft failed: %08x
\n
"
,
hres
);
f
=
1
.
0
f
;
hres
=
IHTMLStyle_get_posLeft
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posLeft failed: %08x
\n
"
,
hres
);
ok
(
f
==
0
.
0
,
"expected 0.0 got %f
\n
"
,
f
);
hres
=
IHTMLStyle_put_posLeft
(
style
,
4
.
9
f
);
ok
(
hres
==
S_OK
,
"put_posLeft failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posLeft
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posLeft failed: %08x
\n
"
,
hres
);
ok
(
f
==
4
.
0
||
f
==
4
.
9
f
,
/* IE8 */
"expected 4.0 or 4.9 (IE8) got %f
\n
"
,
f
);
/* Ensure left is updated correctly. */
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_left
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"4px"
)
||
!
strcmp_wa
(
V_BSTR
(
&
v
),
"4.9px"
),
/* IE8 */
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* Test left */
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"3px"
);
hres
=
IHTMLStyle_put_left
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_left failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_posLeft
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posLeft failed: %08x
\n
"
,
hres
);
ok
(
f
==
3
.
0
,
"expected 3.0 got %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_left
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"3px"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_put_left
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_left failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_left
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_top
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
/* Test posTop */
hres
=
IHTMLStyle_get_posTop
(
style
,
NULL
);
ok
(
hres
==
E_POINTER
,
"get_posTop failed: %08x
\n
"
,
hres
);
f
=
1
.
0
f
;
hres
=
IHTMLStyle_get_posTop
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posTop failed: %08x
\n
"
,
hres
);
ok
(
f
==
0
.
0
,
"expected 0.0 got %f
\n
"
,
f
);
hres
=
IHTMLStyle_put_posTop
(
style
,
4
.
9
f
);
ok
(
hres
==
S_OK
,
"put_posTop failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posTop
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posTop failed: %08x
\n
"
,
hres
);
ok
(
f
==
4
.
0
||
f
==
4
.
9
f
,
/* IE8 */
"expected 4.0 or 4.9 (IE8) got %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"3px"
);
hres
=
IHTMLStyle_put_top
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_top failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_top
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"3px"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_posTop
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posTop failed: %08x
\n
"
,
hres
);
ok
(
f
==
3
.
0
,
"expected 3.0 got %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_NULL
;
hres
=
IHTMLStyle_put_top
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_top failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_top
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
/* Test posHeight */
hres
=
IHTMLStyle_get_posHeight
(
style
,
NULL
);
ok
(
hres
==
E_POINTER
,
"get_posHeight failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_height
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_height failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
f
=
1
.
0
f
;
hres
=
IHTMLStyle_get_posHeight
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posHeight failed: %08x
\n
"
,
hres
);
ok
(
f
==
0
.
0
,
"expected 0.0 got %f
\n
"
,
f
);
hres
=
IHTMLStyle_put_posHeight
(
style
,
4
.
9
f
);
ok
(
hres
==
S_OK
,
"put_posHeight failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_posHeight
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posHeight failed: %08x
\n
"
,
hres
);
ok
(
f
==
4
.
0
||
f
==
4
.
9
f
,
/* IE8 */
"expected 4.0 or 4.9 (IE8) got %f
\n
"
,
f
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"64px"
);
hres
=
IHTMLStyle_put_height
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_height failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_height
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_height failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"64px"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_posHeight
(
style
,
&
f
);
ok
(
hres
==
S_OK
,
"get_posHeight failed: %08x
\n
"
,
hres
);
ok
(
f
==
64
.
0
,
"expected 64.0 got %f
\n
"
,
f
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_cursor
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_cursor failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"get_cursor != NULL
\n
"
);
SysFreeString
(
str
);
str
=
a2bstr
(
"default"
);
hres
=
IHTMLStyle_put_cursor
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_cursor failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle_get_cursor
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_cursor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"default"
),
"get_cursor returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_verticalAlign
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_vertivalAlign failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"V_BSTR(v) != NULL
\n
"
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"middle"
);
hres
=
IHTMLStyle_put_verticalAlign
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_vertivalAlign failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_verticalAlign
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_verticalAlign failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"middle"
),
"V_BSTR(v) = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_textAlign
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textAlign failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"textAlign != NULL
\n
"
);
str
=
a2bstr
(
"center"
);
hres
=
IHTMLStyle_put_textAlign
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_textAlign failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle_get_textAlign
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textAlign failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"center"
),
"textAlign = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
SysFreeString
(
str
);
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_filter
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_filter failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"filter != NULL
\n
"
);
str
=
a2bstr
(
"alpha(opacity=100)"
);
hres
=
IHTMLStyle_put_filter
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_filter failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_zIndex
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_zIndex failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_I4
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_I4
(
&
v
),
"V_I4(v) != 0
\n
"
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"1"
);
hres
=
IHTMLStyle_put_zIndex
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_zIndex failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hres
=
IHTMLStyle_get_zIndex
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_zIndex failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_I4
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
V_I4
(
&
v
)
==
1
,
"V_I4(v) = %d
\n
"
,
V_I4
(
&
v
));
VariantClear
(
&
v
);
/* fontStyle */
hres
=
IHTMLStyle_get_fontStyle
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_fontStyle failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"test"
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"italic"
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"oblique"
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"normal"
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_fontStyle
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_fontStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* overflow */
hres
=
IHTMLStyle_get_overflow
(
style
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"get_overflow failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_get_overflow
(
style
,
&
sOverflowDefault
);
ok
(
hres
==
S_OK
,
"get_overflow failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"test"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"visible"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"scroll"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"hidden"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"auto"
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_overflow
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_overflow failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"auto"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
str
=
a2bstr
(
""
);
hres
=
IHTMLStyle_put_overflow
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_overflow
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_overflow failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
/* restore overflow default */
hres
=
IHTMLStyle_put_overflow
(
style
,
sOverflowDefault
);
ok
(
hres
==
S_OK
,
"put_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
sOverflowDefault
);
/* Attribute Tests*/
hres
=
IHTMLStyle_getAttribute
(
style
,
NULL
,
1
,
&
v
);
ok
(
hres
==
E_INVALIDARG
,
"getAttribute failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"position"
);
hres
=
IHTMLStyle_getAttribute
(
style
,
str
,
1
,
NULL
);
ok
(
hres
==
E_INVALIDARG
,
"getAttribute failed: %08x
\n
"
,
hres
);
hres
=
IHTMLStyle_getAttribute
(
style
,
str
,
1
,
&
v
);
ok
(
hres
==
S_OK
,
"getAttribute failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"type failed: %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_setAttribute
(
style
,
NULL
,
v
,
1
);
ok
(
hres
==
E_INVALIDARG
,
"setAttribute failed: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"absolute"
);
hres
=
IHTMLStyle_setAttribute
(
style
,
str
,
v
,
1
);
ok
(
hres
==
S_OK
,
"setAttribute failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_getAttribute
(
style
,
str
,
1
,
&
v
);
ok
(
hres
==
S_OK
,
"getAttribute failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"type failed: %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"absolute"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_setAttribute
(
style
,
str
,
v
,
1
);
ok
(
hres
==
S_OK
,
"setAttribute failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
SysFreeString
(
str
);
str
=
a2bstr
(
"borderLeftStyle"
);
test_border_styles
(
style
,
str
);
SysFreeString
(
str
);
str
=
a2bstr
(
"borderbottomstyle"
);
test_border_styles
(
style
,
str
);
SysFreeString
(
str
);
str
=
a2bstr
(
"borderrightstyle"
);
test_border_styles
(
style
,
str
);
SysFreeString
(
str
);
str
=
a2bstr
(
"bordertopstyle"
);
test_border_styles
(
style
,
str
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_borderStyle
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderStyle failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"none dotted dashed solid"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"none dotted dashed solid"
);
hres
=
IHTMLStyle_get_borderStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none dotted dashed solid"
),
"expected (none dotted dashed solid) = (%s)
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
SysFreeString
(
str
);
str
=
a2bstr
(
"double groove ridge inset"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"window-inset outset ridge inset"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"window-inset"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"none none none none none"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"invalid none none none"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"none invalid none none"
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderStyle
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* backgoundColor */
hres
=
IHTMLStyle_get_backgroundColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundColor: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"type failed: %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* padding */
hres
=
IHTMLStyle_get_padding
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_padding failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"padding = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
str
=
a2bstr
(
"1"
);
hres
=
IHTMLStyle_put_padding
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_padding failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_padding
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_padding failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"1px"
),
"padding = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
/* PaddingLeft */
hres
=
IHTMLStyle_get_paddingLeft
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_paddingLeft: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_paddingLeft
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_paddingLeft: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_paddingLeft
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingLeft: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expecte 10 = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_paddingLeft
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_paddingLeft: %08x
\n
"
,
hres
);
/* BackgroundRepeat */
hres
=
IHTMLStyle_get_backgroundRepeat
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_backgroundRepeat failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"invalid"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
E_INVALIDARG
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"repeat"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"no-repeat"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"repeat-x"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
a2bstr
(
"repeat-y"
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_backgroundRepeat
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundRepeat failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"repeat-y"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_backgroundRepeat
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_backgroundRepeat failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderColor */
hres
=
IHTMLStyle_get_borderColor
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderColor failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"red green red blue"
);
hres
=
IHTMLStyle_put_borderColor
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderColor failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_borderColor
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"red green red blue"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderColor
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderColor failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderRight */
hres
=
IHTMLStyle_get_borderRight
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderRight failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"thick dotted red"
);
hres
=
IHTMLStyle_put_borderRight
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderRight failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
/* IHTMLStyle_get_borderRight appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderRightColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderRightWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightWidth failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"thick"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderRightStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderRightStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"dotted"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderRight
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderRight failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderTop */
hres
=
IHTMLStyle_get_borderTop
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderTop failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"thick dotted red"
);
hres
=
IHTMLStyle_put_borderTop
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderTop failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
/* IHTMLStyle_get_borderTop appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderTopColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderTopWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopWidth failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"thick"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderTopStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderTopStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"dotted"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderTop
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderTop failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderBottom */
hres
=
IHTMLStyle_get_borderBottom
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderBottom failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"thick dotted red"
);
hres
=
IHTMLStyle_put_borderBottom
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderBottom failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
/* IHTMLStyle_get_borderBottom appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderBottomColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderBottomWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomWidth failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"thick"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderBottomStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderBottomStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"dotted"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderBottom
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderBottom failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* BorderLeft */
hres
=
IHTMLStyle_get_borderLeft
(
style
,
&
sDefault
);
ok
(
hres
==
S_OK
,
"get_borderLeft failed: %08x
\n
"
,
hres
);
str
=
a2bstr
(
"thick dotted red"
);
hres
=
IHTMLStyle_put_borderLeft
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_borderLeft failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
/* IHTMLStyle_get_borderLeft appears to have a bug where
it returns the first letter of the color. So we check
each style individually.
*/
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderLeftColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftColor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLStyle_get_borderLeftWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftWidth failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"thick"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderLeftStyle
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderLeftStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"dotted"
),
"str=%s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_put_borderLeft
(
style
,
sDefault
);
ok
(
hres
==
S_OK
,
"put_borderLeft failed: %08x
\n
"
,
hres
);
SysFreeString
(
sDefault
);
/* backgroundPositionX */
hres
=
IHTMLStyle_get_backgroundPositionX
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionX failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
V_BSTR
(
&
v
),
"backgroundPositionX = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10px"
);
hres
=
IHTMLStyle_put_backgroundPositionX
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_backgroundPositionX failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_backgroundPositionX
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionX failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"backgroundPositionX = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* backgroundPositionY */
hres
=
IHTMLStyle_get_backgroundPositionY
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionY failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"15px"
);
hres
=
IHTMLStyle_put_backgroundPositionY
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_backgroundPositionY failed: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_backgroundPositionY
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionY failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"15px"
),
"backgroundPositionY = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* backgroundPosition */
str
=
NULL
;
hres
=
IHTMLStyle_get_backgroundPosition
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundPosition failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"10px 15px"
),
"backgroundPosition = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
str
=
a2bstr
(
"center 20%"
);
hres
=
IHTMLStyle_put_backgroundPosition
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_backgroundPosition failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
str
=
NULL
;
hres
=
IHTMLStyle_get_backgroundPosition
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundPosition failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"center 20%"
),
"backgroundPosition = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_backgroundPositionX
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionX failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"center"
),
"backgroundPositionX = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_backgroundPositionY
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundPositionY failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"20%"
),
"backgroundPositionY = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
/* borderTopWidth */
hres
=
IHTMLStyle_get_borderTopWidth
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderTopWidth: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10px"
);
hres
=
IHTMLStyle_put_borderTopWidth
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderTopWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderTopWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopWidth: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderTopWidth
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderTopWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* borderRightWidth */
hres
=
IHTMLStyle_get_borderRightWidth
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderRightWidth: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_borderRightWidth
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderRightWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderRightWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightWidth: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderRightWidth
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderRightWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* borderBottomWidth */
hres
=
IHTMLStyle_get_borderBottomWidth
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderBottomWidth: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_borderBottomWidth
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderBottomWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderBottomWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomWidth: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderBottomWidth
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderBottomWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* borderLeftWidth */
hres
=
IHTMLStyle_get_borderLeftWidth
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderLeftWidth: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_borderLeftWidth
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderLeftWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderLeftWidth
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftWidth: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderLeftWidth
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderLeftWidth: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* wordSpacing */
hres
=
IHTMLStyle_get_wordSpacing
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_wordSpacing: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"10"
);
hres
=
IHTMLStyle_put_wordSpacing
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_wordSpacing: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_wordSpacing
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_wordSpacing: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"10px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_wordSpacing
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_wordSpacing: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* letterSpacing */
hres
=
IHTMLStyle_get_letterSpacing
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_letterSpacing: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"11"
);
hres
=
IHTMLStyle_put_letterSpacing
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_letterSpacing: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_letterSpacing
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_letterSpacing: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v)=%d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"11px"
),
"expected 10px = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_letterSpacing
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_letterSpacing: %08x
\n
"
,
hres
);
VariantClear
(
&
vDefault
);
/* borderTopColor */
hres
=
IHTMLStyle_get_borderTopColor
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderTopColor: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"red"
);
hres
=
IHTMLStyle_put_borderTopColor
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderTopColor: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderTopColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopColor: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"red"
),
"expecte red = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderTopColor
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderTopColor: %08x
\n
"
,
hres
);
/* borderRightColor */
hres
=
IHTMLStyle_get_borderRightColor
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderRightColor: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"blue"
);
hres
=
IHTMLStyle_put_borderRightColor
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderRightColor: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderRightColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightColor: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"blue"
),
"expected blue = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderRightColor
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"putborderRightColorr: %08x
\n
"
,
hres
);
/* borderBottomColor */
hres
=
IHTMLStyle_get_borderBottomColor
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderBottomColor: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"cyan"
);
hres
=
IHTMLStyle_put_borderBottomColor
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderBottomColor: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderBottomColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomColor: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"cyan"
),
"expected cyan = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderBottomColor
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderBottomColor: %08x
\n
"
,
hres
);
/* borderLeftColor */
hres
=
IHTMLStyle_get_borderLeftColor
(
style
,
&
vDefault
);
ok
(
hres
==
S_OK
,
"get_borderLeftColor: %08x
\n
"
,
hres
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
a2bstr
(
"cyan"
);
hres
=
IHTMLStyle_put_borderLeftColor
(
style
,
v
);
ok
(
hres
==
S_OK
,
"put_borderLeftColor: %08x
\n
"
,
hres
);
VariantClear
(
&
v
);
hres
=
IHTMLStyle_get_borderLeftColor
(
style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftColor: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"cyan"
),
"expected cyan = %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLStyle_put_borderLeftColor
(
style
,
vDefault
);
ok
(
hres
==
S_OK
,
"put_borderLeftColor: %08x
\n
"
,
hres
);
/* clip */
hres
=
IHTMLStyle_get_clip
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_clip failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"clip = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
a2bstr
(
"rect(0px 1px 500px 505px)"
);
hres
=
IHTMLStyle_put_clip
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_clip failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_clip
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_clip failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"rect(0px 1px 500px 505px)"
),
"clip = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
/* pageBreakAfter */
hres
=
IHTMLStyle_get_pageBreakAfter
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_pageBreakAfter failed: %08x
\n
"
,
hres
);
ok
(
!
str
,
"pageBreakAfter = %s
\n
"
,
wine_dbgstr_w
(
str
));
str
=
a2bstr
(
"always"
);
hres
=
IHTMLStyle_put_pageBreakAfter
(
style
,
str
);
ok
(
hres
==
S_OK
,
"put_pageBreakAfter failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLStyle_get_pageBreakAfter
(
style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_pageBreakAfter failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"always"
),
"pageBreakAfter = %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLStyle_QueryInterface
(
style
,
&
IID_IHTMLStyle2
,
(
void
**
)
&
style2
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLStyle2 iface: %08x
\n
"
,
hres
);
if
(
SUCCEEDED
(
hres
))
{
test_style2
(
style2
);
IHTMLStyle2_Release
(
style2
);
}
hres
=
IHTMLStyle_QueryInterface
(
style
,
&
IID_IHTMLStyle3
,
(
void
**
)
&
style3
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLStyle3 iface: %08x
\n
"
,
hres
);
if
(
SUCCEEDED
(
hres
))
{
test_style3
(
style3
);
IHTMLStyle3_Release
(
style3
);
}
hres
=
IHTMLStyle_QueryInterface
(
style
,
&
IID_IHTMLStyle4
,
(
void
**
)
&
style4
);
ok
(
hres
==
S_OK
,
"Could not get IHTMLStyle4 iface: %08x
\n
"
,
hres
);
if
(
SUCCEEDED
(
hres
))
{
test_style4
(
style4
);
IHTMLStyle4_Release
(
style4
);
}
}
#define test_style_filter(a,b) _test_style_filter(__LINE__,a,b)
static
void
_test_style_filter
(
unsigned
line
,
IHTMLStyle
*
style
,
const
char
*
exval
)
{
BSTR
str
;
HRESULT
hres
;
str
=
(
void
*
)
0xdeadbeef
;
hres
=
IHTMLStyle_get_filter
(
style
,
&
str
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"get_filter failed: %08x
\n
"
,
hres
);
if
(
exval
)
ok_
(
__FILE__
,
line
)(
str
&&
!
strcmp_wa
(
str
,
exval
),
"filter = %s, expected %s
\n
"
,
wine_dbgstr_w
(
str
),
exval
);
else
ok_
(
__FILE__
,
line
)(
!
str
,
"str = %s, expected NULL
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
}
#define set_style_filter(a,b) _set_style_filter(__LINE__,a,b)
static
void
_set_style_filter
(
unsigned
line
,
IHTMLStyle
*
style
,
const
char
*
val
)
{
BSTR
str
=
a2bstr
(
val
);
HRESULT
hres
;
hres
=
IHTMLStyle_put_filter
(
style
,
str
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"put_filter failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
_test_style_filter
(
line
,
style
,
val
);
}
static
void
test_style_filters
(
IHTMLElement
*
elem
)
{
IHTMLStyle
*
style
;
HRESULT
hres
;
hres
=
IHTMLElement_get_style
(
elem
,
&
style
);
ok
(
hres
==
S_OK
,
"get_style failed: %08x
\n
"
,
hres
);
test_style_filter
(
style
,
NULL
);
set_style_filter
(
style
,
"alpha(opacity=50.0040)"
);
set_style_filter
(
style
,
"alpha(opacity=100)"
);
IHTMLStyle_Release
(
style
);
hres
=
IHTMLElement_get_style
(
elem
,
&
style
);
ok
(
hres
==
S_OK
,
"get_style failed: %08x
\n
"
,
hres
);
test_style_filter
(
style
,
"alpha(opacity=100)"
);
set_style_filter
(
style
,
"xxx(a,b,c) alpha(opacity=100)"
);
set_style_filter
(
style
,
NULL
);
IHTMLStyle_Release
(
style
);
}
static
void
test_current_style
(
IHTMLCurrentStyle
*
current_style
)
{
BSTR
str
;
HRESULT
hres
;
VARIANT
v
;
hres
=
IHTMLCurrentStyle_get_display
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_display failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"block"
),
"get_display returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_position
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_position failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"absolute"
),
"get_position returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_fontFamily
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontFamily failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_fontStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"normal"
),
"get_fontStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_backgroundImage
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundImage failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_backgroundImage returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_fontVariant
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_fontVariant failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"normal"
),
"get_fontVariant returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_borderTopStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderTopStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_borderTopStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_borderRightStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderRightStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_borderRightStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_borderBottomStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderBottomStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_borderBottomStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_borderLeftStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderLeftStyle failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_borderLeftStyle returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_textAlign
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textAlign failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"center"
),
"get_textAlign returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_textDecoration
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_textDecoration failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"none"
),
"get_textDecoration returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_cursor
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_cursor failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"default"
),
"get_cursor returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_backgroundRepeat
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_backgroundRepeat failed: %08x
\n
"
,
hres
);
ok
(
!
strcmp_wa
(
str
,
"repeat"
),
"get_backgroundRepeat returned %s
\n
"
,
wine_dbgstr_w
(
str
));
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_borderColor
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderColor failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_borderStyle
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderStyle failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_visibility
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_visibility failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_overflow
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_overflow failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_borderWidth
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_borderWidth failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_margin
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_margin failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_padding
(
current_style
,
&
str
);
ok
(
hres
==
S_OK
,
"get_padding failed: %08x
\n
"
,
hres
);
SysFreeString
(
str
);
hres
=
IHTMLCurrentStyle_get_fontWeight
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_fontWeight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_I4
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
V_I4
(
&
v
)
==
400
,
"expect 400 got (%d)
\n
"
,
V_I4
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_fontSize
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_fontSize failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_left
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_left failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_top
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_top failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_width
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_width failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_height
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_height failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_paddingLeft
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingLeft failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_zIndex
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_zIndex failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_I4
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
V_I4
(
&
v
)
==
1
,
"expect 1 got (%d)
\n
"
,
V_I4
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_verticalAlign
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_verticalAlign failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
ok
(
!
strcmp_wa
(
V_BSTR
(
&
v
),
"middle"
),
"get_verticalAlign returned %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
v
)));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_marginRight
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginRight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_marginLeft
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginLeft failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_borderLeftWidth
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftWidth failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
V_BSTR
(
&
v
)
=
NULL
;
hres
=
IHTMLCurrentStyle_get_borderRightWidth
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightWidth failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_borderBottomWidth
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomWidth failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_borderTopWidth
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopWidth failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_color
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_color failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_backgroundColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_backgroundColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_borderLeftColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderLeftColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_borderTopColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderTopColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_borderRightColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderRightColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_borderBottomColor
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_borderBottomColor failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_paddingTop
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingTop failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_paddingRight
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingRight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_paddingBottom
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_paddingRight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_letterSpacing
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_letterSpacing failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_marginTop
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginTop failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_marginBottom
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_marginBottom failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_right
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_Right failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_bottom
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_bottom failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_lineHeight
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_lineHeight failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
hres
=
IHTMLCurrentStyle_get_textIndent
(
current_style
,
&
v
);
ok
(
hres
==
S_OK
,
"get_textIndent failed: %08x
\n
"
,
hres
);
ok
(
V_VT
(
&
v
)
==
VT_BSTR
,
"V_VT(v) = %d
\n
"
,
V_VT
(
&
v
));
VariantClear
(
&
v
);
}
static
const
char
basic_test_str
[]
=
"<html><body><div id=
\"
divid
\"
></div/</body></html>"
;
static
void
basic_style_test
(
IHTMLDocument2
*
doc
)
{
IHTMLCurrentStyle
*
cstyle
;
IHTMLElement
*
elem
;
IHTMLStyle
*
style
;
HRESULT
hres
;
hres
=
IHTMLDocument2_get_body
(
doc
,
&
elem
);
ok
(
hres
==
S_OK
,
"get_body failed: %08x
\n
"
,
hres
);
hres
=
IHTMLElement_get_style
(
elem
,
&
style
);
ok
(
hres
==
S_OK
,
"get_style failed: %08x
\n
"
,
hres
);
test_body_style
(
style
);
cstyle
=
get_current_style
(
elem
);
test_current_style
(
cstyle
);
IHTMLCurrentStyle_Release
(
cstyle
);
elem
=
get_element_by_id
(
doc
,
"divid"
);
test_style_filters
(
elem
);
IHTMLElement_Release
(
elem
);
test_set_csstext
(
style
);
IHTMLStyle_Release
(
style
);
IHTMLElement_Release
(
elem
);
}
static
IHTMLDocument2
*
notif_doc
;
static
BOOL
doc_complete
;
static
IHTMLDocument2
*
create_document
(
void
)
{
IHTMLDocument2
*
doc
;
IHTMLDocument5
*
doc5
;
HRESULT
hres
;
hres
=
CoCreateInstance
(
&
CLSID_HTMLDocument
,
NULL
,
CLSCTX_INPROC_SERVER
|
CLSCTX_INPROC_HANDLER
,
&
IID_IHTMLDocument2
,
(
void
**
)
&
doc
);
ok
(
hres
==
S_OK
,
"CoCreateInstance failed: %08x
\n
"
,
hres
);
if
(
FAILED
(
hres
))
return
NULL
;
hres
=
IHTMLDocument2_QueryInterface
(
doc
,
&
IID_IHTMLDocument5
,
(
void
**
)
&
doc5
);
if
(
FAILED
(
hres
))
{
win_skip
(
"Could not get IHTMLDocument5, probably too old IE
\n
"
);
IHTMLDocument2_Release
(
doc
);
return
NULL
;
}
IHTMLDocument5_Release
(
doc5
);
return
doc
;
}
static
HRESULT
WINAPI
PropertyNotifySink_QueryInterface
(
IPropertyNotifySink
*
iface
,
REFIID
riid
,
void
**
ppv
)
{
if
(
IsEqualGUID
(
&
IID_IPropertyNotifySink
,
riid
))
{
*
ppv
=
iface
;
return
S_OK
;
}
ok
(
0
,
"unexpected call
\n
"
);
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
PropertyNotifySink_AddRef
(
IPropertyNotifySink
*
iface
)
{
return
2
;
}
static
ULONG
WINAPI
PropertyNotifySink_Release
(
IPropertyNotifySink
*
iface
)
{
return
1
;
}
static
HRESULT
WINAPI
PropertyNotifySink_OnChanged
(
IPropertyNotifySink
*
iface
,
DISPID
dispID
)
{
if
(
dispID
==
DISPID_READYSTATE
){
BSTR
state
;
HRESULT
hres
;
hres
=
IHTMLDocument2_get_readyState
(
notif_doc
,
&
state
);
ok
(
hres
==
S_OK
,
"get_readyState failed: %08x
\n
"
,
hres
);
if
(
!
strcmp_wa
(
state
,
"complete"
))
doc_complete
=
TRUE
;
SysFreeString
(
state
);
}
return
S_OK
;
}
static
HRESULT
WINAPI
PropertyNotifySink_OnRequestEdit
(
IPropertyNotifySink
*
iface
,
DISPID
dispID
)
{
ok
(
0
,
"unexpected call
\n
"
);
return
E_NOTIMPL
;
}
static
IPropertyNotifySinkVtbl
PropertyNotifySinkVtbl
=
{
PropertyNotifySink_QueryInterface
,
PropertyNotifySink_AddRef
,
PropertyNotifySink_Release
,
PropertyNotifySink_OnChanged
,
PropertyNotifySink_OnRequestEdit
};
static
IPropertyNotifySink
PropertyNotifySink
=
{
&
PropertyNotifySinkVtbl
};
static
IHTMLDocument2
*
create_doc_with_string
(
const
char
*
str
)
{
IPersistStreamInit
*
init
;
IStream
*
stream
;
IHTMLDocument2
*
doc
;
HGLOBAL
mem
;
SIZE_T
len
;
notif_doc
=
doc
=
create_document
();
if
(
!
doc
)
return
NULL
;
doc_complete
=
FALSE
;
len
=
strlen
(
str
);
mem
=
GlobalAlloc
(
0
,
len
);
memcpy
(
mem
,
str
,
len
);
CreateStreamOnHGlobal
(
mem
,
TRUE
,
&
stream
);
IHTMLDocument2_QueryInterface
(
doc
,
&
IID_IPersistStreamInit
,
(
void
**
)
&
init
);
IPersistStreamInit_Load
(
init
,
stream
);
IPersistStreamInit_Release
(
init
);
IStream_Release
(
stream
);
return
doc
;
}
static
void
do_advise
(
IUnknown
*
unk
,
REFIID
riid
,
IUnknown
*
unk_advise
)
{
IConnectionPointContainer
*
container
;
IConnectionPoint
*
cp
;
DWORD
cookie
;
HRESULT
hres
;
hres
=
IUnknown_QueryInterface
(
unk
,
&
IID_IConnectionPointContainer
,
(
void
**
)
&
container
);
ok
(
hres
==
S_OK
,
"QueryInterface(IID_IConnectionPointContainer) failed: %08x
\n
"
,
hres
);
hres
=
IConnectionPointContainer_FindConnectionPoint
(
container
,
riid
,
&
cp
);
IConnectionPointContainer_Release
(
container
);
ok
(
hres
==
S_OK
,
"FindConnectionPoint failed: %08x
\n
"
,
hres
);
hres
=
IConnectionPoint_Advise
(
cp
,
unk_advise
,
&
cookie
);
IConnectionPoint_Release
(
cp
);
ok
(
hres
==
S_OK
,
"Advise failed: %08x
\n
"
,
hres
);
}
typedef
void
(
*
style_test_t
)(
IHTMLDocument2
*
);
static
void
run_test
(
const
char
*
str
,
style_test_t
test
)
{
IHTMLDocument2
*
doc
;
ULONG
ref
;
MSG
msg
;
doc
=
create_doc_with_string
(
str
);
if
(
!
doc
)
return
;
do_advise
((
IUnknown
*
)
doc
,
&
IID_IPropertyNotifySink
,
(
IUnknown
*
)
&
PropertyNotifySink
);
while
(
!
doc_complete
&&
GetMessage
(
&
msg
,
NULL
,
0
,
0
))
{
TranslateMessage
(
&
msg
);
DispatchMessage
(
&
msg
);
}
test
(
doc
);
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
!
ref
||
broken
(
ref
==
1
),
/* Vista */
"ref = %d
\n
"
,
ref
);
}
START_TEST
(
style
)
{
CoInitialize
(
NULL
);
run_test
(
basic_test_str
,
basic_style_test
);
CoUninitialize
();
}
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