Create a new project directory for safeparcel and safeparcel-processor.

Bug: 281711024
Test: N/A. Only creating the new project.
Relnote: N/A
Change-Id: I6df270a6aed8ebede528115a06310587aedb7599
diff --git a/docs-tip-of-tree/build.gradle b/docs-tip-of-tree/build.gradle
index 0265a0a..7547594 100644
--- a/docs-tip-of-tree/build.gradle
+++ b/docs-tip-of-tree/build.gradle
@@ -301,6 +301,8 @@
     docs(project(":room:room-rxjava2"))
     docs(project(":room:room-rxjava3"))
     docs(project(":room:room-testing"))
+    docs(project(":safeparcel:safeparcel"))
+    docs(project(":safeparcel:safeparcel-processor"))
     docs(project(":savedstate:savedstate"))
     docs(project(":savedstate:savedstate-ktx"))
     docs(project(":security:security-app-authenticator"))
diff --git a/libraryversions.toml b/libraryversions.toml
index cf3fbbf..d20f1d7 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -107,6 +107,7 @@
 REMOTECALLBACK = "1.0.0-alpha02"
 RESOURCEINSPECTION = "1.1.0-alpha01"
 ROOM = "2.6.0-alpha02"
+SAFEPARCEL = "1.0.0-alpha01"
 SAVEDSTATE = "1.3.0-alpha01"
 SECURITY = "1.1.0-alpha07"
 SECURITY_APP_AUTHENTICATOR = "1.0.0-alpha03"
@@ -246,6 +247,7 @@
 REMOTECALLBACK = { group = "androidx.remotecallback", atomicGroupVersion = "versions.REMOTECALLBACK" }
 RESOURCEINSPECTION = { group = "androidx.resourceinspection", atomicGroupVersion = "versions.RESOURCEINSPECTION" }
 ROOM = { group = "androidx.room", atomicGroupVersion = "versions.ROOM" }
+SAFEPARCEL = { group = "androidx.safeparcel", atomicGroupVersion = "versions.SAFEPARCEL" }
 SAVEDSTATE = { group = "androidx.savedstate", atomicGroupVersion = "versions.SAVEDSTATE" }
 SECURITY = { group = "androidx.security" }
 SHARETARGET = { group = "androidx.sharetarget", atomicGroupVersion = "versions.SHARETARGET" }
diff --git a/safeparcel/OWNERS b/safeparcel/OWNERS
new file mode 100644
index 0000000..a16caca
--- /dev/null
+++ b/safeparcel/OWNERS
@@ -0,0 +1,3 @@
+# Bug component: 156412
+arcoxu@google.com
+homebrew@google.com
diff --git a/safeparcel/safeparcel-processor/api/current.txt b/safeparcel/safeparcel-processor/api/current.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/safeparcel/safeparcel-processor/api/current.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/safeparcel/safeparcel-processor/build.gradle b/safeparcel/safeparcel-processor/build.gradle
new file mode 100644
index 0000000..a9b3651
--- /dev/null
+++ b/safeparcel/safeparcel-processor/build.gradle
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+
+import androidx.build.LibraryType
+
+plugins {
+    id("AndroidXPlugin")
+    id("java-library")
+}
+
+dependencies {
+    annotationProcessor(libs.nullaway)
+    // Add dependencies here
+}
+
+androidx {
+    name = "SafeParcel Compiler"
+    type = LibraryType.ANNOTATION_PROCESSOR
+    inceptionYear = "2023"
+    description = "Annotation processor for SafeParcelable"
+}
diff --git a/safeparcel/safeparcel-processor/src/main/java/androidx/safeparcel/processor/package-info.java b/safeparcel/safeparcel-processor/src/main/java/androidx/safeparcel/processor/package-info.java
new file mode 100644
index 0000000..586292f
--- /dev/null
+++ b/safeparcel/safeparcel-processor/src/main/java/androidx/safeparcel/processor/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2023 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.
+ */
+
+/**
+ * Annotation processor for SafeParcelable.
+ */
+package androidx.safeparcel.processor;
diff --git a/safeparcel/safeparcel/api/current.txt b/safeparcel/safeparcel/api/current.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/safeparcel/safeparcel/api/current.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/safeparcel/safeparcel/api/res-current.txt b/safeparcel/safeparcel/api/res-current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/safeparcel/safeparcel/api/res-current.txt
diff --git a/safeparcel/safeparcel/api/restricted_current.txt b/safeparcel/safeparcel/api/restricted_current.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/safeparcel/safeparcel/api/restricted_current.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/safeparcel/safeparcel/build.gradle b/safeparcel/safeparcel/build.gradle
new file mode 100644
index 0000000..f2da8e0
--- /dev/null
+++ b/safeparcel/safeparcel/build.gradle
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+
+import androidx.build.LibraryType
+
+plugins {
+    id("AndroidXPlugin")
+    id("com.android.library")
+}
+
+dependencies {
+    annotationProcessor(libs.nullaway)
+    // Add dependencies here
+}
+
+android {
+    namespace "androidx.safeparcel"
+}
+
+androidx {
+    name = "SafeParcel"
+    type = LibraryType.PUBLISHED_LIBRARY
+    inceptionYear = "2023"
+    description = "A special Parcelable interface that ensures backwards-compatibility"
+}
diff --git a/safeparcel/safeparcel/src/main/java/androidx/safeparcel/package-info.java b/safeparcel/safeparcel/src/main/java/androidx/safeparcel/package-info.java
new file mode 100644
index 0000000..338b38d
--- /dev/null
+++ b/safeparcel/safeparcel/src/main/java/androidx/safeparcel/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+
+/**
+ * SafeParcelable provides a way to add new fields to Parcelables in the future without breaking
+ * old implementations.
+ */
+package androidx.safeparcel;
diff --git a/settings.gradle b/settings.gradle
index ceba832..5050616 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -947,6 +947,8 @@
 includeProject(":room:room-rxjava2", [BuildType.MAIN])
 includeProject(":room:room-rxjava3", [BuildType.MAIN])
 includeProject(":room:room-testing", [BuildType.MAIN])
+includeProject(":safeparcel:safeparcel", [BuildType.MAIN])
+includeProject(":safeparcel:safeparcel-processor", [BuildType.MAIN])
 includeProject(":savedstate:savedstate", [BuildType.MAIN, BuildType.COMPOSE, BuildType.FLAN])
 includeProject(":savedstate:savedstate-ktx", [BuildType.MAIN, BuildType.COMPOSE, BuildType.FLAN])
 includeProject(":security:security-app-authenticator", [BuildType.MAIN])