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
217 lines
8.1 KiB
Text
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",
|
|
}
|