From: Mohamad Al-Jaf mohamadaljaf@gmail.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54699 --- dlls/windows.networking.hostname/hostname.c | 19 +++++++++++++++++-- .../tests/hostname.c | 10 +++++----- 2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/dlls/windows.networking.hostname/hostname.c b/dlls/windows.networking.hostname/hostname.c index 0bf76664126..39047982771 100644 --- a/dlls/windows.networking.hostname/hostname.c +++ b/dlls/windows.networking.hostname/hostname.c @@ -28,6 +28,8 @@ struct hostname IHostName IHostName_iface; IHostNameFactory IHostNameFactory_iface; LONG ref; + + HSTRING rawname; };
static inline struct hostname *impl_from_IActivationFactory( IActivationFactory *iface ) @@ -176,8 +178,21 @@ DEFINE_IINSPECTABLE( hostnamefactory, IHostNameFactory, struct hostname, IActiva
static HRESULT WINAPI hostnamefactory_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 hostnamefactory_vtbl = diff --git a/dlls/windows.networking.hostname/tests/hostname.c b/dlls/windows.networking.hostname/tests/hostname.c index 2534316fde7..05dccd63903 100644 --- a/dlls/windows.networking.hostname/tests/hostname.c +++ b/dlls/windows.networking.hostname/tests/hostname.c @@ -79,14 +79,14 @@ 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 );
hr = IHostName_get_RawName( hostname, NULL ); todo_wine ok( hr == E_INVALIDARG, "got hr %#lx.\n", hr );