android_packages_modules_Co.../framework-t/Android.bp
Junyu Lai d0e049455c Support NetworkStats#addEntries API
Currently, NetworkStats#addEntry creates a new instance
containing the requested result instead of mutating the
original object. This creates a heavy memory footprint
when the caller invokes it in a loop because a new NetworkStats
instance is created whenever an addEntry is called.

This change introduces a new API that allows callers to
add a set of entries to a NetworkStats instance. This new
API will clone the instance only once, return the newly
created (and modified) instance, and ensure that the original
instance remains immutable.

Additionally, the change adopts config libraries for flagging
the API and corresponding CTS tests, since Android U-based
branches are no longer downstream of current development branches.

Test: atest FrameworksNetTests:android.net.connectivity.android.net.netstats.NetworkStatsApiTest
Test: atest CtsNetTestCases:NetworkStatsApiTest
Bug: 335680025
Fix: 357772271
API-Coverage-Bug: 357772271
Change-Id: I58513844e681c0621a6107ec4b198cd3957f289d
2024-08-09 14:19:38 +08:00

217 lines
8.1 KiB
Text

//
// Copyright (C) 2021 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 {
default_team: "trendy_team_fwk_core_networking",
// See: http://go/android-license-faq
default_applicable_licenses: ["Android-Apache-2.0"],
}
framework_remoteauth_srcs = [":framework-remoteauth-java-sources"]
framework_remoteauth_api_srcs = []
java_defaults {
name: "enable-remoteauth-targets",
enabled: true,
}
// Include build rules from Sources.bp
build = ["Sources.bp"]
java_defaults {
name: "enable-framework-connectivity-t-targets",
enabled: true,
}
// The above defaults can be used to disable framework-connectivity t
// targets while minimizing merge conflicts in the build rules.
// SDK library for connectivity bootclasspath classes that were part of the non-updatable API before
// T, and were moved to the module in T. Other bootclasspath classes in connectivity should go to
// framework-connectivity.
java_defaults {
name: "framework-connectivity-t-defaults",
sdk_version: "module_current",
min_sdk_version: "Tiramisu",
defaults: [
"framework-module-defaults",
],
srcs: [
":framework-connectivity-tiramisu-updatable-sources",
":framework-nearby-java-sources",
":framework-thread-sources",
],
libs: [
"unsupportedappusage",
"app-compat-annotations",
"androidx.annotation_annotation",
],
static_libs: [
// Cannot go to framework-connectivity because mid_sdk checks require 31.
"modules-utils-binary-xml",
],
impl_only_libs: [
// The build system will use framework-bluetooth module_current stubs, because
// of sdk_version: "module_current" above.
"framework-bluetooth",
"framework-wifi",
// Compile against the entire implementation of framework-connectivity,
// including hidden methods. This is safe because if framework-connectivity-t is
// on the bootclasspath (i.e., T), then framework-connectivity is also on the
// bootclasspath (because it shipped in S).
//
// This compiles against the pre-jarjar target so that this code can use
// non-jarjard names of widely-used packages such as com.android.net.module.util.
"framework-connectivity-pre-jarjar",
],
aidl: {
generate_get_transaction_name: true,
include_dirs: [
// For connectivity-framework classes such as Network.aidl,
// and connectivity-framework-t classes such as
// NetworkStateSnapshot.aidl
"packages/modules/Connectivity/framework/aidl-export",
],
},
apex_available: [
"com.android.tethering",
],
}
filegroup {
name: "connectivity-t-hiddenapi-files",
srcs: ["hiddenapi/*.txt"],
visibility: ["//packages/modules/Connectivity:__subpackages__"],
}
// The filegroup lists files that are necessary for verifying building mdns as a standalone,
// for use with service-connectivity-mdns-standalone-build-test
// This filegroup should never be included in anywhere in the module build. It is only used for
// building service-connectivity-mdns-standalone-build-test target. The files will be renamed by
// copybara to prevent them from being shadowed by the bootclasspath copies.
filegroup {
name: "framework-connectivity-t-mdns-standalone-build-sources",
srcs: [
"src/android/net/nsd/OffloadEngine.java",
"src/android/net/nsd/OffloadServiceInfo.java",
],
visibility: ["//packages/modules/Connectivity:__subpackages__"],
}
java_library {
name: "framework-connectivity-t-pre-jarjar",
defaults: ["framework-connectivity-t-defaults"],
libs: [
"framework-bluetooth",
"framework-wifi",
"framework-connectivity-pre-jarjar",
"framework-location.stubs.module_lib",
],
visibility: ["//packages/modules/Connectivity:__subpackages__"],
}
// SDK library for connectivity bootclasspath classes that were part of the non-updatable API before
// T, and were moved to the module in T. Other bootclasspath classes in connectivity should go to
// framework-connectivity.
java_sdk_library {
name: "framework-connectivity-t",
defaults: [
"framework-connectivity-t-defaults",
"enable-framework-connectivity-t-targets",
],
// Do not add static_libs to this library: put them in framework-connectivity instead.
// The jarjar rules are only so that references to jarjared utils in
// framework-connectivity-pre-jarjar match at runtime.
jarjar_rules: ":framework-connectivity-jarjar-rules",
stub_only_libs: [
// static_libs is not used to compile stubs. So libs which have
// been included in static_libs might still need to
// be in stub_only_libs to be usable when generating the API stubs.
"com.android.net.flags-aconfig-java",
// Use prebuilt framework-connectivity stubs to avoid circular dependencies
"sdk_module-lib_current_framework-connectivity",
],
libs: [
"framework-location.stubs.module_lib",
"sdk_module-lib_current_framework-connectivity",
],
permitted_packages: [
"android.app.usage",
"android.net",
"android.net.nsd",
"android.nearby",
"com.android.connectivity",
"com.android.nearby",
],
hidden_api: {
max_target_o_low_priority: [
"hiddenapi/hiddenapi-max-target-o-low-priority-tiramisu.txt",
],
max_target_r_low_priority: [
"hiddenapi/hiddenapi-max-target-r-loprio.txt",
],
unsupported: [
"hiddenapi/hiddenapi-unsupported-tiramisu.txt",
],
},
impl_library_visibility: [
"//packages/modules/Connectivity/Tethering/apex",
// In preparation for future move
"//packages/modules/Connectivity/apex",
"//packages/modules/Connectivity/service", // For R8 only
"//packages/modules/Connectivity/service-t",
"//packages/modules/Connectivity/nearby:__subpackages__",
"//packages/modules/Connectivity/remoteauth:__subpackages__",
"//frameworks/base",
// Tests using hidden APIs
"//cts/tests/netlegacy22.api",
"//cts/tests/tests/app.usage", // NetworkUsageStatsTest
"//external/sl4a:__subpackages__",
"//frameworks/base/core/tests/bandwidthtests",
"//frameworks/base/core/tests/benchmarks",
"//frameworks/base/core/tests/utillib",
"//frameworks/base/services/tests/VpnTests",
"//frameworks/base/tests/vcn",
"//frameworks/opt/net/ethernet/tests:__subpackages__",
"//frameworks/opt/telephony/tests/telephonytests",
"//packages/modules/CaptivePortalLogin/tests",
"//packages/modules/Connectivity/staticlibs/testutils",
"//packages/modules/Connectivity/staticlibs/tests:__subpackages__",
"//packages/modules/Connectivity/Tethering/tests:__subpackages__",
"//packages/modules/Connectivity/tests:__subpackages__",
"//packages/modules/Connectivity/thread/tests:__subpackages__",
"//packages/modules/IPsec/tests/iketests",
"//packages/modules/NetworkStack/tests:__subpackages__",
"//packages/modules/Wifi/service/tests/wifitests",
],
aconfig_declarations: [
"com.android.net.flags-aconfig",
"com.android.net.thread.flags-aconfig",
"nearby_flags",
],
lint: {
baseline_filename: "lint-baseline.xml",
},
}
// This rule is not used anymore(b/268440216).
platform_compat_config {
name: "connectivity-t-platform-compat-config",
src: ":framework-connectivity-t",
}