Skip to content

Commit 3589c97

Browse files
committed
Updates to version 0.0.2.0
1 parent 488ca1a commit 3589c97

File tree

8 files changed

+105
-11
lines changed

8 files changed

+105
-11
lines changed

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,30 @@
22

33
---
44

5+
## 0.0.2.0
6+
7+
### Added
8+
9+
-
10+
11+
### Changed
12+
13+
- Updated webview
14+
- Commits
15+
- Fixed bug in Windows 7 where window does not close
16+
- 16c93bcaeaeb6aa7bb5a1432de3bef0b9ecc44f3
17+
- https://github.com/zserge/webview/pull/229
18+
- Add IInternetSecurityManager to override any IE settings.
19+
- f390a2df9ec50d1bce389f0656a215a5504dce04
20+
- https://github.com/zserge/webview/pull/199
21+
- Updated version in documentation
22+
23+
### Removed
24+
25+
-
26+
27+
---
28+
529
## 0.0.1.0
630

731
### Added

deps/webview/webview.h

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,11 +527,21 @@ typedef struct {
527527
IDocHostUIHandler ui;
528528
} _IDocHostUIHandlerEx;
529529

530+
typedef struct {
531+
IInternetSecurityManager mgr;
532+
} _IInternetSecurityManagerEx;
533+
534+
typedef struct {
535+
IServiceProvider provider;
536+
_IInternetSecurityManagerEx mgr;
537+
} _IServiceProviderEx;
538+
530539
typedef struct {
531540
IOleClientSite client;
532541
_IOleInPlaceSiteEx inplace;
533542
_IDocHostUIHandlerEx ui;
534543
IDispatch external;
544+
_IServiceProviderEx provider;
535545
} _IOleClientSiteEx;
536546

537547
#ifdef __cplusplus
@@ -672,6 +682,8 @@ static HRESULT STDMETHODCALLTYPE Site_QueryInterface(IOleClientSite FAR *This,
672682
*ppvObject = &((_IOleClientSiteEx *)This)->inplace;
673683
} else if (iid_eq(riid, &IID_IDocHostUIHandler)) {
674684
*ppvObject = &((_IOleClientSiteEx *)This)->ui;
685+
} else if (iid_eq(riid, &IID_IServiceProvider)) {
686+
*ppvObject = &((_IOleClientSiteEx *)This)->provider;
675687
} else {
676688
*ppvObject = 0;
677689
return (E_NOINTERFACE);
@@ -968,6 +980,57 @@ static IDocHostUIHandlerVtbl MyIDocHostUIHandlerTable = {
968980
UI_TranslateUrl,
969981
UI_FilterDataObject};
970982

983+
984+
985+
static HRESULT STDMETHODCALLTYPE IS_QueryInterface(IInternetSecurityManager FAR *This, REFIID riid, void **ppvObject) {
986+
return E_NOTIMPL;
987+
}
988+
static ULONG STDMETHODCALLTYPE IS_AddRef(IInternetSecurityManager FAR *This) { return 1; }
989+
static ULONG STDMETHODCALLTYPE IS_Release(IInternetSecurityManager FAR *This) { return 1; }
990+
static HRESULT STDMETHODCALLTYPE IS_SetSecuritySite(IInternetSecurityManager FAR *This, IInternetSecurityMgrSite *pSited) {
991+
return INET_E_DEFAULT_ACTION;
992+
}
993+
static HRESULT STDMETHODCALLTYPE IS_GetSecuritySite(IInternetSecurityManager FAR *This, IInternetSecurityMgrSite **ppSite) {
994+
return INET_E_DEFAULT_ACTION;
995+
}
996+
static HRESULT STDMETHODCALLTYPE IS_MapUrlToZone(IInternetSecurityManager FAR *This, LPCWSTR pwszUrl, DWORD *pdwZone, DWORD dwFlags) {
997+
*pdwZone = URLZONE_LOCAL_MACHINE;
998+
return S_OK;
999+
}
1000+
static HRESULT STDMETHODCALLTYPE IS_GetSecurityId(IInternetSecurityManager FAR *This, LPCWSTR pwszUrl, BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved) {
1001+
return INET_E_DEFAULT_ACTION;
1002+
}
1003+
static HRESULT STDMETHODCALLTYPE IS_ProcessUrlAction(IInternetSecurityManager FAR *This, LPCWSTR pwszUrl, DWORD dwAction, BYTE *pPolicy, DWORD cbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwFlags, DWORD dwReserved) {
1004+
return INET_E_DEFAULT_ACTION;
1005+
}
1006+
static HRESULT STDMETHODCALLTYPE IS_QueryCustomPolicy(IInternetSecurityManager FAR *This, LPCWSTR pwszUrl, REFGUID guidKey, BYTE **ppPolicy, DWORD *pcbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwReserved) {
1007+
return INET_E_DEFAULT_ACTION;
1008+
}
1009+
static HRESULT STDMETHODCALLTYPE IS_SetZoneMapping(IInternetSecurityManager FAR *This, DWORD dwZone, LPCWSTR lpszPattern, DWORD dwFlags) {
1010+
return INET_E_DEFAULT_ACTION;
1011+
}
1012+
static HRESULT STDMETHODCALLTYPE IS_GetZoneMappings(IInternetSecurityManager FAR *This, DWORD dwZone, IEnumString **ppenumString, DWORD dwFlags) {
1013+
return INET_E_DEFAULT_ACTION;
1014+
}
1015+
static IInternetSecurityManagerVtbl MyInternetSecurityManagerTable = {IS_QueryInterface, IS_AddRef, IS_Release, IS_SetSecuritySite, IS_GetSecuritySite, IS_MapUrlToZone, IS_GetSecurityId, IS_ProcessUrlAction, IS_QueryCustomPolicy, IS_SetZoneMapping, IS_GetZoneMappings};
1016+
1017+
static HRESULT STDMETHODCALLTYPE SP_QueryInterface(IServiceProvider FAR *This, REFIID riid, void **ppvObject) {
1018+
return (Site_QueryInterface(
1019+
(IOleClientSite *)((char *)This - sizeof(IOleClientSite) - sizeof(_IOleInPlaceSiteEx) - sizeof(_IDocHostUIHandlerEx) - sizeof(IDispatch)), riid, ppvObject));
1020+
}
1021+
static ULONG STDMETHODCALLTYPE SP_AddRef(IServiceProvider FAR *This) { return 1; }
1022+
static ULONG STDMETHODCALLTYPE SP_Release(IServiceProvider FAR *This) { return 1; }
1023+
static HRESULT STDMETHODCALLTYPE SP_QueryService(IServiceProvider FAR *This, REFGUID siid, REFIID riid, void **ppvObject) {
1024+
if (iid_eq(siid, &IID_IInternetSecurityManager) && iid_eq(riid, &IID_IInternetSecurityManager)) {
1025+
*ppvObject = &((_IServiceProviderEx *)This)->mgr;
1026+
} else {
1027+
*ppvObject = 0;
1028+
return (E_NOINTERFACE);
1029+
}
1030+
return S_OK;
1031+
}
1032+
static IServiceProviderVtbl MyServiceProviderTable = {SP_QueryInterface, SP_AddRef, SP_Release, SP_QueryService};
1033+
9711034
static void UnEmbedBrowserObject(struct webview *w) {
9721035
if (w->priv.browser != NULL) {
9731036
(*w->priv.browser)->lpVtbl->Close(*w->priv.browser, OLECLOSE_NOSAVE);
@@ -996,6 +1059,8 @@ static int EmbedBrowserObject(struct webview *w) {
9961059
_iOleClientSiteEx->inplace.frame.window = w->priv.hwnd;
9971060
_iOleClientSiteEx->ui.ui.lpVtbl = &MyIDocHostUIHandlerTable;
9981061
_iOleClientSiteEx->external.lpVtbl = &ExternalDispatchTable;
1062+
_iOleClientSiteEx->provider.provider.lpVtbl = &MyServiceProviderTable;
1063+
_iOleClientSiteEx->provider.mgr.mgr.lpVtbl = &MyInternetSecurityManagerTable;
9991064

10001065
if (CoGetClassObject(iid_unref(&CLSID_WebBrowser),
10011066
CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER, NULL,
@@ -1607,7 +1672,12 @@ WEBVIEW_API void webview_dialog(struct webview *w,
16071672
}
16081673

16091674
WEBVIEW_API void webview_terminate(struct webview *w) { PostQuitMessage(0); }
1610-
WEBVIEW_API void webview_exit(struct webview *w) { OleUninitialize(); }
1675+
1676+
WEBVIEW_API void webview_exit(struct webview *w) {
1677+
DestroyWindow(w->priv.hwnd);
1678+
OleUninitialize();
1679+
}
1680+
16111681
WEBVIEW_API void webview_print_log(const char *s) { OutputDebugString(s); }
16121682

16131683
#endif /* WEBVIEW_WINAPI */

0 commit comments

Comments
 (0)