Jacek Caban : appwiz.cpl: Use custom user agent string for addon downloader.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Feb 26 09:16:59 CST 2015
Module: wine
Branch: master
Commit: 66514fd7135cd672b832f78eda54e994bbb1bdc4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=66514fd7135cd672b832f78eda54e994bbb1bdc4
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Feb 25 19:35:12 2015 +0100
appwiz.cpl: Use custom user agent string for addon downloader.
---
dlls/appwiz.cpl/Makefile.in | 2 +-
dlls/appwiz.cpl/addons.c | 61 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+), 1 deletion(-)
diff --git a/dlls/appwiz.cpl/Makefile.in b/dlls/appwiz.cpl/Makefile.in
index 1cf7b0e..a8341fa 100644
--- a/dlls/appwiz.cpl/Makefile.in
+++ b/dlls/appwiz.cpl/Makefile.in
@@ -1,5 +1,5 @@
MODULE = appwiz.cpl
-IMPORTS = uuid urlmon advpack comctl32 advapi32 shell32 user32 comdlg32
+IMPORTS = uuid urlmon advpack comctl32 advapi32 shell32 ole32 user32 comdlg32
DELAYIMPORTS = msi
C_SRCS = \
diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c
index 7fce9cb..9fbb386 100644
--- a/dlls/appwiz.cpl/addons.c
+++ b/dlls/appwiz.cpl/addons.c
@@ -415,6 +415,8 @@ static enum install_res install_from_cache(void)
return res;
}
+static IInternetBindInfo InstallCallbackBindInfo;
+
static HRESULT WINAPI InstallCallback_QueryInterface(IBindStatusCallback *iface,
REFIID riid, void **ppv)
{
@@ -423,6 +425,12 @@ static HRESULT WINAPI InstallCallback_QueryInterface(IBindStatusCallback *iface,
return S_OK;
}
+ if(IsEqualGUID(&IID_IInternetBindInfo, riid)) {
+ TRACE("IID_IInternetBindInfo\n");
+ *ppv = &InstallCallbackBindInfo;
+ return S_OK;
+ }
+
return E_INVALIDARG;
}
@@ -564,6 +572,59 @@ static const IBindStatusCallbackVtbl InstallCallbackVtbl = {
static IBindStatusCallback InstallCallback = { &InstallCallbackVtbl };
+static HRESULT WINAPI InstallCallbackBindInfo_QueryInterface(IInternetBindInfo *iface, REFIID riid, void **ppv)
+{
+ return IBindStatusCallback_QueryInterface(&InstallCallback, riid, ppv);
+}
+
+static ULONG WINAPI InstallCallbackBindInfo_AddRef(IInternetBindInfo *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI InstallCallbackBindInfo_Release(IInternetBindInfo *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI InstallCallbackBindInfo_GetBindInfo(IInternetBindInfo *iface, DWORD *bindf, BINDINFO *bindinfo)
+{
+ ERR("\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InstallCallbackBindInfo_GetBindString(IInternetBindInfo *iface, ULONG string_type,
+ WCHAR **strs, ULONG cnt, ULONG *fetched)
+{
+ static const WCHAR wine_addon_downloaderW[] =
+ {'W','i','n','e',' ','A','d','d','o','n',' ','D','o','w','n','l','o','a','d','e','r',0};
+
+ switch(string_type) {
+ case BINDSTRING_USER_AGENT:
+ TRACE("BINDSTRING_USER_AGENT\n");
+
+ *strs = CoTaskMemAlloc(sizeof(wine_addon_downloaderW));
+ if(!*strs)
+ return E_OUTOFMEMORY;
+
+ memcpy(*strs, wine_addon_downloaderW, sizeof(wine_addon_downloaderW));
+ *fetched = 1;
+ return S_OK;
+ }
+
+ return E_NOTIMPL;
+}
+
+static const IInternetBindInfoVtbl InstallCallbackBindInfoVtbl = {
+ InstallCallbackBindInfo_QueryInterface,
+ InstallCallbackBindInfo_AddRef,
+ InstallCallbackBindInfo_Release,
+ InstallCallbackBindInfo_GetBindInfo,
+ InstallCallbackBindInfo_GetBindString
+};
+
+static IInternetBindInfo InstallCallbackBindInfo = { &InstallCallbackBindInfoVtbl };
+
static void append_url_params( WCHAR *url )
{
static const WCHAR arch_formatW[] = {'?','a','r','c','h','='};
More information about the wine-cvs
mailing list