Merge changes from topic "convert_result" into androidx-main

* changes:
  Convert ActivityResult to Kotlin
  Rename ActivityResult.java to .kt
diff --git a/activity/activity-ktx/api/current.ignore b/activity/activity-ktx/api/current.ignore
index 70cfa3e..4f14c5c 100644
--- a/activity/activity-ktx/api/current.ignore
+++ b/activity/activity-ktx/api/current.ignore
@@ -1,5 +1,3 @@
 // Baseline format: 1.0
-RemovedClass: androidx.activity.result.ActivityResultCallerKt:
-    Removed class androidx.activity.result.ActivityResultCallerKt
-RemovedClass: androidx.activity.result.ActivityResultLauncherKt:
-    Removed class androidx.activity.result.ActivityResultLauncherKt
+RemovedPackage: androidx.activity.result:
+    Removed package androidx.activity.result
diff --git a/activity/activity-ktx/api/current.txt b/activity/activity-ktx/api/current.txt
index bd594bc..a62da75 100644
--- a/activity/activity-ktx/api/current.txt
+++ b/activity/activity-ktx/api/current.txt
@@ -12,12 +12,3 @@
 
 }
 
-package androidx.activity.result {
-
-  public final class ActivityResultKt {
-    method public static operator int component1(androidx.activity.result.ActivityResult);
-    method public static operator android.content.Intent? component2(androidx.activity.result.ActivityResult);
-  }
-
-}
-
diff --git a/activity/activity-ktx/api/restricted_current.ignore b/activity/activity-ktx/api/restricted_current.ignore
index 70cfa3e..4f14c5c 100644
--- a/activity/activity-ktx/api/restricted_current.ignore
+++ b/activity/activity-ktx/api/restricted_current.ignore
@@ -1,5 +1,3 @@
 // Baseline format: 1.0
-RemovedClass: androidx.activity.result.ActivityResultCallerKt:
-    Removed class androidx.activity.result.ActivityResultCallerKt
-RemovedClass: androidx.activity.result.ActivityResultLauncherKt:
-    Removed class androidx.activity.result.ActivityResultLauncherKt
+RemovedPackage: androidx.activity.result:
+    Removed package androidx.activity.result
diff --git a/activity/activity-ktx/api/restricted_current.txt b/activity/activity-ktx/api/restricted_current.txt
index bd594bc..a62da75 100644
--- a/activity/activity-ktx/api/restricted_current.txt
+++ b/activity/activity-ktx/api/restricted_current.txt
@@ -12,12 +12,3 @@
 
 }
 
-package androidx.activity.result {
-
-  public final class ActivityResultKt {
-    method public static operator int component1(androidx.activity.result.ActivityResult);
-    method public static operator android.content.Intent? component2(androidx.activity.result.ActivityResult);
-  }
-
-}
-
diff --git a/activity/activity-ktx/src/main/java/androidx/activity/result/ActivityResult.kt b/activity/activity-ktx/src/main/java/androidx/activity/result/ActivityResult.kt
deleted file mode 100644
index b1cb01f..0000000
--- a/activity/activity-ktx/src/main/java/androidx/activity/result/ActivityResult.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.activity.result
-
-import android.content.Intent
-
-/**
- * Destructuring declaration for [ActivityResult] to provide the requestCode
- *
- * @return the resultCode of the [ActivityResult]
- */
-public operator fun ActivityResult.component1(): Int = resultCode
-
-/**
- * Destructuring declaration for [ActivityResult] to provide the intent
- *
- * @return the intent of the [ActivityResult]
- */
-public operator fun ActivityResult.component2(): Intent? = data
diff --git a/activity/activity/api/current.ignore b/activity/activity/api/current.ignore
index 9ab3df4..86b150a 100644
--- a/activity/activity/api/current.ignore
+++ b/activity/activity/api/current.ignore
@@ -3,6 +3,8 @@
     Method androidx.activity.ComponentActivity.registerForActivityResult has changed return type from androidx.activity.result.ActivityResultLauncher<I> to androidx.activity.result.ActivityResultLauncher<I>
 ChangedType: androidx.activity.ComponentActivity#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract<I,O>, androidx.activity.result.ActivityResultRegistry, androidx.activity.result.ActivityResultCallback<O>):
     Method androidx.activity.ComponentActivity.registerForActivityResult has changed return type from androidx.activity.result.ActivityResultLauncher<I> to androidx.activity.result.ActivityResultLauncher<I>
+ChangedType: androidx.activity.result.ActivityResult#CREATOR:
+    Field androidx.activity.result.ActivityResult.CREATOR has changed type from android.os.Parcelable.Creator<androidx.activity.result.ActivityResult!> to android.os.Parcelable.Creator<androidx.activity.result.ActivityResult>
 ChangedType: androidx.activity.result.ActivityResultCaller#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract<I,O>, androidx.activity.result.ActivityResultCallback<O>):
     Method androidx.activity.result.ActivityResultCaller.registerForActivityResult has changed return type from androidx.activity.result.ActivityResultLauncher<I> to androidx.activity.result.ActivityResultLauncher<I>
 ChangedType: androidx.activity.result.ActivityResultCaller#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract<I,O>, androidx.activity.result.ActivityResultRegistry, androidx.activity.result.ActivityResultCallback<O>):
diff --git a/activity/activity/api/current.txt b/activity/activity/api/current.txt
index bcdf6c6..999befd 100644
--- a/activity/activity/api/current.txt
+++ b/activity/activity/api/current.txt
@@ -204,13 +204,20 @@
 package androidx.activity.result {
 
   public final class ActivityResult implements android.os.Parcelable {
-    ctor public ActivityResult(int, android.content.Intent?);
+    ctor public ActivityResult(int resultCode, android.content.Intent? data);
     method public int describeContents();
     method public android.content.Intent? getData();
     method public int getResultCode();
-    method public static String resultCodeToString(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<androidx.activity.result.ActivityResult!> CREATOR;
+    method public static String resultCodeToString(int resultCode);
+    method public void writeToParcel(android.os.Parcel dest, int flags);
+    property public final android.content.Intent? data;
+    property public final int resultCode;
+    field public static final android.os.Parcelable.Creator<androidx.activity.result.ActivityResult> CREATOR;
+    field public static final androidx.activity.result.ActivityResult.Companion Companion;
+  }
+
+  public static final class ActivityResult.Companion {
+    method public String resultCodeToString(int resultCode);
   }
 
   public fun interface ActivityResultCallback<O> {
@@ -227,6 +234,11 @@
     method public static <I, O> androidx.activity.result.ActivityResultLauncher<kotlin.Unit> registerForActivityResult(androidx.activity.result.ActivityResultCaller, androidx.activity.result.contract.ActivityResultContract<I,O> contract, I input, kotlin.jvm.functions.Function1<O,kotlin.Unit> callback);
   }
 
+  public final class ActivityResultKt {
+    method public static operator int component1(androidx.activity.result.ActivityResult);
+    method public static operator android.content.Intent? component2(androidx.activity.result.ActivityResult);
+  }
+
   public abstract class ActivityResultLauncher<I> {
     ctor public ActivityResultLauncher();
     method public abstract androidx.activity.result.contract.ActivityResultContract<I,?> getContract();
diff --git a/activity/activity/api/restricted_current.ignore b/activity/activity/api/restricted_current.ignore
index 9ab3df4..86b150a 100644
--- a/activity/activity/api/restricted_current.ignore
+++ b/activity/activity/api/restricted_current.ignore
@@ -3,6 +3,8 @@
     Method androidx.activity.ComponentActivity.registerForActivityResult has changed return type from androidx.activity.result.ActivityResultLauncher<I> to androidx.activity.result.ActivityResultLauncher<I>
 ChangedType: androidx.activity.ComponentActivity#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract<I,O>, androidx.activity.result.ActivityResultRegistry, androidx.activity.result.ActivityResultCallback<O>):
     Method androidx.activity.ComponentActivity.registerForActivityResult has changed return type from androidx.activity.result.ActivityResultLauncher<I> to androidx.activity.result.ActivityResultLauncher<I>
+ChangedType: androidx.activity.result.ActivityResult#CREATOR:
+    Field androidx.activity.result.ActivityResult.CREATOR has changed type from android.os.Parcelable.Creator<androidx.activity.result.ActivityResult!> to android.os.Parcelable.Creator<androidx.activity.result.ActivityResult>
 ChangedType: androidx.activity.result.ActivityResultCaller#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract<I,O>, androidx.activity.result.ActivityResultCallback<O>):
     Method androidx.activity.result.ActivityResultCaller.registerForActivityResult has changed return type from androidx.activity.result.ActivityResultLauncher<I> to androidx.activity.result.ActivityResultLauncher<I>
 ChangedType: androidx.activity.result.ActivityResultCaller#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract<I,O>, androidx.activity.result.ActivityResultRegistry, androidx.activity.result.ActivityResultCallback<O>):
diff --git a/activity/activity/api/restricted_current.txt b/activity/activity/api/restricted_current.txt
index 02169d2..8346a8b 100644
--- a/activity/activity/api/restricted_current.txt
+++ b/activity/activity/api/restricted_current.txt
@@ -203,13 +203,20 @@
 package androidx.activity.result {
 
   public final class ActivityResult implements android.os.Parcelable {
-    ctor public ActivityResult(int, android.content.Intent?);
+    ctor public ActivityResult(int resultCode, android.content.Intent? data);
     method public int describeContents();
     method public android.content.Intent? getData();
     method public int getResultCode();
-    method public static String resultCodeToString(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<androidx.activity.result.ActivityResult!> CREATOR;
+    method public static String resultCodeToString(int resultCode);
+    method public void writeToParcel(android.os.Parcel dest, int flags);
+    property public final android.content.Intent? data;
+    property public final int resultCode;
+    field public static final android.os.Parcelable.Creator<androidx.activity.result.ActivityResult> CREATOR;
+    field public static final androidx.activity.result.ActivityResult.Companion Companion;
+  }
+
+  public static final class ActivityResult.Companion {
+    method public String resultCodeToString(int resultCode);
   }
 
   public fun interface ActivityResultCallback<O> {
@@ -226,6 +233,11 @@
     method public static <I, O> androidx.activity.result.ActivityResultLauncher<kotlin.Unit> registerForActivityResult(androidx.activity.result.ActivityResultCaller, androidx.activity.result.contract.ActivityResultContract<I,O> contract, I input, kotlin.jvm.functions.Function1<O,kotlin.Unit> callback);
   }
 
+  public final class ActivityResultKt {
+    method public static operator int component1(androidx.activity.result.ActivityResult);
+    method public static operator android.content.Intent? component2(androidx.activity.result.ActivityResult);
+  }
+
   public abstract class ActivityResultLauncher<I> {
     ctor public ActivityResultLauncher();
     method public abstract androidx.activity.result.contract.ActivityResultContract<I,?> getContract();
diff --git a/activity/activity-ktx/src/androidTest/java/androidx/activity/result/ActivityResultTest.kt b/activity/activity/src/androidTest/java/androidx/activity/result/ActivityResultTest.kt
similarity index 100%
rename from activity/activity-ktx/src/androidTest/java/androidx/activity/result/ActivityResultTest.kt
rename to activity/activity/src/androidTest/java/androidx/activity/result/ActivityResultTest.kt
diff --git a/activity/activity/src/main/java/androidx/activity/result/ActivityResult.java b/activity/activity/src/main/java/androidx/activity/result/ActivityResult.java
deleted file mode 100644
index 785569f..0000000
--- a/activity/activity/src/main/java/androidx/activity/result/ActivityResult.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.activity.result;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-/**
- * A container for an activity result as obtained from {@link Activity#onActivityResult}
- *
- * @see Activity#onActivityResult
- */
-@SuppressLint("BanParcelableUsage")
-public final class ActivityResult implements Parcelable {
-    private final int mResultCode;
-    @Nullable
-    private final Intent mData;
-
-    /**
-     * Create a new instance
-     *
-     * @param resultCode status to indicate the success of the operation
-     * @param data an intent that carries the result data
-     */
-    public ActivityResult(int resultCode, @Nullable Intent data) {
-        mResultCode = resultCode;
-        mData = data;
-    }
-
-    ActivityResult(Parcel in) {
-        mResultCode = in.readInt();
-        mData = in.readInt() == 0 ? null : Intent.CREATOR.createFromParcel(in);
-    }
-
-    /**
-     * @return the resultCode
-     */
-    public int getResultCode() {
-        return mResultCode;
-    }
-
-    /**
-     * @return the intent
-     */
-    @Nullable
-    public Intent getData() {
-        return mData;
-    }
-
-    @Override
-    public String toString() {
-        return "ActivityResult{"
-                + "resultCode=" + resultCodeToString(mResultCode)
-                + ", data=" + mData
-                + '}';
-    }
-
-    /**
-     * A readable representation of standard activity result codes
-     *
-     * @param resultCode the result code
-     *
-     * @return RESULT_OK, RESULT_CANCELED, or the number otherwise
-     */
-    @NonNull
-    public static String resultCodeToString(int resultCode) {
-        switch (resultCode) {
-            case Activity.RESULT_OK: return "RESULT_OK";
-            case Activity.RESULT_CANCELED: return "RESULT_CANCELED";
-            default: return String.valueOf(resultCode);
-        }
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeInt(mResultCode);
-        dest.writeInt(mData == null ? 0 : 1);
-        if (mData != null) {
-            mData.writeToParcel(dest, flags);
-        }
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @NonNull
-    public static final Creator<ActivityResult> CREATOR = new Creator<ActivityResult>() {
-        @Override
-        public ActivityResult createFromParcel(@NonNull Parcel in) {
-            return new ActivityResult(in);
-        }
-
-        @Override
-        public ActivityResult[] newArray(int size) {
-            return new ActivityResult[size];
-        }
-    };
-}
diff --git a/activity/activity/src/main/java/androidx/activity/result/ActivityResult.kt b/activity/activity/src/main/java/androidx/activity/result/ActivityResult.kt
new file mode 100644
index 0000000..bbd1a03
--- /dev/null
+++ b/activity/activity/src/main/java/androidx/activity/result/ActivityResult.kt
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.activity.result
+
+import android.annotation.SuppressLint
+import android.app.Activity
+import android.content.Intent
+import android.os.Parcel
+import android.os.Parcelable
+
+/**
+ * A container for an activity result as obtained from [Activity.onActivityResult]
+ *
+ * @see Activity.onActivityResult
+ */
+@SuppressLint("BanParcelableUsage")
+class ActivityResult(
+    /**
+     * Status to indicate the success of the operation
+     */
+    val resultCode: Int,
+
+    /**
+     * The intent that carries the result data
+     */
+    val data: Intent?
+) : Parcelable {
+
+    internal constructor(parcel: Parcel) : this(
+        parcel.readInt(),
+        if (parcel.readInt() == 0) null else Intent.CREATOR.createFromParcel(parcel)
+    )
+
+    override fun toString(): String {
+        return "ActivityResult{resultCode=${resultCodeToString(resultCode)}, data=$data}"
+    }
+
+    override fun writeToParcel(dest: Parcel, flags: Int) {
+        dest.writeInt(resultCode)
+        dest.writeInt(if (data == null) 0 else 1)
+        data?.writeToParcel(dest, flags)
+    }
+
+    override fun describeContents() = 0
+
+    companion object {
+        /**
+         * A readable representation of standard activity result codes for the given [resultCode]
+         *
+         * @return RESULT_OK, RESULT_CANCELED, or the number otherwise
+         */
+        @JvmStatic
+        fun resultCodeToString(resultCode: Int): String {
+            return when (resultCode) {
+                Activity.RESULT_OK -> "RESULT_OK"
+                Activity.RESULT_CANCELED -> "RESULT_CANCELED"
+                else -> resultCode.toString()
+            }
+        }
+
+        @Suppress("unused")
+        @JvmField
+        val CREATOR = object : Parcelable.Creator<ActivityResult> {
+            override fun createFromParcel(parcel: Parcel) = ActivityResult(parcel)
+
+            override fun newArray(size: Int) = arrayOfNulls<ActivityResult>(size)
+        }
+    }
+}
+
+/**
+ * Destructuring declaration for [ActivityResult] to provide the requestCode
+ *
+ * @return the resultCode of the [ActivityResult]
+ */
+operator fun ActivityResult.component1(): Int = resultCode
+
+/**
+ * Destructuring declaration for [ActivityResult] to provide the intent
+ *
+ * @return the intent of the [ActivityResult]
+ */
+operator fun ActivityResult.component2(): Intent? = data