From 75aa485604ec9f3c07a65aba66eaed44c6f04bad Mon Sep 17 00:00:00 2001 From: Kangping Dong Date: Tue, 24 Oct 2023 14:18:08 +0800 Subject: [PATCH] [Thread] flagging Android Thread APIs This commit declares the initial "thread_enabled" feature flag and use this to flag all existing and future Thread system APIs with @FlaggedApi Bug: 301473012 Test: build Change-Id: I43f64ce38f7fd0806733b21c4f393e4563e6a467 --- framework-t/api/system-current.txt | 4 +-- thread/flags/thread_base.aconfig | 8 +++++ .../net/thread/ThreadNetworkController.java | 4 ++- .../net/thread/ThreadNetworkFlags.java | 31 +++++++++++++++++++ .../net/thread/ThreadNetworkManager.java | 2 ++ 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 thread/flags/thread_base.aconfig create mode 100644 thread/framework/java/android/net/thread/ThreadNetworkFlags.java diff --git a/framework-t/api/system-current.txt b/framework-t/api/system-current.txt index f6b5657dd9..06d3238f1b 100644 --- a/framework-t/api/system-current.txt +++ b/framework-t/api/system-current.txt @@ -417,12 +417,12 @@ package android.net.nsd { package android.net.thread { - public class ThreadNetworkController { + @FlaggedApi("com.android.net.thread.flags.thread_enabled") public class ThreadNetworkController { method public int getThreadVersion(); field public static final int THREAD_VERSION_1_3 = 4; // 0x4 } - public class ThreadNetworkManager { + @FlaggedApi("com.android.net.thread.flags.thread_enabled") public class ThreadNetworkManager { method @NonNull public java.util.List getAllThreadNetworkControllers(); } diff --git a/thread/flags/thread_base.aconfig b/thread/flags/thread_base.aconfig new file mode 100644 index 0000000000..bf1f2881a5 --- /dev/null +++ b/thread/flags/thread_base.aconfig @@ -0,0 +1,8 @@ +package: "com.android.net.thread.flags" + +flag { + name: "thread_enabled" + namespace: "thread_network" + description: "Controls whether the Android Thread feature is enabled" + bug: "301473012" +} diff --git a/thread/framework/java/android/net/thread/ThreadNetworkController.java b/thread/framework/java/android/net/thread/ThreadNetworkController.java index fe189c2621..9db81327be 100644 --- a/thread/framework/java/android/net/thread/ThreadNetworkController.java +++ b/thread/framework/java/android/net/thread/ThreadNetworkController.java @@ -18,6 +18,7 @@ package android.net.thread; import static java.util.Objects.requireNonNull; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SystemApi; @@ -30,7 +31,8 @@ import java.lang.annotation.RetentionPolicy; * Provides the primary API for controlling all aspects of a Thread network. * * @hide - */ +*/ +@FlaggedApi(ThreadNetworkFlags.FLAG_THREAD_ENABLED) @SystemApi public class ThreadNetworkController { diff --git a/thread/framework/java/android/net/thread/ThreadNetworkFlags.java b/thread/framework/java/android/net/thread/ThreadNetworkFlags.java new file mode 100644 index 0000000000..e6ab9881b8 --- /dev/null +++ b/thread/framework/java/android/net/thread/ThreadNetworkFlags.java @@ -0,0 +1,31 @@ +/* + * 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. + */ + +package android.net.thread; + +/** + * Container for flag constants defined in the "thread_network" namespace. + * + * @hide + */ +// TODO: replace this class with auto-generated "com.android.net.thread.flags.Flags" once the +// flagging infra is fully supported for mainline modules. +public final class ThreadNetworkFlags { + /** @hide */ + public static final String FLAG_THREAD_ENABLED = "com.android.net.thread.flags.thread_enabled"; + + private ThreadNetworkFlags() {} +} diff --git a/thread/framework/java/android/net/thread/ThreadNetworkManager.java b/thread/framework/java/android/net/thread/ThreadNetworkManager.java index 2a253a17da..3e8288c69e 100644 --- a/thread/framework/java/android/net/thread/ThreadNetworkManager.java +++ b/thread/framework/java/android/net/thread/ThreadNetworkManager.java @@ -18,6 +18,7 @@ package android.net.thread; import static java.util.Objects.requireNonNull; +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.SystemApi; import android.annotation.SystemService; @@ -34,6 +35,7 @@ import java.util.List; * * @hide */ +@FlaggedApi(ThreadNetworkFlags.FLAG_THREAD_ENABLED) @SystemApi @SystemService(ThreadNetworkManager.SERVICE_NAME) public class ThreadNetworkManager {