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
9fbc3b60
Commit
9fbc3b60
authored
Mar 03, 2010
by
Jacek Caban
Committed by
Alexandre Julliard
Mar 03, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Added IHTMLPrivateWindow::SuperNavigate implementation.
parent
8dd7b396
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
109 additions
and
18 deletions
+109
-18
htmlwindow.c
dlls/mshtml/htmlwindow.c
+80
-4
mshtml_private.h
dlls/mshtml/mshtml_private.h
+1
-0
persist.c
dlls/mshtml/persist.c
+28
-14
No files found.
dlls/mshtml/htmlwindow.c
View file @
9fbc3b60
/*
* Copyright 2006 Jacek Caban for CodeWeavers
* Copyright 2006
-2010
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
...
...
@@ -25,6 +25,7 @@
#include "winuser.h"
#include "ole2.h"
#include "mshtmdid.h"
#include "shlguid.h"
#include "wine/debug.h"
...
...
@@ -1672,9 +1673,84 @@ static HRESULT WINAPI HTMLPrivateWindow_SuperNavigate(IHTMLPrivateWindow *iface,
BSTR
arg4
,
VARIANT
*
post_data_var
,
VARIANT
*
headers_var
,
ULONG
flags
)
{
HTMLWindow
*
This
=
HTMLPRIVWINDOW_THIS
(
iface
);
FIXME
(
"(%p)->(%s %s %s %s %s %s %x)
\n
"
,
This
,
debugstr_w
(
url
),
debugstr_w
(
arg2
),
debugstr_w
(
arg3
),
debugstr_w
(
arg4
),
debugstr_variant
(
post_data_var
),
debugstr_variant
(
headers_var
),
flags
);
return
E_NOTIMPL
;
DWORD
post_data_size
=
0
;
BYTE
*
post_data
=
NULL
;
WCHAR
*
headers
=
NULL
;
nsChannelBSC
*
bsc
;
IMoniker
*
mon
;
BSTR
new_url
;
HRESULT
hres
;
TRACE
(
"(%p)->(%s %s %s %s %s %s %x)
\n
"
,
This
,
debugstr_w
(
url
),
debugstr_w
(
arg2
),
debugstr_w
(
arg3
),
debugstr_w
(
arg4
),
debugstr_variant
(
post_data_var
),
debugstr_variant
(
headers_var
),
flags
);
new_url
=
url
;
if
(
This
->
doc_obj
->
hostui
)
{
OLECHAR
*
translated_url
=
NULL
;
hres
=
IDocHostUIHandler_TranslateUrl
(
This
->
doc_obj
->
hostui
,
0
,
url
,
&
translated_url
);
if
(
hres
==
S_OK
&&
translated_url
)
{
new_url
=
SysAllocString
(
translated_url
);
CoTaskMemFree
(
translated_url
);
}
}
if
(
This
->
doc_obj
->
client
)
{
IOleCommandTarget
*
cmdtrg
;
hres
=
IOleClientSite_QueryInterface
(
This
->
doc_obj
->
client
,
&
IID_IOleCommandTarget
,
(
void
**
)
&
cmdtrg
);
if
(
SUCCEEDED
(
hres
))
{
VARIANT
in
,
out
;
V_VT
(
&
in
)
=
VT_BSTR
;
V_BSTR
(
&
in
)
=
new_url
;
V_VT
(
&
out
)
=
VT_BOOL
;
V_BOOL
(
&
out
)
=
VARIANT_TRUE
;
hres
=
IOleCommandTarget_Exec
(
cmdtrg
,
&
CGID_ShellDocView
,
67
,
0
,
&
in
,
&
out
);
IOleCommandTarget_Release
(
cmdtrg
);
if
(
SUCCEEDED
(
hres
))
VariantClear
(
&
out
);
}
}
/* FIXME: Why not set_ready_state? */
This
->
readystate
=
READYSTATE_UNINITIALIZED
;
hres
=
CreateURLMoniker
(
NULL
,
new_url
,
&
mon
);
if
(
new_url
!=
url
)
SysFreeString
(
new_url
);
if
(
FAILED
(
hres
))
return
hres
;
if
(
post_data_var
)
{
if
(
V_VT
(
post_data_var
)
==
(
VT_ARRAY
|
VT_UI1
))
{
SafeArrayAccessData
(
V_ARRAY
(
post_data_var
),
(
void
**
)
&
post_data
);
post_data_size
=
V_ARRAY
(
post_data_var
)
->
rgsabound
[
0
].
cElements
;
}
}
if
(
headers_var
&&
V_VT
(
headers_var
)
!=
VT_EMPTY
&&
V_VT
(
headers_var
)
!=
VT_ERROR
)
{
if
(
V_VT
(
headers_var
)
!=
VT_BSTR
)
return
E_INVALIDARG
;
headers
=
V_BSTR
(
headers_var
);
}
hres
=
create_channelbsc
(
mon
,
headers
,
post_data
,
post_data_size
,
&
bsc
);
if
(
post_data
)
SafeArrayUnaccessData
(
V_ARRAY
(
post_data_var
));
if
(
FAILED
(
hres
))
{
IMoniker_Release
(
mon
);
return
hres
;
}
hres
=
set_moniker
(
&
This
->
doc_obj
->
basedoc
,
mon
,
NULL
,
bsc
,
TRUE
);
if
(
SUCCEEDED
(
hres
))
hres
=
async_start_doc_binding
(
This
,
bsc
);
IUnknown_Release
((
IUnknown
*
)
bsc
);
IMoniker_Release
(
mon
);
return
hres
;
}
static
HRESULT
WINAPI
HTMLPrivateWindow_GetPendingUrl
(
IHTMLPrivateWindow
*
iface
,
BSTR
*
url
)
...
...
dlls/mshtml/mshtml_private.h
View file @
9fbc3b60
...
...
@@ -712,6 +712,7 @@ HRESULT load_nsuri(HTMLWindow*,nsWineURI*,nsChannelBSC*,DWORD);
HRESULT
hlink_frame_navigate
(
HTMLDocument
*
,
LPCWSTR
,
nsIInputStream
*
,
DWORD
,
BOOL
*
);
HRESULT
navigate_url
(
HTMLWindow
*
,
const
WCHAR
*
,
const
WCHAR
*
);
HRESULT
set_frame_doc
(
HTMLFrameBase
*
,
nsIDOMDocument
*
);
HRESULT
set_moniker
(
HTMLDocument
*
,
IMoniker
*
,
IBindCtx
*
,
nsChannelBSC
*
,
BOOL
);
void
call_property_onchanged
(
ConnectionPoint
*
,
DISPID
);
HRESULT
call_set_active_object
(
IOleInPlaceUIWindow
*
,
IOleInPlaceActiveObject
*
);
...
...
dlls/mshtml/persist.c
View file @
9fbc3b60
...
...
@@ -169,11 +169,11 @@ static void set_downloading_proc(task_t *_task)
}
}
static
HRESULT
set_moniker
(
HTMLDocument
*
This
,
IMoniker
*
mon
,
IBindCtx
*
pib
c
,
BOOL
set_download
)
HRESULT
set_moniker
(
HTMLDocument
*
This
,
IMoniker
*
mon
,
IBindCtx
*
pibc
,
nsChannelBSC
*
async_bs
c
,
BOOL
set_download
)
{
download_proc_task_t
*
download_task
;
nsChannelBSC
*
bscallback
;
docobj_task_t
*
task
;
download_proc_task_t
*
download_task
;
nsWineURI
*
nsuri
;
LPOLESTR
url
;
HRESULT
hres
;
...
...
@@ -222,11 +222,20 @@ static HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, BO
hres
=
IOleClientSite_QueryInterface
(
This
->
doc_obj
->
client
,
&
IID_IOleCommandTarget
,
(
void
**
)
&
cmdtrg
);
if
(
SUCCEEDED
(
hres
))
{
VARIANT
var
;
V_VT
(
&
var
)
=
VT_I4
;
V_I4
(
&
var
)
=
0
;
IOleCommandTarget_Exec
(
cmdtrg
,
&
CGID_ShellDocView
,
37
,
0
,
&
var
,
NULL
);
VARIANT
var
,
out
;
if
(
!
async_bsc
)
{
V_VT
(
&
var
)
=
VT_I4
;
V_I4
(
&
var
)
=
0
;
IOleCommandTarget_Exec
(
cmdtrg
,
&
CGID_ShellDocView
,
37
,
0
,
&
var
,
NULL
);
}
else
{
V_VT
(
&
var
)
=
VT_UNKNOWN
;
V_UNKNOWN
(
&
var
)
=
(
IUnknown
*
)
HTMLWINDOW2
(
This
->
window
);
V_VT
(
&
out
)
=
VT_EMPTY
;
hres
=
IOleCommandTarget_Exec
(
cmdtrg
,
&
CGID_ShellDocView
,
63
,
0
,
&
var
,
&
out
);
if
(
SUCCEEDED
(
hres
))
VariantClear
(
&
out
);
}
IOleCommandTarget_Release
(
cmdtrg
);
}
...
...
@@ -237,15 +246,20 @@ static HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, BO
if
(
FAILED
(
hres
))
return
hres
;
hres
=
create_channelbsc
(
mon
,
NULL
,
NULL
,
0
,
&
bscallback
);
if
(
FAILED
(
hres
))
return
hres
;
if
(
async_bsc
)
{
bscallback
=
async_bsc
;
}
else
{
hres
=
create_channelbsc
(
mon
,
NULL
,
NULL
,
0
,
&
bscallback
);
if
(
FAILED
(
hres
))
return
hres
;
}
hres
=
load_nsuri
(
This
->
window
,
nsuri
,
bscallback
,
LOAD_INITIAL_DOCUMENT_URI
);
nsISupports_Release
((
nsISupports
*
)
nsuri
);
/* FIXME */
if
(
SUCCEEDED
(
hres
))
set_window_bscallback
(
This
->
window
,
bscallback
);
IUnknown_Release
((
IUnknown
*
)
bscallback
);
if
(
bscallback
!=
async_bsc
)
IUnknown_Release
((
IUnknown
*
)
bscallback
);
if
(
FAILED
(
hres
))
return
hres
;
...
...
@@ -385,7 +399,7 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva
}
}
hres
=
set_moniker
(
This
,
pimkName
,
pibc
,
TRUE
);
hres
=
set_moniker
(
This
,
pimkName
,
pibc
,
NULL
,
TRUE
);
if
(
FAILED
(
hres
))
return
hres
;
...
...
@@ -646,7 +660,7 @@ static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM
return
hres
;
}
hres
=
set_moniker
(
This
,
mon
,
NULL
,
TRUE
);
hres
=
set_moniker
(
This
,
mon
,
NULL
,
NULL
,
TRUE
);
IMoniker_Release
(
mon
);
if
(
FAILED
(
hres
))
return
hres
;
...
...
@@ -704,7 +718,7 @@ static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface)
return
hres
;
}
hres
=
set_moniker
(
This
,
mon
,
NULL
,
FALSE
);
hres
=
set_moniker
(
This
,
mon
,
NULL
,
NULL
,
FALSE
);
IMoniker_Release
(
mon
);
if
(
FAILED
(
hres
))
return
hres
;
...
...
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