Skip to content

Commit

Permalink
mshtml: Factor out dispex_prop_name.
Browse files Browse the repository at this point in the history
And use it in HTMLDOMAttribute implementation.
  • Loading branch information
cjacek authored and julliard committed Jul 16, 2024
1 parent 578dd93 commit 7084aba
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 23 deletions.
42 changes: 21 additions & 21 deletions dlls/mshtml/dispex.c
Original file line number Diff line number Diff line change
Expand Up @@ -2163,46 +2163,46 @@ static HRESULT WINAPI DispatchEx_GetMemberProperties(IWineJSDispatchHost *iface,
return E_NOTIMPL;
}

static HRESULT WINAPI DispatchEx_GetMemberName(IWineJSDispatchHost *iface, DISPID id, BSTR *pbstrName)
HRESULT dispex_prop_name(DispatchEx *dispex, DISPID id, BSTR *ret)
{
DispatchEx *This = impl_from_IWineJSDispatchHost(iface);
func_info_t *func;
HRESULT hres;

TRACE("%s (%p)->(%lx %p)\n", This->info->desc->name, This, id, pbstrName);

if(!ensure_real_info(This))
return E_OUTOFMEMORY;
if(This->jsdisp)
return IWineJSDispatch_GetMemberName(This->jsdisp, id, pbstrName);

if(is_custom_dispid(id)) {
if(This->info->desc->vtbl->get_name)
return This->info->desc->vtbl->get_name(This, id, pbstrName);
if(dispex->info->desc->vtbl->get_name)
return dispex->info->desc->vtbl->get_name(dispex, id, ret);
return DISP_E_MEMBERNOTFOUND;
}

if(is_dynamic_dispid(id)) {
DWORD idx = id - DISPID_DYNPROP_0;

if(!get_dynamic_data(This) || This->dynamic_data->prop_cnt <= idx)
if(!get_dynamic_data(dispex) || dispex->dynamic_data->prop_cnt <= idx)
return DISP_E_MEMBERNOTFOUND;

*pbstrName = SysAllocString(This->dynamic_data->props[idx].name);
if(!*pbstrName)
return E_OUTOFMEMORY;

return S_OK;
*ret = SysAllocString(dispex->dynamic_data->props[idx].name);
return *ret ? S_OK : E_OUTOFMEMORY;
}

hres = get_builtin_func(This->info, id, &func);
hres = get_builtin_func(dispex->info, id, &func);
if(FAILED(hres))
return hres;

*pbstrName = SysAllocString(func->name);
if(!*pbstrName)
*ret = SysAllocString(func->name);
return *ret ? S_OK : E_OUTOFMEMORY;
}

static HRESULT WINAPI DispatchEx_GetMemberName(IWineJSDispatchHost *iface, DISPID id, BSTR *pbstrName)
{
DispatchEx *This = impl_from_IWineJSDispatchHost(iface);

TRACE("%s (%p)->(%lx %p)\n", This->info->desc->name, This, id, pbstrName);

if(!ensure_real_info(This))
return E_OUTOFMEMORY;
return S_OK;
if(This->jsdisp)
return IWineJSDispatch_GetMemberName(This->jsdisp, id, pbstrName);
return dispex_prop_name(This, id, pbstrName);
}

static HRESULT next_dynamic_id(DispatchEx *dispex, DWORD idx, DISPID *ret_id)
Expand Down
4 changes: 2 additions & 2 deletions dlls/mshtml/htmlattr.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ static HRESULT WINAPI HTMLDOMAttribute_get_nodeName(IHTMLDOMAttribute *iface, BS
return *p ? S_OK : E_OUTOFMEMORY;
}

return IWineJSDispatchHost_GetMemberName(&This->elem->node.event_target.dispex.IWineJSDispatchHost_iface, This->dispid, p);
return dispex_prop_name(&This->elem->node.event_target.dispex, This->dispid, p);
}

static HRESULT WINAPI HTMLDOMAttribute_put_nodeValue(IHTMLDOMAttribute *iface, VARIANT v)
Expand Down Expand Up @@ -105,7 +105,7 @@ static HRESULT WINAPI HTMLDOMAttribute_get_specified(IHTMLDOMAttribute *iface, V
return S_OK;
}

hres = IWineJSDispatchHost_GetMemberName(&This->elem->node.event_target.dispex.IWineJSDispatchHost_iface, This->dispid, &name);
hres = dispex_prop_name(&This->elem->node.event_target.dispex, This->dispid, &name);
if(FAILED(hres))
return hres;

Expand Down
1 change: 1 addition & 0 deletions dlls/mshtml/mshtml_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,7 @@ HRESULT dispex_prop_put(DispatchEx *dispex, DISPID id, LCID lcid, VARIANT *v, EX
IServiceProvider *caller);
HRESULT dispex_get_id(DispatchEx *dispex, const WCHAR *name, DWORD flags, DISPID *pid);
HRESULT dispex_next_id(DispatchEx *dispex, DISPID id, DISPID *ret);
HRESULT dispex_prop_name(DispatchEx *dispex, DISPID id, BSTR *ret);

typedef enum {
DISPEXPROP_CUSTOM,
Expand Down

0 comments on commit 7084aba

Please sign in to comment.