Merge "Added check for user info is not null"
diff --git a/Android.bp b/Android.bp
index aad023d..928386c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -365,6 +365,15 @@
name: "framework-minus-apex-intdefs",
defaults: ["framework-minus-apex-defaults"],
plugins: ["intdef-annotation-processor"],
+
+ // Errorprone and android lint will already run on framework-minus-apex, don't rerun them on
+ // the intdefs version in order to speed up the build.
+ errorprone: {
+ enabled: false,
+ },
+ lint: {
+ enabled: false,
+ },
}
// This "framework" module is NOT installed to the device. It's
diff --git a/apct-tests/perftests/OWNERS b/apct-tests/perftests/OWNERS
index 7e7feaf..4c57e64 100644
--- a/apct-tests/perftests/OWNERS
+++ b/apct-tests/perftests/OWNERS
@@ -4,6 +4,7 @@
dualli@google.com
edgararriaga@google.com
jpakaravoor@google.com
+jreck@google.com #{LAST_RESORT_SUGGESTION}
kevinjeon@google.com
philipcuadra@google.com
shombert@google.com
diff --git a/apct-tests/perftests/blobstore/src/com/android/perftests/blob/BlobStorePerfTests.java b/apct-tests/perftests/blobstore/src/com/android/perftests/blob/BlobStorePerfTests.java
index 3781b6d..03e5468 100644
--- a/apct-tests/perftests/blobstore/src/com/android/perftests/blob/BlobStorePerfTests.java
+++ b/apct-tests/perftests/blobstore/src/com/android/perftests/blob/BlobStorePerfTests.java
@@ -257,7 +257,7 @@
runShellCommand(String.format(
"cmd blob_store delete-blob --algo %s --digest %s --label %s --expiry %d --tag %s",
blobHandle.algorithm,
- Base64.getEncoder().encode(blobHandle.digest),
+ Base64.getEncoder().encodeToString(blobHandle.digest),
blobHandle.label,
blobHandle.expiryTimeMillis,
blobHandle.tag));
diff --git a/apct-tests/perftests/core/OWNERS b/apct-tests/perftests/core/OWNERS
index 2b3564e..8fb057d 100644
--- a/apct-tests/perftests/core/OWNERS
+++ b/apct-tests/perftests/core/OWNERS
@@ -1,3 +1,4 @@
+include /graphics/java/android/graphics/OWNERS
include /graphics/java/android/graphics/fonts/OWNERS
# Bug component: 568761
diff --git a/cmds/abx/Android.bp b/cmds/abx/Android.bp
index 50a0b75..a832dea 100644
--- a/cmds/abx/Android.bp
+++ b/cmds/abx/Android.bp
@@ -1,4 +1,3 @@
-
package {
default_applicable_licenses: ["frameworks_base_cmds_abx_license"],
}
@@ -18,7 +17,7 @@
java_binary {
name: "abx",
- wrapper: "abx",
+ wrapper: "abx.sh",
srcs: ["**/*.java"],
required: [
"abx2xml",
@@ -28,10 +27,10 @@
sh_binary {
name: "abx2xml",
- src: "abx2xml",
+ src: "abx2xml.sh",
}
sh_binary {
name: "xml2abx",
- src: "xml2abx",
+ src: "xml2abx.sh",
}
diff --git a/cmds/abx/abx b/cmds/abx/abx.sh
similarity index 100%
rename from cmds/abx/abx
rename to cmds/abx/abx.sh
diff --git a/cmds/abx/abx2xml b/cmds/abx/abx2xml
deleted file mode 100755
index 0a9362d..0000000
--- a/cmds/abx/abx2xml
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/system/bin/sh
-export CLASSPATH=/system/framework/abx.jar
-exec app_process /system/bin com.android.commands.abx.Abx "$0" "$@"
diff --git a/cmds/abx/abx b/cmds/abx/abx2xml.sh
similarity index 100%
copy from cmds/abx/abx
copy to cmds/abx/abx2xml.sh
diff --git a/cmds/abx/xml2abx b/cmds/abx/xml2abx
deleted file mode 100755
index 0a9362d..0000000
--- a/cmds/abx/xml2abx
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/system/bin/sh
-export CLASSPATH=/system/framework/abx.jar
-exec app_process /system/bin com.android.commands.abx.Abx "$0" "$@"
diff --git a/cmds/abx/abx b/cmds/abx/xml2abx.sh
similarity index 100%
copy from cmds/abx/abx
copy to cmds/abx/xml2abx.sh
diff --git a/cmds/app_process/app_main.cpp b/cmds/app_process/app_main.cpp
index 12083b6..28db61f 100644
--- a/cmds/app_process/app_main.cpp
+++ b/cmds/app_process/app_main.cpp
@@ -334,7 +334,7 @@
if (zygote) {
runtime.start("com.android.internal.os.ZygoteInit", args, zygote);
- } else if (className) {
+ } else if (!className.isEmpty()) {
runtime.start("com.android.internal.os.RuntimeInit", args, zygote);
} else {
fprintf(stderr, "Error: no class name or --zygote supplied.\n");
diff --git a/cmds/bmgr/Android.bp b/cmds/bmgr/Android.bp
index 14beb55..a85669a 100644
--- a/cmds/bmgr/Android.bp
+++ b/cmds/bmgr/Android.bp
@@ -20,6 +20,6 @@
java_binary {
name: "bmgr",
- wrapper: "bmgr",
+ wrapper: "bmgr.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/bmgr/bmgr b/cmds/bmgr/bmgr.sh
similarity index 100%
rename from cmds/bmgr/bmgr
rename to cmds/bmgr/bmgr.sh
diff --git a/cmds/bu/Android.bp b/cmds/bu/Android.bp
index 5b4ec31..b61a7a6 100644
--- a/cmds/bu/Android.bp
+++ b/cmds/bu/Android.bp
@@ -20,6 +20,6 @@
java_binary {
name: "bu",
- wrapper: "bu",
+ wrapper: "bu.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/bu/bu b/cmds/bu/bu.sh
similarity index 100%
rename from cmds/bu/bu
rename to cmds/bu/bu.sh
diff --git a/cmds/content/Android.bp b/cmds/content/Android.bp
index c70d01e..0dd0f03 100644
--- a/cmds/content/Android.bp
+++ b/cmds/content/Android.bp
@@ -19,6 +19,6 @@
java_binary {
name: "content",
- wrapper: "content",
+ wrapper: "content.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/content/content b/cmds/content/content.sh
similarity index 100%
rename from cmds/content/content
rename to cmds/content/content.sh
diff --git a/cmds/device_config/Android.bp b/cmds/device_config/Android.bp
index 69572d8..83b2730 100644
--- a/cmds/device_config/Android.bp
+++ b/cmds/device_config/Android.bp
@@ -14,5 +14,5 @@
sh_binary {
name: "device_config",
- src: "device_config",
+ src: "device_config.sh",
}
diff --git a/cmds/device_config/device_config b/cmds/device_config/device_config.sh
similarity index 100%
rename from cmds/device_config/device_config
rename to cmds/device_config/device_config.sh
diff --git a/cmds/dpm/Android.bp b/cmds/dpm/Android.bp
index 6819d09..29bee49 100644
--- a/cmds/dpm/Android.bp
+++ b/cmds/dpm/Android.bp
@@ -20,5 +20,5 @@
sh_binary {
name: "dpm",
- src: "dpm",
+ src: "dpm.sh",
}
diff --git a/cmds/dpm/dpm b/cmds/dpm/dpm.sh
similarity index 100%
rename from cmds/dpm/dpm
rename to cmds/dpm/dpm.sh
diff --git a/cmds/hid/Android.bp b/cmds/hid/Android.bp
index 295c71c..a6e2769 100644
--- a/cmds/hid/Android.bp
+++ b/cmds/hid/Android.bp
@@ -20,7 +20,7 @@
java_binary {
name: "hid",
- wrapper: "hid",
+ wrapper: "hid.sh",
srcs: ["**/*.java"],
required: ["libhidcommand_jni"],
}
diff --git a/cmds/hid/hid b/cmds/hid/hid.sh
similarity index 100%
rename from cmds/hid/hid
rename to cmds/hid/hid.sh
diff --git a/cmds/idmap2/include/idmap2/SysTrace.h b/cmds/idmap2/include/idmap2/SysTrace.h
index 19b4353..fcadf96 100644
--- a/cmds/idmap2/include/idmap2/SysTrace.h
+++ b/cmds/idmap2/include/idmap2/SysTrace.h
@@ -17,8 +17,6 @@
#ifndef IDMAP2_INCLUDE_IDMAP2_SYSTRACE_H_
#define IDMAP2_INCLUDE_IDMAP2_SYSTRACE_H_
-#define ATRACE_TAG ATRACE_TAG_RRO
-
#include <sstream>
#include <vector>
@@ -29,16 +27,12 @@
class ScopedTraceNoStart {
public:
- ~ScopedTraceNoStart() {
- ATRACE_END();
- }
+ ~ScopedTraceNoStart();
};
class ScopedTraceMessageHelper {
public:
- ~ScopedTraceMessageHelper() {
- ATRACE_BEGIN(buffer_.str().c_str());
- }
+ ~ScopedTraceMessageHelper();
std::ostream& stream() {
return buffer_;
@@ -48,9 +42,12 @@
std::ostringstream buffer_;
};
+bool atrace_enabled();
+
#define SYSTRACE \
android::idmap2::utils::ScopedTraceNoStart _trace##__LINE__; \
- (ATRACE_ENABLED()) && android::idmap2::utils::ScopedTraceMessageHelper().stream()
+ android::idmap2::utils::atrace_enabled() \
+ && android::idmap2::utils::ScopedTraceMessageHelper().stream()
#else
diff --git a/cmds/idmap2/libidmap2/CommandLineOptions.cpp b/cmds/idmap2/libidmap2/CommandLineOptions.cpp
index 5b0ae92..8129d99 100644
--- a/cmds/idmap2/libidmap2/CommandLineOptions.cpp
+++ b/cmds/idmap2/libidmap2/CommandLineOptions.cpp
@@ -17,6 +17,7 @@
#include "idmap2/CommandLineOptions.h"
#include <algorithm>
+#include <cassert>
#include <iomanip>
#include <iostream>
#include <memory>
diff --git a/cmds/idmap2/libidmap2/Idmap.cpp b/cmds/idmap2/libidmap2/Idmap.cpp
index 6515d55..06650f6 100644
--- a/cmds/idmap2/libidmap2/Idmap.cpp
+++ b/cmds/idmap2/libidmap2/Idmap.cpp
@@ -17,6 +17,7 @@
#include "idmap2/Idmap.h"
#include <algorithm>
+#include <cassert>
#include <iostream>
#include <iterator>
#include <limits>
diff --git a/cmds/idmap2/libidmap2/SysTrace.cpp b/cmds/idmap2/libidmap2/SysTrace.cpp
new file mode 100644
index 0000000..55d45b7
--- /dev/null
+++ b/cmds/idmap2/libidmap2/SysTrace.cpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+#define ATRACE_TAG ATRACE_TAG_RRO
+
+#include "idmap2/SysTrace.h"
+
+#ifdef __ANDROID__
+namespace android::idmap2::utils {
+
+ScopedTraceNoStart::~ScopedTraceNoStart() {
+ ATRACE_END();
+};
+
+ScopedTraceMessageHelper::~ScopedTraceMessageHelper() {
+ ATRACE_BEGIN(buffer_.str().c_str());
+}
+
+bool atrace_enabled() {
+ return ATRACE_ENABLED();
+}
+} // namespace android::idmap2::utils
+#endif
diff --git a/cmds/ime/Android.bp b/cmds/ime/Android.bp
index 6dd3ba1..5f54ffa 100644
--- a/cmds/ime/Android.bp
+++ b/cmds/ime/Android.bp
@@ -20,5 +20,5 @@
sh_binary {
name: "ime",
- src: "ime",
+ src: "ime.sh",
}
diff --git a/cmds/ime/ime b/cmds/ime/ime.sh
similarity index 100%
rename from cmds/ime/ime
rename to cmds/ime/ime.sh
diff --git a/cmds/input/Android.bp b/cmds/input/Android.bp
index 2e30176..8f44f3e 100644
--- a/cmds/input/Android.bp
+++ b/cmds/input/Android.bp
@@ -20,5 +20,5 @@
sh_binary {
name: "input",
- src: "input",
+ src: "input.sh",
}
diff --git a/cmds/input/input b/cmds/input/input.sh
similarity index 100%
rename from cmds/input/input
rename to cmds/input/input.sh
diff --git a/cmds/locksettings/Android.bp b/cmds/locksettings/Android.bp
index 3869c8f..5ee5824 100644
--- a/cmds/locksettings/Android.bp
+++ b/cmds/locksettings/Android.bp
@@ -23,6 +23,6 @@
java_binary {
name: "locksettings",
- wrapper: "locksettings",
+ wrapper: "locksettings.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/locksettings/locksettings b/cmds/locksettings/locksettings.sh
similarity index 100%
rename from cmds/locksettings/locksettings
rename to cmds/locksettings/locksettings.sh
diff --git a/cmds/pm/Android.bp b/cmds/pm/Android.bp
index 847dbab..0e61a9e 100644
--- a/cmds/pm/Android.bp
+++ b/cmds/pm/Android.bp
@@ -20,5 +20,5 @@
sh_binary {
name: "pm",
- src: "pm",
+ src: "pm.sh",
}
diff --git a/cmds/pm/pm b/cmds/pm/pm.sh
similarity index 100%
rename from cmds/pm/pm
rename to cmds/pm/pm.sh
diff --git a/cmds/requestsync/Android.bp b/cmds/requestsync/Android.bp
index 57e8dd3..8718f79 100644
--- a/cmds/requestsync/Android.bp
+++ b/cmds/requestsync/Android.bp
@@ -20,6 +20,6 @@
java_binary {
name: "requestsync",
- wrapper: "requestsync",
+ wrapper: "requestsync.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/requestsync/requestsync b/cmds/requestsync/requestsync.sh
similarity index 100%
rename from cmds/requestsync/requestsync
rename to cmds/requestsync/requestsync.sh
diff --git a/cmds/screencap/OWNERS b/cmds/screencap/OWNERS
new file mode 100644
index 0000000..89f1177
--- /dev/null
+++ b/cmds/screencap/OWNERS
@@ -0,0 +1,2 @@
+include /graphics/java/android/graphics/OWNERS
+include /services/core/java/com/android/server/wm/OWNERS
diff --git a/cmds/settings/Android.bp b/cmds/settings/Android.bp
index cc73006..8180fd6 100644
--- a/cmds/settings/Android.bp
+++ b/cmds/settings/Android.bp
@@ -14,5 +14,5 @@
sh_binary {
name: "settings",
- src: "settings",
+ src: "settings.sh",
}
diff --git a/cmds/settings/settings b/cmds/settings/settings.sh
similarity index 100%
rename from cmds/settings/settings
rename to cmds/settings/settings.sh
diff --git a/cmds/sm/Android.bp b/cmds/sm/Android.bp
index ecfacae..403022a 100644
--- a/cmds/sm/Android.bp
+++ b/cmds/sm/Android.bp
@@ -20,6 +20,6 @@
java_binary {
name: "sm",
- wrapper: "sm",
+ wrapper: "sm.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/sm/sm b/cmds/sm/sm.sh
similarity index 100%
rename from cmds/sm/sm
rename to cmds/sm/sm.sh
diff --git a/cmds/svc/Android.bp b/cmds/svc/Android.bp
index 41a3ebd..a246087 100644
--- a/cmds/svc/Android.bp
+++ b/cmds/svc/Android.bp
@@ -20,6 +20,6 @@
java_binary {
name: "svc",
- wrapper: "svc",
+ wrapper: "svc.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/svc/svc b/cmds/svc/svc.sh
similarity index 100%
rename from cmds/svc/svc
rename to cmds/svc/svc.sh
diff --git a/cmds/telecom/Android.bp b/cmds/telecom/Android.bp
index 4da79c5..be02710 100644
--- a/cmds/telecom/Android.bp
+++ b/cmds/telecom/Android.bp
@@ -20,6 +20,6 @@
java_binary {
name: "telecom",
- wrapper: "telecom",
+ wrapper: "telecom.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/telecom/telecom b/cmds/telecom/telecom.sh
similarity index 100%
rename from cmds/telecom/telecom
rename to cmds/telecom/telecom.sh
diff --git a/cmds/uiautomator/cmds/uiautomator/Android.bp b/cmds/uiautomator/cmds/uiautomator/Android.bp
index 56e2e70..5132386 100644
--- a/cmds/uiautomator/cmds/uiautomator/Android.bp
+++ b/cmds/uiautomator/cmds/uiautomator/Android.bp
@@ -25,7 +25,7 @@
java_binary {
name: "uiautomator",
- wrapper: "uiautomator",
+ wrapper: "uiautomator.sh",
srcs: ["src/**/*.java"],
static_libs: ["uiautomator.core"],
}
diff --git a/cmds/uiautomator/cmds/uiautomator/uiautomator b/cmds/uiautomator/cmds/uiautomator/uiautomator.sh
similarity index 100%
rename from cmds/uiautomator/cmds/uiautomator/uiautomator
rename to cmds/uiautomator/cmds/uiautomator/uiautomator.sh
diff --git a/cmds/uinput/Android.bp b/cmds/uinput/Android.bp
index 260cfc7..4b08d96 100644
--- a/cmds/uinput/Android.bp
+++ b/cmds/uinput/Android.bp
@@ -20,9 +20,10 @@
java_binary {
name: "uinput",
- wrapper: "uinput",
- srcs: ["**/*.java",
- ":uinputcommand_aidl"
+ wrapper: "uinput.sh",
+ srcs: [
+ "**/*.java",
+ ":uinputcommand_aidl",
],
required: ["libuinputcommand_jni"],
}
diff --git a/cmds/uinput/uinput b/cmds/uinput/uinput.sh
similarity index 100%
rename from cmds/uinput/uinput
rename to cmds/uinput/uinput.sh
diff --git a/cmds/vr/Android.bp b/cmds/vr/Android.bp
index 8936491..61795b4c 100644
--- a/cmds/vr/Android.bp
+++ b/cmds/vr/Android.bp
@@ -20,6 +20,6 @@
java_binary {
name: "vr",
- wrapper: "vr",
+ wrapper: "vr.sh",
srcs: ["**/*.java"],
}
diff --git a/cmds/vr/vr b/cmds/vr/vr.sh
similarity index 100%
rename from cmds/vr/vr
rename to cmds/vr/vr.sh
diff --git a/cmds/wm/Android.bp b/cmds/wm/Android.bp
index cf6b019..4d00f17 100644
--- a/cmds/wm/Android.bp
+++ b/cmds/wm/Android.bp
@@ -20,5 +20,5 @@
sh_binary {
name: "wm",
- src: "wm",
+ src: "wm.sh",
}
diff --git a/cmds/wm/wm b/cmds/wm/wm.sh
similarity index 100%
rename from cmds/wm/wm
rename to cmds/wm/wm.sh
diff --git a/core/api/current.txt b/core/api/current.txt
index 584c67f..644a194 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -32083,6 +32083,7 @@
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectCustomSlowCalls();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskReads();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
+ method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectExplicitGc();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
@@ -32097,6 +32098,7 @@
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitCustomSlowCalls();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskReads();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
+ method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitExplicitGc();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
@@ -32650,6 +32652,9 @@
public final class DiskWriteViolation extends android.os.strictmode.Violation {
}
+ public final class ExplicitGcViolation extends android.os.strictmode.Violation {
+ }
+
public final class FileUriExposedViolation extends android.os.strictmode.Violation {
}
@@ -42192,6 +42197,7 @@
field public static final int IRAT_HANDOVER_FAILED = 2194; // 0x892
field public static final int IS707B_MAX_ACCESS_PROBES = 2089; // 0x829
field public static final int IWLAN_AUTHORIZATION_REJECTED = 9003; // 0x232b
+ field public static final int IWLAN_CONGESTION = 15500; // 0x3c8c
field public static final int IWLAN_DNS_RESOLUTION_NAME_FAILURE = 16388; // 0x4004
field public static final int IWLAN_DNS_RESOLUTION_TIMEOUT = 16389; // 0x4005
field public static final int IWLAN_IKEV2_AUTH_FAILURE = 16385; // 0x4001
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 9253228..03818a5 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1815,10 +1815,6 @@
method public static void setViolationLogger(android.os.StrictMode.ViolationLogger);
}
- public static final class StrictMode.ThreadPolicy.Builder {
- method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectExplicitGc();
- }
-
public static final class StrictMode.ViolationInfo implements android.os.Parcelable {
ctor public StrictMode.ViolationInfo(android.os.Parcel);
ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean);
@@ -2055,13 +2051,6 @@
}
-package android.os.strictmode {
-
- public final class ExplicitGcViolation extends android.os.strictmode.Violation {
- }
-
-}
-
package android.os.vibrator {
public final class PrebakedSegment extends android.os.vibrator.VibrationEffectSegment {
diff --git a/core/java/android/app/TEST_MAPPING b/core/java/android/app/TEST_MAPPING
index 32207af..a2e4239 100644
--- a/core/java/android/app/TEST_MAPPING
+++ b/core/java/android/app/TEST_MAPPING
@@ -121,6 +121,9 @@
"include-annotation": "android.platform.test.annotations.Presubmit"
},
{
+ "exclude-annotation": "android.platform.test.annotations.LargeTest"
+ },
+ {
"exclude-annotation": "androidx.test.filters.FlakyTest"
},
{
diff --git a/core/java/android/app/VoiceInteractor.java b/core/java/android/app/VoiceInteractor.java
index 7014d69..a5a50d6 100644
--- a/core/java/android/app/VoiceInteractor.java
+++ b/core/java/android/app/VoiceInteractor.java
@@ -43,6 +43,7 @@
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Objects;
import java.util.concurrent.Executor;
@@ -1103,7 +1104,10 @@
}
try {
boolean[] res = mInteractor.supportsCommands(mContext.getOpPackageName(), commands);
- if (DEBUG) Log.d(TAG, "supportsCommands: cmds=" + commands + " res=" + res);
+ if (DEBUG) {
+ Log.d(TAG, "supportsCommands: cmds=" + Arrays.toString(commands) + " res="
+ + Arrays.toString(res));
+ }
return res;
} catch (RemoteException e) {
throw new RuntimeException("Voice interactor has died", e);
diff --git a/core/java/android/app/admin/PreferentialNetworkServiceConfig.java b/core/java/android/app/admin/PreferentialNetworkServiceConfig.java
index 24b4f4b..63c9839 100644
--- a/core/java/android/app/admin/PreferentialNetworkServiceConfig.java
+++ b/core/java/android/app/admin/PreferentialNetworkServiceConfig.java
@@ -203,17 +203,14 @@
return mIsEnabled == that.mIsEnabled
&& mAllowFallbackToDefaultConnection == that.mAllowFallbackToDefaultConnection
&& mNetworkId == that.mNetworkId
- && Objects.equals(mIncludedUids, that.mIncludedUids)
- && Objects.equals(mExcludedUids, that.mExcludedUids);
+ && Arrays.equals(mIncludedUids, that.mIncludedUids)
+ && Arrays.equals(mExcludedUids, that.mExcludedUids);
}
@Override
public int hashCode() {
- return ((Objects.hashCode(mIsEnabled) * 17)
- + (Objects.hashCode(mAllowFallbackToDefaultConnection) * 19)
- + (Objects.hashCode(mIncludedUids) * 23)
- + (Objects.hashCode(mExcludedUids) * 29)
- + mNetworkId * 31);
+ return Objects.hash(mIsEnabled, mAllowFallbackToDefaultConnection,
+ Arrays.hashCode(mIncludedUids), Arrays.hashCode(mExcludedUids), mNetworkId);
}
/**
diff --git a/core/java/android/companion/BluetoothLeDeviceFilter.java b/core/java/android/companion/BluetoothLeDeviceFilter.java
index e6091f0..2934cd2 100644
--- a/core/java/android/companion/BluetoothLeDeviceFilter.java
+++ b/core/java/android/companion/BluetoothLeDeviceFilter.java
@@ -204,9 +204,10 @@
@Override
public int hashCode() {
- return Objects.hash(mNamePattern, mScanFilter, mRawDataFilter, mRawDataFilterMask,
- mRenamePrefix, mRenameSuffix, mRenameBytesFrom, mRenameBytesLength,
- mRenameNameFrom, mRenameNameLength, mRenameBytesReverseOrder);
+ return Objects.hash(mNamePattern, mScanFilter, Arrays.hashCode(mRawDataFilter),
+ Arrays.hashCode(mRawDataFilterMask), mRenamePrefix, mRenameSuffix,
+ mRenameBytesFrom, mRenameBytesLength, mRenameNameFrom, mRenameNameLength,
+ mRenameBytesReverseOrder);
}
@Override
diff --git a/core/java/android/content/AttributionSource.java b/core/java/android/content/AttributionSource.java
index 3f2fa21..b0c6cbc 100644
--- a/core/java/android/content/AttributionSource.java
+++ b/core/java/android/content/AttributionSource.java
@@ -495,14 +495,9 @@
@Override
public int hashCode() {
- int _hash = 1;
- _hash = 31 * _hash + mAttributionSourceState.uid;
- _hash = 31 * _hash + Objects.hashCode(mAttributionSourceState.packageName);
- _hash = 31 * _hash + Objects.hashCode(mAttributionSourceState.attributionTag);
- _hash = 31 * _hash + Objects.hashCode(mAttributionSourceState.token);
- _hash = 31 * _hash + Objects.hashCode(mAttributionSourceState.renouncedPermissions);
- _hash = 31 * _hash + Objects.hashCode(getNext());
- return _hash;
+ return Objects.hash(mAttributionSourceState.uid, mAttributionSourceState.packageName,
+ mAttributionSourceState.attributionTag, mAttributionSourceState.token,
+ Arrays.hashCode(mAttributionSourceState.renouncedPermissions), getNext());
}
@Override
diff --git a/core/java/android/content/TEST_MAPPING b/core/java/android/content/TEST_MAPPING
index 5bb845d..dac79e7 100644
--- a/core/java/android/content/TEST_MAPPING
+++ b/core/java/android/content/TEST_MAPPING
@@ -7,6 +7,9 @@
"include-annotation": "android.platform.test.annotations.Presubmit"
},
{
+ "exclude-annotation": "android.platform.test.annotations.LargeTest"
+ },
+ {
"exclude-annotation": "androidx.test.filters.FlakyTest"
},
{
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 301d1bbc..364aa90 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -1723,7 +1723,8 @@
public void onPackagesAvailable(UserHandle user, String[] packageNames, boolean replacing)
throws RemoteException {
if (DEBUG) {
- Log.d(TAG, "onPackagesAvailable " + user.getIdentifier() + "," + packageNames);
+ Log.d(TAG, "onPackagesAvailable " + user.getIdentifier() + ","
+ + Arrays.toString(packageNames));
}
synchronized (LauncherApps.this) {
for (CallbackMessageHandler callback : mCallbacks) {
@@ -1736,7 +1737,8 @@
public void onPackagesUnavailable(UserHandle user, String[] packageNames, boolean replacing)
throws RemoteException {
if (DEBUG) {
- Log.d(TAG, "onPackagesUnavailable " + user.getIdentifier() + "," + packageNames);
+ Log.d(TAG, "onPackagesUnavailable " + user.getIdentifier() + ","
+ + Arrays.toString(packageNames));
}
synchronized (LauncherApps.this) {
for (CallbackMessageHandler callback : mCallbacks) {
@@ -1750,7 +1752,8 @@
Bundle launcherExtras)
throws RemoteException {
if (DEBUG) {
- Log.d(TAG, "onPackagesSuspended " + user.getIdentifier() + "," + packageNames);
+ Log.d(TAG, "onPackagesSuspended " + user.getIdentifier() + ","
+ + Arrays.toString(packageNames));
}
synchronized (LauncherApps.this) {
for (CallbackMessageHandler callback : mCallbacks) {
@@ -1763,7 +1766,8 @@
public void onPackagesUnsuspended(UserHandle user, String[] packageNames)
throws RemoteException {
if (DEBUG) {
- Log.d(TAG, "onPackagesUnsuspended " + user.getIdentifier() + "," + packageNames);
+ Log.d(TAG, "onPackagesUnsuspended " + user.getIdentifier() + ","
+ + Arrays.toString(packageNames));
}
synchronized (LauncherApps.this) {
for (CallbackMessageHandler callback : mCallbacks) {
diff --git a/core/java/android/content/pm/ShortcutInfo.java b/core/java/android/content/pm/ShortcutInfo.java
index 52774e3..1f83d75 100644
--- a/core/java/android/content/pm/ShortcutInfo.java
+++ b/core/java/android/content/pm/ShortcutInfo.java
@@ -53,6 +53,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -2617,7 +2618,7 @@
addIndentOrComma(sb, indent);
sb.append("persons=");
- sb.append(mPersons);
+ sb.append(Arrays.toString(mPersons));
addIndentOrComma(sb, indent);
diff --git a/core/java/android/content/res/GradientColor.java b/core/java/android/content/res/GradientColor.java
index 35ad503..7bc551d 100644
--- a/core/java/android/content/res/GradientColor.java
+++ b/core/java/android/content/res/GradientColor.java
@@ -22,13 +22,6 @@
import android.annotation.Nullable;
import android.content.pm.ActivityInfo.Config;
import android.content.res.Resources.Theme;
-
-import com.android.internal.R;
-import com.android.internal.util.GrowingArrayUtils;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
import android.graphics.LinearGradient;
import android.graphics.RadialGradient;
import android.graphics.Shader;
@@ -38,9 +31,16 @@
import android.util.Log;
import android.util.Xml;
+import com.android.internal.R;
+import com.android.internal.util.GrowingArrayUtils;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.Arrays;
/**
* Lets you define a gradient color, which is used inside
@@ -466,7 +466,7 @@
}
if (tempColors.length < 2) {
Log.w(TAG, "<gradient> tag requires 2 color values specified!" + tempColors.length
- + " " + tempColors);
+ + " " + Arrays.toString(tempColors));
}
if (mGradientType == GradientDrawable.LINEAR_GRADIENT) {
diff --git a/core/java/android/credentials/OWNERS b/core/java/android/credentials/OWNERS
new file mode 100644
index 0000000..e8f393e
--- /dev/null
+++ b/core/java/android/credentials/OWNERS
@@ -0,0 +1,5 @@
+reemabajwa@google.com
+helenqin@google.com
+sgjerry@google.com
+leecam@google.com
+akaphle@google.com
diff --git a/core/java/android/hardware/radio/ProgramSelector.java b/core/java/android/hardware/radio/ProgramSelector.java
index d525753..2d2882d 100644
--- a/core/java/android/hardware/radio/ProgramSelector.java
+++ b/core/java/android/hardware/radio/ProgramSelector.java
@@ -490,8 +490,12 @@
public String toString() {
StringBuilder sb = new StringBuilder("ProgramSelector(type=").append(mProgramType)
.append(", primary=").append(mPrimaryId);
- if (mSecondaryIds.length > 0) sb.append(", secondary=").append(mSecondaryIds);
- if (mVendorIds.length > 0) sb.append(", vendor=").append(mVendorIds);
+ if (mSecondaryIds.length > 0) {
+ sb.append(", secondary=").append(Arrays.toString(mSecondaryIds));
+ }
+ if (mVendorIds.length > 0) {
+ sb.append(", vendor=").append(Arrays.toString(mVendorIds));
+ }
sb.append(")");
return sb.toString();
}
diff --git a/core/java/android/hardware/radio/RadioManager.java b/core/java/android/hardware/radio/RadioManager.java
index 4cc001a..83589ea 100644
--- a/core/java/android/hardware/radio/RadioManager.java
+++ b/core/java/android/hardware/radio/RadioManager.java
@@ -505,7 +505,8 @@
public int hashCode() {
return Objects.hash(mId, mServiceName, mClassId, mImplementor, mProduct, mVersion,
mSerial, mNumTuners, mNumAudioSources, mIsInitializationRequired,
- mIsCaptureSupported, mBands, mIsBgScanSupported, mDabFrequencyTable, mVendorInfo);
+ mIsCaptureSupported, Arrays.hashCode(mBands), mIsBgScanSupported,
+ mDabFrequencyTable, mVendorInfo);
}
@Override
@@ -525,7 +526,7 @@
if (mNumAudioSources != other.mNumAudioSources) return false;
if (mIsInitializationRequired != other.mIsInitializationRequired) return false;
if (mIsCaptureSupported != other.mIsCaptureSupported) return false;
- if (!Objects.equals(mBands, other.mBands)) return false;
+ if (!Arrays.equals(mBands, other.mBands)) return false;
if (mIsBgScanSupported != other.mIsBgScanSupported) return false;
if (!Objects.equals(mDabFrequencyTable, other.mDabFrequencyTable)) return false;
if (!Objects.equals(mVendorInfo, other.mVendorInfo)) return false;
diff --git a/core/java/android/metrics/LogMaker.java b/core/java/android/metrics/LogMaker.java
index a19eb56..8644d91 100644
--- a/core/java/android/metrics/LogMaker.java
+++ b/core/java/android/metrics/LogMaker.java
@@ -23,6 +23,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import java.util.Arrays;
/**
@@ -395,7 +396,7 @@
out[i * 2] = entries.keyAt(i);
out[i * 2 + 1] = entries.valueAt(i);
}
- int size = out.toString().getBytes().length;
+ int size = Arrays.toString(out).getBytes().length;
if (size > MAX_SERIALIZED_SIZE) {
Log.i(TAG, "Log line too long, did not emit: " + size + " bytes.");
throw new RuntimeException();
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index 412a33a..113a640 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -26,6 +26,9 @@
import android.app.ActivityManager;
import android.app.ActivityThread;
import android.app.IActivityManager;
+import android.app.compat.CompatChanges;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -344,6 +347,13 @@
public static final int NETWORK_POLICY_LOG = 1;
/** {@hide} */
public static final int NETWORK_POLICY_REJECT = 2;
+
+ /**
+ * Detect explicit calls to {@link Runtime#gc()}.
+ */
+ @ChangeId
+ @EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+ static final long DETECT_EXPLICIT_GC = 3400644L;
// TODO: wrap in some ImmutableHashMap thing.
// Note: must be before static initialization of sVmPolicy.
@@ -496,6 +506,7 @@
* <p>As of the Gingerbread release this includes network and disk operations but will
* likely expand in future releases.
*/
+ @SuppressWarnings("AndroidFrameworkCompatChange")
public @NonNull Builder detectAll() {
detectDiskReads();
detectDiskWrites();
@@ -511,6 +522,9 @@
if (targetSdk >= Build.VERSION_CODES.O) {
detectUnbufferedIo();
}
+ if (CompatChanges.isChangeEnabled(DETECT_EXPLICIT_GC)) {
+ detectExplicitGc();
+ }
return this;
}
@@ -591,26 +605,16 @@
}
/**
- * Detect explicit GC requests, i.e. calls to Runtime.gc().
- *
- * @hide
+ * Detect calls to {@link Runtime#gc()}.
*/
- @TestApi
public @NonNull Builder detectExplicitGc() {
- // TODO(b/3400644): Un-hide this for next API update
- // TODO(b/3400644): Un-hide ExplicitGcViolation for next API update
- // TODO(b/3400644): Make DETECT_EXPLICIT_GC a @TestApi for next API update
- // TODO(b/3400644): Call this from detectAll in next API update
return enable(DETECT_THREAD_EXPLICIT_GC);
}
/**
- * Disable detection of explicit GC requests, i.e. calls to Runtime.gc().
- *
- * @hide
+ * Disable detection of calls to {@link Runtime#gc()}.
*/
public @NonNull Builder permitExplicitGc() {
- // TODO(b/3400644): Un-hide this for next API update
return disable(DETECT_THREAD_EXPLICIT_GC);
}
diff --git a/core/java/android/os/incremental/IncrementalStorage.java b/core/java/android/os/incremental/IncrementalStorage.java
index 13b22d3..a1ed253 100644
--- a/core/java/android/os/incremental/IncrementalStorage.java
+++ b/core/java/android/os/incremental/IncrementalStorage.java
@@ -26,6 +26,7 @@
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.util.Arrays;
import java.util.Objects;
import java.util.UUID;
@@ -515,7 +516,7 @@
throw new IOException("Unsupported log2BlockSize: " + hashingInfo.log2BlockSize);
}
if (hashingInfo.salt != null && hashingInfo.salt.length > 0) {
- throw new IOException("Unsupported salt: " + hashingInfo.salt);
+ throw new IOException("Unsupported salt: " + Arrays.toString(hashingInfo.salt));
}
if (hashingInfo.rawRootHash.length != INCFS_MAX_HASH_SIZE) {
throw new IOException("rawRootHash has to be " + INCFS_MAX_HASH_SIZE + " bytes");
diff --git a/core/java/android/os/strictmode/ExplicitGcViolation.java b/core/java/android/os/strictmode/ExplicitGcViolation.java
index 583ed1a..c4ae82d 100644
--- a/core/java/android/os/strictmode/ExplicitGcViolation.java
+++ b/core/java/android/os/strictmode/ExplicitGcViolation.java
@@ -19,10 +19,7 @@
/**
* See #{@link android.os.StrictMode.ThreadPolicy.Builder#detectExplicitGc()}.
- *
- * @hide
*/
-@TestApi
public final class ExplicitGcViolation extends Violation {
/** @hide */
public ExplicitGcViolation() {
diff --git a/core/java/android/service/autofill/OptionalValidators.java b/core/java/android/service/autofill/OptionalValidators.java
index 7189c88..2043539 100644
--- a/core/java/android/service/autofill/OptionalValidators.java
+++ b/core/java/android/service/autofill/OptionalValidators.java
@@ -25,6 +25,8 @@
import com.android.internal.util.Preconditions;
+import java.util.Arrays;
+
/**
* Compound validator that returns {@code true} on {@link #isValid(ValueFinder)} if any
* of its subvalidators returns {@code true} as well.
@@ -61,7 +63,8 @@
public String toString() {
if (!sDebug) return super.toString();
- return new StringBuilder("OptionalValidators: [validators=").append(mValidators)
+ return new StringBuilder("OptionalValidators: [validators=")
+ .append(Arrays.toString(mValidators))
.append("]")
.toString();
}
diff --git a/core/java/android/service/autofill/RequiredValidators.java b/core/java/android/service/autofill/RequiredValidators.java
index 619eba0..054582e 100644
--- a/core/java/android/service/autofill/RequiredValidators.java
+++ b/core/java/android/service/autofill/RequiredValidators.java
@@ -25,6 +25,8 @@
import com.android.internal.util.Preconditions;
+import java.util.Arrays;
+
/**
* Compound validator that only returns {@code true} on {@link #isValid(ValueFinder)} if all
* of its subvalidators return {@code true} as well.
@@ -60,7 +62,8 @@
public String toString() {
if (!sDebug) return super.toString();
- return new StringBuilder("RequiredValidators: [validators=").append(mValidators)
+ return new StringBuilder("RequiredValidators: [validators=")
+ .append(Arrays.toString(mValidators))
.append("]")
.toString();
}
diff --git a/core/java/android/service/credentials/OWNERS b/core/java/android/service/credentials/OWNERS
new file mode 100644
index 0000000..f3b43c1
--- /dev/null
+++ b/core/java/android/service/credentials/OWNERS
@@ -0,0 +1 @@
+include /core/java/android/credentials/OWNERS
diff --git a/core/java/android/service/voice/VoiceInteractionSession.java b/core/java/android/service/voice/VoiceInteractionSession.java
index 11b60ca..777d143 100644
--- a/core/java/android/service/voice/VoiceInteractionSession.java
+++ b/core/java/android/service/voice/VoiceInteractionSession.java
@@ -73,6 +73,7 @@
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -597,7 +598,7 @@
VoiceInteractor.PickOptionRequest.Option[] selections, Bundle result) {
try {
if (DEBUG) Log.d(TAG, "sendPickOptionResult: req=" + mInterface
- + " finished=" + finished + " selections=" + selections
+ + " finished=" + finished + " selections=" + Arrays.toString(selections)
+ " result=" + result);
if (finished) {
finishRequest();
diff --git a/core/java/android/speech/tts/FileSynthesisCallback.java b/core/java/android/speech/tts/FileSynthesisCallback.java
index 3bde32b..3177c5c 100644
--- a/core/java/android/speech/tts/FileSynthesisCallback.java
+++ b/core/java/android/speech/tts/FileSynthesisCallback.java
@@ -24,6 +24,7 @@
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileChannel;
+import java.util.Arrays;
/**
* Speech synthesis request that writes the audio to a WAV file.
@@ -152,8 +153,8 @@
@Override
public int audioAvailable(byte[] buffer, int offset, int length) {
if (DBG) {
- Log.d(TAG, "FileSynthesisRequest.audioAvailable(" + buffer + "," + offset
- + "," + length + ")");
+ Log.d(TAG, "FileSynthesisRequest.audioAvailable(" + Arrays.toString(buffer)
+ + "," + offset + "," + length + ")");
}
FileChannel fileChannel = null;
synchronized (mStateLock) {
diff --git a/core/java/android/util/ArrayMap.java b/core/java/android/util/ArrayMap.java
index c0bc991..155f508 100644
--- a/core/java/android/util/ArrayMap.java
+++ b/core/java/android/util/ArrayMap.java
@@ -23,6 +23,7 @@
import libcore.util.EmptyArray;
+import java.util.Arrays;
import java.util.Collection;
import java.util.ConcurrentModificationException;
import java.util.Map;
@@ -231,7 +232,7 @@
array[0] = array[1] = null;
mTwiceBaseCacheSize--;
if (DEBUG) {
- Log.d(TAG, "Retrieving 2x cache " + mHashes
+ Log.d(TAG, "Retrieving 2x cache " + Arrays.toString(mHashes)
+ " now have " + mTwiceBaseCacheSize + " entries");
}
return;
@@ -258,7 +259,7 @@
array[0] = array[1] = null;
mBaseCacheSize--;
if (DEBUG) {
- Log.d(TAG, "Retrieving 1x cache " + mHashes
+ Log.d(TAG, "Retrieving 1x cache " + Arrays.toString(mHashes)
+ " now have " + mBaseCacheSize + " entries");
}
return;
@@ -295,8 +296,10 @@
}
mTwiceBaseCache = array;
mTwiceBaseCacheSize++;
- if (DEBUG) Log.d(TAG, "Storing 2x cache " + array
- + " now have " + mTwiceBaseCacheSize + " entries");
+ if (DEBUG) {
+ Log.d(TAG, "Storing 2x cache " + Arrays.toString(array)
+ + " now have " + mTwiceBaseCacheSize + " entries");
+ }
}
}
} else if (hashes.length == BASE_SIZE) {
@@ -309,8 +312,10 @@
}
mBaseCache = array;
mBaseCacheSize++;
- if (DEBUG) Log.d(TAG, "Storing 1x cache " + array
- + " now have " + mBaseCacheSize + " entries");
+ if (DEBUG) {
+ Log.d(TAG, "Storing 1x cache " + Arrays.toString(array)
+ + " now have " + mBaseCacheSize + " entries");
+ }
}
}
}
diff --git a/core/java/android/util/ArraySet.java b/core/java/android/util/ArraySet.java
index b5c75b9..73114e2 100644
--- a/core/java/android/util/ArraySet.java
+++ b/core/java/android/util/ArraySet.java
@@ -23,6 +23,7 @@
import libcore.util.EmptyArray;
import java.lang.reflect.Array;
+import java.util.Arrays;
import java.util.Collection;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
@@ -194,8 +195,8 @@
array[0] = array[1] = null;
sTwiceBaseCacheSize--;
if (DEBUG) {
- Log.d(TAG, "Retrieving 2x cache " + mHashes + " now have "
- + sTwiceBaseCacheSize + " entries");
+ Log.d(TAG, "Retrieving 2x cache " + Arrays.toString(mHashes)
+ + " now have " + sTwiceBaseCacheSize + " entries");
}
return;
}
@@ -221,8 +222,8 @@
array[0] = array[1] = null;
sBaseCacheSize--;
if (DEBUG) {
- Log.d(TAG, "Retrieving 1x cache " + mHashes + " now have "
- + sBaseCacheSize + " entries");
+ Log.d(TAG, "Retrieving 1x cache " + Arrays.toString(mHashes)
+ + " now have " + sBaseCacheSize + " entries");
}
return;
}
@@ -259,8 +260,8 @@
sTwiceBaseCache = array;
sTwiceBaseCacheSize++;
if (DEBUG) {
- Log.d(TAG, "Storing 2x cache " + array + " now have " + sTwiceBaseCacheSize
- + " entries");
+ Log.d(TAG, "Storing 2x cache " + Arrays.toString(array) + " now have "
+ + sTwiceBaseCacheSize + " entries");
}
}
}
@@ -275,7 +276,7 @@
sBaseCache = array;
sBaseCacheSize++;
if (DEBUG) {
- Log.d(TAG, "Storing 1x cache " + array + " now have "
+ Log.d(TAG, "Storing 1x cache " + Arrays.toString(array) + " now have "
+ sBaseCacheSize + " entries");
}
}
diff --git a/core/java/android/util/proto/ProtoInputStream.java b/core/java/android/util/proto/ProtoInputStream.java
index 9789b10..9a15cd5 100644
--- a/core/java/android/util/proto/ProtoInputStream.java
+++ b/core/java/android/util/proto/ProtoInputStream.java
@@ -21,6 +21,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Objects;
/**
* Class to read to a protobuf stream.
@@ -968,26 +970,17 @@
public String dumpDebugData() {
StringBuilder sb = new StringBuilder();
- sb.append("\nmFieldNumber : 0x" + Integer.toHexString(mFieldNumber));
- sb.append("\nmWireType : 0x" + Integer.toHexString(mWireType));
- sb.append("\nmState : 0x" + Integer.toHexString(mState));
- sb.append("\nmDiscardedBytes : 0x" + Integer.toHexString(mDiscardedBytes));
- sb.append("\nmOffset : 0x" + Integer.toHexString(mOffset));
- sb.append("\nmExpectedObjectTokenStack : ");
- if (mExpectedObjectTokenStack == null) {
- sb.append("null");
- } else {
- sb.append(mExpectedObjectTokenStack);
- }
- sb.append("\nmDepth : 0x" + Integer.toHexString(mDepth));
- sb.append("\nmBuffer : ");
- if (mBuffer == null) {
- sb.append("null");
- } else {
- sb.append(mBuffer);
- }
- sb.append("\nmBufferSize : 0x" + Integer.toHexString(mBufferSize));
- sb.append("\nmEnd : 0x" + Integer.toHexString(mEnd));
+ sb.append("\nmFieldNumber : 0x").append(Integer.toHexString(mFieldNumber));
+ sb.append("\nmWireType : 0x").append(Integer.toHexString(mWireType));
+ sb.append("\nmState : 0x").append(Integer.toHexString(mState));
+ sb.append("\nmDiscardedBytes : 0x").append(Integer.toHexString(mDiscardedBytes));
+ sb.append("\nmOffset : 0x").append(Integer.toHexString(mOffset));
+ sb.append("\nmExpectedObjectTokenStack : ")
+ .append(Objects.toString(mExpectedObjectTokenStack));
+ sb.append("\nmDepth : 0x").append(Integer.toHexString(mDepth));
+ sb.append("\nmBuffer : ").append(Arrays.toString(mBuffer));
+ sb.append("\nmBufferSize : 0x").append(Integer.toHexString(mBufferSize));
+ sb.append("\nmEnd : 0x").append(Integer.toHexString(mEnd));
return sb.toString();
}
diff --git a/core/java/android/util/proto/ProtoUtils.java b/core/java/android/util/proto/ProtoUtils.java
index 8464d2d..58d9913 100644
--- a/core/java/android/util/proto/ProtoUtils.java
+++ b/core/java/android/util/proto/ProtoUtils.java
@@ -20,6 +20,7 @@
import android.util.Duration;
import java.io.IOException;
+import java.util.Arrays;
/**
* This class contains a list of helper functions to write common proto in
@@ -91,27 +92,27 @@
final int wireType = proto.getWireType();
long fieldConstant;
- sb.append("Offset : 0x" + Integer.toHexString(proto.getOffset()));
- sb.append("\nField Number : 0x" + Integer.toHexString(proto.getFieldNumber()));
+ sb.append("Offset : 0x").append(Integer.toHexString(proto.getOffset()));
+ sb.append("\nField Number : 0x").append(Integer.toHexString(proto.getFieldNumber()));
sb.append("\nWire Type : ");
switch (wireType) {
case ProtoStream.WIRE_TYPE_VARINT:
- sb.append("varint");
fieldConstant = ProtoStream.makeFieldId(fieldNumber,
ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT64);
- sb.append("\nField Value : 0x" + Long.toHexString(proto.readLong(fieldConstant)));
+ sb.append("varint\nField Value : 0x");
+ sb.append(Long.toHexString(proto.readLong(fieldConstant)));
break;
case ProtoStream.WIRE_TYPE_FIXED64:
- sb.append("fixed64");
fieldConstant = ProtoStream.makeFieldId(fieldNumber,
ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED64);
- sb.append("\nField Value : 0x" + Long.toHexString(proto.readLong(fieldConstant)));
+ sb.append("fixed64\nField Value : 0x");
+ sb.append(Long.toHexString(proto.readLong(fieldConstant)));
break;
case ProtoStream.WIRE_TYPE_LENGTH_DELIMITED:
- sb.append("length delimited");
fieldConstant = ProtoStream.makeFieldId(fieldNumber,
ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BYTES);
- sb.append("\nField Bytes : " + proto.readBytes(fieldConstant));
+ sb.append("length delimited\nField Bytes : ");
+ sb.append(Arrays.toString(proto.readBytes(fieldConstant)));
break;
case ProtoStream.WIRE_TYPE_START_GROUP:
sb.append("start group");
@@ -120,13 +121,13 @@
sb.append("end group");
break;
case ProtoStream.WIRE_TYPE_FIXED32:
- sb.append("fixed32");
fieldConstant = ProtoStream.makeFieldId(fieldNumber,
ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED32);
- sb.append("\nField Value : 0x" + Integer.toHexString(proto.readInt(fieldConstant)));
+ sb.append("fixed32\nField Value : 0x");
+ sb.append(Integer.toHexString(proto.readInt(fieldConstant)));
break;
default:
- sb.append("unknown(" + proto.getWireType() + ")");
+ sb.append("unknown(").append(proto.getWireType()).append(")");
}
return sb.toString();
}
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index a1ce39e..6a23aba 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -1934,7 +1934,7 @@
@Override
public int hashCode() {
- return Objects.hash(supportedDisplayModes, activeDisplayModeId, activeDisplayModeId,
+ return Objects.hash(Arrays.hashCode(supportedDisplayModes), activeDisplayModeId,
activeColorMode, hdrCapabilities);
}
}
diff --git a/core/java/android/view/TEST_MAPPING b/core/java/android/view/TEST_MAPPING
index 50d69f7..ecb98f9 100644
--- a/core/java/android/view/TEST_MAPPING
+++ b/core/java/android/view/TEST_MAPPING
@@ -10,6 +10,9 @@
"include-annotation": "android.platform.test.annotations.Presubmit"
},
{
+ "exclude-annotation": "android.platform.test.annotations.LargeTest"
+ },
+ {
"exclude-annotation": "androidx.test.filters.FlakyTest"
},
{
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index ac57d69..e290812 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -7928,20 +7928,31 @@
synchronized (mModemNetworkLock) {
if (displayTransport == TRANSPORT_CELLULAR) {
mModemIfaces = includeInStringArray(mModemIfaces, iface);
- if (DEBUG) Slog.d(TAG, "Note mobile iface " + iface + ": " + mModemIfaces);
+ if (DEBUG) {
+ Slog.d(TAG, "Note mobile iface " + iface + ": "
+ + Arrays.toString(mModemIfaces));
+ }
} else {
mModemIfaces = excludeFromStringArray(mModemIfaces, iface);
- if (DEBUG) Slog.d(TAG, "Note non-mobile iface " + iface + ": " + mModemIfaces);
+ if (DEBUG) {
+ Slog.d(TAG, "Note non-mobile iface " + iface + ": "
+ + Arrays.toString(mModemIfaces));
+ }
}
}
synchronized (mWifiNetworkLock) {
if (displayTransport == TRANSPORT_WIFI) {
mWifiIfaces = includeInStringArray(mWifiIfaces, iface);
- if (DEBUG) Slog.d(TAG, "Note wifi iface " + iface + ": " + mWifiIfaces);
+ if (DEBUG) {
+ Slog.d(TAG, "Note wifi iface " + iface + ": " + Arrays.toString(mWifiIfaces));
+ }
} else {
mWifiIfaces = excludeFromStringArray(mWifiIfaces, iface);
- if (DEBUG) Slog.d(TAG, "Note non-wifi iface " + iface + ": " + mWifiIfaces);
+ if (DEBUG) {
+ Slog.d(TAG, "Note non-wifi iface " + iface + ": "
+ + Arrays.toString(mWifiIfaces));
+ }
}
}
}
@@ -14409,7 +14420,7 @@
@NonNull CpuDeltaPowerAccumulator accumulator) {
if (DEBUG_ENERGY) {
Slog.d(TAG,
- "Updating cpu cluster stats: " + clusterChargeUC.toString());
+ "Updating cpu cluster stats: " + Arrays.toString(clusterChargeUC));
}
if (mGlobalMeasuredEnergyStats == null) {
return;
diff --git a/core/java/com/android/internal/widget/LockscreenCredential.java b/core/java/com/android/internal/widget/LockscreenCredential.java
index 1074004..db83c09 100644
--- a/core/java/com/android/internal/widget/LockscreenCredential.java
+++ b/core/java/com/android/internal/widget/LockscreenCredential.java
@@ -26,7 +26,6 @@
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;
-import android.os.storage.StorageManager;
import android.text.TextUtils;
import com.android.internal.util.Preconditions;
@@ -368,7 +367,7 @@
@Override
public int hashCode() {
// Effective Java — Always override hashCode when you override equals
- return (17 + mType) * 31 + mCredential.hashCode();
+ return Objects.hash(mType, Arrays.hashCode(mCredential));
}
@Override
diff --git a/core/jni/OWNERS b/core/jni/OWNERS
index 7f50204..14699e7 100644
--- a/core/jni/OWNERS
+++ b/core/jni/OWNERS
@@ -95,3 +95,7 @@
# Battery
per-file com_android_internal_os_Kernel* = file:/BATTERY_STATS_OWNERS
per-file com_android_internal_os_*MultiStateCounter* = file:/BATTERY_STATS_OWNERS
+
+# PM
+per-file com_android_internal_content_* = file:/PACKAGE_MANAGER_OWNERS
+
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 2215c26..bf155cc 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -222,9 +222,9 @@
<!-- Displayed to tell the user that they should switch their network preference. -->
<string name="NetworkPreferenceSwitchSummary">Try changing preferred network. Tap to change.</string>
<!-- Displayed to tell the user that emergency calls might not be available. -->
- <string name="EmergencyCallWarningTitle">Emergency calling unavailable</string>
+ <string name="EmergencyCallWarningTitle">Emergency calls may be unavailable</string>
<!-- Displayed to tell the user that emergency calls might not be available. -->
- <string name="EmergencyCallWarningSummary">Can\u2019t make emergency calls over Wi\u2011Fi</string>
+ <string name="EmergencyCallWarningSummary"><xliff:g id="spn" example="Operator">%s</xliff:g> doesn\'t support emergency calls over Wi-Fi. Tap for details.</string>
<!-- Telephony notification channel name for a channel containing network alert notifications. -->
<string name="notification_channel_network_alert">Alerts</string>
diff --git a/core/tests/coretests/src/android/provider/FontsContractTest.java b/core/tests/coretests/src/android/provider/FontsContractTest.java
index c5d6f7f..21a2205 100644
--- a/core/tests/coretests/src/android/provider/FontsContractTest.java
+++ b/core/tests/coretests/src/android/provider/FontsContractTest.java
@@ -42,6 +42,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
/**
@@ -282,9 +283,10 @@
setupPackageManager();
byte[] wrongCert = Base64.decode("this is a wrong cert", Base64.DEFAULT);
- List<byte[]> certList = Arrays.asList(wrongCert);
+ List<byte[]> certList = Collections.singletonList(wrongCert);
FontRequest requestWrongCerts = new FontRequest(
- TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query", Arrays.asList(certList));
+ TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query",
+ Collections.singletonList(certList));
assertNull(FontsContract.getProvider(mPackageManager, requestWrongCerts));
}
@@ -293,9 +295,10 @@
throws PackageManager.NameNotFoundException {
ProviderInfo info = setupPackageManager();
- List<byte[]> certList = Arrays.asList(BYTE_ARRAY);
+ List<byte[]> certList = Collections.singletonList(BYTE_ARRAY);
FontRequest requestRightCerts = new FontRequest(
- TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query", Arrays.asList(certList));
+ TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query",
+ Collections.singletonList(certList));
ProviderInfo result = FontsContract.getProvider(
mPackageManager, requestRightCerts);
@@ -309,7 +312,8 @@
byte[] wrongCert = Base64.decode("this is a wrong cert", Base64.DEFAULT);
List<byte[]> certList = Arrays.asList(wrongCert, BYTE_ARRAY);
FontRequest requestRightCerts = new FontRequest(
- TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query", Arrays.asList(certList));
+ TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query",
+ Collections.singletonList(certList));
assertNull(FontsContract.getProvider(mPackageManager, requestRightCerts));
}
@@ -332,7 +336,8 @@
// {BYTE_ARRAY_2, BYTE_ARRAY_COPY}.
List<byte[]> certList = Arrays.asList(BYTE_ARRAY_2, BYTE_ARRAY_COPY);
FontRequest requestRightCerts = new FontRequest(
- TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query", Arrays.asList(certList));
+ TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query",
+ Collections.singletonList(certList));
assertNull(FontsContract.getProvider(mPackageManager, requestRightCerts));
}
@@ -341,9 +346,9 @@
ProviderInfo info = setupPackageManager();
List<List<byte[]>> certList = new ArrayList<>();
- byte[] wrongCert = Base64.decode("this is a wrong cert", Base64.DEFAULT);
- certList.add(Arrays.asList(wrongCert));
- certList.add(Arrays.asList(BYTE_ARRAY));
+ certList.add(Collections.singletonList(
+ Base64.decode("this is a wrong cert", Base64.DEFAULT)));
+ certList.add(Collections.singletonList(BYTE_ARRAY));
FontRequest requestRightCerts = new FontRequest(
TestFontsProvider.AUTHORITY, PACKAGE_NAME, "query", certList);
ProviderInfo result = FontsContract.getProvider(mPackageManager, requestRightCerts);
@@ -356,7 +361,7 @@
setupPackageManager();
List<List<byte[]>> certList = new ArrayList<>();
- certList.add(Arrays.asList(BYTE_ARRAY));
+ certList.add(Collections.singletonList(BYTE_ARRAY));
FontRequest requestRightCerts = new FontRequest(
TestFontsProvider.AUTHORITY, "com.wrong.package.name", "query", certList);
try {
diff --git a/graphics/java/android/graphics/ColorSpace.java b/graphics/java/android/graphics/ColorSpace.java
index 582488f..ca3c847 100644
--- a/graphics/java/android/graphics/ColorSpace.java
+++ b/graphics/java/android/graphics/ColorSpace.java
@@ -2796,7 +2796,8 @@
if (mWhitePoint == null || mTransform == null) {
throw new IllegalStateException(
"ColorSpace (" + this + ") cannot create native object! mWhitePoint: "
- + mWhitePoint + " mTransform: " + mTransform);
+ + Arrays.toString(mWhitePoint) + " mTransform: "
+ + Arrays.toString(mTransform));
}
// This mimics the old code that was in native.
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 53c6db0..f9b3a8c 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -51,6 +51,49 @@
using uirenderer::PaintUtils;
+class SkiaCanvas::Clip {
+public:
+ Clip(const SkRect& rect, SkClipOp op, const SkMatrix& m)
+ : mType(Type::Rect), mOp(op), mMatrix(m), mRRect(SkRRect::MakeRect(rect)) {}
+ Clip(const SkRRect& rrect, SkClipOp op, const SkMatrix& m)
+ : mType(Type::RRect), mOp(op), mMatrix(m), mRRect(rrect) {}
+ Clip(const SkPath& path, SkClipOp op, const SkMatrix& m)
+ : mType(Type::Path), mOp(op), mMatrix(m), mPath(std::in_place, path) {}
+
+ void apply(SkCanvas* canvas) const {
+ canvas->setMatrix(mMatrix);
+ switch (mType) {
+ case Type::Rect:
+ // Don't anti-alias rectangular clips
+ canvas->clipRect(mRRect.rect(), mOp, false);
+ break;
+ case Type::RRect:
+ // Ensure rounded rectangular clips are anti-aliased
+ canvas->clipRRect(mRRect, mOp, true);
+ break;
+ case Type::Path:
+ // Ensure path clips are anti-aliased
+ canvas->clipPath(mPath.value(), mOp, true);
+ break;
+ }
+ }
+
+private:
+ enum class Type {
+ Rect,
+ RRect,
+ Path,
+ };
+
+ Type mType;
+ SkClipOp mOp;
+ SkMatrix mMatrix;
+
+ // These are logically a union (tracked separately due to non-POD path).
+ std::optional<SkPath> mPath;
+ SkRRect mRRect;
+};
+
Canvas* Canvas::create_canvas(const SkBitmap& bitmap) {
return new SkiaCanvas(bitmap);
}
@@ -194,49 +237,6 @@
}
}
-class SkiaCanvas::Clip {
-public:
- Clip(const SkRect& rect, SkClipOp op, const SkMatrix& m)
- : mType(Type::Rect), mOp(op), mMatrix(m), mRRect(SkRRect::MakeRect(rect)) {}
- Clip(const SkRRect& rrect, SkClipOp op, const SkMatrix& m)
- : mType(Type::RRect), mOp(op), mMatrix(m), mRRect(rrect) {}
- Clip(const SkPath& path, SkClipOp op, const SkMatrix& m)
- : mType(Type::Path), mOp(op), mMatrix(m), mPath(std::in_place, path) {}
-
- void apply(SkCanvas* canvas) const {
- canvas->setMatrix(mMatrix);
- switch (mType) {
- case Type::Rect:
- // Don't anti-alias rectangular clips
- canvas->clipRect(mRRect.rect(), mOp, false);
- break;
- case Type::RRect:
- // Ensure rounded rectangular clips are anti-aliased
- canvas->clipRRect(mRRect, mOp, true);
- break;
- case Type::Path:
- // Ensure path clips are anti-aliased
- canvas->clipPath(mPath.value(), mOp, true);
- break;
- }
- }
-
-private:
- enum class Type {
- Rect,
- RRect,
- Path,
- };
-
- Type mType;
- SkClipOp mOp;
- SkMatrix mMatrix;
-
- // These are logically a union (tracked separately due to non-POD path).
- std::optional<SkPath> mPath;
- SkRRect mRRect;
-};
-
const SkiaCanvas::SaveRec* SkiaCanvas::currentSaveRec() const {
const SaveRec* rec = mSaveStack ? static_cast<const SaveRec*>(mSaveStack->back()) : nullptr;
int currentSaveCount = mCanvas->getSaveCount();
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 1077275..737bc34 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -5089,9 +5089,12 @@
@Nullable Map<String, String> optionalParameters)
throws NoDrmSchemeException
{
- Log.v(TAG, "getKeyRequest: " +
- " keySetId: " + keySetId + " initData:" + initData + " mimeType: " + mimeType +
- " keyType: " + keyType + " optionalParameters: " + optionalParameters);
+ Log.v(TAG, "getKeyRequest: "
+ + " keySetId: " + Arrays.toString(keySetId)
+ + " initData:" + Arrays.toString(initData)
+ + " mimeType: " + mimeType
+ + " keyType: " + keyType
+ + " optionalParameters: " + optionalParameters);
synchronized (mDrmLock) {
if (!mActiveDrmScheme) {
@@ -5150,7 +5153,8 @@
public byte[] provideKeyResponse(@Nullable byte[] keySetId, @NonNull byte[] response)
throws NoDrmSchemeException, DeniedByServerException
{
- Log.v(TAG, "provideKeyResponse: keySetId: " + keySetId + " response: " + response);
+ Log.v(TAG, "provideKeyResponse: keySetId: " + Arrays.toString(keySetId)
+ + " response: " + Arrays.toString(response));
synchronized (mDrmLock) {
@@ -5166,8 +5170,9 @@
byte[] keySetResult = mDrmObj.provideKeyResponse(scope, response);
- Log.v(TAG, "provideKeyResponse: keySetId: " + keySetId + " response: " + response +
- " --> " + keySetResult);
+ Log.v(TAG, "provideKeyResponse: keySetId: " + Arrays.toString(keySetId)
+ + " response: " + Arrays.toString(response)
+ + " --> " + Arrays.toString(keySetResult));
return keySetResult;
@@ -5194,7 +5199,7 @@
public void restoreKeys(@NonNull byte[] keySetId)
throws NoDrmSchemeException
{
- Log.v(TAG, "restoreKeys: keySetId: " + keySetId);
+ Log.v(TAG, "restoreKeys: keySetId: " + Arrays.toString(keySetId));
synchronized (mDrmLock) {
@@ -5481,7 +5486,8 @@
// at prepareDrm/openSession rather than getKeyRequest/provideKeyResponse
try {
mDrmSessionId = mDrmObj.openSession();
- Log.v(TAG, "prepareDrm_openSessionStep: mDrmSessionId=" + mDrmSessionId);
+ Log.v(TAG, "prepareDrm_openSessionStep: mDrmSessionId="
+ + Arrays.toString(mDrmSessionId));
// Sending it down to native/mediaserver to create the crypto object
// This call could simply fail due to bad player state, e.g., after start().
@@ -5544,7 +5550,7 @@
response = Streams.readFully(connection.getInputStream());
Log.v(TAG, "HandleProvisioninig: Thread run: response " +
- response.length + " " + response);
+ response.length + " " + Arrays.toString(response));
} catch (Exception e) {
status = PREPARE_DRM_STATUS_PROVISIONING_NETWORK_ERROR;
Log.w(TAG, "HandleProvisioninig: Thread run: connect " + e + " url: " + url);
@@ -5628,8 +5634,9 @@
return PREPARE_DRM_STATUS_PREPARATION_ERROR;
}
- Log.v(TAG, "HandleProvisioninig provReq " +
- " data: " + provReq.getData() + " url: " + provReq.getDefaultUrl());
+ Log.v(TAG, "HandleProvisioninig provReq "
+ + " data: " + Arrays.toString(provReq.getData())
+ + " url: " + provReq.getDefaultUrl());
// networking in a background thread
mDrmProvisioningInProgress = true;
@@ -5712,7 +5719,8 @@
private void cleanDrmObj()
{
// the caller holds mDrmLock
- Log.v(TAG, "cleanDrmObj: mDrmObj=" + mDrmObj + " mDrmSessionId=" + mDrmSessionId);
+ Log.v(TAG, "cleanDrmObj: mDrmObj=" + mDrmObj
+ + " mDrmSessionId=" + Arrays.toString(mDrmSessionId));
if (mDrmSessionId != null) {
mDrmObj.closeSession(mDrmSessionId);
diff --git a/media/java/android/media/audiopolicy/AudioProductStrategy.java b/media/java/android/media/audiopolicy/AudioProductStrategy.java
index 31d5967..f957498 100644
--- a/media/java/android/media/audiopolicy/AudioProductStrategy.java
+++ b/media/java/android/media/audiopolicy/AudioProductStrategy.java
@@ -32,6 +32,7 @@
import com.android.internal.util.Preconditions;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -182,7 +183,7 @@
AudioProductStrategy thatStrategy = (AudioProductStrategy) o;
return mName == thatStrategy.mName && mId == thatStrategy.mId
- && mAudioAttributesGroups.equals(thatStrategy.mAudioAttributesGroups);
+ && Arrays.equals(mAudioAttributesGroups, thatStrategy.mAudioAttributesGroups);
}
/**
@@ -415,7 +416,7 @@
return mVolumeGroupId == thatAag.mVolumeGroupId
&& mLegacyStreamType == thatAag.mLegacyStreamType
- && mAudioAttributes.equals(thatAag.mAudioAttributes);
+ && Arrays.equals(mAudioAttributes, thatAag.mAudioAttributes);
}
public int getStreamType() {
diff --git a/media/java/android/media/audiopolicy/AudioVolumeGroup.java b/media/java/android/media/audiopolicy/AudioVolumeGroup.java
index 79be922..d58111d 100644
--- a/media/java/android/media/audiopolicy/AudioVolumeGroup.java
+++ b/media/java/android/media/audiopolicy/AudioVolumeGroup.java
@@ -114,7 +114,7 @@
AudioVolumeGroup thatAvg = (AudioVolumeGroup) o;
return mName == thatAvg.mName && mId == thatAvg.mId
- && mAudioAttributes.equals(thatAvg.mAudioAttributes);
+ && Arrays.equals(mAudioAttributes, thatAvg.mAudioAttributes);
}
/**
diff --git a/media/java/android/media/metrics/PlaybackMetrics.java b/media/java/android/media/metrics/PlaybackMetrics.java
index e71ee20..51a2c9d 100644
--- a/media/java/android/media/metrics/PlaybackMetrics.java
+++ b/media/java/android/media/metrics/PlaybackMetrics.java
@@ -402,9 +402,10 @@
@Override
public int hashCode() {
return Objects.hash(mMediaDurationMillis, mStreamSource, mStreamType, mPlaybackType,
- mDrmType, mContentType, mPlayerName, mPlayerVersion, mExperimentIds,
- mVideoFramesPlayed, mVideoFramesDropped, mAudioUnderrunCount, mNetworkBytesRead,
- mLocalBytesRead, mNetworkTransferDurationMillis, mDrmSessionId);
+ mDrmType, mContentType, mPlayerName, mPlayerVersion,
+ Arrays.hashCode(mExperimentIds), mVideoFramesPlayed, mVideoFramesDropped,
+ mAudioUnderrunCount, mNetworkBytesRead, mLocalBytesRead,
+ mNetworkTransferDurationMillis, Arrays.hashCode(mDrmSessionId));
}
@Override
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraErrorCollector.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraErrorCollector.java
index 41914b8..ebf1a75 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraErrorCollector.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraErrorCollector.java
@@ -16,10 +16,6 @@
package com.android.mediaframeworktest.helpers;
-import org.hamcrest.CoreMatchers;
-import org.hamcrest.Matcher;
-import org.junit.rules.ErrorCollector;
-
import android.graphics.Rect;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CaptureRequest;
@@ -30,6 +26,10 @@
import android.util.Log;
import android.util.Size;
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.Matcher;
+import org.junit.rules.ErrorCollector;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@@ -903,7 +903,7 @@
if ((value = expectKeyValueNotNull(characteristics, key)) == null) {
return;
}
- String reason = "Key " + key.getName() + " value " + value
+ String reason = "Key " + key.getName() + " value " + Arrays.toString(value)
+ " doesn't contain the expected value " + expected;
expectContains(reason, value, expected);
}
@@ -921,7 +921,7 @@
if ((value = expectKeyValueNotNull(characteristics, key)) == null) {
return;
}
- String reason = "Key " + key.getName() + " value " + value
+ String reason = "Key " + key.getName() + " value " + Arrays.toString(value)
+ " doesn't contain the expected value " + expected;
expectContains(reason, value, expected);
}
@@ -939,7 +939,7 @@
if ((value = expectKeyValueNotNull(characteristics, key)) == null) {
return;
}
- String reason = "Key " + key.getName() + " value " + value
+ String reason = "Key " + key.getName() + " value " + Arrays.toString(value)
+ " doesn't contain the expected value " + expected;
expectContains(reason, value, expected);
}
@@ -960,7 +960,7 @@
public <T> void expectContains(T[] values, T expected) {
String reason = "Expected value " + expected
- + " is not contained in the given values " + values;
+ + " is not contained in the given values " + Arrays.toString(values);
expectContains(reason, values, expected);
}
@@ -996,7 +996,7 @@
public void expectContains(int[] values, int expected) {
String reason = "Expected value " + expected
- + " is not contained in the given values " + values;
+ + " is not contained in the given values " + Arrays.toString(values);
expectContains(reason, values, expected);
}
@@ -1040,7 +1040,7 @@
*/
public void expectContains(boolean[] values, boolean expected) {
String reason = "Expected value " + expected
- + " is not contained in the given values " + values;
+ + " is not contained in the given values " + Arrays.toString(values);
expectContains(reason, values, expected);
}
diff --git a/opengl/java/android/opengl/GLLogWrapper.java b/opengl/java/android/opengl/GLLogWrapper.java
index bff7396..e645afa 100644
--- a/opengl/java/android/opengl/GLLogWrapper.java
+++ b/opengl/java/android/opengl/GLLogWrapper.java
@@ -2812,7 +2812,7 @@
public void glDeleteBuffers(int n, int[] buffers, int offset) {
begin("glDeleteBuffers");
arg("n", n);
- arg("buffers", buffers.toString());
+ arg("buffers", Arrays.toString(buffers));
arg("offset", offset);
end();
mgl11.glDeleteBuffers(n, buffers, offset);
@@ -2831,7 +2831,7 @@
public void glGenBuffers(int n, int[] buffers, int offset) {
begin("glGenBuffers");
arg("n", n);
- arg("buffers", buffers.toString());
+ arg("buffers", Arrays.toString(buffers));
arg("offset", offset);
end();
mgl11.glGenBuffers(n, buffers, offset);
@@ -2850,7 +2850,7 @@
public void glGetBooleanv(int pname, boolean[] params, int offset) {
begin("glGetBooleanv");
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetBooleanv(pname, params, offset);
@@ -2871,7 +2871,7 @@
begin("glGetBufferParameteriv");
arg("target", target);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetBufferParameteriv(target, pname, params, offset);
@@ -2891,7 +2891,7 @@
public void glGetClipPlanef(int pname, float[] eqn, int offset) {
begin("glGetClipPlanef");
arg("pname", pname);
- arg("eqn", eqn.toString());
+ arg("eqn", Arrays.toString(eqn));
arg("offset", offset);
end();
mgl11.glGetClipPlanef(pname, eqn, offset);
@@ -2910,7 +2910,7 @@
public void glGetClipPlanex(int pname, int[] eqn, int offset) {
begin("glGetClipPlanex");
arg("pname", pname);
- arg("eqn", eqn.toString());
+ arg("eqn", Arrays.toString(eqn));
arg("offset", offset);
end();
mgl11.glGetClipPlanex(pname, eqn, offset);
@@ -2928,7 +2928,7 @@
public void glGetFixedv(int pname, int[] params, int offset) {
begin("glGetFixedv");
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetFixedv(pname, params, offset);
@@ -2946,7 +2946,7 @@
public void glGetFloatv(int pname, float[] params, int offset) {
begin("glGetFloatv");
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetFloatv(pname, params, offset);
@@ -2965,7 +2965,7 @@
begin("glGetLightfv");
arg("light", light);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetLightfv(light, pname, params, offset);
@@ -2986,7 +2986,7 @@
begin("glGetLightxv");
arg("light", light);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetLightxv(light, pname, params, offset);
@@ -3008,7 +3008,7 @@
begin("glGetMaterialfv");
arg("face", face);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetMaterialfv(face, pname, params, offset);
@@ -3029,7 +3029,7 @@
begin("glGetMaterialxv");
arg("face", face);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetMaterialxv(face, pname, params, offset);
@@ -3050,7 +3050,7 @@
begin("glGetTexEnviv");
arg("env", env);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetTexEnviv(env, pname, params, offset);
@@ -3071,7 +3071,7 @@
begin("glGetTexEnviv");
arg("env", env);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetTexEnviv(env, pname, params, offset);
@@ -3092,7 +3092,7 @@
begin("glGetTexParameterfv");
arg("target", target);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetTexParameterfv(target, pname, params, offset);
@@ -3113,7 +3113,7 @@
begin("glGetTexParameteriv");
arg("target", target);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetTexEnviv(target, pname, params, offset);
@@ -3135,7 +3135,7 @@
begin("glGetTexParameterxv");
arg("target", target);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glGetTexParameterxv(target, pname, params, offset);
@@ -3191,7 +3191,7 @@
public void glPointParameterfv(int pname, float[] params, int offset) {
begin("glPointParameterfv");
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glPointParameterfv(pname, params, offset);
@@ -3219,7 +3219,7 @@
public void glPointParameterxv(int pname, int[] params, int offset) {
begin("glPointParameterxv");
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glPointParameterxv(pname, params, offset);
@@ -3259,7 +3259,7 @@
begin("glTexEnviv");
arg("target", target);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glTexEnviv(target, pname, params, offset);
@@ -3281,7 +3281,7 @@
begin("glTexParameterfv");
arg("target", target);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glTexParameterfv( target, pname, params, offset);
@@ -3313,7 +3313,7 @@
begin("glTexParameterxv");
arg("target", target);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11.glTexParameterxv(target, pname, params, offset);
@@ -3356,7 +3356,7 @@
public void glGetPointerv(int pname, Buffer[] params) {
begin("glGetPointerv");
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
end();
mgl11.glGetPointerv(pname, params);
checkError();
@@ -3513,7 +3513,7 @@
public void glDeleteFramebuffersOES(int n, int[] framebuffers, int offset) {
begin("glDeleteFramebuffersOES");
arg("n", n);
- arg("framebuffers", framebuffers.toString());
+ arg("framebuffers", Arrays.toString(framebuffers));
arg("offset", offset);
end();
mgl11ExtensionPack.glDeleteFramebuffersOES(n, framebuffers, offset);
@@ -3534,7 +3534,7 @@
public void glDeleteRenderbuffersOES(int n, int[] renderbuffers, int offset) {
begin("glDeleteRenderbuffersOES");
arg("n", n);
- arg("renderbuffers", renderbuffers.toString());
+ arg("renderbuffers", Arrays.toString(renderbuffers));
arg("offset", offset);
end();
mgl11ExtensionPack.glDeleteRenderbuffersOES(n, renderbuffers, offset);
@@ -3591,7 +3591,7 @@
public void glGenFramebuffersOES(int n, int[] framebuffers, int offset) {
begin("glGenFramebuffersOES");
arg("n", n);
- arg("framebuffers", framebuffers.toString());
+ arg("framebuffers", Arrays.toString(framebuffers));
arg("offset", offset);
end();
mgl11ExtensionPack.glGenFramebuffersOES(n, framebuffers, offset);
@@ -3612,7 +3612,7 @@
public void glGenRenderbuffersOES(int n, int[] renderbuffers, int offset) {
begin("glGenRenderbuffersOES");
arg("n", n);
- arg("renderbuffers", renderbuffers.toString());
+ arg("renderbuffers", Arrays.toString(renderbuffers));
arg("offset", offset);
end();
mgl11ExtensionPack.glGenRenderbuffersOES(n, renderbuffers, offset);
@@ -3636,7 +3636,7 @@
arg("target", target);
arg("attachment", attachment);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11ExtensionPack.glGetFramebufferAttachmentParameterivOES(target, attachment, pname, params, offset);
@@ -3662,7 +3662,7 @@
begin("glGetRenderbufferParameterivOES");
arg("target", target);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11ExtensionPack.glGetRenderbufferParameterivOES(target, pname, params, offset);
@@ -3686,7 +3686,7 @@
begin("glGetTexGenfv");
arg("coord", coord);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11ExtensionPack.glGetTexGenfv(coord, pname, params, offset);
@@ -3709,7 +3709,7 @@
begin("glGetTexGeniv");
arg("coord", coord);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11ExtensionPack.glGetTexGeniv(coord, pname, params, offset);
@@ -3732,7 +3732,7 @@
begin("glGetTexGenxv");
arg("coord", coord);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11ExtensionPack.glGetTexGenxv(coord, pname, params, offset);
@@ -3799,7 +3799,7 @@
begin("glTexGenfv");
arg("coord", coord);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11ExtensionPack.glTexGenfv(coord, pname, params, offset);
@@ -3833,7 +3833,7 @@
begin("glTexGeniv");
arg("coord", coord);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11ExtensionPack.glTexGeniv(coord, pname, params, offset);
@@ -3867,7 +3867,7 @@
begin("glTexGenxv");
arg("coord", coord);
arg("pname", pname);
- arg("params", params.toString());
+ arg("params", Arrays.toString(params));
arg("offset", offset);
end();
mgl11ExtensionPack.glTexGenxv(coord, pname, params, offset);
diff --git a/packages/SystemUI/OWNERS b/packages/SystemUI/OWNERS
index 7076ad9..9ef772e 100644
--- a/packages/SystemUI/OWNERS
+++ b/packages/SystemUI/OWNERS
@@ -13,7 +13,7 @@
brockman@google.com
brzezinski@google.com
brycelee@google.com
-ccassidy@google.com
+caitlinshk@google.com
chrisgollner@google.com
dupin@google.com
ethibodeau@google.com
diff --git a/packages/SystemUI/src/com/android/systemui/volume/OWNERS b/packages/SystemUI/src/com/android/systemui/volume/OWNERS
new file mode 100644
index 0000000..e627d61
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/OWNERS
@@ -0,0 +1,4 @@
+asc@google.com # send reviews here
+
+juliacr@google.com
+tsuji@google.com
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaResumeListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaResumeListenerTest.kt
index 3d3ac83..83168cb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaResumeListenerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaResumeListenerTest.kt
@@ -305,7 +305,7 @@
// Then we save an update with the current time
verify(sharedPrefsEditor).putString(any(), (capture(componentCaptor)))
componentCaptor.value.split(ResumeMediaBrowser.DELIMITER.toRegex())
- ?.dropLastWhile { it.isEmpty() }.forEach {
+ .dropLastWhile { it.isEmpty() }.forEach {
val result = it.split("/")
assertThat(result.size).isEqualTo(3)
assertThat(result[2].toLong()).isEqualTo(currentTime)
@@ -392,7 +392,7 @@
// Then we store the new lastPlayed time
verify(sharedPrefsEditor).putString(any(), (capture(componentCaptor)))
componentCaptor.value.split(ResumeMediaBrowser.DELIMITER.toRegex())
- ?.dropLastWhile { it.isEmpty() }.forEach {
+ .dropLastWhile { it.isEmpty() }.forEach {
val result = it.split("/")
assertThat(result.size).isEqualTo(3)
assertThat(result[2].toLong()).isEqualTo(currentTime)
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 99c8495..9a1d295 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -685,8 +685,8 @@
if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_PACKAGE_BROADCAST_RECEIVER)) {
mTraceManager.logTrace(LOG_TAG + ".PM.onHandleForceStop",
FLAGS_PACKAGE_BROADCAST_RECEIVER,
- "intent=" + intent + ";packages=" + packages + ";uid=" + uid
- + ";doit=" + doit);
+ "intent=" + intent + ";packages=" + Arrays.toString(packages)
+ + ";uid=" + uid + ";doit=" + doit);
}
synchronized (mLock) {
final int userId = getChangingUserId();
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java
index f731c44..d20fa8e 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java
@@ -447,7 +447,7 @@
StringBuilder builder = new StringBuilder(super.toString());
if (getState() != STATE_GESTURE_CANCELED) {
builder.append(", mBase: ")
- .append(mBase.toString())
+ .append(Arrays.toString(mBase))
.append(", mMinPixelsBetweenSamplesX:")
.append(mMinPixelsBetweenSamplesX)
.append(", mMinPixelsBetweenSamplesY:")
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
index ca7fe0c..b9cbf12 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
@@ -85,7 +85,6 @@
import android.os.Process;
import android.os.RemoteException;
import android.os.SELinux;
-import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.WorkSource;
@@ -2832,7 +2831,7 @@
+ " includekeyvalue="
+ doKeyValue
+ " pkgs="
- + pkgList));
+ + Arrays.toString(pkgList)));
}
Slog.i(TAG, addUserIdToLogMessage(mUserId, "Beginning adb backup..."));
diff --git a/services/backup/java/com/android/server/backup/utils/BackupEligibilityRules.java b/services/backup/java/com/android/server/backup/utils/BackupEligibilityRules.java
index bd1ac2dc..00f0867 100644
--- a/services/backup/java/com/android/server/backup/utils/BackupEligibilityRules.java
+++ b/services/backup/java/com/android/server/backup/utils/BackupEligibilityRules.java
@@ -25,9 +25,9 @@
import android.annotation.Nullable;
import android.app.backup.BackupManager.OperationType;
import android.app.backup.BackupTransport;
+import android.app.compat.CompatChanges;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
-import android.app.compat.CompatChanges;
import android.compat.annotation.Overridable;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
@@ -46,6 +46,7 @@
import com.google.android.collect.Sets;
+import java.util.Arrays;
import java.util.Set;
/**
@@ -359,8 +360,8 @@
}
if (DEBUG) {
- Slog.v(TAG, "signaturesMatch(): stored=" + storedSigs + " device="
- + signingInfo.getApkContentsSigners());
+ Slog.v(TAG, "signaturesMatch(): stored=" + Arrays.toString(storedSigs)
+ + " device=" + Arrays.toString(signingInfo.getApkContentsSigners()));
}
final int nStored = storedSigs.length;
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 8856147..bc065d1 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -17794,6 +17794,13 @@
}
/**
+ * Reset the dropbox rate limiter
+ */
+ void resetDropboxRateLimiter() {
+ mDropboxRateLimiter.reset();
+ }
+
+ /**
* Kill processes for the user with id userId and that depend on the package named packageName
*/
@Override
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index 570a157..82d0b67 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -350,6 +350,8 @@
return runSetBgAbusiveUids(pw);
case "list-bg-exemptions-config":
return runListBgExemptionsConfig(pw);
+ case "reset-dropbox-rate-limiter":
+ return runResetDropboxRateLimiter();
default:
return handleDefaultCommands(cmd);
}
@@ -3374,6 +3376,11 @@
return 0;
}
+ int runResetDropboxRateLimiter() throws RemoteException {
+ mInternal.resetDropboxRateLimiter();
+ return 0;
+ }
+
private Resources getResources(PrintWriter pw) throws RemoteException {
// system resources does not contain all the device configuration, construct it manually.
Configuration config = mInterface.getConfiguration();
diff --git a/services/core/java/com/android/server/am/DropboxRateLimiter.java b/services/core/java/com/android/server/am/DropboxRateLimiter.java
index baf062d..6087f76 100644
--- a/services/core/java/com/android/server/am/DropboxRateLimiter.java
+++ b/services/core/java/com/android/server/am/DropboxRateLimiter.java
@@ -19,11 +19,13 @@
import android.os.SystemClock;
import android.text.format.DateUtils;
import android.util.ArrayMap;
+import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
/** Rate limiter for adding errors into dropbox. */
public class DropboxRateLimiter {
+ private static final String TAG = "DropboxRateLimiter";
// After RATE_LIMIT_ALLOWED_ENTRIES have been collected (for a single breakdown of
// process/eventType) further entries will be rejected until RATE_LIMIT_BUFFER_DURATION has
// elapsed, after which the current count for this breakdown will be reset.
@@ -105,6 +107,15 @@
mLastMapCleanUp = now;
}
+ /** Resets the rate limiter memory. */
+ void reset() {
+ synchronized (mErrorClusterRecords) {
+ mErrorClusterRecords.clear();
+ }
+ mLastMapCleanUp = 0L;
+ Slog.i(TAG, "Rate limiter reset.");
+ }
+
String errorKey(String eventType, String processName) {
return eventType + processName;
}
diff --git a/services/core/java/com/android/server/appop/DiscreteRegistry.java b/services/core/java/com/android/server/appop/DiscreteRegistry.java
index 158092f..dd0c4b86 100644
--- a/services/core/java/com/android/server/appop/DiscreteRegistry.java
+++ b/services/core/java/com/android/server/appop/DiscreteRegistry.java
@@ -816,8 +816,7 @@
}
} catch (Throwable t) {
- Slog.e(TAG, "Error while cleaning timeline files: " + t.getMessage() + " "
- + t.getStackTrace());
+ Slog.e(TAG, "Error while cleaning timeline files: ", t);
}
}
}
diff --git a/services/core/java/com/android/server/backup/BackupUtils.java b/services/core/java/com/android/server/backup/BackupUtils.java
index 96c5621..76eba16 100644
--- a/services/core/java/com/android/server/backup/BackupUtils.java
+++ b/services/core/java/com/android/server/backup/BackupUtils.java
@@ -30,6 +30,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
public class BackupUtils {
private static final String TAG = "BackupUtils";
@@ -64,8 +65,9 @@
}
if (DEBUG) {
- Slog.v(TAG, "signaturesMatch(): stored=" + storedSigHashes
- + " device=" + signingInfo.getApkContentsSigners());
+ Slog.v(TAG, "signaturesMatch(): stored="
+ + storedSigHashes.stream().map(Arrays::toString).collect(Collectors.toList())
+ + " device=" + Arrays.toString(signingInfo.getApkContentsSigners()));
}
final int nStored = storedSigHashes.size();
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 931c692..9cb1f1d 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -756,6 +756,8 @@
int errorCode, @NonNull final String packageName, @Nullable final String sessionKey,
@NonNull final VpnProfileState profileState, @Nullable final Network underlyingNetwork,
@Nullable final NetworkCapabilities nc, @Nullable final LinkProperties lp) {
+ // Add log for debugging flaky test. b/242833779
+ Log.d(TAG, "buildVpnManagerEventIntent: sessionKey = " + sessionKey);
final Intent intent = new Intent(VpnManager.ACTION_VPN_MANAGER_EVENT);
intent.setPackage(packageName);
intent.addCategory(category);
@@ -1110,7 +1112,7 @@
// Except for Settings and VpnDialogs, the caller should be matched one of oldPackage or
// newPackage. Otherwise, non VPN owner might get the VPN always-on status of the VPN owner.
// See b/191382886.
- if (!hasControlVpnPermission()) {
+ if (mContext.checkCallingOrSelfPermission(CONTROL_VPN) != PERMISSION_GRANTED) {
if (oldPackage != null) {
verifyCallingUidAndPackage(oldPackage);
}
@@ -1196,25 +1198,7 @@
mContext.unbindService(mConnection);
cleanupVpnStateLocked();
} else if (mVpnRunner != null) {
- // Build intent first because the sessionKey will be reset after performing
- // VpnRunner.exit(). Also, cache mOwnerUID even if ownerUID will not be changed in
- // VpnRunner.exit() to prevent design being changed in the future.
- // TODO(b/230548427): Remove SDK check once VPN related stuff are decoupled from
- // ConnectivityServiceTest.
- final int ownerUid = mOwnerUID;
- Intent intent = null;
- if (SdkLevel.isAtLeastT() && isVpnApp(mPackage)) {
- intent = buildVpnManagerEventIntent(
- VpnManager.CATEGORY_EVENT_DEACTIVATED_BY_USER,
- -1 /* errorClass */, -1 /* errorCode*/, mPackage,
- getSessionKeyLocked(), makeVpnProfileStateLocked(),
- null /* underlyingNetwork */, null /* nc */, null /* lp */);
- }
- // cleanupVpnStateLocked() is called from mVpnRunner.exit()
- mVpnRunner.exit();
- if (intent != null && isVpnApp(mPackage)) {
- notifyVpnManagerVpnStopped(mPackage, ownerUid, intent);
- }
+ stopVpnRunnerAndNotifyAppLocked(mPackage);
}
try {
@@ -2073,10 +2057,6 @@
"Unauthorized Caller");
}
- private boolean hasControlVpnPermission() {
- return mContext.checkCallingOrSelfPermission(CONTROL_VPN) == PERMISSION_GRANTED;
- }
-
private class Connection implements ServiceConnection {
private IBinder mService;
@@ -2778,6 +2758,8 @@
mIpSecManager = (IpSecManager) mContext.getSystemService(Context.IPSEC_SERVICE);
mNetworkCallback = new VpnIkev2Utils.Ikev2VpnNetworkCallback(TAG, this, mExecutor);
mSessionKey = UUID.randomUUID().toString();
+ // Add log for debugging flaky test. b/242833779
+ Log.d(TAG, "Generate session key = " + mSessionKey);
// Set the policy so that cancelled tasks will be removed from the work queue
mExecutor.setRemoveOnCancelPolicy(true);
@@ -3901,10 +3883,8 @@
Binder.restoreCallingIdentity(token);
}
- // If package has CONTROL_VPN, grant the ACTIVATE_PLATFORM_VPN appop.
- if (hasControlVpnPermission()) {
- setPackageAuthorization(packageName, VpnManager.TYPE_VPN_PLATFORM);
- }
+ // TODO: if package has CONTROL_VPN, grant the ACTIVATE_PLATFORM_VPN appop.
+ // This mirrors the prepareAndAuthorize that is used by VpnService.
// Return whether the app is already pre-consented
return isVpnProfilePreConsented(mContext, packageName);
@@ -3972,7 +3952,13 @@
@GuardedBy("this")
@Nullable
private String getSessionKeyLocked() {
- return isIkev2VpnRunner() ? ((IkeV2VpnRunner) mVpnRunner).mSessionKey : null;
+ // Add log for debugging flaky test. b/242833779
+ final boolean isIkev2VpnRunner = isIkev2VpnRunner();
+ final String sessionKey =
+ isIkev2VpnRunner ? ((IkeV2VpnRunner) mVpnRunner).mSessionKey : null;
+ Log.d(TAG, "getSessionKeyLocked: isIkev2VpnRunner = " + isIkev2VpnRunner
+ + ", sessionKey = " + sessionKey);
+ return sessionKey;
}
/**
@@ -4074,6 +4060,29 @@
}
}
+ @GuardedBy("this")
+ private void stopVpnRunnerAndNotifyAppLocked(@NonNull String packageName) {
+ // Build intent first because the sessionKey will be reset after performing
+ // VpnRunner.exit(). Also, cache mOwnerUID even if ownerUID will not be changed in
+ // VpnRunner.exit() to prevent design being changed in the future.
+ // TODO(b/230548427): Remove SDK check once VPN related stuff are decoupled from
+ // ConnectivityServiceTest.
+ final int ownerUid = mOwnerUID;
+ Intent intent = null;
+ if (SdkLevel.isAtLeastT() && isVpnApp(packageName)) {
+ intent = buildVpnManagerEventIntent(
+ VpnManager.CATEGORY_EVENT_DEACTIVATED_BY_USER,
+ -1 /* errorClass */, -1 /* errorCode*/, packageName,
+ getSessionKeyLocked(), makeVpnProfileStateLocked(),
+ null /* underlyingNetwork */, null /* nc */, null /* lp */);
+ }
+ // cleanupVpnStateLocked() is called from mVpnRunner.exit()
+ mVpnRunner.exit();
+ if (intent != null && isVpnApp(packageName)) {
+ notifyVpnManagerVpnStopped(packageName, ownerUid, intent);
+ }
+ }
+
/**
* Stops an already running VPN Profile for the given package.
*
@@ -4090,18 +4099,7 @@
// To stop the VPN profile, the caller must be the current prepared package and must be
// running an Ikev2VpnProfile.
if (isCurrentIkev2VpnLocked(packageName)) {
- // Build intent first because the sessionKey will be reset after performing
- // VpnRunner.exit(). Also, cache mOwnerUID even if ownerUID will not be changed in
- // VpnRunner.exit() to prevent design being changed in the future.
- final int ownerUid = mOwnerUID;
- final Intent intent = buildVpnManagerEventIntent(
- VpnManager.CATEGORY_EVENT_DEACTIVATED_BY_USER,
- -1 /* errorClass */, -1 /* errorCode*/, packageName,
- getSessionKeyLocked(), makeVpnProfileStateLocked(),
- null /* underlyingNetwork */, null /* nc */, null /* lp */);
-
- mVpnRunner.exit();
- notifyVpnManagerVpnStopped(packageName, ownerUid, intent);
+ stopVpnRunnerAndNotifyAppLocked(packageName);
}
}
diff --git a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java
index aba7572..d9ca4d3 100644
--- a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java
+++ b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java
@@ -554,7 +554,7 @@
mAGpsDataConnectionIpAddr = InetAddress.getByAddress(suplIpAddr);
if (DEBUG) Log.d(TAG, "IP address converted to: " + mAGpsDataConnectionIpAddr);
} catch (UnknownHostException e) {
- Log.e(TAG, "Bad IP Address: " + suplIpAddr, e);
+ Log.e(TAG, "Bad IP Address: " + Arrays.toString(suplIpAddr), e);
}
}
diff --git a/services/core/java/com/android/server/logcat/OWNERS b/services/core/java/com/android/server/logcat/OWNERS
index 9588fa9..87d30f3 100644
--- a/services/core/java/com/android/server/logcat/OWNERS
+++ b/services/core/java/com/android/server/logcat/OWNERS
@@ -1,5 +1,7 @@
cbrubaker@google.com
eunjeongshin@google.com
+georgechan@google.com
jsharkey@google.com
vishwath@google.com
wenhaowang@google.com
+xiaozhenl@google.com
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index c73c5a0..e2c4cbd 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -123,6 +123,7 @@
import static android.telephony.CarrierConfigManager.KEY_DATA_WARNING_NOTIFICATION_BOOL;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+import static com.android.internal.annotations.VisibleForTesting.Visibility.PRIVATE;
import static com.android.internal.util.ArrayUtils.appendInt;
import static com.android.internal.util.XmlUtils.readBooleanAttribute;
import static com.android.internal.util.XmlUtils.readIntAttribute;
@@ -3158,7 +3159,8 @@
* active merge set [A,B], we'd return a new template that primarily matches
* A, but also matches B.
*/
- private static NetworkTemplate normalizeTemplate(@NonNull NetworkTemplate template,
+ @VisibleForTesting(visibility = PRIVATE)
+ static NetworkTemplate normalizeTemplate(@NonNull NetworkTemplate template,
@NonNull List<String[]> mergedList) {
// Now there are several types of network which uses Subscriber Id to store network
// information. For instance:
@@ -3168,6 +3170,12 @@
if (template.getSubscriberIds().isEmpty()) return template;
for (final String[] merged : mergedList) {
+ // In some rare cases (e.g. b/243015487), merged subscriberId list might contain
+ // duplicated items. Deduplication for better error handling.
+ final ArraySet mergedSet = new ArraySet(merged);
+ if (mergedSet.size() != merged.length) {
+ Log.wtf(TAG, "Duplicated merged list detected: " + Arrays.toString(merged));
+ }
// TODO: Handle incompatible subscriberIds if that happens in practice.
for (final String subscriberId : template.getSubscriberIds()) {
if (com.android.net.module.util.CollectionUtils.contains(merged, subscriberId)) {
@@ -3175,7 +3183,7 @@
// a template that matches all merged subscribers.
return new NetworkTemplate.Builder(template.getMatchRule())
.setWifiNetworkKeys(template.getWifiNetworkKeys())
- .setSubscriberIds(Set.of(merged))
+ .setSubscriberIds(mergedSet)
.setMeteredness(template.getMeteredness())
.build();
}
diff --git a/services/core/java/com/android/server/net/watchlist/WatchlistLoggingHandler.java b/services/core/java/com/android/server/net/watchlist/WatchlistLoggingHandler.java
index 5599b0c..8ce7b57 100644
--- a/services/core/java/com/android/server/net/watchlist/WatchlistLoggingHandler.java
+++ b/services/core/java/com/android/server/net/watchlist/WatchlistLoggingHandler.java
@@ -36,7 +36,6 @@
import android.text.TextUtils;
import android.util.Slog;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.HexDump;
@@ -45,8 +44,8 @@
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.GregorianCalendar;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -155,7 +154,7 @@
try {
final String[] packageNames = mPm.getPackagesForUid(uid);
if (packageNames == null || packageNames.length == 0) {
- Slog.e(TAG, "Couldn't find package: " + packageNames);
+ Slog.e(TAG, "Couldn't find package: " + Arrays.toString(packageNames));
return false;
}
ai = mPm.getApplicationInfo(packageNames[0], 0);
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index f1dbad61..d8e4b38 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -420,7 +420,7 @@
if (mAccessibilityTracing.isTracingEnabled(FLAGS_WINDOWS_FOR_ACCESSIBILITY_CALLBACK)) {
mAccessibilityTracing.logTrace(TAG + ".onSomeWindowResizedOrMoved",
FLAGS_WINDOWS_FOR_ACCESSIBILITY_CALLBACK,
- "displayIds={" + displayIds.toString() + "}", "".getBytes(), callingUid);
+ "displayIds={" + Arrays.toString(displayIds) + "}", "".getBytes(), callingUid);
}
// Not relevant for the display magnifier.
for (int i = 0; i < displayIds.length; i++) {
diff --git a/services/core/java/com/android/server/wm/TaskPersister.java b/services/core/java/com/android/server/wm/TaskPersister.java
index b8d2feb..09fd900 100644
--- a/services/core/java/com/android/server/wm/TaskPersister.java
+++ b/services/core/java/com/android/server/wm/TaskPersister.java
@@ -53,6 +53,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -424,7 +425,7 @@
private static void removeObsoleteFiles(ArraySet<Integer> persistentTaskIds, File[] files) {
if (DEBUG) Slog.d(TAG, "removeObsoleteFiles: persistentTaskIds=" + persistentTaskIds +
- " files=" + files);
+ " files=" + Arrays.toString(files));
if (files == null) {
Slog.e(TAG, "File error accessing recents directory (directory doesn't exist?).");
return;
diff --git a/services/credentials/OWNERS b/services/credentials/OWNERS
new file mode 100644
index 0000000..f3b43c1
--- /dev/null
+++ b/services/credentials/OWNERS
@@ -0,0 +1 @@
+include /core/java/android/credentials/OWNERS
diff --git a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
index d322290..3c68662 100644
--- a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
+++ b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
@@ -205,6 +205,7 @@
.setRequiresDeviceIdle(true)
.setRequiresCharging(true)
.setPeriodic(BG_PROCESS_PERIOD)
+ .setPriority(JobInfo.PRIORITY_MIN)
.build());
}
diff --git a/services/tests/PackageManagerServiceTests/host/src/com/android/server/pm/test/SystemStubMultiUserDisableUninstallTest.kt b/services/tests/PackageManagerServiceTests/host/src/com/android/server/pm/test/SystemStubMultiUserDisableUninstallTest.kt
index 45e0d09..4ef6875 100644
--- a/services/tests/PackageManagerServiceTests/host/src/com/android/server/pm/test/SystemStubMultiUserDisableUninstallTest.kt
+++ b/services/tests/PackageManagerServiceTests/host/src/com/android/server/pm/test/SystemStubMultiUserDisableUninstallTest.kt
@@ -628,6 +628,7 @@
CodePath.SAME, CodePath.DIFFERENT ->
throw AssertionError("secondDataPath cannot be a data path")
CodePath.SYSTEM -> assertThat(codePaths[1]).isEqualTo(stubFile.parent.toString())
+ else -> {}
}
}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/MotionEventInjectorTest.java b/services/tests/servicestests/src/com/android/server/accessibility/MotionEventInjectorTest.java
index 59b69f9..233caf9 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/MotionEventInjectorTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/MotionEventInjectorTest.java
@@ -837,7 +837,7 @@
@Override
public void describeTo(Description description) {
- description.appendText("Contains points " + points);
+ description.appendText("Contains points " + Arrays.toString(points));
}
};
}
diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
index 0f2fe44..821ce5e 100644
--- a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
@@ -75,6 +75,7 @@
import static com.android.server.net.NetworkPolicyManagerService.TYPE_RAPID;
import static com.android.server.net.NetworkPolicyManagerService.TYPE_WARNING;
import static com.android.server.net.NetworkPolicyManagerService.UidBlockedState.getEffectiveBlockedReasons;
+import static com.android.server.net.NetworkPolicyManagerService.normalizeTemplate;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -2030,6 +2031,18 @@
METERED_NO, actualPolicy.template.getMeteredness());
}
+ @Test
+ public void testNormalizeTemplate_duplicatedMergedImsiList() {
+ final NetworkTemplate template = new NetworkTemplate.Builder(MATCH_CARRIER)
+ .setSubscriberIds(Set.of(TEST_IMSI)).build();
+ final String[] mergedImsiGroup = new String[] {TEST_IMSI, TEST_IMSI};
+ final ArrayList<String[]> mergedList = new ArrayList<>();
+ mergedList.add(mergedImsiGroup);
+ // Verify the duplicated items in the merged IMSI list won't crash the system.
+ final NetworkTemplate result = normalizeTemplate(template, mergedList);
+ assertEquals(template, result);
+ }
+
private String formatBlockedStateError(int uid, int rule, boolean metered,
boolean backgroundRestricted) {
return String.format(
diff --git a/services/usage/java/com/android/server/usage/AppTimeLimitController.java b/services/usage/java/com/android/server/usage/AppTimeLimitController.java
index f169926..1b34b81 100644
--- a/services/usage/java/com/android/server/usage/AppTimeLimitController.java
+++ b/services/usage/java/com/android/server/usage/AppTimeLimitController.java
@@ -772,7 +772,7 @@
observerApp.appUsageGroups.append(observerId, group);
if (DEBUG) {
- Slog.d(TAG, "addObserver " + observed + " for " + timeLimit);
+ Slog.d(TAG, "addObserver " + Arrays.toString(observed) + " for " + timeLimit);
}
user.addUsageGroup(group);
@@ -881,7 +881,7 @@
observerApp.appUsageLimitGroups.append(observerId, group);
if (DEBUG) {
- Slog.d(TAG, "addObserver " + observed + " for " + timeLimit);
+ Slog.d(TAG, "addObserver " + Arrays.toString(observed) + " for " + timeLimit);
}
user.addUsageGroup(group);
diff --git a/telecomm/java/android/telecom/DisconnectCause.java b/telecomm/java/android/telecom/DisconnectCause.java
index 0f034ad..b003f59 100644
--- a/telecomm/java/android/telecom/DisconnectCause.java
+++ b/telecomm/java/android/telecom/DisconnectCause.java
@@ -88,8 +88,8 @@
public static final String REASON_WIFI_ON_BUT_WFC_OFF = "REASON_WIFI_ON_BUT_WFC_OFF";
/**
- * Reason code (returned via {@link #getReason()}), which indicates that the video telephony
- * call was disconnected because IMS access is blocked.
+ * Reason code (returned via {@link #getReason()}), which indicates that the call was
+ * disconnected because IMS access is blocked.
*/
public static final String REASON_IMS_ACCESS_BLOCKED = "REASON_IMS_ACCESS_BLOCKED";
diff --git a/telephony/common/com/google/android/mms/pdu/PduParser.java b/telephony/common/com/google/android/mms/pdu/PduParser.java
index 677fe2f..62eac7a 100755
--- a/telephony/common/com/google/android/mms/pdu/PduParser.java
+++ b/telephony/common/com/google/android/mms/pdu/PduParser.java
@@ -793,7 +793,7 @@
try {
if (LOCAL_LOGV) {
Log.v(LOG_TAG, "parseHeaders: CONTENT_TYPE: " + headerField +
- contentType.toString());
+ Arrays.toString(contentType));
}
headers.setTextString(contentType, PduHeaders.CONTENT_TYPE);
} catch(NullPointerException e) {
diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java
index 4469ffc..7eec86a 100644
--- a/telephony/java/android/telephony/AccessNetworkConstants.java
+++ b/telephony/java/android/telephony/AccessNetworkConstants.java
@@ -115,15 +115,15 @@
/** @hide */
public static @RadioAccessNetworkType int fromString(@NonNull String str) {
switch (str.toUpperCase()) {
- case "GERAN" : return GERAN;
- case "UTRAN" : return UTRAN;
- case "EUTRAN" : return EUTRAN;
- case "CDMA2000" : return CDMA2000;
- case "IWLAN" : return IWLAN;
- case "NGRAN" : return NGRAN;
+ case "UNKNOWN": return UNKNOWN;
+ case "GERAN": return GERAN;
+ case "UTRAN": return UTRAN;
+ case "EUTRAN": return EUTRAN;
+ case "CDMA2000": return CDMA2000;
+ case "IWLAN": return IWLAN;
+ case "NGRAN": return NGRAN;
default:
- Rlog.e(TAG, "Invalid access network type " + str);
- return UNKNOWN;
+ throw new IllegalArgumentException("Invalid access network type " + str);
}
}
}
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 70fe6b1..e032f65 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -8550,6 +8550,13 @@
* IWLAN handover rules that determine whether handover is allowed or disallowed between
* cellular and IWLAN.
*
+ * Rule syntax: "source=[GERAN|UTRAN|EUTRAN|NGRAN|IWLAN|UNKNOWN], target=[GERAN|UTRAN|EUTRAN
+ * |NGRAN|IWLAN], type=[allowed|disallowed], roaming=[true|false], capabilities=[INTERNET|MMS
+ * |FOTA|IMS|CBS|SUPL|EIMS|XCAP|DUN]"
+ *
+ * Note that UNKNOWN can be only specified in the source access network and can be only used
+ * in the disallowed rule.
+ *
* The handover rules will be matched in the order. Here are some sample rules.
* <string-array name="iwlan_handover_rules" num="5">
* <!-- Handover from IWLAN to 2G/3G is not allowed -->
diff --git a/telephony/java/android/telephony/DataFailCause.java b/telephony/java/android/telephony/DataFailCause.java
index ac1f376..5f7cfd1 100644
--- a/telephony/java/android/telephony/DataFailCause.java
+++ b/telephony/java/android/telephony/DataFailCause.java
@@ -981,8 +981,15 @@
/** The ePDG does not support un-authenticated IMSI based emergency PDN bringup **/
public static final int IWLAN_UNAUTHENTICATED_EMERGENCY_NOT_SUPPORTED = 0x2B2F;
- // Device is unable to establish an IPSec tunnel with the ePDG for any reason
- // e.g authentication fail or certificate validation or DNS Resolution and timeout failure.
+ // The below error causes are relevant when the device is unable to establish an IPSec tunnel
+ // with the ePDG for any reason, e.g. authentication fail or certificate validation or DNS
+ // Resolution and timeout failure.
+
+ /**
+ * The requested service was rejected because of congestion in the network while accessing the
+ * IWLAN ePDG. Defined in 3GPP TS 24.502, Section 9.2.4.2.
+ */
+ public static final int IWLAN_CONGESTION = 0x3C8C;
/** IKE configuration error resulting in failure */
public static final int IWLAN_IKEV2_CONFIG_FAILURE = 0x4000;
diff --git a/telephony/java/android/telephony/PhysicalChannelConfig.java b/telephony/java/android/telephony/PhysicalChannelConfig.java
index d978f57..212aaae 100644
--- a/telephony/java/android/telephony/PhysicalChannelConfig.java
+++ b/telephony/java/android/telephony/PhysicalChannelConfig.java
@@ -433,7 +433,8 @@
return Objects.hash(
mCellConnectionStatus, mCellBandwidthDownlinkKhz, mCellBandwidthUplinkKhz,
mNetworkType, mFrequencyRange, mDownlinkChannelNumber, mUplinkChannelNumber,
- mContextIds, mPhysicalCellId, mBand, mDownlinkFrequency, mUplinkFrequency);
+ Arrays.hashCode(mContextIds), mPhysicalCellId, mBand, mDownlinkFrequency,
+ mUplinkFrequency);
}
public static final
diff --git a/telephony/java/android/telephony/SignalThresholdInfo.java b/telephony/java/android/telephony/SignalThresholdInfo.java
index ae7d209..3c18245 100644
--- a/telephony/java/android/telephony/SignalThresholdInfo.java
+++ b/telephony/java/android/telephony/SignalThresholdInfo.java
@@ -574,8 +574,8 @@
@Override
public int hashCode() {
- return Objects.hash(mRan, mSignalMeasurementType, mHysteresisMs, mHysteresisDb, mThresholds,
- mIsEnabled);
+ return Objects.hash(mRan, mSignalMeasurementType, mHysteresisMs, mHysteresisDb,
+ Arrays.hashCode(mThresholds), mIsEnabled);
}
public static final @NonNull Parcelable.Creator<SignalThresholdInfo> CREATOR =
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index cbd03c7..d670e55 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -1935,7 +1935,7 @@
+ " at calling enableCellBroadcastRangeForSubscriber. subId = " + subId);
}
} catch (RemoteException ex) {
- Rlog.d(TAG, "enableCellBroadcastRange: " + ex.getStackTrace());
+ Rlog.d(TAG, "enableCellBroadcastRange: ", ex);
// ignore it
}
@@ -1996,7 +1996,7 @@
+ " at calling disableCellBroadcastRangeForSubscriber. subId = " + subId);
}
} catch (RemoteException ex) {
- Rlog.d(TAG, "disableCellBroadcastRange: " + ex.getStackTrace());
+ Rlog.d(TAG, "disableCellBroadcastRange: ", ex);
// ignore it
}
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index c36eb2f..cb985bf 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -967,9 +967,9 @@
public int hashCode() {
return Objects.hash(mId, mSimSlotIndex, mNameSource, mIconTint, mDataRoaming, mIsEmbedded,
mIsOpportunistic, mGroupUUID, mIccId, mNumber, mMcc, mMnc, mCountryIso, mCardString,
- mCardId, mDisplayName, mCarrierName, mNativeAccessRules, mIsGroupDisabled,
- mCarrierId, mProfileClass, mGroupOwner, mAreUiccApplicationsEnabled, mPortIndex,
- mUsageSetting);
+ mCardId, mDisplayName, mCarrierName, Arrays.hashCode(mNativeAccessRules),
+ mIsGroupDisabled, mCarrierId, mProfileClass, mGroupOwner,
+ mAreUiccApplicationsEnabled, mPortIndex, mUsageSetting);
}
@Override
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 70f1639..5ed6cb9 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -139,24 +139,19 @@
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
public static final Uri CONTENT_URI = SimInfo.CONTENT_URI;
- /** @hide */
- public static final String CACHE_KEY_DEFAULT_SUB_ID_PROPERTY =
+ private static final String CACHE_KEY_DEFAULT_SUB_ID_PROPERTY =
"cache_key.telephony.get_default_sub_id";
- /** @hide */
- public static final String CACHE_KEY_DEFAULT_DATA_SUB_ID_PROPERTY =
+ private static final String CACHE_KEY_DEFAULT_DATA_SUB_ID_PROPERTY =
"cache_key.telephony.get_default_data_sub_id";
- /** @hide */
- public static final String CACHE_KEY_DEFAULT_SMS_SUB_ID_PROPERTY =
+ private static final String CACHE_KEY_DEFAULT_SMS_SUB_ID_PROPERTY =
"cache_key.telephony.get_default_sms_sub_id";
- /** @hide */
- public static final String CACHE_KEY_ACTIVE_DATA_SUB_ID_PROPERTY =
+ private static final String CACHE_KEY_ACTIVE_DATA_SUB_ID_PROPERTY =
"cache_key.telephony.get_active_data_sub_id";
- /** @hide */
- public static final String CACHE_KEY_SLOT_INDEX_PROPERTY =
+ private static final String CACHE_KEY_SLOT_INDEX_PROPERTY =
"cache_key.telephony.get_slot_index";
/** @hide */
diff --git a/telephony/java/android/telephony/TelephonyScanManager.java b/telephony/java/android/telephony/TelephonyScanManager.java
index e0c5298..19f2a9b 100644
--- a/telephony/java/android/telephony/TelephonyScanManager.java
+++ b/telephony/java/android/telephony/TelephonyScanManager.java
@@ -171,7 +171,7 @@
ci[i] = (CellInfo) parcelables[i];
}
executor.execute(() -> {
- Rlog.d(TAG, "onResults: " + ci.toString());
+ Rlog.d(TAG, "onResults: " + Arrays.toString(ci));
callback.onResults(Arrays.asList(ci));
});
} catch (Exception e) {
diff --git a/telephony/java/com/android/internal/telephony/TelephonyIntents.java b/telephony/java/com/android/internal/telephony/TelephonyIntents.java
index b905212..546d2ce 100644
--- a/telephony/java/com/android/internal/telephony/TelephonyIntents.java
+++ b/telephony/java/com/android/internal/telephony/TelephonyIntents.java
@@ -424,4 +424,24 @@
*/
@Deprecated
public static final String EXTRA_DEFAULT_NETWORK_AVAILABLE = "defaultNetworkAvailable";
+
+ /**
+ * <p>Broadcast sent to show Emergency notification due to Voice Over Wifi availability
+ *
+ * <p class="note">
+ * You can <em>not</em> receive this through components declared
+ * in manifests, only by explicitly registering for it with
+ * {@link android.content.Context#registerReceiver(android.content.BroadcastReceiver,
+ * android.content.IntentFilter) Context.registerReceiver()}.
+ *
+ * <p class="note">
+ * Requires no permission.
+ *
+ * <p class="note">This is a protected intent that can only be sent
+ * by the system.
+ *
+ * @hide
+ */
+ public static final String ACTION_VOWIFI_ENABLED
+ = "com.android.internal.telephony.ACTION_VOWIFI_ENABLED";
}
diff --git a/tests/RollbackTest/Android.bp b/tests/RollbackTest/Android.bp
index 9f6ce4e..b7c4c5b 100644
--- a/tests/RollbackTest/Android.bp
+++ b/tests/RollbackTest/Android.bp
@@ -61,6 +61,7 @@
static_libs: ["RollbackTestLib", "frameworks-base-hostutils"],
test_suites: ["general-tests"],
test_config: "NetworkStagedRollbackTest.xml",
+ data: [":RollbackTest"],
}
java_test_host {
diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java
index db48984..661dd84 100644
--- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java
+++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/MainInteractionSession.java
@@ -33,6 +33,8 @@
import android.widget.ImageView;
import android.widget.TextView;
+import java.util.Arrays;
+
public class MainInteractionSession extends VoiceInteractionSession
implements View.OnClickListener {
static final String TAG = "MainInteractionSession";
@@ -403,7 +405,7 @@
@Override
public void onRequestPickOption(PickOptionRequest request) {
Log.i(TAG, "onPickOption: prompt=" + request.getVoicePrompt() + " options="
- + request.getOptions() + " extras=" + request.getExtras());
+ + Arrays.toString(request.getOptions()) + " extras=" + request.getExtras());
mConfirmButton.setText("Pick Option");
mPendingRequest = request;
setPrompt(request.getVoicePrompt());
diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/StartVoiceInteractionActivity.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/StartVoiceInteractionActivity.java
index 733f602..8ae7186 100644
--- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/StartVoiceInteractionActivity.java
+++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/StartVoiceInteractionActivity.java
@@ -24,6 +24,8 @@
import android.widget.Button;
import android.widget.TextView;
+import java.util.Arrays;
+
public class StartVoiceInteractionActivity extends Activity implements View.OnClickListener {
static final String TAG = "LocalVoiceInteractionActivity";
@@ -187,7 +189,8 @@
}
@Override
public void onPickOptionResult(boolean finished, Option[] selections, Bundle result) {
- Log.i(TAG, "Pick result: finished=" + finished + " selections=" + selections
+ Log.i(TAG, "Pick result: finished=" + finished
+ + " selections=" + Arrays.toString(selections)
+ " result=" + result);
StringBuilder sb = new StringBuilder();
if (finished) {
diff --git a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java
index ada0e21..4fc3a15 100644
--- a/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java
+++ b/tests/VoiceInteraction/src/com/android/test/voiceinteraction/TestInteractionActivity.java
@@ -28,6 +28,8 @@
import android.widget.Button;
import android.widget.TextView;
+import java.util.Arrays;
+
public class TestInteractionActivity extends Activity implements View.OnClickListener {
static final String TAG = "TestInteractionActivity";
@@ -240,7 +242,8 @@
}
@Override
public void onPickOptionResult(boolean finished, Option[] selections, Bundle result) {
- Log.i(TAG, "Pick result: finished=" + finished + " selections=" + selections
+ Log.i(TAG, "Pick result: finished=" + finished
+ + " selections=" + Arrays.toString(selections)
+ " result=" + result);
StringBuilder sb = new StringBuilder();
if (finished) {
diff --git a/tools/aapt2/format/Container.cpp b/tools/aapt2/format/Container.cpp
index 9cef7b3..1ff6c49 100644
--- a/tools/aapt2/format/Container.cpp
+++ b/tools/aapt2/format/Container.cpp
@@ -76,7 +76,7 @@
coded_out.WriteLittleEndian32(kResTable);
// Write the aligned size.
- const ::google::protobuf::uint64 size = table.ByteSize();
+ const size_t size = table.ByteSizeLong();
const int padding = CalculatePaddingForAlignment(size);
coded_out.WriteLittleEndian64(size);
@@ -109,7 +109,7 @@
coded_out.WriteLittleEndian32(kResFile);
// Write the aligned size.
- const ::google::protobuf::uint32 header_size = file.ByteSize();
+ const size_t header_size = file.ByteSizeLong();
const int header_padding = CalculatePaddingForAlignment(header_size);
const ::google::protobuf::uint64 data_size = in->TotalSize();
const int data_padding = CalculatePaddingForAlignment(data_size);
diff --git a/tools/aapt2/io/Util.h b/tools/aapt2/io/Util.h
index 5cb8206..1b48a28 100644
--- a/tools/aapt2/io/Util.h
+++ b/tools/aapt2/io/Util.h
@@ -131,8 +131,7 @@
template <typename T> bool ReadMessage(T *message) {
ZeroCopyInputAdaptor adapter(in_);
google::protobuf::io::CodedInputStream coded_stream(&adapter);
- coded_stream.SetTotalBytesLimit(std::numeric_limits<int32_t>::max(),
- coded_stream.BytesUntilTotalBytesLimit());
+ coded_stream.SetTotalBytesLimit(std::numeric_limits<int32_t>::max());
return message->ParseFromCodedStream(&coded_stream);
}
diff --git a/tools/xmlpersistence/src/main/kotlin/Generator.kt b/tools/xmlpersistence/src/main/kotlin/Generator.kt
index b2c5f4a..8e62388 100644
--- a/tools/xmlpersistence/src/main/kotlin/Generator.kt
+++ b/tools/xmlpersistence/src/main/kotlin/Generator.kt
@@ -149,6 +149,7 @@
when (field) {
is ClassFieldInfo -> this += field.allClassFields
is ListFieldInfo -> this += field.element.allClassFields
+ else -> {}
}
}
}