Migrate PruneWorkRunnable to kotlin

Test: refactoring
Change-Id: I9ef465b0893e6c719354679a81cf321df23aa9db
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/WorkManagerImpl.java b/work/work-runtime/src/main/java/androidx/work/impl/WorkManagerImpl.java
index aa02965..2b69d59 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/WorkManagerImpl.java
+++ b/work/work-runtime/src/main/java/androidx/work/impl/WorkManagerImpl.java
@@ -64,7 +64,7 @@
 import androidx.work.impl.utils.ForceStopRunnable;
 import androidx.work.impl.utils.LiveDataUtils;
 import androidx.work.impl.utils.PreferenceUtils;
-import androidx.work.impl.utils.PruneWorkRunnable;
+import androidx.work.impl.utils.PruneWorkRunnableKt;
 import androidx.work.impl.utils.RawQueries;
 import androidx.work.impl.utils.StatusRunnable;
 import androidx.work.impl.utils.StopWorkRunnable;
@@ -466,9 +466,7 @@
 
     @Override
     public @NonNull Operation pruneWork() {
-        PruneWorkRunnable runnable = new PruneWorkRunnable(this);
-        mWorkTaskExecutor.executeOnTaskThread(runnable);
-        return runnable.getOperation();
+        return PruneWorkRunnableKt.pruneWork(mWorkDatabase, mWorkTaskExecutor);
     }
 
     @Override
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/utils/PruneWorkRunnable.kt b/work/work-runtime/src/main/java/androidx/work/impl/utils/PruneWorkRunnable.kt
index 2b1ffcd..3bc346c 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/utils/PruneWorkRunnable.kt
+++ b/work/work-runtime/src/main/java/androidx/work/impl/utils/PruneWorkRunnable.kt
@@ -13,52 +13,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package androidx.work.impl.utils
 
-package androidx.work.impl.utils;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.RestrictTo;
-import androidx.work.Operation;
-import androidx.work.impl.OperationImpl;
-import androidx.work.impl.WorkDatabase;
-import androidx.work.impl.WorkManagerImpl;
-import androidx.work.impl.model.WorkSpecDao;
+import androidx.work.Operation
+import androidx.work.impl.OperationImpl
+import androidx.work.impl.WorkDatabase
+import androidx.work.impl.utils.taskexecutor.TaskExecutor
 
 /**
- * A Runnable that prunes work in the background.  Pruned work meets the following criteria:
+ * Prunes work in the background.  Pruned work meets the following criteria:
  * - Is finished (succeeded, failed, or cancelled)
  * - Has zero unfinished dependents
- *
  */
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-public class PruneWorkRunnable implements Runnable {
-
-    private final WorkManagerImpl mWorkManagerImpl;
-    private final OperationImpl mOperation;
-
-    public PruneWorkRunnable(@NonNull WorkManagerImpl workManagerImpl) {
-        mWorkManagerImpl = workManagerImpl;
-        mOperation = new OperationImpl();
-    }
-
-    /**
-     * @return The {@link Operation} that encapsulates the state of the {@link PruneWorkRunnable}.
-     */
-    @NonNull
-    public Operation getOperation() {
-        return mOperation;
-    }
-
-
-    @Override
-    public void run() {
+internal fun WorkDatabase.pruneWork(executor: TaskExecutor): Operation {
+    val operation = OperationImpl()
+    executor.executeOnTaskThread {
         try {
-            WorkDatabase workDatabase = mWorkManagerImpl.getWorkDatabase();
-            WorkSpecDao workSpecDao = workDatabase.workSpecDao();
-            workSpecDao.pruneFinishedWorkWithZeroDependentsIgnoringKeepForAtLeast();
-            mOperation.markState(Operation.SUCCESS);
-        } catch (Throwable exception) {
-            mOperation.markState(new Operation.State.FAILURE(exception));
+            workSpecDao().pruneFinishedWorkWithZeroDependentsIgnoringKeepForAtLeast()
+            operation.markState(Operation.SUCCESS)
+        } catch (exception: Throwable) {
+            operation.markState(Operation.State.FAILURE(exception))
         }
     }
+    return operation
 }