Merge changes from topic "presubmit-am-81e167068ffc405c90f33ce75ae74645" into tm-dev
* changes:
[automerged blank] Import translations. DO NOT MERGE ANYWHERE 2p: 4e0aa1e620
Import translations. DO NOT MERGE ANYWHERE
diff --git a/apishim/29/com/android/networkstack/apishim/api29/VpnManagerShimImpl.java b/apishim/29/com/android/networkstack/apishim/api29/VpnManagerShimImpl.java
new file mode 100644
index 0000000..fc7d052
--- /dev/null
+++ b/apishim/29/com/android/networkstack/apishim/api29/VpnManagerShimImpl.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2022 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 com.android.networkstack.apishim.api29;
+
+import android.content.Context;
+import android.os.Build;
+
+import androidx.annotation.RequiresApi;
+
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
+import com.android.networkstack.apishim.common.VpnManagerShim;
+
+/**
+ * Implementation of {@link VpnManagerShim} for API 29.
+ */
+@RequiresApi(Build.VERSION_CODES.Q)
+public class VpnManagerShimImpl implements VpnManagerShim {
+ protected VpnManagerShimImpl(Context context) {}
+
+ /**
+ * Get a new instance of {@link VpnManagerShim}.
+ */
+ public static VpnManagerShim newInstance(Context context) throws UnsupportedApiLevelException {
+ return new VpnManagerShimImpl(context);
+ }
+
+ /**
+ * See android.net.VpnManager#startProvisionedVpnProfileSession
+ */
+ @Override
+ public String startProvisionedVpnProfileSession() throws UnsupportedApiLevelException {
+ // Not supported for API 29.
+ throw new UnsupportedApiLevelException("Not supported in API 29.");
+ }
+}
diff --git a/apishim/30/com/android/networkstack/apishim/api30/VpnManagerShimImpl.java b/apishim/30/com/android/networkstack/apishim/api30/VpnManagerShimImpl.java
new file mode 100644
index 0000000..f52b5a8
--- /dev/null
+++ b/apishim/30/com/android/networkstack/apishim/api30/VpnManagerShimImpl.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2022 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 com.android.networkstack.apishim.api30;
+
+import static com.android.modules.utils.build.SdkLevel.isAtLeastR;
+
+import android.content.Context;
+import android.net.VpnManager;
+import android.os.Build;
+
+import androidx.annotation.RequiresApi;
+
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
+import com.android.networkstack.apishim.common.VpnManagerShim;
+
+/**
+ * Implementation of {@link VpnManagerShim} for API 30.
+ */
+@RequiresApi(Build.VERSION_CODES.R)
+public class VpnManagerShimImpl extends com.android.networkstack.apishim.api29.VpnManagerShimImpl {
+ protected final VpnManager mVm;
+ protected VpnManagerShimImpl(Context context) {
+ super(context);
+ mVm = context.getSystemService(VpnManager.class);
+ }
+
+ /**
+ * Get a new instance of {@link VpnManagerShimImpl}.
+ */
+ @RequiresApi(Build.VERSION_CODES.Q)
+ public static VpnManagerShim newInstance(Context context) throws UnsupportedApiLevelException {
+ if (!isAtLeastR()) {
+ return com.android.networkstack.apishim.api29.VpnManagerShimImpl.newInstance(context);
+ }
+ return new VpnManagerShimImpl(context);
+ }
+
+ /**
+ * See android.net.VpnManager#startProvisionedVpnProfileSession
+ */
+ @Override
+ public String startProvisionedVpnProfileSession() throws UnsupportedApiLevelException {
+ // Not supported for API 30.
+ throw new UnsupportedApiLevelException("Not supported in API 30.");
+ }
+}
diff --git a/apishim/31/com/android/networkstack/apishim/api31/VpnManagerShimImpl.java b/apishim/31/com/android/networkstack/apishim/api31/VpnManagerShimImpl.java
new file mode 100644
index 0000000..91aedd7
--- /dev/null
+++ b/apishim/31/com/android/networkstack/apishim/api31/VpnManagerShimImpl.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2022 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 com.android.networkstack.apishim.api31;
+
+import static com.android.modules.utils.build.SdkLevel.isAtLeastS;
+
+import android.content.Context;
+import android.os.Build;
+
+import androidx.annotation.RequiresApi;
+
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
+import com.android.networkstack.apishim.common.VpnManagerShim;
+
+/**
+ * Implementation of {@link VpnManagerShim} for API 31.
+ */
+@RequiresApi(Build.VERSION_CODES.S)
+public class VpnManagerShimImpl extends com.android.networkstack.apishim.api30.VpnManagerShimImpl {
+ protected VpnManagerShimImpl(Context context) {
+ super(context);
+ }
+
+ /**
+ * Get a new instance of {@link com.android.networkstack.apishim.api30.VpnManagerShimImpl}.
+ */
+ @RequiresApi(Build.VERSION_CODES.Q)
+ public static VpnManagerShim newInstance(Context context) throws UnsupportedApiLevelException {
+ if (!isAtLeastS()) {
+ return com.android.networkstack.apishim.api30.VpnManagerShimImpl.newInstance(context);
+ }
+ return new VpnManagerShimImpl(context);
+ }
+
+ /**
+ * See android.net.VpnManager#startProvisionedVpnProfileSession
+ */
+ @Override
+ public String startProvisionedVpnProfileSession() throws UnsupportedApiLevelException {
+ // Not supported for API 31.
+ throw new UnsupportedApiLevelException("Not supported in API 31.");
+ }
+}
diff --git a/apishim/33/com/android/networkstack/apishim/VpnManagerShimImpl.java b/apishim/33/com/android/networkstack/apishim/VpnManagerShimImpl.java
new file mode 100644
index 0000000..c1a879e
--- /dev/null
+++ b/apishim/33/com/android/networkstack/apishim/VpnManagerShimImpl.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2022 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 com.android.networkstack.apishim;
+
+import static com.android.modules.utils.build.SdkLevel.isAtLeastT;
+
+import android.content.Context;
+import android.os.Build;
+
+import androidx.annotation.RequiresApi;
+
+import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
+import com.android.networkstack.apishim.common.VpnManagerShim;
+
+/**
+ * Compatibility implementation of {@link VpnManagerShim}.
+ */
+@RequiresApi(Build.VERSION_CODES.TIRAMISU)
+public class VpnManagerShimImpl extends com.android.networkstack.apishim.api31.VpnManagerShimImpl {
+
+ protected VpnManagerShimImpl(Context context) {
+ super(context);
+ }
+
+ /**
+ * Get a new instance of {@link VpnManagerShimImpl}.
+ */
+ @RequiresApi(Build.VERSION_CODES.Q)
+ public static VpnManagerShim newInstance(Context context) throws UnsupportedApiLevelException {
+ if (!isAtLeastT()) {
+ return com.android.networkstack.apishim.api31.VpnManagerShimImpl.newInstance(context);
+ }
+ return new VpnManagerShimImpl(context);
+ }
+
+ /**
+ * See android.net.VpnManager#startProvisionedVpnProfileSession
+ */
+ @Override
+ public String startProvisionedVpnProfileSession() {
+ return mVm.startProvisionedVpnProfileSession();
+ }
+}
diff --git a/apishim/common/com/android/networkstack/apishim/common/VpnManagerShim.java b/apishim/common/com/android/networkstack/apishim/common/VpnManagerShim.java
new file mode 100644
index 0000000..7ef0270
--- /dev/null
+++ b/apishim/common/com/android/networkstack/apishim/common/VpnManagerShim.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2022 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 com.android.networkstack.apishim.common;
+
+/**
+ * Interface used to access API methods in {@link android.net.VpnManager}, with
+ * appropriate fallbacks if the methods are not yet part of the released API.
+ */
+public interface VpnManagerShim {
+ /** See android.net.VpnManager#startProvisionedVpnProfileSession */
+ String startProvisionedVpnProfileSession() throws UnsupportedApiLevelException;
+}