mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 09:35:52 +00:00
windows.networking.hostname: Implement IHostNameFactory::CreateHostName().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54699
This commit is contained in:
parent
790109da8a
commit
3fe0cfef9c
|
@ -115,12 +115,147 @@ static const struct IActivationFactoryVtbl factory_vtbl =
|
|||
factory_ActivateInstance,
|
||||
};
|
||||
|
||||
struct hostname
|
||||
{
|
||||
IHostName IHostName_iface;
|
||||
LONG ref;
|
||||
|
||||
HSTRING rawname;
|
||||
};
|
||||
|
||||
static inline struct hostname *impl_from_IHostName( IHostName *iface )
|
||||
{
|
||||
return CONTAINING_RECORD( iface, struct hostname, IHostName_iface );
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_QueryInterface( IHostName *iface, REFIID iid, void **out )
|
||||
{
|
||||
struct hostname *impl = impl_from_IHostName( iface );
|
||||
|
||||
TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid( iid ), out );
|
||||
|
||||
if (IsEqualGUID( iid, &IID_IUnknown ) ||
|
||||
IsEqualGUID( iid, &IID_IInspectable ) ||
|
||||
IsEqualGUID( iid, &IID_IAgileObject ) ||
|
||||
IsEqualGUID( iid, &IID_IHostName ))
|
||||
{
|
||||
*out = &impl->IHostName_iface;
|
||||
IInspectable_AddRef( *out );
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
FIXME( "%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid( iid ) );
|
||||
*out = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI hostname_AddRef( IHostName *iface )
|
||||
{
|
||||
struct hostname *impl = impl_from_IHostName( iface );
|
||||
ULONG ref = InterlockedIncrement( &impl->ref );
|
||||
TRACE( "iface %p increasing refcount to %lu.\n", iface, ref );
|
||||
return ref;
|
||||
}
|
||||
|
||||
static ULONG WINAPI hostname_Release( IHostName *iface )
|
||||
{
|
||||
struct hostname *impl = impl_from_IHostName( iface );
|
||||
ULONG ref = InterlockedDecrement( &impl->ref );
|
||||
TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref );
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_GetIids( IHostName *iface, ULONG *iid_count, IID **iids )
|
||||
{
|
||||
FIXME( "iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_GetRuntimeClassName( IHostName *iface, HSTRING *class_name )
|
||||
{
|
||||
FIXME( "iface %p, class_name %p stub!\n", iface, class_name );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_GetTrustLevel( IHostName *iface, TrustLevel *trust_level )
|
||||
{
|
||||
FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_get_IPInformation( IHostName *iface, IIPInformation **value )
|
||||
{
|
||||
FIXME( "iface %p, value %p stub!\n", iface, value );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_get_RawName( IHostName *iface, HSTRING *value )
|
||||
{
|
||||
FIXME( "iface %p, value %p stub!\n", iface, value );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_get_DisplayName( IHostName *iface, HSTRING *value )
|
||||
{
|
||||
FIXME( "iface %p, value %p stub!\n", iface, value );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_get_CanonicalName( IHostName *iface, HSTRING *value )
|
||||
{
|
||||
FIXME( "iface %p, value %p stub!\n", iface, value );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_get_Type( IHostName *iface, HostNameType *value )
|
||||
{
|
||||
FIXME( "iface %p, value %p stub!\n", iface, value );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_IsEqual( IHostName *iface, IHostName *name, boolean *equal )
|
||||
{
|
||||
FIXME( "iface %p, name %p, equal %p stub!\n", iface, name, equal );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const struct IHostNameVtbl hostname_vtbl =
|
||||
{
|
||||
hostname_QueryInterface,
|
||||
hostname_AddRef,
|
||||
hostname_Release,
|
||||
/* IInspectable methods */
|
||||
hostname_GetIids,
|
||||
hostname_GetRuntimeClassName,
|
||||
hostname_GetTrustLevel,
|
||||
/* IHostName methods */
|
||||
hostname_get_IPInformation,
|
||||
hostname_get_RawName,
|
||||
hostname_get_DisplayName,
|
||||
hostname_get_CanonicalName,
|
||||
hostname_get_Type,
|
||||
hostname_IsEqual,
|
||||
};
|
||||
|
||||
DEFINE_IINSPECTABLE( hostname_factory, IHostNameFactory, struct hostname_statics, IActivationFactory_iface )
|
||||
|
||||
static HRESULT WINAPI hostname_factory_CreateHostName( IHostNameFactory *iface, HSTRING name, IHostName **value )
|
||||
{
|
||||
FIXME( "iface %p, name %s, value %p stub!\n", iface, debugstr_hstring(name), value );
|
||||
return E_NOTIMPL;
|
||||
struct hostname *impl;
|
||||
|
||||
TRACE( "iface %p, name %s, value %p\n", iface, debugstr_hstring(name), value );
|
||||
|
||||
if (!value) return E_POINTER;
|
||||
if (!name) return E_INVALIDARG;
|
||||
if (!(impl = calloc( 1, sizeof(*impl) ))) return E_OUTOFMEMORY;
|
||||
|
||||
impl->IHostName_iface.lpVtbl = &hostname_vtbl;
|
||||
impl->ref = 1;
|
||||
impl->rawname = name;
|
||||
|
||||
*value = &impl->IHostName_iface;
|
||||
TRACE( "created IHostName %p.\n", *value );
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static const struct IHostNameFactoryVtbl hostname_factory_vtbl =
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#define WIDL_using_Windows_Foundation_Collections
|
||||
#include "windows.foundation.h"
|
||||
#define WIDL_using_Windows_Networking
|
||||
#define WIDL_using_Windows_Networking_Connectivity
|
||||
#include "windows.networking.h"
|
||||
|
||||
extern IActivationFactory *hostname_factory;
|
||||
|
@ -75,5 +76,4 @@ extern IActivationFactory *hostname_factory;
|
|||
#define DEFINE_IINSPECTABLE( pfx, iface_type, impl_type, base_iface ) \
|
||||
DEFINE_IINSPECTABLE_( pfx, iface_type, impl_type, impl_from_##iface_type, iface_type##_iface, &impl->base_iface )
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -79,14 +79,19 @@ static void test_HostnameStatics(void)
|
|||
ok( hr == S_OK, "got hr %#lx.\n", hr );
|
||||
|
||||
hr = IHostNameFactory_CreateHostName( hostnamefactory, NULL, &hostname );
|
||||
todo_wine ok( hr == E_INVALIDARG, "got hr %#lx.\n", hr );
|
||||
ok( hr == E_INVALIDARG, "got hr %#lx.\n", hr );
|
||||
hr = IHostNameFactory_CreateHostName( hostnamefactory, str, NULL );
|
||||
todo_wine ok( hr == E_POINTER, "got hr %#lx.\n", hr );
|
||||
ok( hr == E_POINTER, "got hr %#lx.\n", hr );
|
||||
hr = IHostNameFactory_CreateHostName( hostnamefactory, NULL, NULL );
|
||||
todo_wine ok( hr == E_POINTER, "got hr %#lx.\n", hr );
|
||||
ok( hr == E_POINTER, "got hr %#lx.\n", hr );
|
||||
hr = IHostNameFactory_CreateHostName( hostnamefactory, str, &hostname );
|
||||
todo_wine ok( hr == S_OK, "got hr %#lx.\n", hr );
|
||||
todo_wine ok( hostname != NULL, "got NULL hostname %p.\n", hostname );
|
||||
ok( hr == S_OK, "got hr %#lx.\n", hr );
|
||||
ok( hostname != NULL, "got NULL hostname %p.\n", hostname );
|
||||
|
||||
check_interface( hostname, &IID_IUnknown );
|
||||
check_interface( hostname, &IID_IInspectable );
|
||||
check_interface( hostname, &IID_IAgileObject );
|
||||
check_interface( hostname, &IID_IHostName );
|
||||
|
||||
hr = IHostName_get_RawName( hostname, NULL );
|
||||
todo_wine ok( hr == E_INVALIDARG, "got hr %#lx.\n", hr );
|
||||
|
@ -98,6 +103,8 @@ static void test_HostnameStatics(void)
|
|||
|
||||
WindowsDeleteString( str );
|
||||
WindowsDeleteString( rawname );
|
||||
ref = IHostName_Release( hostname );
|
||||
ok( !ref, "got ref %ld.\n", ref );
|
||||
ref = IHostNameFactory_Release( hostnamefactory );
|
||||
ok( ref == 2, "got ref %ld.\n", ref );
|
||||
ref = IActivationFactory_Release( factory );
|
||||
|
|
Loading…
Reference in a new issue