Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
387ed3c8
Commit
387ed3c8
authored
Nov 25, 2010
by
Jacek Caban
Committed by
Alexandre Julliard
Nov 25, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Fixed ref count tests on broken IEs.
Also some code clean up.
parent
5030554c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
63 additions
and
71 deletions
+63
-71
htmldoc.c
dlls/mshtml/tests/htmldoc.c
+63
-71
No files found.
dlls/mshtml/tests/htmldoc.c
View file @
387ed3c8
...
...
@@ -4358,26 +4358,34 @@ static void test_Hide(void)
ok
(
hres
==
S_OK
,
"Show failed: %08x
\n
"
,
hres
);
}
static
HRESULT
create_document
(
IHTMLDocument2
**
doc
)
static
IHTMLDocument2
*
create_document
(
void
)
{
IHTMLDocument
5
*
doc5
;
IHTMLDocument
2
*
doc
;
HRESULT
hres
;
hres
=
CoCreateInstance
(
&
CLSID_HTMLDocument
,
NULL
,
CLSCTX_INPROC_SERVER
|
CLSCTX_INPROC_HANDLER
,
&
IID_IHTMLDocument2
,
(
void
**
)
doc
);
&
IID_IHTMLDocument2
,
(
void
**
)
&
doc
);
ok
(
hres
==
S_OK
,
"CoCreateInstance failed: %08x
\n
"
,
hres
);
if
(
FAILED
(
hres
))
return
hres
;
return
NULL
;
hres
=
IHTMLDocument2_QueryInterface
(
*
doc
,
&
IID_IHTMLDocument5
,
(
void
**
)
&
doc5
);
if
(
SUCCEEDED
(
hres
))
{
IHTMLDocument5_Release
(
doc5
);
}
else
{
win_skip
(
"Could not get IHTMLDocument5, probably too old IE
\n
"
);
IHTMLDocument2_Release
(
*
doc
);
}
return
doc
;
}
static
void
release_document
(
IHTMLDocument2
*
doc
)
{
IUnknown
*
unk
;
ULONG
ref
;
HRESULT
hres
;
return
hres
;
/* Some broken IEs don't like if the last released reference is IHTMLDocument2 iface.
* To workaround it, we release it via IUnknown iface */
hres
=
IHTMLDocument2_QueryInterface
(
doc
,
&
IID_IUnknown
,
(
void
**
)
&
unk
);
ok
(
hres
==
S_OK
,
"Could not get IUnknown iface: %08x
\n
"
,
hres
);
IHTMLDocument2_Release
(
doc
);
ref
=
IUnknown_Release
(
unk
);
ok
(
!
ref
,
"ref = %d
\n
"
,
ref
);
}
static
void
test_Navigate
(
IHTMLDocument2
*
doc
)
...
...
@@ -4555,16 +4563,12 @@ static void init_test(enum load_state_t ls) {
static
void
test_HTMLDocument
(
BOOL
do_load
)
{
IHTMLDocument2
*
doc
;
HRESULT
hres
;
ULONG
ref
;
trace
(
"Testing HTMLDocument (%s)...
\n
"
,
(
do_load
?
"load"
:
"no load"
));
init_test
(
do_load
?
LD_DOLOAD
:
LD_NO
);
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
doc_unk
=
(
IUnknown
*
)
doc
;
test_QueryInterface
(
doc
);
...
...
@@ -4645,27 +4649,20 @@ static void test_HTMLDocument(BOOL do_load)
view
=
NULL
;
ok
(
IsWindow
(
hwnd
),
"hwnd is destroyed
\n
"
);
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
ref
==
0
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
ok
(
!
IsWindow
(
hwnd
),
"hwnd is not destroyed
\n
"
);
}
static
void
test_HTMLDocument_hlink
(
void
)
{
IHTMLDocument2
*
doc
;
HRESULT
hres
;
ULONG
ref
;
trace
(
"Testing HTMLDocument (hlink)...
\n
"
);
init_test
(
LD_DOLOAD
);
ipsex
=
TRUE
;
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
doc_unk
=
(
IUnknown
*
)
doc
;
test_ViewAdviseSink
(
doc
);
...
...
@@ -4696,8 +4693,7 @@ static void test_HTMLDocument_hlink(void)
IOleDocumentView_Release
(
view
);
view
=
NULL
;
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
ref
==
0
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
}
static
void
test_cookies
(
IHTMLDocument2
*
doc
)
...
...
@@ -4768,9 +4764,7 @@ static void test_HTMLDocument_http(void)
init_test
(
LD_DOLOAD
);
ipsex
=
TRUE
;
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
doc_unk
=
(
IUnknown
*
)
doc
;
hres
=
CreateURLMoniker
(
NULL
,
http_urlW
,
&
http_mon
);
...
...
@@ -4804,8 +4798,7 @@ static void test_HTMLDocument_http(void)
IOleDocumentView_Release
(
view
);
view
=
NULL
;
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
!
ref
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
ref
=
IMoniker_Release
(
http_mon
);
ok
(
!
ref
,
"ref=%d, expected 0
\n
"
,
ref
);
...
...
@@ -4860,16 +4853,13 @@ static void test_HTMLDocument_StreamLoad(void)
IOleObject
*
oleobj
;
DWORD
conn
;
HRESULT
hres
;
ULONG
ref
;
trace
(
"Testing HTMLDocument (IPersistStreamInit)...
\n
"
);
init_test
(
LD_DOLOAD
);
load_from_stream
=
TRUE
;
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
doc_unk
=
(
IUnknown
*
)
doc
;
hres
=
IUnknown_QueryInterface
(
doc
,
&
IID_IOleObject
,
(
void
**
)
&
oleobj
);
...
...
@@ -4907,9 +4897,7 @@ static void test_HTMLDocument_StreamLoad(void)
view
=
NULL
;
}
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
ref
==
0
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
}
static
void
test_HTMLDocument_StreamInitNew
(
void
)
...
...
@@ -4918,16 +4906,13 @@ static void test_HTMLDocument_StreamInitNew(void)
IOleObject
*
oleobj
;
DWORD
conn
;
HRESULT
hres
;
ULONG
ref
;
trace
(
"Testing HTMLDocument (IPersistStreamInit)...
\n
"
);
init_test
(
LD_DOLOAD
);
load_from_stream
=
TRUE
;
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
doc_unk
=
(
IUnknown
*
)
doc
;
hres
=
IUnknown_QueryInterface
(
doc
,
&
IID_IOleObject
,
(
void
**
)
&
oleobj
);
...
...
@@ -4963,9 +4948,7 @@ static void test_HTMLDocument_StreamInitNew(void)
view
=
NULL
;
}
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
ref
==
0
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
}
static
void
test_edit_uiactivate
(
IOleObject
*
oleobj
)
...
...
@@ -5002,16 +4985,13 @@ static void test_editing_mode(BOOL do_load)
IOleObject
*
oleobj
;
DWORD
conn
;
HRESULT
hres
;
ULONG
ref
;
trace
(
"Testing HTMLDocument (edit%s)...
\n
"
,
do_load
?
" load"
:
""
);
init_test
(
do_load
?
LD_DOLOAD
:
LD_NO
);
call_UIActivate
=
CallUIActivate_AfterShow
;
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
unk
=
doc_unk
=
(
IUnknown
*
)
doc
;
hres
=
IUnknown_QueryInterface
(
doc
,
&
IID_IOleObject
,
(
void
**
)
&
oleobj
);
...
...
@@ -5080,8 +5060,7 @@ static void test_editing_mode(BOOL do_load)
view
=
NULL
;
}
ref
=
IUnknown_Release
(
unk
);
ok
(
ref
==
0
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
}
static
void
test_UIActivate
(
BOOL
do_load
,
BOOL
use_ipsex
,
BOOL
use_ipsw
)
...
...
@@ -5090,15 +5069,12 @@ static void test_UIActivate(BOOL do_load, BOOL use_ipsex, BOOL use_ipsw)
IOleObject
*
oleobj
;
IOleInPlaceSite
*
inplacesite
;
HRESULT
hres
;
ULONG
ref
;
trace
(
"Running OleDocumentView_UIActivate tests (%d %d %d)
\n
"
,
do_load
,
use_ipsex
,
use_ipsw
);
init_test
(
do_load
?
LD_DOLOAD
:
LD_NO
);
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
doc_unk
=
(
IUnknown
*
)
doc
;
ipsex
=
use_ipsex
;
...
...
@@ -5232,8 +5208,7 @@ static void test_UIActivate(BOOL do_load, BOOL use_ipsex, BOOL use_ipsw)
IOleDocumentView_Release
(
view
);
view
=
NULL
;
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
ref
==
0
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
}
static
void
register_protocol
(
void
)
...
...
@@ -5258,11 +5233,8 @@ static void test_HTMLDoc_ISupportErrorInfo(void)
IHTMLDocument2
*
doc
;
HRESULT
hres
;
ISupportErrorInfo
*
sinfo
;
LONG
ref
;
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
hres
=
IUnknown_QueryInterface
(
doc
,
&
IID_ISupportErrorInfo
,
(
void
**
)
&
sinfo
);
ok
(
hres
==
S_OK
,
"got %x
\n
"
,
hres
);
...
...
@@ -5274,33 +5246,53 @@ static void test_HTMLDoc_ISupportErrorInfo(void)
IUnknown_Release
(
sinfo
);
}
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
ref
==
0
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
}
static
void
test_IPersistHistory
(
void
)
{
IHTMLDocument2
*
doc
;
HRESULT
hres
;
LONG
ref
;
IPersistHistory
*
phist
;
hres
=
create_document
(
&
doc
);
if
(
FAILED
(
hres
))
return
;
doc
=
create_document
();
hres
=
IUnknown_QueryInterface
(
doc
,
&
IID_IPersistHistory
,
(
void
**
)
&
phist
);
ok
(
hres
==
S_OK
,
"QueryInterface returned %08x, expected S_OK
\n
"
,
hres
);
if
(
hres
==
S_OK
)
IPersistHistory_Release
(
phist
);
ref
=
IHTMLDocument2_Release
(
doc
);
ok
(
ref
==
0
,
"ref=%d, expected 0
\n
"
,
ref
);
release_document
(
doc
);
}
static
BOOL
check_ie
(
void
)
{
IHTMLDocument2
*
doc
;
IHTMLDocument5
*
doc5
;
HRESULT
hres
;
doc
=
create_document
();
if
(
!
doc
)
return
FALSE
;
hres
=
IHTMLDocument2_QueryInterface
(
doc
,
&
IID_IHTMLDocument5
,
(
void
**
)
&
doc5
);
if
(
SUCCEEDED
(
hres
))
IHTMLDocument5_Release
(
doc5
);
release_document
(
doc
);
return
SUCCEEDED
(
hres
);
}
START_TEST
(
htmldoc
)
{
CoInitialize
(
NULL
);
if
(
!
check_ie
())
{
CoUninitialize
();
win_skip
(
"Too old IE
\n
"
);
return
;
}
container_hwnd
=
create_container_window
();
register_protocol
();
...
...
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