Dmitry Timoshkov : mstask: Implement ITaskScheduler::Delete().

Alexandre Julliard julliard at winehq.org
Fri May 11 13:22:27 CDT 2018


Module: wine
Branch: master
Commit: 4bd663629d6bce8bd9c109740f7b9698d25605b9
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=4bd663629d6bce8bd9c109740f7b9698d25605b9

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Fri May 11 12:36:23 2018 +0800

mstask: Implement ITaskScheduler::Delete().

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mstask/task_scheduler.c       | 23 ++++++++++++++++++-----
 dlls/mstask/tests/task_scheduler.c | 17 +++++++++++++----
 2 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/dlls/mstask/task_scheduler.c b/dlls/mstask/task_scheduler.c
index 42e7738..416a321 100644
--- a/dlls/mstask/task_scheduler.c
+++ b/dlls/mstask/task_scheduler.c
@@ -302,12 +302,25 @@ static HRESULT WINAPI MSTASK_ITaskScheduler_Activate(ITaskScheduler *iface,
     return hr;
 }
 
-static HRESULT WINAPI MSTASK_ITaskScheduler_Delete(
-        ITaskScheduler* iface,
-        LPCWSTR pwszName)
+static HRESULT WINAPI MSTASK_ITaskScheduler_Delete(ITaskScheduler *iface, LPCWSTR name)
 {
-    FIXME("%p, %s: stub\n", iface, debugstr_w(pwszName));
-    return E_NOTIMPL;
+    static const WCHAR tasksW[] = { '\\','T','a','s','k','s','\\',0 };
+    static const WCHAR jobW[] = { '.','j','o','b',0 };
+    WCHAR task_name[MAX_PATH];
+
+    TRACE("%p, %s\n", iface, debugstr_w(name));
+
+    if (strchrW(name, '.')) return E_INVALIDARG;
+
+    GetWindowsDirectoryW(task_name, MAX_PATH);
+    lstrcatW(task_name, tasksW);
+    lstrcatW(task_name, name);
+    lstrcatW(task_name, jobW);
+
+    if (!DeleteFileW(task_name))
+        return HRESULT_FROM_WIN32(GetLastError());
+
+    return S_OK;
 }
 
 static HRESULT WINAPI MSTASK_ITaskScheduler_NewWorkItem(
diff --git a/dlls/mstask/tests/task_scheduler.c b/dlls/mstask/tests/task_scheduler.c
index 8b93b56..d476638 100644
--- a/dlls/mstask/tests/task_scheduler.c
+++ b/dlls/mstask/tests/task_scheduler.c
@@ -249,7 +249,7 @@ static void test_save_task_curfile(ITask *task)
     curfile = NULL;
     hr = IPersistFile_GetCurFile(pfile, &curfile);
     ok(hr == S_OK, "GetCurFile error %#x\n", hr);
-    ok(curfile && curfile[0] , "curfile should not be NULL\n");
+    ok(curfile && curfile[0], "curfile should not be NULL\n");
 
     ok(file_exists(curfile), "curfile should exist\n");
 
@@ -343,6 +343,12 @@ static void test_task_storage(void)
         return;
     }
 
+    hr = ITaskScheduler_Delete(scheduler, Task1_ext);
+    ok(hr == E_INVALIDARG, "wrong error %#x\n", hr);
+
+    hr = ITaskScheduler_Delete(scheduler, Task1);
+    ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), "wrong error %#x\n", hr);
+
     hr = ITaskScheduler_NewWorkItem(scheduler, Task1_ext, &CLSID_CTask, &IID_ITask, (IUnknown **)&task);
     ok(hr == E_INVALIDARG, "wrong error %#x\n", hr);
 
@@ -418,9 +424,12 @@ static void test_task_storage(void)
 
     test_save_task_curfile(task);
 
-    DeleteFileW(task1_full_name);
-    DeleteFileW(task2_full_name);
-    DeleteFileW(task3_full_name);
+    hr = ITaskScheduler_Delete(scheduler, Task1);
+    ok(hr == S_OK, "got %#x\n", hr);
+    hr = ITaskScheduler_Delete(scheduler, Task2);
+    ok(hr == S_OK, "got %#x\n", hr);
+    hr = ITaskScheduler_Delete(scheduler, Task3);
+    ok(hr == S_OK, "got %#x\n", hr);
 
     ITask_Release(task);
     ITaskScheduler_Release(scheduler);




More information about the wine-cvs mailing list