[PATCH 9/9] sapi: Add a partial implementation of SpObjectTokenCategory::EnumTokens().
Huw Davies
huw at codeweavers.com
Thu Sep 28 02:40:54 CDT 2017
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/sapi/tests/token.c | 35 +++++++++++++++++++++++++++++++++++
dlls/sapi/token.c | 25 +++++++++++++++++++++++--
2 files changed, 58 insertions(+), 2 deletions(-)
diff --git a/dlls/sapi/tests/token.c b/dlls/sapi/tests/token.c
index 688ade7..9f6689b8 100644
--- a/dlls/sapi/tests/token.c
+++ b/dlls/sapi/tests/token.c
@@ -49,6 +49,40 @@ static void test_data_key(void)
ISpRegDataKey_Release( data_key );
}
+static void test_token_category(void)
+{
+ ISpObjectTokenCategory *cat;
+ IEnumSpObjectTokens *enum_tokens;
+ HRESULT hr;
+ WCHAR bogus[] = {'b','o','g','u','s',0};
+ ULONG count;
+
+ hr = CoCreateInstance( &CLSID_SpObjectTokenCategory, NULL, CLSCTX_INPROC_SERVER,
+ &IID_ISpObjectTokenCategory, (void **)&cat );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = ISpObjectTokenCategory_EnumTokens( cat, NULL, NULL, &enum_tokens );
+ ok( hr == SPERR_UNINITIALIZED, "got %08x\n", hr );
+
+ hr = ISpObjectTokenCategory_SetId( cat, bogus, FALSE );
+ ok( hr == SPERR_INVALID_REGISTRY_KEY, "got %08x\n", hr );
+
+ hr = ISpObjectTokenCategory_SetId( cat, SPCAT_VOICES, FALSE );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = ISpObjectTokenCategory_SetId( cat, SPCAT_VOICES, FALSE );
+ ok( hr == SPERR_ALREADY_INITIALIZED, "got %08x\n", hr );
+
+ hr = ISpObjectTokenCategory_EnumTokens( cat, NULL, NULL, &enum_tokens );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = IEnumSpObjectTokens_GetCount( enum_tokens, &count );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ IEnumSpObjectTokens_Release( enum_tokens );
+ ISpObjectTokenCategory_Release( cat );
+}
+
static void test_token_enum(void)
{
ISpObjectTokenEnumBuilder *token_enum;
@@ -86,6 +120,7 @@ START_TEST(token)
{
CoInitialize( NULL );
test_data_key();
+ test_token_category();
test_token_enum();
CoUninitialize();
}
diff --git a/dlls/sapi/token.c b/dlls/sapi/token.c
index 9262641..781e3cc 100644
--- a/dlls/sapi/token.c
+++ b/dlls/sapi/token.c
@@ -455,8 +455,29 @@ static HRESULT WINAPI token_category_EnumTokens( ISpObjectTokenCategory *iface,
LPCWSTR req, LPCWSTR opt,
IEnumSpObjectTokens **enum_tokens )
{
- FIXME( "stub\n" );
- return E_NOTIMPL;
+ struct token_category *This = impl_from_ISpObjectTokenCategory( iface );
+ ISpObjectTokenEnumBuilder *builder;
+ HRESULT hr;
+
+ FIXME( "(%p)->(%s %s %p): semi-stub\n", This, debugstr_w( req ), debugstr_w( opt ), enum_tokens );
+
+ if (!This->data_key) return SPERR_UNINITIALIZED;
+
+ hr = CoCreateInstance( &CLSID_SpObjectTokenEnum, NULL, CLSCTX_ALL,
+ &IID_ISpObjectTokenEnumBuilder, (void **)&builder );
+ if (FAILED(hr)) return hr;
+
+ hr = ISpObjectTokenEnumBuilder_SetAttribs( builder, req, opt );
+ if (FAILED(hr)) goto fail;
+
+ /* FIXME: Build the enumerator */
+
+ hr = ISpObjectTokenEnumBuilder_QueryInterface( builder, &IID_IEnumSpObjectTokens,
+ (void **)enum_tokens );
+
+fail:
+ ISpObjectTokenEnumBuilder_Release( builder );
+ return hr;
}
static HRESULT WINAPI token_category_SetDefaultTokenId( ISpObjectTokenCategory *iface,
--
2.7.4
More information about the wine-patches
mailing list