diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c
index d1b4c416f56..54cee56f96f 100644
--- a/dlls/mshtml/script.c
+++ b/dlls/mshtml/script.c
@@ -67,6 +67,7 @@ struct ScriptHost {
IActiveScriptSite IActiveScriptSite_iface;
IActiveScriptSiteInterruptPoll IActiveScriptSiteInterruptPoll_iface;
IActiveScriptSiteWindow IActiveScriptSiteWindow_iface;
+ IActiveScriptSiteUIControl IActiveScriptSiteUIControl_iface;
IActiveScriptSiteDebug IActiveScriptSiteDebug_iface;
IServiceProvider IServiceProvider_iface;
@@ -256,6 +257,9 @@ static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface,
}else if(IsEqualGUID(&IID_IActiveScriptSiteWindow, riid)) {
TRACE("(%p)->(IID_IActiveScriptSiteWindow %p)\n", This, ppv);
*ppv = &This->IActiveScriptSiteWindow_iface;
+ }else if(IsEqualGUID(&IID_IActiveScriptSiteUIControl, riid)) {
+ TRACE("(%p)->(IID_IActiveScriptSiteUIControl %p)\n", This, ppv);
+ *ppv = &This->IActiveScriptSiteUIControl_iface;
}else if(IsEqualGUID(&IID_IActiveScriptSiteDebug, riid)) {
TRACE("(%p)->(IID_IActiveScriptSiteDebug %p)\n", This, ppv);
*ppv = &This->IActiveScriptSiteDebug_iface;
@@ -494,6 +498,47 @@ static const IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl = {
ActiveScriptSiteWindow_EnableModeless
};
+static inline ScriptHost *impl_from_IActiveScriptSiteUIControl(IActiveScriptSiteUIControl *iface)
+{
+ return CONTAINING_RECORD(iface, ScriptHost, IActiveScriptSiteUIControl_iface);
+}
+
+static HRESULT WINAPI ActiveScriptSiteUIControl_QueryInterface(IActiveScriptSiteUIControl *iface, REFIID riid, void **ppv)
+{
+ ScriptHost *This = impl_from_IActiveScriptSiteUIControl(iface);
+ return IActiveScriptSite_QueryInterface(&This->IActiveScriptSite_iface, riid, ppv);
+}
+
+static ULONG WINAPI ActiveScriptSiteUIControl_AddRef(IActiveScriptSiteUIControl *iface)
+{
+ ScriptHost *This = impl_from_IActiveScriptSiteUIControl(iface);
+ return IActiveScriptSite_AddRef(&This->IActiveScriptSite_iface);
+}
+
+static ULONG WINAPI ActiveScriptSiteUIControl_Release(IActiveScriptSiteUIControl *iface)
+{
+ ScriptHost *This = impl_from_IActiveScriptSiteUIControl(iface);
+ return IActiveScriptSite_Release(&This->IActiveScriptSite_iface);
+}
+
+static HRESULT WINAPI ActiveScriptSiteUIControl_GetUIBehavior(IActiveScriptSiteUIControl *iface, SCRIPTUICITEM UicItem,
+ SCRIPTUICHANDLING *pUicHandling)
+{
+ ScriptHost *This = impl_from_IActiveScriptSiteUIControl(iface);
+
+ WARN("(%p)->(%d %p) semi-stub\n", This, UicItem, pUicHandling);
+
+ *pUicHandling = SCRIPTUICHANDLING_ALLOW;
+ return S_OK;
+}
+
+static const IActiveScriptSiteUIControlVtbl ActiveScriptSiteUIControlVtbl = {
+ ActiveScriptSiteUIControl_QueryInterface,
+ ActiveScriptSiteUIControl_AddRef,
+ ActiveScriptSiteUIControl_Release,
+ ActiveScriptSiteUIControl_GetUIBehavior
+};
+
static inline ScriptHost *impl_from_IActiveScriptSiteDebug(IActiveScriptSiteDebug *iface)
{
return CONTAINING_RECORD(iface, ScriptHost, IActiveScriptSiteDebug_iface);
@@ -618,6 +663,7 @@ static ScriptHost *create_script_host(HTMLInnerWindow *window, const GUID *guid)
ret->IActiveScriptSite_iface.lpVtbl = &ActiveScriptSiteVtbl;
ret->IActiveScriptSiteInterruptPoll_iface.lpVtbl = &ActiveScriptSiteInterruptPollVtbl;
ret->IActiveScriptSiteWindow_iface.lpVtbl = &ActiveScriptSiteWindowVtbl;
+ ret->IActiveScriptSiteUIControl_iface.lpVtbl = &ActiveScriptSiteUIControlVtbl;
ret->IActiveScriptSiteDebug_iface.lpVtbl = &ActiveScriptSiteDebugVtbl;
ret->IServiceProvider_iface.lpVtbl = &ASServiceProviderVtbl;
ret->ref = 1;