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
fc26a1c4
Commit
fc26a1c4
authored
Aug 31, 2009
by
Jacek Caban
Committed by
Alexandre Julliard
Sep 01, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Added DISPID_VALUE implementation for HTMLLocation object.
parent
8b8e91a5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
77 additions
and
16 deletions
+77
-16
htmllocation.c
dlls/mshtml/htmllocation.c
+35
-1
dom.c
dlls/mshtml/tests/dom.c
+42
-15
No files found.
dlls/mshtml/htmllocation.c
View file @
fc26a1c4
...
...
@@ -303,6 +303,34 @@ static HRESULT WINAPI HTMLLocation_toString(IHTMLLocation *iface, BSTR *String)
return
E_NOTIMPL
;
}
static
HRESULT
HTMLLocation_value
(
IUnknown
*
iface
,
LCID
lcid
,
WORD
flags
,
DISPPARAMS
*
params
,
VARIANT
*
res
,
EXCEPINFO
*
ei
,
IServiceProvider
*
caller
)
{
HTMLLocation
*
This
=
HTMLLOCATION_THIS
(
iface
);
HRESULT
hres
;
TRACE
(
"(%p)
\n
"
,
This
);
switch
(
flags
)
{
case
DISPATCH_PROPERTYGET
:
{
BSTR
str
;
hres
=
IHTMLLocation_get_href
(
HTMLLOCATION
(
This
),
&
str
);
if
(
FAILED
(
hres
))
return
hres
;
V_VT
(
res
)
=
VT_BSTR
;
V_BSTR
(
res
)
=
str
;
break
;
}
default:
FIXME
(
"unimplemented flags %x
\n
"
,
flags
);
return
E_NOTIMPL
;
}
return
S_OK
;
}
#undef HTMLLOCATION_THIS
static
const
IHTMLLocationVtbl
HTMLLocationVtbl
=
{
...
...
@@ -335,12 +363,18 @@ static const IHTMLLocationVtbl HTMLLocationVtbl = {
HTMLLocation_toString
};
static
const
dispex_static_data_vtbl_t
HTMLLocation_dispex_vtbl
=
{
HTMLLocation_value
,
NULL
,
NULL
};
static
const
tid_t
HTMLLocation_iface_tids
[]
=
{
IHTMLLocation_tid
,
0
};
static
dispex_static_data_t
HTMLLocation_dispex
=
{
NULL
,
&
HTMLLocation_dispex_vtbl
,
DispHTMLLocation_tid
,
NULL
,
HTMLLocation_iface_tids
...
...
dlls/mshtml/tests/dom.c
View file @
fc26a1c4
...
...
@@ -469,23 +469,50 @@ static BOOL _test_get_dispid(unsigned line, IUnknown *unk, IID *iid)
return
ret
;
}
#define test_disp(u,id) _test_disp(__LINE__,u,id)
static
void
_test_disp
(
unsigned
line
,
IUnknown
*
unk
,
const
IID
*
diid
)
#define test_disp_value(u) _test_disp_value(__LINE__,u,v)
static
void
_test_disp_value
(
unsigned
line
,
IUnknown
*
unk
,
const
char
*
val
)
{
DISPPARAMS
dp
=
{
NULL
,
NULL
,
0
,
0
};
IDispatchEx
*
dispex
;
EXCEPINFO
ei
;
VARIANT
var
;
HRESULT
hres
;
hres
=
IUnknown_QueryInterface
(
unk
,
&
IID_IDispatchEx
,
(
void
**
)
&
dispex
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"Could not get IDispatchEx interface: %08x
\n
"
,
hres
);
if
(
FAILED
(
hres
))
return
;
hres
=
IDispatchEx_InvokeEx
(
dispex
,
DISPID_VALUE
,
0
,
DISPATCH_PROPERTYGET
,
&
dp
,
&
var
,
&
ei
,
NULL
);
IDispatchEx_Release
(
dispex
);
ok_
(
__FILE__
,
line
)(
hres
==
S_OK
,
"InvokeEx(DISPID_VALUE) returned: %08x
\n
"
,
hres
);
ok_
(
__FILE__
,
line
)(
V_VT
(
&
var
)
==
VT_BSTR
,
"V_VT(value) = %d
\n
"
,
V_VT
(
&
var
));
ok_
(
__FILE__
,
line
)(
!
strcmp_wa
(
V_BSTR
(
&
var
),
val
),
"value = %s, expected %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
var
)),
val
);
VariantClear
(
&
var
);
}
#define test_disp(u,id,v) _test_disp(__LINE__,u,id,v)
static
void
_test_disp
(
unsigned
line
,
IUnknown
*
unk
,
const
IID
*
diid
,
const
char
*
val
)
{
IID
iid
;
if
(
_test_get_dispid
(
line
,
unk
,
&
iid
))
ok_
(
__FILE__
,
line
)
(
IsEqualGUID
(
&
iid
,
diid
),
"unexpected guid %s
\n
"
,
dbgstr_guid
(
&
iid
));
_test_disp_value
(
line
,
unk
,
val
);
}
#define test_disp2(u,id,id2
) _test_disp2(__LINE__,u,id,id2
)
static
void
_test_disp2
(
unsigned
line
,
IUnknown
*
unk
,
const
IID
*
diid
,
const
IID
*
diid2
)
#define test_disp2(u,id,id2
,v) _test_disp2(__LINE__,u,id,id2,v
)
static
void
_test_disp2
(
unsigned
line
,
IUnknown
*
unk
,
const
IID
*
diid
,
const
IID
*
diid2
,
const
char
*
val
)
{
IID
iid
;
if
(
_test_get_dispid
(
line
,
unk
,
&
iid
))
ok_
(
__FILE__
,
line
)
(
IsEqualGUID
(
&
iid
,
diid
)
||
broken
(
IsEqualGUID
(
&
iid
,
diid2
)),
"unexpected guid %s
\n
"
,
dbgstr_guid
(
&
iid
));
_test_disp_value
(
line
,
unk
,
val
);
}
#define get_elem_iface(u) _get_elem_iface(__LINE__,u)
...
...
@@ -580,7 +607,7 @@ static void _test_elem_type(unsigned line, IUnknown *unk, elem_type_t type)
_test_ifaces
(
line
,
unk
,
elem_type_infos
[
type
].
iids
);
if
(
elem_type_infos
[
type
].
dispiid
)
_test_disp
(
line
,
unk
,
elem_type_infos
[
type
].
dispiid
);
_test_disp
(
line
,
unk
,
elem_type_infos
[
type
].
dispiid
,
"[object]"
);
}
#define get_node_type(n) _get_node_type(__LINE__,n)
...
...
@@ -1022,7 +1049,7 @@ static void _test_elem_collection(unsigned line, IUnknown *unk,
hres
=
IUnknown_QueryInterface
(
unk
,
&
IID_IHTMLElementCollection
,
(
void
**
)
&
col
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"Could not get IHTMLElementCollection: %08x
\n
"
,
hres
);
test_disp
((
IUnknown
*
)
col
,
&
DIID_DispHTMLElementCollection
);
test_disp
((
IUnknown
*
)
col
,
&
DIID_DispHTMLElementCollection
,
"[object]"
);
hres
=
IHTMLElementCollection_get_length
(
col
,
&
len
);
ok_
(
__FILE__
,
line
)
(
hres
==
S_OK
,
"get_length failed: %08x
\n
"
,
hres
);
...
...
@@ -2396,7 +2423,7 @@ static void test_location(IHTMLDocument2 *doc)
IHTMLLocation_Release
(
location2
);
test_ifaces
((
IUnknown
*
)
location
,
location_iids
);
test_disp2
((
IUnknown
*
)
location
,
&
DIID_DispHTMLLocation
,
&
IID_IHTMLLocation
);
test_disp2
((
IUnknown
*
)
location
,
&
DIID_DispHTMLLocation
,
&
IID_IHTMLLocation
,
"about:blank"
);
hres
=
IHTMLLocation_get_pathname
(
location
,
&
str
);
ok
(
hres
==
S_OK
,
"get_pathname failed: %08x
\n
"
,
hres
);
...
...
@@ -2429,7 +2456,7 @@ static void test_navigator(IHTMLDocument2 *doc)
hres
=
IHTMLWindow2_get_navigator
(
window
,
&
navigator
);
ok
(
hres
==
S_OK
,
"get_navigator failed: %08x
\n
"
,
hres
);
ok
(
navigator
!=
NULL
,
"navigator == NULL
\n
"
);
test_disp2
((
IUnknown
*
)
navigator
,
&
DIID_DispHTMLNavigator
,
&
IID_IOmNavigator
);
test_disp2
((
IUnknown
*
)
navigator
,
&
DIID_DispHTMLNavigator
,
&
IID_IOmNavigator
,
"[object]"
);
hres
=
IHTMLWindow2_get_navigator
(
window
,
&
navigator2
);
ok
(
hres
==
S_OK
,
"get_navigator failed: %08x
\n
"
,
hres
);
...
...
@@ -2475,7 +2502,7 @@ static void test_current_style(IHTMLCurrentStyle *current_style)
HRESULT
hres
;
VARIANT
v
;
test_disp
((
IUnknown
*
)
current_style
,
&
DIID_DispHTMLCurrentStyle
);
test_disp
((
IUnknown
*
)
current_style
,
&
DIID_DispHTMLCurrentStyle
,
"[object]"
);
test_ifaces
((
IUnknown
*
)
current_style
,
cstyle_iids
);
hres
=
IHTMLCurrentStyle_get_display
(
current_style
,
&
str
);
...
...
@@ -2744,7 +2771,7 @@ static void test_default_style(IHTMLStyle *style)
BSTR
sDefault
;
VARIANT
vDefault
;
test_disp
((
IUnknown
*
)
style
,
&
DIID_DispHTMLStyle
);
test_disp
((
IUnknown
*
)
style
,
&
DIID_DispHTMLStyle
,
"[object]"
);
test_ifaces
((
IUnknown
*
)
style
,
style_iids
);
test_style_csstext
(
style
,
NULL
);
...
...
@@ -3928,7 +3955,7 @@ static void test_window(IHTMLDocument2 *doc)
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
);
test_disp
((
IUnknown
*
)
window
,
&
DIID_DispHTMLWindow2
,
"[object]"
);
hres
=
IHTMLWindow2_get_document
(
window
,
&
doc2
);
ok
(
hres
==
S_OK
,
"get_document failed: %08x
\n
"
,
hres
);
...
...
@@ -4591,7 +4618,7 @@ static void test_elems(IHTMLDocument2 *doc)
ok
(
node
!=
NULL
,
"node == NULL
\n
"
);
if
(
node
)
{
test_ifaces
((
IUnknown
*
)
node
,
text_iids
);
test_disp
((
IUnknown
*
)
node
,
&
DIID_DispHTMLDOMTextNode
);
test_disp
((
IUnknown
*
)
node
,
&
DIID_DispHTMLDOMTextNode
,
"[object]"
);
node2
=
get_first_child
((
IUnknown
*
)
node
);
ok
(
!
node2
,
"node2 != NULL
\n
"
);
...
...
@@ -4611,7 +4638,7 @@ static void test_elems(IHTMLDocument2 *doc)
if
(
child_col
)
{
LONG
length
=
0
;
test_disp
((
IUnknown
*
)
child_col
,
&
DIID_DispDOMChildrenCollection
);
test_disp
((
IUnknown
*
)
child_col
,
&
DIID_DispDOMChildrenCollection
,
"[object]"
);
hres
=
IHTMLDOMChildrenCollection_get_length
(
child_col
,
&
length
);
ok
(
hres
==
S_OK
,
"get_length failed: %08x
\n
"
,
hres
);
...
...
@@ -4734,7 +4761,7 @@ static void test_create_elems(IHTMLDocument2 *doc)
type
=
get_node_type
((
IUnknown
*
)
elem
);
ok
(
type
==
1
,
"type=%d
\n
"
,
type
);
test_ifaces
((
IUnknown
*
)
elem
,
elem_iids
);
test_disp
((
IUnknown
*
)
elem
,
&
DIID_DispHTMLGenericElement
);
test_disp
((
IUnknown
*
)
elem
,
&
DIID_DispHTMLGenericElement
,
"[object]"
);
hres
=
IHTMLDocument2_get_body
(
doc
,
&
body
);
ok
(
hres
==
S_OK
,
"get_body failed: %08x
\n
"
,
hres
);
...
...
@@ -4763,7 +4790,7 @@ static void test_create_elems(IHTMLDocument2 *doc)
node
=
test_create_text
(
doc
,
"test"
);
test_ifaces
((
IUnknown
*
)
node
,
text_iids
);
test_disp
((
IUnknown
*
)
node
,
&
DIID_DispHTMLDOMTextNode
);
test_disp
((
IUnknown
*
)
node
,
&
DIID_DispHTMLDOMTextNode
,
"[object]"
);
V_VT
(
&
var
)
=
VT_NULL
;
node2
=
test_node_insertbefore
((
IUnknown
*
)
body
,
node
,
&
var
);
...
...
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