summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Elliot Sisteron <elliotsisteron@google.com> 2023-02-13 14:55:18 +0000
committer Elliot Sisteron <elliotsisteron@google.com> 2023-02-14 09:18:58 +0000
commit86463c807445b369dc8e5bc0ee952968838b625f (patch)
treeae48d1369c2252ed0c0e4632f7340a60d25362f9
parentcc1cd50bca7de0f3b218bd5bfe7d403ec0fbfe57 (diff)
Let @NonNull be the default.
Use package-info.java with a new `@NonNullByDefault` annotation to specify that `@NonNull` is the default, and stop relying on sprinkling our own `@NonNull` annotations everywhere instead. This follows the generic Google recommendation and follows the approach taken by some teams: https://engdoc.corp.google.com/eng/doc/devguide/java/practices/null.md#legacy go/android-media-solutions-coding-conventions#use-nullable We still rely on `@NonNull` for all of our API surface though, as per go/android-api-guidelines#annotations-nullability Bug: 260989630 Test: builds Change-Id: I99ab8f3d94875c8fceca7c9f968b7d8d652d0999
-rw-r--r--PermissionController/Android.bp1
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/package-info.java19
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/service/SafetyCenterBackgroundRefreshJobService.java9
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/service/package-info.java19
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java16
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/package-info.java19
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/package-info.java19
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/view/package-info.java19
-rw-r--r--PermissionController/tests/mocking/Android.bp4
-rw-r--r--SafetyCenter/Annotations/Android.bp48
-rw-r--r--SafetyCenter/Annotations/java/com/android/safetycenter/annotations/NonNullByDefault.java33
-rw-r--r--SafetyCenter/Config/Android.bp1
-rw-r--r--SafetyCenter/Config/java/com/android/safetycenter/config/ParseException.java6
-rw-r--r--SafetyCenter/Config/java/com/android/safetycenter/config/SafetyCenterConfigParser.java95
-rw-r--r--SafetyCenter/Config/java/com/android/safetycenter/config/package-info.java19
-rw-r--r--SafetyCenter/ConfigLintChecker/Android.bp1
-rw-r--r--SafetyCenter/InternalData/Android.bp1
-rw-r--r--SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/SafetyCenterIds.java30
-rw-r--r--SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/package-info.java19
-rw-r--r--SafetyCenter/PendingIntents/Android.bp1
-rw-r--r--SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/PendingIntentSender.java21
-rw-r--r--SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/package-info.java19
-rw-r--r--SafetyCenter/Persistence/Android.bp1
-rw-r--r--SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistedSafetyCenterIssue.java20
-rw-r--r--SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistenceException.java5
-rw-r--r--SafetyCenter/Persistence/java/com/android/safetycenter/persistence/SafetyCenterIssuesPersistence.java35
-rw-r--r--SafetyCenter/Persistence/java/com/android/safetycenter/persistence/package-info.java19
-rw-r--r--SafetyCenter/ResourcesLib/Android.bp1
-rw-r--r--SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/SafetyCenterResourcesContext.java33
-rw-r--r--SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/package-info.java19
-rw-r--r--jarjar-rules.txt6
-rw-r--r--service/Android.bp1
-rw-r--r--service/java/com/android/safetycenter/DevicePolicyResources.java14
-rw-r--r--service/java/com/android/safetycenter/PendingIntentFactory.java48
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterBroadcastDispatcher.java72
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterConfigReader.java69
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterDataChangeNotifier.java15
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterDataFactory.java134
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterFlags.java41
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterListeners.java48
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterNotificationChannels.java21
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterNotificationFactory.java21
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterNotificationReceiver.java33
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterNotificationSender.java44
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterRefreshTracker.java47
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterService.java111
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterShellCommandHandler.java14
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterTimeouts.java7
-rw-r--r--service/java/com/android/safetycenter/SafetySourceIssueInfo.java19
-rw-r--r--service/java/com/android/safetycenter/SafetySourceKey.java9
-rw-r--r--service/java/com/android/safetycenter/SafetySources.java13
-rw-r--r--service/java/com/android/safetycenter/SafetySourcesGroups.java5
-rw-r--r--service/java/com/android/safetycenter/UserProfileGroup.java27
-rw-r--r--service/java/com/android/safetycenter/data/SafetyCenterDataManager.java70
-rw-r--r--service/java/com/android/safetycenter/data/SafetyCenterInFlightIssueActionRepository.java21
-rw-r--r--service/java/com/android/safetycenter/data/SafetyCenterIssueDeduplicator.java29
-rw-r--r--service/java/com/android/safetycenter/data/SafetyCenterIssueDismissalRepository.java42
-rw-r--r--service/java/com/android/safetycenter/data/SafetyCenterIssueRepository.java43
-rw-r--r--service/java/com/android/safetycenter/data/SafetySourceDataRepository.java66
-rw-r--r--service/java/com/android/safetycenter/data/package-info.java19
-rw-r--r--service/java/com/android/safetycenter/logging/SafetyCenterPullAtomCallback.java34
-rw-r--r--service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java24
-rw-r--r--service/java/com/android/safetycenter/logging/package-info.java19
-rw-r--r--service/java/com/android/safetycenter/package-info.java19
68 files changed, 900 insertions, 877 deletions
diff --git a/PermissionController/Android.bp b/PermissionController/Android.bp
index 5b95a0a75..14170e513 100644
--- a/PermissionController/Android.bp
+++ b/PermissionController/Android.bp
@@ -91,6 +91,7 @@ android_app {
// Soong fails to automatically add this dependency because all the
// *.kt sources are inside a filegroup.
"kotlin-annotations",
+ "safety-center-annotations",
],
static_libs: [
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/package-info.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/package-info.java
new file mode 100644
index 000000000..48c750b81
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.permissioncontroller.safetycenter;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/service/SafetyCenterBackgroundRefreshJobService.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/service/SafetyCenterBackgroundRefreshJobService.java
index df1aed7a2..e959d20be 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/service/SafetyCenterBackgroundRefreshJobService.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/service/SafetyCenterBackgroundRefreshJobService.java
@@ -35,7 +35,6 @@ import android.content.Intent;
import android.safetycenter.SafetyCenterManager;
import android.util.Log;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.modules.utils.build.SdkLevel;
@@ -54,7 +53,7 @@ public final class SafetyCenterBackgroundRefreshJobService extends JobService {
/** Schedules a periodic background refresh. */
public static final class SetupSafetyCenterBackgroundRefreshReceiver extends BroadcastReceiver {
@Override
- public void onReceive(@NonNull Context context, @NonNull Intent intent) {
+ public void onReceive(Context context, Intent intent) {
schedulePeriodicBackgroundRefresh(context, intent.getAction());
}
}
@@ -74,7 +73,7 @@ public final class SafetyCenterBackgroundRefreshJobService extends JobService {
* broadcast if this flag gets enabled.
*/
private static void schedulePeriodicBackgroundRefresh(
- @NonNull Context context, @Nullable String actionString) {
+ Context context, @Nullable String actionString) {
if (!isActionStringValid(actionString)) {
Log.v(TAG, "Ignoring a " + actionString + " broadcast.");
@@ -136,7 +135,7 @@ public final class SafetyCenterBackgroundRefreshJobService extends JobService {
}
@Override
- public boolean onStartJob(@NonNull JobParameters params) {
+ public boolean onStartJob(JobParameters params) {
// background thread not required, PC APK makes all API calls in main thread
if (!SafetyCenterJobServiceFlags.areBackgroundRefreshesEnabled()) {
Log.v(TAG, "Background refreshes are not enabled, skipping job.");
@@ -158,7 +157,7 @@ public final class SafetyCenterBackgroundRefreshJobService extends JobService {
}
@Override
- public boolean onStopJob(@NonNull JobParameters params) {
+ public boolean onStopJob(JobParameters params) {
return false; // never want job to be rescheduled
}
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/service/package-info.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/service/package-info.java
new file mode 100644
index 000000000..d6b130cf3
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/service/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.permissioncontroller.safetycenter.service;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java
index d7199c546..cd215e183 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java
@@ -37,7 +37,6 @@ import android.widget.Space;
import android.widget.TextView;
import androidx.annotation.ColorRes;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.view.ContextThemeWrapper;
@@ -219,14 +218,14 @@ public class IssueCardPreference extends Preference implements ComparablePrefere
}
@Override
- public boolean isSameItem(@NonNull Preference preference) {
+ public boolean isSameItem(Preference preference) {
return (preference instanceof IssueCardPreference)
&& TextUtils.equals(
mIssue.getId(), ((IssueCardPreference) preference).mIssue.getId());
}
@Override
- public boolean hasSameContents(@NonNull Preference preference) {
+ public boolean hasSameContents(Preference preference) {
return (preference instanceof IssueCardPreference)
&& mIssue.equals(((IssueCardPreference) preference).mIssue)
&& Objects.equals(
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
index 69e7f1088..c22a46f7d 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
@@ -39,7 +39,6 @@ import android.safetycenter.SafetyCenterStaticEntry;
import android.safetycenter.SafetyCenterStaticEntryGroup;
import android.util.Log;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.preference.PreferenceCategory;
@@ -161,7 +160,7 @@ public final class SafetyCenterDashboardFragment extends SafetyCenterFragment {
}
@Override
- public void onSaveInstanceState(@NonNull Bundle outState) {
+ public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mCollapsableGroupCardHelper.saveState(outState);
}
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java
index d94afbdda..f97914815 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java
@@ -22,7 +22,6 @@ import android.content.Context;
import android.safetycenter.SafetyCenterEntry;
import android.text.TextUtils;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.preference.Preference;
@@ -60,20 +59,20 @@ public final class SafetyEntryPreference extends Preference implements Comparabl
}
@Override
- public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
((SafetyEntryView) holder.itemView).showEntry(mEntry, mPosition, mLaunchTaskId, mViewModel);
}
@Override
- public boolean isSameItem(@NonNull Preference other) {
+ public boolean isSameItem(Preference other) {
return other instanceof SafetyEntryPreference
&& TextUtils.equals(mEntry.getId(), ((SafetyEntryPreference) other).mEntry.getId());
}
@Override
- public boolean hasSameContents(@NonNull Preference other) {
+ public boolean hasSameContents(Preference other) {
if (other instanceof SafetyEntryPreference) {
SafetyEntryPreference o = (SafetyEntryPreference) other;
return mEntry.equals(o.mEntry) && mPosition == o.mPosition;
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java
index ee2e7c73d..1f6c15183 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyStatusPreference.java
@@ -32,7 +32,6 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.preference.Preference;
@@ -45,11 +44,11 @@ import com.android.permissioncontroller.safetycenter.ui.model.StatusUiData;
import com.google.android.material.button.MaterialButton;
+import kotlin.Pair;
+
import java.util.List;
import java.util.Objects;
-import kotlin.Pair;
-
/** Preference which displays a visual representation of {@link SafetyCenterStatus}. */
@RequiresApi(TIRAMISU)
public class SafetyStatusPreference extends Preference implements ComparablePreference {
@@ -57,13 +56,10 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
@Nullable private StatusUiData mStatus;
@Nullable private SafetyCenterViewModel mViewModel;
- @NonNull
private final TextFadeAnimator mTitleTextAnimator = new TextFadeAnimator(R.id.status_title);
- @NonNull
private final TextFadeAnimator mSummaryTextAnimator = new TextFadeAnimator(R.id.status_summary);
- @NonNull
private final TextFadeAnimator mAllTextAnimator =
new TextFadeAnimator(List.of(R.id.status_title, R.id.status_summary));
@@ -144,7 +140,7 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
holder.itemView.getPaddingStart(),
holder.itemView.getPaddingTop(),
holder.itemView.getPaddingEnd(),
- /* bottom = */ getContext()
+ /* bottom= */ getContext()
.getResources()
.getDimensionPixelSize(R.dimen.sc_card_margin_bottom));
} else {
@@ -152,7 +148,7 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
holder.itemView.getPaddingStart(),
holder.itemView.getPaddingTop(),
holder.itemView.getPaddingEnd(),
- /* bottom = */ 0);
+ /* bottom= */ 0);
}
}
@@ -384,13 +380,13 @@ public class SafetyStatusPreference extends Preference implements ComparablePref
}
@Override
- public boolean isSameItem(@NonNull Preference preference) {
+ public boolean isSameItem(Preference preference) {
return preference instanceof SafetyStatusPreference
&& TextUtils.equals(getKey(), preference.getKey());
}
@Override
- public boolean hasSameContents(@NonNull Preference preference) {
+ public boolean hasSameContents(Preference preference) {
if (!(preference instanceof SafetyStatusPreference)) {
return false;
}
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java
index d51f3714a..63ae5df33 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java
@@ -23,7 +23,6 @@ import android.safetycenter.SafetyCenterStaticEntry;
import android.text.TextUtils;
import android.util.Log;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.preference.Preference;
@@ -73,7 +72,7 @@ public class StaticSafetyEntryPreference extends Preference implements Comparabl
}
@Override
- public boolean isSameItem(@NonNull Preference preference) {
+ public boolean isSameItem(Preference preference) {
return preference instanceof StaticSafetyEntryPreference
&& TextUtils.equals(
mEntry.getTitle(),
@@ -81,7 +80,7 @@ public class StaticSafetyEntryPreference extends Preference implements Comparabl
}
@Override
- public boolean hasSameContents(@NonNull Preference preference) {
+ public boolean hasSameContents(Preference preference) {
return preference instanceof StaticSafetyEntryPreference
&& mEntry.equals(((StaticSafetyEntryPreference) preference).mEntry);
}
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/package-info.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/package-info.java
new file mode 100644
index 000000000..00fda1f5b
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.permissioncontroller.safetycenter.ui.model;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/package-info.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/package-info.java
new file mode 100644
index 000000000..3389e3a3b
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.permissioncontroller.safetycenter.ui;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/view/package-info.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/view/package-info.java
new file mode 100644
index 000000000..88037aa61
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/view/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.permissioncontroller.safetycenter.ui.view;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/PermissionController/tests/mocking/Android.bp b/PermissionController/tests/mocking/Android.bp
index ba95e79a3..64903d615 100644
--- a/PermissionController/tests/mocking/Android.bp
+++ b/PermissionController/tests/mocking/Android.bp
@@ -46,6 +46,7 @@ android_test {
libs: [
"android.test.base",
"android.test.runner",
+ "safety-center-annotations",
],
static_libs: [
@@ -104,12 +105,11 @@ android_test {
"android.car",
"car-ui-lib",
"libprotobuf-java-lite",
- "safety-center-internal-data",
"SettingsLibUtils",
"modules-utils-build_system",
- "safety-center-resources-lib",
"safety-center-internal-data",
"safety-center-pending-intents",
+ "safety-center-resources-lib",
"safety-label",
"role-controller",
"lottie",
diff --git a/SafetyCenter/Annotations/Android.bp b/SafetyCenter/Annotations/Android.bp
new file mode 100644
index 000000000..852d734b0
--- /dev/null
+++ b/SafetyCenter/Annotations/Android.bp
@@ -0,0 +1,48 @@
+//
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Library for internal data used by Safety Center system service and UI.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+filegroup {
+ name: "safetycenter-annotations-sources",
+ srcs: ["java/**/*.java"],
+ path: "java",
+ visibility: ["//packages/modules/Permission/SafetyCenter/ConfigLintChecker"],
+}
+
+java_library {
+ name: "safety-center-annotations",
+ srcs: [
+ ":safetycenter-annotations-sources",
+ ],
+ libs: [
+ "androidx.annotation_annotation",
+ "jsr305",
+ ],
+ apex_available: [
+ "com.android.permission",
+ "test_com.android.permission",
+ ],
+ installable: false,
+ min_sdk_version: "30",
+ sdk_version: "system_current",
+ visibility: [
+ "//packages/modules/Permission:__subpackages__",
+ ],
+}
diff --git a/SafetyCenter/Annotations/java/com/android/safetycenter/annotations/NonNullByDefault.java b/SafetyCenter/Annotations/java/com/android/safetycenter/annotations/NonNullByDefault.java
new file mode 100644
index 000000000..d19110652
--- /dev/null
+++ b/SafetyCenter/Annotations/java/com/android/safetycenter/annotations/NonNullByDefault.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.safetycenter.annotations;
+
+import androidx.annotation.NonNull;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import javax.annotation.meta.TypeQualifierDefault;
+
+/**
+ * Annotation to declare all type usages in the annotated instance as {@link NonNull}, unless
+ * explicitly marked with a nullable annotation.
+ */
+@NonNull
+@TypeQualifierDefault(ElementType.TYPE_USE)
+@Retention(RetentionPolicy.CLASS)
+public @interface NonNullByDefault {}
diff --git a/SafetyCenter/Config/Android.bp b/SafetyCenter/Config/Android.bp
index d69cfe36e..bbf0a8008 100644
--- a/SafetyCenter/Config/Android.bp
+++ b/SafetyCenter/Config/Android.bp
@@ -36,6 +36,7 @@ java_library {
"framework-annotations-lib",
"framework-permission-s",
"modules-utils-build",
+ "safety-center-annotations",
],
apex_available: [
"com.android.permission",
diff --git a/SafetyCenter/Config/java/com/android/safetycenter/config/ParseException.java b/SafetyCenter/Config/java/com/android/safetycenter/config/ParseException.java
index e73f98484..91c7c6654 100644
--- a/SafetyCenter/Config/java/com/android/safetycenter/config/ParseException.java
+++ b/SafetyCenter/Config/java/com/android/safetycenter/config/ParseException.java
@@ -18,19 +18,17 @@ package com.android.safetycenter.config;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
-
import androidx.annotation.RequiresApi;
/** Exception thrown when there is an error parsing the Safety Center configuration. */
@RequiresApi(TIRAMISU)
public final class ParseException extends Exception {
- public ParseException(@NonNull String message) {
+ public ParseException(String message) {
super(message);
}
- public ParseException(@NonNull String message, @NonNull Throwable ex) {
+ public ParseException(String message, Throwable ex) {
super(message, ex);
}
}
diff --git a/SafetyCenter/Config/java/com/android/safetycenter/config/SafetyCenterConfigParser.java b/SafetyCenter/Config/java/com/android/safetycenter/config/SafetyCenterConfigParser.java
index f7faf9e27..b6730f36f 100644
--- a/SafetyCenter/Config/java/com/android/safetycenter/config/SafetyCenterConfigParser.java
+++ b/SafetyCenter/Config/java/com/android/safetycenter/config/SafetyCenterConfigParser.java
@@ -28,7 +28,6 @@ import static org.xmlpull.v1.XmlPullParser.TEXT;
import static java.util.Locale.ROOT;
import static java.util.Objects.requireNonNull;
-import android.annotation.NonNull;
import android.annotation.StringRes;
import android.content.res.Resources;
import android.safetycenter.config.SafetyCenterConfig;
@@ -100,9 +99,8 @@ public final class SafetyCenterConfigParser {
* @param resources the {@link Resources} retrieved from the package that contains the Safety
* Center configuration
*/
- @NonNull
- public static SafetyCenterConfig parseXmlResource(
- @NonNull InputStream in, @NonNull Resources resources) throws ParseException {
+ public static SafetyCenterConfig parseXmlResource(InputStream in, Resources resources)
+ throws ParseException {
requireNonNull(in);
requireNonNull(resources);
try {
@@ -127,9 +125,8 @@ public final class SafetyCenterConfigParser {
}
}
- @NonNull
private static SafetyCenterConfig parseSafetyCenterConfig(
- @NonNull XmlPullParser parser, @NonNull Resources resources)
+ XmlPullParser parser, Resources resources)
throws XmlPullParserException, IOException, ParseException {
validateElementHasNoAttribute(parser, TAG_SAFETY_CENTER_CONFIG);
parser.nextTag();
@@ -152,9 +149,8 @@ public final class SafetyCenterConfigParser {
}
}
- @NonNull
private static SafetySourcesGroup parseSafetySourcesGroup(
- @NonNull XmlPullParser parser, @NonNull Resources resources)
+ XmlPullParser parser, Resources resources)
throws XmlPullParserException, IOException, ParseException {
String name = TAG_SAFETY_SOURCES_GROUP;
SafetySourcesGroup.Builder builder = new SafetySourcesGroup.Builder();
@@ -236,12 +232,8 @@ public final class SafetyCenterConfigParser {
}
}
- @NonNull
private static SafetySource parseSafetySource(
- @NonNull XmlPullParser parser,
- @NonNull Resources resources,
- int safetySourceType,
- @NonNull String name)
+ XmlPullParser parser, Resources resources, int safetySourceType, String name)
throws XmlPullParserException, IOException, ParseException {
SafetySource.Builder builder = new SafetySource.Builder(safetySourceType);
for (int i = 0; i < parser.getAttributeCount(); i++) {
@@ -396,71 +388,62 @@ public final class SafetyCenterConfigParser {
}
}
- private static void validateElementStart(@NonNull XmlPullParser parser, @NonNull String name)
+ private static void validateElementStart(XmlPullParser parser, String name)
throws XmlPullParserException, ParseException {
if (parser.getEventType() != START_TAG || !parser.getName().equals(name)) {
throw elementMissing(name);
}
}
- private static void validateElementEnd(@NonNull XmlPullParser parser, @NonNull String name)
+ private static void validateElementEnd(XmlPullParser parser, String name)
throws XmlPullParserException, ParseException {
if (parser.getEventType() != END_TAG || !parser.getName().equals(name)) {
throw elementNotClosed(name);
}
}
- private static void validateElementHasNoAttribute(
- @NonNull XmlPullParser parser, @NonNull String name) throws ParseException {
+ private static void validateElementHasNoAttribute(XmlPullParser parser, String name)
+ throws ParseException {
if (parser.getAttributeCount() != 0) {
throw elementInvalid(name);
}
}
- private static ParseException elementMissing(@NonNull String name) {
+ private static ParseException elementMissing(String name) {
return new ParseException(String.format("Element %s missing", name));
}
- private static ParseException elementNotClosed(@NonNull String name) {
+ private static ParseException elementNotClosed(String name) {
return new ParseException(String.format("Element %s not closed", name));
}
- private static ParseException elementInvalid(@NonNull String name) {
+ private static ParseException elementInvalid(String name) {
return new ParseException(String.format("Element %s invalid", name));
}
- private static ParseException elementInvalid(@NonNull String name, @NonNull Throwable e) {
+ private static ParseException elementInvalid(String name, Throwable e) {
return new ParseException(String.format("Element %s invalid", name), e);
}
- private static ParseException attributeUnexpected(
- @NonNull String parent, @NonNull String name) {
+ private static ParseException attributeUnexpected(String parent, String name) {
return new ParseException(String.format("Unexpected attribute %s.%s", parent, name));
}
- private static String attributeInvalidString(
- @NonNull String valueString, @NonNull String parent, @NonNull String name) {
+ private static String attributeInvalidString(String valueString, String parent, String name) {
return String.format("Attribute value \"%s\" in %s.%s invalid", valueString, parent, name);
}
- private static ParseException attributeInvalid(
- @NonNull String valueString, @NonNull String parent, @NonNull String name) {
+ private static ParseException attributeInvalid(String valueString, String parent, String name) {
return new ParseException(attributeInvalidString(valueString, parent, name));
}
private static ParseException attributeInvalid(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Throwable ex) {
+ String valueString, String parent, String name, Throwable ex) {
return new ParseException(attributeInvalidString(valueString, parent, name), ex);
}
private static int parseInteger(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources)
+ String valueString, String parent, String name, Resources resources)
throws ParseException {
String valueToParse = getValueToParse(valueString, parent, name, resources);
try {
@@ -471,10 +454,7 @@ public final class SafetyCenterConfigParser {
}
private static boolean parseBoolean(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources)
+ String valueString, String parent, String name, Resources resources)
throws ParseException {
String valueToParse =
getValueToParse(valueString, parent, name, resources).toLowerCase(ROOT);
@@ -488,10 +468,7 @@ public final class SafetyCenterConfigParser {
@StringRes
private static int parseStringResourceName(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources)
+ String valueString, String parent, String name, Resources resources)
throws ParseException {
if (valueString.isEmpty()) {
throw new ParseException(
@@ -536,20 +513,13 @@ public final class SafetyCenterConfigParser {
return id;
}
- @NonNull
private static String parseStringResourceValue(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources) {
+ String valueString, String parent, String name, Resources resources) {
return getValueToParse(valueString, parent, name, resources);
}
private static int parseStatelessIconType(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources)
+ String valueString, String parent, String name, Resources resources)
throws ParseException {
String valueToParse = getValueToParse(valueString, parent, name, resources);
switch (valueToParse) {
@@ -563,10 +533,7 @@ public final class SafetyCenterConfigParser {
}
private static int parseGroupType(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources)
+ String valueString, String parent, String name, Resources resources)
throws ParseException {
String valueToParse = getValueToParse(valueString, parent, name, resources);
switch (valueToParse) {
@@ -582,10 +549,7 @@ public final class SafetyCenterConfigParser {
}
private static int parseProfile(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources)
+ String valueString, String parent, String name, Resources resources)
throws ParseException {
String valueToParse = getValueToParse(valueString, parent, name, resources);
switch (valueToParse) {
@@ -599,10 +563,7 @@ public final class SafetyCenterConfigParser {
}
private static int parseInitialDisplayState(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources)
+ String valueString, String parent, String name, Resources resources)
throws ParseException {
String valueToParse = getValueToParse(valueString, parent, name, resources);
switch (valueToParse) {
@@ -617,12 +578,8 @@ public final class SafetyCenterConfigParser {
}
}
- @NonNull
private static String getValueToParse(
- @NonNull String valueString,
- @NonNull String parent,
- @NonNull String name,
- @NonNull Resources resources) {
+ String valueString, String parent, String name, Resources resources) {
try {
int id = parseStringResourceName(valueString, parent, name, resources);
return resources.getString(id);
diff --git a/SafetyCenter/Config/java/com/android/safetycenter/config/package-info.java b/SafetyCenter/Config/java/com/android/safetycenter/config/package-info.java
new file mode 100644
index 000000000..45ac9e485
--- /dev/null
+++ b/SafetyCenter/Config/java/com/android/safetycenter/config/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.safetycenter.config;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/SafetyCenter/ConfigLintChecker/Android.bp b/SafetyCenter/ConfigLintChecker/Android.bp
index ecc699cab..ff1e28009 100644
--- a/SafetyCenter/ConfigLintChecker/Android.bp
+++ b/SafetyCenter/ConfigLintChecker/Android.bp
@@ -21,6 +21,7 @@ java_library_host {
srcs: [
"java/**/*.java",
"java/**/*.kt",
+ ":safetycenter-annotations-sources",
":safetycenter-config-api-sources",
":safetycenter-config-parser-sources",
],
diff --git a/SafetyCenter/InternalData/Android.bp b/SafetyCenter/InternalData/Android.bp
index 7a68da60b..3def47445 100644
--- a/SafetyCenter/InternalData/Android.bp
+++ b/SafetyCenter/InternalData/Android.bp
@@ -27,6 +27,7 @@ java_library {
],
libs: [
"androidx.annotation_annotation",
+ "safety-center-annotations",
],
apex_available: [
"com.android.permission",
diff --git a/SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/SafetyCenterIds.java b/SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/SafetyCenterIds.java
index f22b328fa..ff737c66c 100644
--- a/SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/SafetyCenterIds.java
+++ b/SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/SafetyCenterIds.java
@@ -20,7 +20,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import android.util.Base64;
-import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import com.google.protobuf.InvalidProtocolBufferException;
@@ -41,8 +40,7 @@ public final class SafetyCenterIds {
* <p>Throws an {@link IllegalArgumentException} if the String couldn't be converted to a {@link
* SafetyCenterEntryId}.
*/
- @NonNull
- public static SafetyCenterEntryId entryIdFromString(@NonNull String encoded) {
+ public static SafetyCenterEntryId entryIdFromString(String encoded) {
return decodeToProto(SafetyCenterEntryId.parser(), encoded);
}
@@ -52,8 +50,7 @@ public final class SafetyCenterIds {
* <p>Throws an {@link IllegalArgumentException} if the String couldn't be converted to a {@link
* SafetyCenterIssueId}.
*/
- @NonNull
- public static SafetyCenterIssueId issueIdFromString(@NonNull String encoded) {
+ public static SafetyCenterIssueId issueIdFromString(String encoded) {
return decodeToProto(SafetyCenterIssueId.parser(), encoded);
}
@@ -63,8 +60,7 @@ public final class SafetyCenterIds {
* <p>Throws an {@link IllegalArgumentException} if the String couldn't be converted to a {@link
* SafetyCenterIssueKey}.
*/
- @NonNull
- public static SafetyCenterIssueKey issueKeyFromString(@NonNull String encoded) {
+ public static SafetyCenterIssueKey issueKeyFromString(String encoded) {
return decodeToProto(SafetyCenterIssueKey.parser(), encoded);
}
@@ -74,14 +70,12 @@ public final class SafetyCenterIds {
* <p>Throws an {@link IllegalArgumentException} if the String couldn't be converted to a {@link
* SafetyCenterIssueActionId}.
*/
- @NonNull
- public static SafetyCenterIssueActionId issueActionIdFromString(@NonNull String encoded) {
+ public static SafetyCenterIssueActionId issueActionIdFromString(String encoded) {
return decodeToProto(SafetyCenterIssueActionId.parser(), encoded);
}
/** Encodes a Safety Center id to a String. */
- @NonNull
- public static String encodeToString(@NonNull MessageLite message) {
+ public static String encodeToString(MessageLite message) {
return Base64.encodeToString(message.toByteArray(), ENCODING_FLAGS);
}
@@ -91,8 +85,7 @@ public final class SafetyCenterIds {
* <p>This is necessary as the implementation of {@link #toString()} for Java lite protos is
* optimized in production builds and does not return a user-readable output.
*/
- @NonNull
- public static String toUserFriendlyString(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ public static String toUserFriendlyString(SafetyCenterIssueKey safetyCenterIssueKey) {
return "SafetyCenterIssueKey{safetySourceId='"
+ safetyCenterIssueKey.getSafetySourceId()
+ "', safetySourceIssueId='"
@@ -108,8 +101,7 @@ public final class SafetyCenterIds {
* <p>This is necessary as the implementation of {@link #toString()} for Java lite protos is
* optimized in production builds and does not return a user-readable output.
*/
- @NonNull
- public static String toUserFriendlyString(@NonNull SafetyCenterIssueId safetyCenterIssueId) {
+ public static String toUserFriendlyString(SafetyCenterIssueId safetyCenterIssueId) {
return "SafetyCenterIssueId{safetyCenterIssueKey="
+ toUserFriendlyString(safetyCenterIssueId.getSafetyCenterIssueKey())
+ ", issueTypeId='"
@@ -125,9 +117,7 @@ public final class SafetyCenterIds {
* <p>This is necessary as the implementation of {@link #toString()} for Java lite protos is
* optimized in production builds and does not return a user-readable output.
*/
- @NonNull
- public static String toUserFriendlyString(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId) {
+ public static String toUserFriendlyString(SafetyCenterIssueActionId safetyCenterIssueActionId) {
return "SafetyCenterIssueActionId{safetyCenterIssueKey="
+ toUserFriendlyString(safetyCenterIssueActionId.getSafetyCenterIssueKey())
+ ", safetySourceIssueActionId='"
@@ -135,9 +125,7 @@ public final class SafetyCenterIds {
+ "'}";
}
- @NonNull
- private static <T extends MessageLite> T decodeToProto(
- @NonNull Parser<T> parser, @NonNull String encoded) {
+ private static <T extends MessageLite> T decodeToProto(Parser<T> parser, String encoded) {
try {
return parser.parseFrom(Base64.decode(encoded, ENCODING_FLAGS));
} catch (InvalidProtocolBufferException e) {
diff --git a/SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/package-info.java b/SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/package-info.java
new file mode 100644
index 000000000..cb88422ab
--- /dev/null
+++ b/SafetyCenter/InternalData/java/com/android/safetycenter/internaldata/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.safetycenter.internaldata;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/SafetyCenter/PendingIntents/Android.bp b/SafetyCenter/PendingIntents/Android.bp
index a07029266..a354c7014 100644
--- a/SafetyCenter/PendingIntents/Android.bp
+++ b/SafetyCenter/PendingIntents/Android.bp
@@ -24,6 +24,7 @@ java_library {
],
libs: [
"androidx.annotation_annotation",
+ "safety-center-annotations",
],
apex_available: [
"com.android.permission",
diff --git a/SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/PendingIntentSender.java b/SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/PendingIntentSender.java
index ff0a1e756..5f45a375c 100644
--- a/SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/PendingIntentSender.java
+++ b/SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/PendingIntentSender.java
@@ -25,7 +25,6 @@ import android.app.PendingIntent;
import android.os.Build;
import android.util.Log;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RequiresPermission;
@@ -45,20 +44,18 @@ public final class PendingIntentSender {
* ActivityOptions#MODE_BACKGROUND_ACTIVITY_START_ALLOWED}. This call opts-in this behavior as
* the Safety Center intents come from trusted sources and are used for navigation purposes.
*/
- public static void send(@NonNull PendingIntent pendingIntent)
- throws PendingIntent.CanceledException {
+ public static void send(PendingIntent pendingIntent) throws PendingIntent.CanceledException {
send(pendingIntent, createActivityOptions(pendingIntent, /* launchTaskId= */ null));
}
/** Same as {@link #send(PendingIntent)} but with the given optional {@code launchTaskId}. */
@RequiresPermission(START_TASKS_FROM_RECENTS)
- public static void send(@NonNull PendingIntent pendingIntent, @Nullable Integer launchTaskId)
+ public static void send(PendingIntent pendingIntent, @Nullable Integer launchTaskId)
throws PendingIntent.CanceledException {
send(pendingIntent, createActivityOptions(pendingIntent, launchTaskId));
}
- private static void send(
- @NonNull PendingIntent pendingIntent, @Nullable ActivityOptions activityOptions)
+ private static void send(PendingIntent pendingIntent, @Nullable ActivityOptions activityOptions)
throws PendingIntent.CanceledException {
if (activityOptions == null) {
pendingIntent.send();
@@ -78,7 +75,7 @@ public final class PendingIntentSender {
* Same as {@link #send(PendingIntent)} but returns whether the call was successful instead of
* throwing a {@link PendingIntent#CanceledException}.
*/
- public static boolean trySend(@NonNull PendingIntent pendingIntent) {
+ public static boolean trySend(PendingIntent pendingIntent) {
return trySend(
pendingIntent, createActivityOptions(pendingIntent, /* launchTaskId= */ null));
}
@@ -88,13 +85,12 @@ public final class PendingIntentSender {
* instead of throwing a {@link PendingIntent#CanceledException}.
*/
@RequiresPermission(START_TASKS_FROM_RECENTS)
- public static boolean trySend(
- @NonNull PendingIntent pendingIntent, @Nullable Integer launchTaskId) {
+ public static boolean trySend(PendingIntent pendingIntent, @Nullable Integer launchTaskId) {
return trySend(pendingIntent, createActivityOptions(pendingIntent, launchTaskId));
}
private static boolean trySend(
- @NonNull PendingIntent pendingIntent, @Nullable ActivityOptions activityOptions) {
+ PendingIntent pendingIntent, @Nullable ActivityOptions activityOptions) {
try {
send(pendingIntent, activityOptions);
return true;
@@ -112,7 +108,7 @@ public final class PendingIntentSender {
@Nullable
private static ActivityOptions createActivityOptions(
- @NonNull PendingIntent pendingIntent, @Nullable Integer launchTaskId) {
+ PendingIntent pendingIntent, @Nullable Integer launchTaskId) {
if (!pendingIntent.isActivity()) {
return null;
}
@@ -130,8 +126,7 @@ public final class PendingIntentSender {
}
@RequiresApi(UPSIDE_DOWN_CAKE)
- private static void setBackgroundActivityStartModeAllowed(
- @NonNull ActivityOptions activityOptions) {
+ private static void setBackgroundActivityStartModeAllowed(ActivityOptions activityOptions) {
activityOptions.setPendingIntentBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
}
diff --git a/SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/package-info.java b/SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/package-info.java
new file mode 100644
index 000000000..3d884f9e1
--- /dev/null
+++ b/SafetyCenter/PendingIntents/java/com/android/safetycenter/pendingintents/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.safetycenter.pendingintents;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/SafetyCenter/Persistence/Android.bp b/SafetyCenter/Persistence/Android.bp
index 3af6d323f..56ce4491b 100644
--- a/SafetyCenter/Persistence/Android.bp
+++ b/SafetyCenter/Persistence/Android.bp
@@ -26,6 +26,7 @@ java_library {
],
libs: [
"androidx.annotation_annotation",
+ "safety-center-annotations",
],
apex_available: [
"com.android.permission",
diff --git a/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistedSafetyCenterIssue.java b/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistedSafetyCenterIssue.java
index ec65f9647..1eabf6c8b 100644
--- a/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistedSafetyCenterIssue.java
+++ b/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistedSafetyCenterIssue.java
@@ -18,7 +18,6 @@ package com.android.safetycenter.persistence;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
@@ -31,15 +30,15 @@ import java.util.Objects;
*/
@RequiresApi(TIRAMISU)
public final class PersistedSafetyCenterIssue {
- @NonNull private final String mKey;
- @NonNull private final Instant mFirstSeenAt;
+ private final String mKey;
+ private final Instant mFirstSeenAt;
@Nullable private final Instant mDismissedAt;
private final int mDismissCount;
@Nullable private final Instant mNotificationDismissedAt;
private PersistedSafetyCenterIssue(
- @NonNull String key,
- @NonNull Instant firstSeenAt,
+ String key,
+ Instant firstSeenAt,
@Nullable Instant dismissedAt,
int dismissCount,
@Nullable Instant notificationDismissedAt) {
@@ -51,13 +50,11 @@ public final class PersistedSafetyCenterIssue {
}
/** The unique key for a safety source issue. */
- @NonNull
public String getKey() {
return mKey;
}
/** The instant when this issue was first seen. */
- @NonNull
public Instant getFirstSeenAt() {
return mFirstSeenAt;
}
@@ -128,28 +125,24 @@ public final class PersistedSafetyCenterIssue {
public Builder() {}
/** The unique key for a safety source issue. */
- @NonNull
public Builder setKey(@Nullable String key) {
mKey = key;
return this;
}
/** The instant when this issue was first seen. */
- @NonNull
public Builder setFirstSeenAt(@Nullable Instant firstSeenAt) {
mFirstSeenAt = firstSeenAt;
return this;
}
/** The instant when this issue was dismissed. */
- @NonNull
public Builder setDismissedAt(@Nullable Instant dismissedAt) {
mDismissedAt = dismissedAt;
return this;
}
/** The number of times this issue was dismissed. */
- @NonNull
public Builder setDismissCount(int dismissCount) {
if (dismissCount < 0) {
throw new IllegalArgumentException("Dismiss count cannot be negative");
@@ -159,7 +152,6 @@ public final class PersistedSafetyCenterIssue {
}
/** The instant when this issue's notification was dismissed. */
- @NonNull
public Builder setNotificationDismissedAt(@Nullable Instant notificationDismissedAt) {
mNotificationDismissedAt = notificationDismissedAt;
return this;
@@ -170,7 +162,6 @@ public final class PersistedSafetyCenterIssue {
*
* <p>Throws an {@link IllegalStateException} if any constraint is violated.
*/
- @NonNull
public PersistedSafetyCenterIssue build() {
validateRequiredAttribute(mKey, "key");
validateRequiredAttribute(mFirstSeenAt, "firstSeenAt");
@@ -189,8 +180,7 @@ public final class PersistedSafetyCenterIssue {
}
}
- private static void validateRequiredAttribute(
- @Nullable Object attribute, @NonNull String name) {
+ private static void validateRequiredAttribute(@Nullable Object attribute, String name) {
if (attribute == null) {
throw new IllegalStateException("Required attribute " + name + " missing");
}
diff --git a/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistenceException.java b/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistenceException.java
index 32bbd5467..144aa160d 100644
--- a/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistenceException.java
+++ b/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/PersistenceException.java
@@ -18,18 +18,17 @@ package com.android.safetycenter.persistence;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
/** Exception thrown when there is an error accessing persistent data. */
@RequiresApi(TIRAMISU)
public final class PersistenceException extends Exception {
- public PersistenceException(@NonNull String message) {
+ public PersistenceException(String message) {
super(message);
}
- public PersistenceException(@NonNull String message, @NonNull Throwable ex) {
+ public PersistenceException(String message, Throwable ex) {
super(message, ex);
}
}
diff --git a/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/SafetyCenterIssuesPersistence.java b/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/SafetyCenterIssuesPersistence.java
index 9755ad2b7..40450e178 100644
--- a/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/SafetyCenterIssuesPersistence.java
+++ b/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/SafetyCenterIssuesPersistence.java
@@ -31,7 +31,6 @@ import android.util.AtomicFile;
import android.util.Log;
import android.util.Xml;
-import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import org.xmlpull.v1.XmlPullParser;
@@ -81,9 +80,7 @@ public final class SafetyCenterIssuesPersistence {
* @return the list of issue states read or an empty list if the file does not exist
* @throws PersistenceException if there is an unexpected error while reading the file
*/
- @NonNull
- public static List<PersistedSafetyCenterIssue> read(@NonNull File file)
- throws PersistenceException {
+ public static List<PersistedSafetyCenterIssue> read(File file) throws PersistenceException {
XmlPullParser parser = Xml.newPullParser();
try (FileInputStream inputStream = new AtomicFile(file).openRead()) {
parser.setFeature(FEATURE_PROCESS_NAMESPACES, true);
@@ -97,8 +94,7 @@ public final class SafetyCenterIssuesPersistence {
}
}
- @NonNull
- private static List<PersistedSafetyCenterIssue> parseXml(@NonNull XmlPullParser parser)
+ private static List<PersistedSafetyCenterIssue> parseXml(XmlPullParser parser)
throws IOException, PersistenceException, XmlPullParserException {
if (parser.getEventType() != START_DOCUMENT) {
throw new PersistenceException("Unexpected parser state");
@@ -115,8 +111,7 @@ public final class SafetyCenterIssuesPersistence {
return persistedSafetyCenterIssues;
}
- @NonNull
- private static List<PersistedSafetyCenterIssue> parseIssues(@NonNull XmlPullParser parser)
+ private static List<PersistedSafetyCenterIssue> parseIssues(XmlPullParser parser)
throws IOException, PersistenceException, XmlPullParserException {
int version = NO_VERSION;
for (int i = 0; i < parser.getAttributeCount(); i++) {
@@ -145,8 +140,7 @@ public final class SafetyCenterIssuesPersistence {
return persistedSafetyCenterIssues;
}
- @NonNull
- private static PersistedSafetyCenterIssue parseIssue(@NonNull XmlPullParser parser)
+ private static PersistedSafetyCenterIssue parseIssue(XmlPullParser parser)
throws IOException, PersistenceException, XmlPullParserException {
boolean hasDismissedAt = false;
boolean hasDismissCount = false;
@@ -197,22 +191,21 @@ public final class SafetyCenterIssuesPersistence {
}
}
- private static void validateElementStart(@NonNull XmlPullParser parser, @NonNull String name)
+ private static void validateElementStart(XmlPullParser parser, String name)
throws PersistenceException, XmlPullParserException {
if (parser.getEventType() != START_TAG || !parser.getName().equals(name)) {
throw new PersistenceException(String.format("Element %s missing", name));
}
}
- private static void validateElementEnd(@NonNull XmlPullParser parser, @NonNull String name)
+ private static void validateElementEnd(XmlPullParser parser, String name)
throws PersistenceException, XmlPullParserException {
if (parser.getEventType() != END_TAG || !parser.getName().equals(name)) {
throw new PersistenceException(String.format("Element %s not closed", name));
}
}
- private static int parseInteger(@NonNull String value, @NonNull String name)
- throws PersistenceException {
+ private static int parseInteger(String value, String name) throws PersistenceException {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
@@ -220,8 +213,7 @@ public final class SafetyCenterIssuesPersistence {
}
}
- private static Instant parseInstant(@NonNull String value, @NonNull String name)
- throws PersistenceException {
+ private static Instant parseInstant(String value, String name) throws PersistenceException {
try {
return Instant.ofEpochMilli(Long.parseLong(value));
} catch (DateTimeException | NumberFormatException e) {
@@ -229,12 +221,11 @@ public final class SafetyCenterIssuesPersistence {
}
}
- private static PersistenceException attributeUnexpected(@NonNull String name) {
+ private static PersistenceException attributeUnexpected(String name) {
return new PersistenceException("Unexpected attribute " + name);
}
- private static PersistenceException attributeInvalid(
- @NonNull String value, @NonNull String name, @NonNull Throwable ex) {
+ private static PersistenceException attributeInvalid(String value, String name, Throwable ex) {
return new PersistenceException(
"Attribute value \"" + value + "\" for " + name + " invalid", ex);
}
@@ -248,8 +239,7 @@ public final class SafetyCenterIssuesPersistence {
* @param file the file to write to
*/
public static void write(
- @NonNull List<PersistedSafetyCenterIssue> persistedSafetyCenterIssues,
- @NonNull File file) {
+ List<PersistedSafetyCenterIssue> persistedSafetyCenterIssues, File file) {
AtomicFile atomicFile = new AtomicFile(file);
FileOutputStream outputStream = null;
try {
@@ -277,8 +267,7 @@ public final class SafetyCenterIssuesPersistence {
}
private static void serializeIssues(
- @NonNull XmlSerializer serializer,
- @NonNull List<PersistedSafetyCenterIssue> persistedSafetyCenterIssues)
+ XmlSerializer serializer, List<PersistedSafetyCenterIssue> persistedSafetyCenterIssues)
throws IOException {
serializer.startTag(null, TAG_ISSUES);
serializer.attribute(null, ATTRIBUTE_VERSION, Integer.toString(CURRENT_VERSION));
diff --git a/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/package-info.java b/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/package-info.java
new file mode 100644
index 000000000..958a8b287
--- /dev/null
+++ b/SafetyCenter/Persistence/java/com/android/safetycenter/persistence/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.safetycenter.persistence;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/SafetyCenter/ResourcesLib/Android.bp b/SafetyCenter/ResourcesLib/Android.bp
index 75fe38408..ebc7aa017 100644
--- a/SafetyCenter/ResourcesLib/Android.bp
+++ b/SafetyCenter/ResourcesLib/Android.bp
@@ -26,6 +26,7 @@ java_library {
],
libs: [
"androidx.annotation_annotation",
+ "safety-center-annotations",
],
apex_available: [
"com.android.permission",
diff --git a/SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/SafetyCenterResourcesContext.java b/SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/SafetyCenterResourcesContext.java
index 10f8141a5..2ecf45968 100644
--- a/SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/SafetyCenterResourcesContext.java
+++ b/SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/SafetyCenterResourcesContext.java
@@ -28,7 +28,6 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.util.Log;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.annotation.VisibleForTesting;
@@ -61,13 +60,13 @@ public class SafetyCenterResourcesContext extends ContextWrapper {
private static final String CONFIG_NAME = "safety_center_config";
/** Intent action that is used to identify the Safety Center resources APK */
- @NonNull private final String mResourcesApkAction;
+ private final String mResourcesApkAction;
/** The path where the Safety Center resources APK is expected to be installed */
@Nullable private final String mResourcesApkPath;
/** Raw XML config resource name */
- @NonNull private final String mConfigName;
+ private final String mConfigName;
/** Specific flags used for retrieving resolve info */
private final int mFlags;
@@ -84,12 +83,12 @@ public class SafetyCenterResourcesContext extends ContextWrapper {
@Nullable private Resources mResourcesFromApk;
@Nullable private Resources.Theme mThemeFromApk;
- public SafetyCenterResourcesContext(@NonNull Context contextBase) {
+ public SafetyCenterResourcesContext(Context contextBase) {
this(contextBase, /* shouldFallbackIfNamedResourceNotFound */ true);
}
private SafetyCenterResourcesContext(
- @NonNull Context contextBase, boolean shouldFallbackIfNamedResourceNotFound) {
+ Context contextBase, boolean shouldFallbackIfNamedResourceNotFound) {
this(
contextBase,
RESOURCES_APK_ACTION,
@@ -101,10 +100,10 @@ public class SafetyCenterResourcesContext extends ContextWrapper {
@VisibleForTesting
SafetyCenterResourcesContext(
- @NonNull Context contextBase,
- @NonNull String resourcesApkAction,
+ Context contextBase,
+ String resourcesApkAction,
@Nullable String resourcesApkPath,
- @NonNull String configName,
+ String configName,
int flags,
boolean shouldFallbackIfNamedResourceNotFound) {
super(contextBase);
@@ -117,7 +116,7 @@ public class SafetyCenterResourcesContext extends ContextWrapper {
/** Creates a new {@link SafetyCenterResourcesContext} for testing. */
@VisibleForTesting
- public static SafetyCenterResourcesContext forTests(@NonNull Context contextBase) {
+ public static SafetyCenterResourcesContext forTests(Context contextBase) {
return new SafetyCenterResourcesContext(
contextBase, /* shouldFallbackIfNamedResourceNotFound */ false);
}
@@ -214,7 +213,7 @@ public class SafetyCenterResourcesContext extends ContextWrapper {
/** Same as {@link #getOptionalString(int)} but with the given {@code formatArgs}. */
@Nullable
- public String getOptionalString(@StringRes int stringId, @NonNull Object... formatArgs) {
+ public String getOptionalString(@StringRes int stringId, Object... formatArgs) {
if (stringId == Resources.ID_NULL) {
return null;
}
@@ -226,22 +225,18 @@ public class SafetyCenterResourcesContext extends ContextWrapper {
* string if the resource does not exist (or throws a {@link Resources.NotFoundException} if
* {@link #mShouldFallbackIfNamedResourceNotFound} is {@code false}).
*/
- @NonNull
- public String getStringByName(@NonNull String name) {
+ public String getStringByName(String name) {
int id = getStringRes(name);
return maybeFallbackIfNamedResourceIsNull(name, getOptionalString(id));
}
/** Same as {@link #getStringByName(String)} but with the given {@code formatArgs}. */
- @NonNull
- public String getStringByName(@NonNull String name, Object... formatArgs) {
+ public String getStringByName(String name, Object... formatArgs) {
int id = getStringRes(name);
return maybeFallbackIfNamedResourceIsNull(name, getOptionalString(id, formatArgs));
}
- @NonNull
- private String maybeFallbackIfNamedResourceIsNull(
- @NonNull String name, @Nullable String value) {
+ private String maybeFallbackIfNamedResourceIsNull(String name, @Nullable String value) {
if (value != null) {
return value;
}
@@ -253,7 +248,7 @@ public class SafetyCenterResourcesContext extends ContextWrapper {
}
@StringRes
- private int getStringRes(@NonNull String name) {
+ private int getStringRes(String name) {
String resourcePkgName = getResourcesApkPkgName();
if (resourcePkgName == null) {
return Resources.ID_NULL;
@@ -326,7 +321,7 @@ public class SafetyCenterResourcesContext extends ContextWrapper {
* @param theme the theme used to style the drawable attributes, may be {@code null}
*/
@Nullable
- public Drawable getDrawableByName(@NonNull String name, @Nullable Resources.Theme theme) {
+ public Drawable getDrawableByName(String name, @Nullable Resources.Theme theme) {
String resourcePkgName = getResourcesApkPkgName();
if (resourcePkgName == null) {
return null;
diff --git a/SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/package-info.java b/SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/package-info.java
new file mode 100644
index 000000000..605b5ce71
--- /dev/null
+++ b/SafetyCenter/ResourcesLib/java/com/android/safetycenter/resources/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.safetycenter.resources;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/jarjar-rules.txt b/jarjar-rules.txt
index 02810b25a..2b8765cf5 100644
--- a/jarjar-rules.txt
+++ b/jarjar-rules.txt
@@ -3,8 +3,10 @@ rule android.util.IndentingPrintWriter com.android.permission.jarjar.@0
rule com.android.internal.** com.android.permission.jarjar.@0
rule com.android.modules.** com.android.permission.jarjar.@0
rule com.android.role.*Proto com.android.permission.jarjar.@0
-# TODO(b/236200992): Revisit addition of rule com.android.safetycenter.internaldata,
-# com.android.safetycenter.pendingintents and com.android.safetycenter.resources
+# TODO(b/236200992): Revisit addition of rule com.android.safetycenter.annotations,
+# com.android.safetycenter.internaldata, com.android.safetycenter.pendingintents and
+# com.android.safetycenter.resources
+rule com.android.safetycenter.annotations.** com.android.permission.jarjar.@0
rule com.android.safetycenter.internaldata.** com.android.permission.jarjar.@0
rule com.android.safetycenter.pendingintents.** com.android.permission.jarjar.@0
rule com.android.safetycenter.resources.** com.android.permission.jarjar.@0
diff --git a/service/Android.bp b/service/Android.bp
index 1ec44beee..c80044fac 100644
--- a/service/Android.bp
+++ b/service/Android.bp
@@ -91,6 +91,7 @@ java_sdk_library {
// Soong fails to automatically add this dependency because all the
// *.kt sources are inside a filegroup.
"kotlin-annotations",
+ "safety-center-annotations",
],
static_libs: [
"kotlin-stdlib",
diff --git a/service/java/com/android/safetycenter/DevicePolicyResources.java b/service/java/com/android/safetycenter/DevicePolicyResources.java
index 0898136f0..25cab343f 100644
--- a/service/java/com/android/safetycenter/DevicePolicyResources.java
+++ b/service/java/com/android/safetycenter/DevicePolicyResources.java
@@ -20,7 +20,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static java.util.Objects.requireNonNull;
-import android.annotation.NonNull;
import android.annotation.StringRes;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyResourcesManager;
@@ -46,10 +45,9 @@ final class DevicePolicyResources {
* Returns the updated string for the given {@code safetySourceId} by calling {@link
* DevicePolicyResourcesManager#getString}.
*/
- @NonNull
static String getSafetySourceWorkString(
- @NonNull SafetyCenterResourcesContext safetyCenterResourcesContext,
- @NonNull String safetySourceId,
+ SafetyCenterResourcesContext safetyCenterResourcesContext,
+ String safetySourceId,
@StringRes int workResId) {
return getEnterpriseString(
safetyCenterResourcesContext,
@@ -61,20 +59,16 @@ final class DevicePolicyResources {
* Returns the updated string for the {@code work_profile_paused} string by calling {@link
* DevicePolicyResourcesManager#getString}.
*/
- @NonNull
static String getWorkProfilePausedString(
- @NonNull SafetyCenterResourcesContext safetyCenterResourcesContext) {
+ SafetyCenterResourcesContext safetyCenterResourcesContext) {
return getEnterpriseString(
safetyCenterResourcesContext,
WORK_PROFILE_PAUSED_TITLE,
() -> safetyCenterResourcesContext.getStringByName("work_profile_paused"));
}
- @NonNull
private static String getEnterpriseString(
- @NonNull Context context,
- @NonNull String devicePolicyIdentifier,
- @NonNull Supplier<String> defaultValueLoader) {
+ Context context, String devicePolicyIdentifier, Supplier<String> defaultValueLoader) {
// This call requires the caller’s identity to match the package name of the given context.
// However, the SafetyCenterResourcesContext’s has package name "android", which does not
// necessarily match the caller’s package when making Binder calls, so the calling identity
diff --git a/service/java/com/android/safetycenter/PendingIntentFactory.java b/service/java/com/android/safetycenter/PendingIntentFactory.java
index fe1e19515..294e30456 100644
--- a/service/java/com/android/safetycenter/PendingIntentFactory.java
+++ b/service/java/com/android/safetycenter/PendingIntentFactory.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.PendingIntent;
@@ -58,12 +57,11 @@ final class PendingIntentFactory {
private static final int ANDROID_LOCK_SCREEN_ENTRY_REQ_CODE = 1;
private static final int ANDROID_LOCK_SCREEN_ICON_ACTION_REQ_CODE = 2;
- @NonNull private final Context mContext;
- @NonNull private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
+ private final Context mContext;
+ private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
PendingIntentFactory(
- @NonNull Context context,
- @NonNull SafetyCenterResourcesContext safetyCenterResourcesContext) {
+ Context context, SafetyCenterResourcesContext safetyCenterResourcesContext) {
mContext = context;
mSafetyCenterResourcesContext = safetyCenterResourcesContext;
}
@@ -83,9 +81,9 @@ final class PendingIntentFactory {
*/
@Nullable
PendingIntent getPendingIntent(
- @NonNull String sourceId,
+ String sourceId,
@Nullable String intentAction,
- @NonNull String packageName,
+ String packageName,
@UserIdInt int userId,
boolean isQuietModeEnabled) {
if (intentAction == null) {
@@ -118,7 +116,7 @@ final class PendingIntentFactory {
*/
@Nullable
PendingIntent maybeOverridePendingIntent(
- @NonNull String sourceId, @Nullable PendingIntent pendingIntent, boolean isIconAction) {
+ String sourceId, @Nullable PendingIntent pendingIntent, boolean isIconAction) {
if (!ANDROID_LOCK_SCREEN_SOURCE_ID.equals(sourceId) || pendingIntent == null) {
return pendingIntent;
}
@@ -169,7 +167,7 @@ final class PendingIntentFactory {
newLockScreenIntent(settingsPackageName));
}
- private static boolean hasFixedSettingsIssue(@NonNull Context settingsPackageContext) {
+ private static boolean hasFixedSettingsIssue(Context settingsPackageContext) {
Resources settingsResources = settingsPackageContext.getResources();
int hasSettingsFixedIssueResourceId =
settingsResources.getIdentifier(
@@ -182,8 +180,7 @@ final class PendingIntentFactory {
return false;
}
- @NonNull
- private static Intent newBaseLockScreenIntent(@NonNull String settingsPackageName) {
+ private static Intent newBaseLockScreenIntent(String settingsPackageName) {
return new Intent(Intent.ACTION_MAIN)
.setComponent(
new ComponentName(
@@ -191,8 +188,7 @@ final class PendingIntentFactory {
.putExtra(":settings:source_metrics", 1917);
}
- @NonNull
- private static Intent newLockScreenIntent(@NonNull String settingsPackageName) {
+ private static Intent newLockScreenIntent(String settingsPackageName) {
String targetFragment =
settingsPackageName + ".password.ChooseLockGeneric$ChooseLockGenericFragment";
return newBaseLockScreenIntent(settingsPackageName)
@@ -200,8 +196,7 @@ final class PendingIntentFactory {
.putExtra("page_transition_type", 1);
}
- @NonNull
- private static Intent newLockScreenIconActionIntent(@NonNull String settingsPackageName) {
+ private static Intent newLockScreenIconActionIntent(String settingsPackageName) {
String targetFragment = settingsPackageName + ".security.screenlock.ScreenLockSettings";
return newBaseLockScreenIntent(settingsPackageName)
.putExtra(":settings:show_fragment", targetFragment)
@@ -210,9 +205,9 @@ final class PendingIntentFactory {
@Nullable
private Intent createIntent(
- @NonNull Context packageContext,
- @NonNull String sourceId,
- @NonNull String intentAction,
+ Context packageContext,
+ String sourceId,
+ String intentAction,
boolean isQuietModeEnabled) {
Intent intent = new Intent(intentAction);
@@ -250,7 +245,7 @@ final class PendingIntentFactory {
return null;
}
- private boolean shouldAddSettingsHomepageExtra(@NonNull String sourceId) {
+ private boolean shouldAddSettingsHomepageExtra(String sourceId) {
return Arrays.asList(
mSafetyCenterResourcesContext
.getStringByName("config_useSettingsHomepageIntentExtra")
@@ -258,13 +253,11 @@ final class PendingIntentFactory {
.contains(sourceId);
}
- private static boolean intentResolves(@NonNull Context packageContext, @NonNull Intent intent) {
+ private static boolean intentResolves(Context packageContext, Intent intent) {
return !queryIntentActivities(packageContext, intent).isEmpty();
}
- @NonNull
- private static List<ResolveInfo> queryIntentActivities(
- @NonNull Context packageContext, @NonNull Intent intent) {
+ private static List<ResolveInfo> queryIntentActivities(Context packageContext, Intent intent) {
PackageManager packageManager = packageContext.getPackageManager();
// This call requires the INTERACT_ACROSS_USERS permission as the `packageContext` could
// belong to another user.
@@ -276,9 +269,8 @@ final class PendingIntentFactory {
}
}
- @NonNull
private static PendingIntent getActivityPendingIntent(
- @NonNull Context packageContext, int requestCode, @NonNull Intent intent) {
+ Context packageContext, int requestCode, Intent intent) {
return getActivityPendingIntent(
packageContext, requestCode, intent, PendingIntent.FLAG_IMMUTABLE);
}
@@ -291,7 +283,7 @@ final class PendingIntentFactory {
*/
@Nullable
static PendingIntent getActivityPendingIntent(
- @NonNull Context packageContext, int requestCode, @NonNull Intent intent, int flags) {
+ Context packageContext, int requestCode, Intent intent, int flags) {
// This call requires Binder identity to be cleared for getIntentSender() to be allowed to
// send as another package.
final long callingId = Binder.clearCallingIdentity();
@@ -311,7 +303,7 @@ final class PendingIntentFactory {
*/
@Nullable
static PendingIntent getNonProtectedSystemOnlyBroadcastPendingIntent(
- @NonNull Context context, int requestCode, @NonNull Intent intent, int flags) {
+ Context context, int requestCode, Intent intent, int flags) {
if ((flags & PendingIntent.FLAG_IMMUTABLE) == 0) {
throw new IllegalArgumentException("flags must include FLAG_IMMUTABLE");
}
@@ -326,7 +318,7 @@ final class PendingIntentFactory {
}
@Nullable
- private Context createPackageContextAsUser(@NonNull String packageName, @UserIdInt int userId) {
+ private Context createPackageContextAsUser(String packageName, @UserIdInt int userId) {
// This call requires the INTERACT_ACROSS_USERS permission.
final long callingId = Binder.clearCallingIdentity();
try {
diff --git a/service/java/com/android/safetycenter/SafetyCenterBroadcastDispatcher.java b/service/java/com/android/safetycenter/SafetyCenterBroadcastDispatcher.java
index 2b5a2c41e..e8e6befe5 100644
--- a/service/java/com/android/safetycenter/SafetyCenterBroadcastDispatcher.java
+++ b/service/java/com/android/safetycenter/SafetyCenterBroadcastDispatcher.java
@@ -32,7 +32,6 @@ import static android.safetycenter.SafetyCenterManager.REFRESH_REASON_SAFETY_CEN
import static java.util.Collections.unmodifiableList;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.UserIdInt;
@@ -73,16 +72,16 @@ import javax.annotation.concurrent.NotThreadSafe;
final class SafetyCenterBroadcastDispatcher {
private static final String TAG = "SafetyCenterBroadcastDi";
- @NonNull private final Context mContext;
- @NonNull private final SafetyCenterConfigReader mSafetyCenterConfigReader;
- @NonNull private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
- @NonNull private final SafetyCenterDataManager mSafetyCenterDataManager;
+ private final Context mContext;
+ private final SafetyCenterConfigReader mSafetyCenterConfigReader;
+ private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
+ private final SafetyCenterDataManager mSafetyCenterDataManager;
SafetyCenterBroadcastDispatcher(
- @NonNull Context context,
- @NonNull SafetyCenterConfigReader safetyCenterConfigReader,
- @NonNull SafetyCenterRefreshTracker safetyCenterRefreshTracker,
- @NonNull SafetyCenterDataManager safetyCenterDataManager) {
+ Context context,
+ SafetyCenterConfigReader safetyCenterConfigReader,
+ SafetyCenterRefreshTracker safetyCenterRefreshTracker,
+ SafetyCenterDataManager safetyCenterDataManager) {
mContext = context;
mSafetyCenterConfigReader = safetyCenterConfigReader;
mSafetyCenterRefreshTracker = safetyCenterRefreshTracker;
@@ -101,7 +100,7 @@ final class SafetyCenterBroadcastDispatcher {
@Nullable
String sendRefreshSafetySources(
@RefreshReason int refreshReason,
- @NonNull UserProfileGroup userProfileGroup,
+ UserProfileGroup userProfileGroup,
@Nullable List<String> safetySourceIds) {
List<Broadcast> broadcasts = mSafetyCenterConfigReader.getBroadcasts();
BroadcastOptions broadcastOptions = createBroadcastOptions();
@@ -133,11 +132,11 @@ final class SafetyCenterBroadcastDispatcher {
}
private boolean sendRefreshSafetySourcesBroadcast(
- @NonNull Broadcast broadcast,
- @NonNull BroadcastOptions broadcastOptions,
+ Broadcast broadcast,
+ BroadcastOptions broadcastOptions,
@RefreshReason int refreshReason,
- @NonNull UserProfileGroup userProfileGroup,
- @NonNull String broadcastId,
+ UserProfileGroup userProfileGroup,
+ String broadcastId,
@Nullable List<String> requiredSourceIds) {
boolean hasSentAtLeastOneBroadcast = false;
int requestType = RefreshReasons.toRefreshRequestType(refreshReason);
@@ -203,9 +202,9 @@ final class SafetyCenterBroadcastDispatcher {
}
private void sendEnabledChangedBroadcast(
- @NonNull Broadcast broadcast,
- @NonNull BroadcastOptions broadcastOptions,
- @NonNull List<UserProfileGroup> userProfileGroups) {
+ Broadcast broadcast,
+ BroadcastOptions broadcastOptions,
+ List<UserProfileGroup> userProfileGroups) {
Intent intent = createExplicitEnabledChangedIntent(broadcast.getPackageName());
// The same ENABLED reason is used here for both enable and disable events. It is not sent
// externally and is only used internally to filter safety sources in the methods of the
@@ -226,9 +225,7 @@ final class SafetyCenterBroadcastDispatcher {
}
private boolean sendBroadcastIfResolves(
- @NonNull Intent intent,
- @NonNull UserHandle userHandle,
- @Nullable BroadcastOptions broadcastOptions) {
+ Intent intent, UserHandle userHandle, @Nullable BroadcastOptions broadcastOptions) {
if (!doesBroadcastResolve(intent, userHandle)) {
Log.w(
TAG,
@@ -251,9 +248,9 @@ final class SafetyCenterBroadcastDispatcher {
// TODO(b/193460475): Remove when tooling supports SystemApi to public API.
@SuppressLint("NewApi")
private void sendBroadcast(
- @NonNull Intent intent,
- @NonNull UserHandle userHandle,
- @NonNull String permission,
+ Intent intent,
+ UserHandle userHandle,
+ String permission,
@Nullable BroadcastOptions broadcastOptions) {
// This call requires the INTERACT_ACROSS_USERS permission.
final long callingId = Binder.clearCallingIdentity();
@@ -268,29 +265,25 @@ final class SafetyCenterBroadcastDispatcher {
}
}
- private boolean doesBroadcastResolve(
- @NonNull Intent broadcastIntent, @NonNull UserHandle userHandle) {
+ private boolean doesBroadcastResolve(Intent broadcastIntent, UserHandle userHandle) {
return !PackageUtils.queryUnfilteredBroadcastReceiversAsUser(
broadcastIntent, 0, userHandle.getIdentifier(), mContext)
.isEmpty();
}
- @NonNull
- private static Intent createExplicitEnabledChangedIntent(@NonNull String packageName) {
+ private static Intent createExplicitEnabledChangedIntent(String packageName) {
return createImplicitEnabledChangedIntent().setPackage(packageName);
}
- @NonNull
private static Intent createImplicitEnabledChangedIntent() {
return createBroadcastIntent(ACTION_SAFETY_CENTER_ENABLED_CHANGED);
}
- @NonNull
private static Intent createRefreshIntent(
@RefreshRequestType int requestType,
- @NonNull String packageName,
- @NonNull List<String> sourceIdsToRefresh,
- @NonNull String broadcastId) {
+ String packageName,
+ List<String> sourceIdsToRefresh,
+ String broadcastId) {
String[] sourceIdsArray = sourceIdsToRefresh.toArray(new String[0]);
return createBroadcastIntent(ACTION_REFRESH_SAFETY_SOURCES)
.putExtra(EXTRA_REFRESH_SAFETY_SOURCES_REQUEST_TYPE, requestType)
@@ -299,14 +292,12 @@ final class SafetyCenterBroadcastDispatcher {
.setPackage(packageName);
}
- @NonNull
- private static Intent createBroadcastIntent(@NonNull String intentAction) {
+ private static Intent createBroadcastIntent(String intentAction) {
return new Intent(intentAction).setFlags(FLAG_RECEIVER_FOREGROUND);
}
// TODO(b/193460475): Remove when tooling supports SystemApi to public API.
@SuppressLint("NewApi")
- @NonNull
private static BroadcastOptions createBroadcastOptions() {
BroadcastOptions broadcastOptions = BroadcastOptions.makeBasic();
Duration allowListDuration = SafetyCenterFlags.getFgsAllowlistDuration();
@@ -325,7 +316,6 @@ final class SafetyCenterBroadcastDispatcher {
}
/** Returns the list of source IDs for which refreshing is denied for the given reason. */
- @NonNull
private static Set<String> getRefreshDeniedSourceIds(@RefreshReason int refreshReason) {
if (RefreshReasons.isBackgroundRefresh(refreshReason)) {
return SafetyCenterFlags.getBackgroundRefreshDeniedSourceIds();
@@ -344,10 +334,9 @@ final class SafetyCenterBroadcastDispatcher {
*
* <p>Every value present is a non-empty list, but the overall result may be empty.
*/
- @NonNull
private SparseArray<List<String>> getUserIdsToSourceIds(
- @NonNull Broadcast broadcast,
- @NonNull UserProfileGroup userProfileGroup,
+ Broadcast broadcast,
+ UserProfileGroup userProfileGroup,
@RefreshReason int refreshReason) {
int[] managedProfileIds = userProfileGroup.getManagedRunningProfilesUserIds();
SparseArray<List<String>> result = new SparseArray<>(managedProfileIds.length + 1);
@@ -386,11 +375,10 @@ final class SafetyCenterBroadcastDispatcher {
* config, or are in the safety_center_override_refresh_on_page_open_sources flag, or don't have
* any {@link SafetySourceData} provided.
*/
- @NonNull
private List<String> getSourceIdsForRefreshReason(
@RefreshReason int refreshReason,
- @NonNull List<String> allSourceIds,
- @NonNull List<String> pageOpenSourceIds,
+ List<String> allSourceIds,
+ List<String> pageOpenSourceIds,
@UserIdInt int userId) {
if (refreshReason != REFRESH_REASON_PAGE_OPEN) {
return allSourceIds;
diff --git a/service/java/com/android/safetycenter/SafetyCenterConfigReader.java b/service/java/com/android/safetycenter/SafetyCenterConfigReader.java
index 27c7f6e58..14a2db6ff 100644
--- a/service/java/com/android/safetycenter/SafetyCenterConfigReader.java
+++ b/service/java/com/android/safetycenter/SafetyCenterConfigReader.java
@@ -21,7 +21,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static java.util.Collections.unmodifiableList;
import static java.util.Objects.requireNonNull;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.res.Resources;
import android.safetycenter.config.SafetyCenterConfig;
@@ -57,14 +56,14 @@ public final class SafetyCenterConfigReader {
private static final String TAG = "SafetyCenterConfigReade";
- @NonNull private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
+ private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
@Nullable private SafetyCenterConfigInternal mConfigInternalFromXml;
@Nullable private SafetyCenterConfigInternal mConfigInternalOverrideForTests;
/** Creates a {@link SafetyCenterConfigReader} from a {@link SafetyCenterResourcesContext}. */
- SafetyCenterConfigReader(@NonNull SafetyCenterResourcesContext safetyCenterResourcesContext) {
+ SafetyCenterConfigReader(SafetyCenterResourcesContext safetyCenterResourcesContext) {
mSafetyCenterResourcesContext = safetyCenterResourcesContext;
}
@@ -91,7 +90,7 @@ public final class SafetyCenterConfigReader {
* <p>When set, information provided by this class will be based on the overridden {@link
* SafetyCenterConfig}.
*/
- void setConfigOverrideForTests(@NonNull SafetyCenterConfig safetyCenterConfig) {
+ void setConfigOverrideForTests(SafetyCenterConfig safetyCenterConfig) {
mConfigInternalOverrideForTests = SafetyCenterConfigInternal.from(safetyCenterConfig);
}
@@ -104,13 +103,11 @@ public final class SafetyCenterConfigReader {
}
/** Returns the currently active {@link SafetyCenterConfig}. */
- @NonNull
SafetyCenterConfig getSafetyCenterConfig() {
return getCurrentConfigInternal().getSafetyCenterConfig();
}
/** Returns the groups of {@link SafetySource}, in the order expected by the UI. */
- @NonNull
public List<SafetySourcesGroup> getSafetySourcesGroups() {
return getCurrentConfigInternal().getSafetyCenterConfig().getSafetySourcesGroups();
}
@@ -119,7 +116,6 @@ public final class SafetyCenterConfigReader {
* Returns the groups of {@link SafetySource}, filtering out any sources where {@link
* SafetySources#isLoggable(SafetySource)} is false (and any resultingly empty groups).
*/
- @NonNull
public List<SafetySourcesGroup> getLoggableSafetySourcesGroups() {
return getCurrentConfigInternal().getLoggableSourcesGroups();
}
@@ -134,7 +130,7 @@ public final class SafetyCenterConfigReader {
* calls will be no-oped).
*/
@Nullable
- public ExternalSafetySource getExternalSafetySource(@NonNull String safetySourceId) {
+ public ExternalSafetySource getExternalSafetySource(String safetySourceId) {
ExternalSafetySource externalSafetySourceInCurrentConfig =
getCurrentConfigInternal().getExternalSafetySources().get(safetySourceId);
if (externalSafetySourceInCurrentConfig != null) {
@@ -148,7 +144,7 @@ public final class SafetyCenterConfigReader {
* Returns whether the {@code safetySourceId} is associated with an external {@link
* SafetySource} that is currently active.
*/
- public boolean isExternalSafetySourceActive(@NonNull String safetySourceId) {
+ public boolean isExternalSafetySourceActive(String safetySourceId) {
return getCurrentConfigInternal().getExternalSafetySources().containsKey(safetySourceId);
}
@@ -164,7 +160,6 @@ public final class SafetyCenterConfigReader {
* Returns the {@link Broadcast} defined in the {@link SafetyCenterConfig}, with all the sources
* that they should handle and the profile on which they should be dispatched.
*/
- @NonNull
List<Broadcast> getBroadcasts() {
return getCurrentConfigInternal().getBroadcasts();
}
@@ -174,7 +169,6 @@ public final class SafetyCenterConfigReader {
return mConfigInternalOverrideForTests != null;
}
- @NonNull
private SafetyCenterConfigInternal getCurrentConfigInternal() {
// We require the XML config must be loaded successfully for SafetyCenterManager APIs to
// function, regardless of whether the config is subsequently overridden.
@@ -213,7 +207,7 @@ public final class SafetyCenterConfigReader {
}
/** Dumps state for debugging purposes. */
- void dump(@NonNull PrintWriter fout) {
+ void dump(PrintWriter fout) {
fout.println("XML CONFIG");
fout.println("\t" + mConfigInternalFromXml);
fout.println();
@@ -225,38 +219,34 @@ public final class SafetyCenterConfigReader {
/** A wrapper class around the parsed XML config. */
private static final class SafetyCenterConfigInternal {
- @NonNull private final SafetyCenterConfig mConfig;
- @NonNull private final ArrayMap<String, ExternalSafetySource> mExternalSafetySources;
- @NonNull private final List<SafetySourcesGroup> mLoggableSourcesGroups;
- @NonNull private final List<Broadcast> mBroadcasts;
+ private final SafetyCenterConfig mConfig;
+ private final ArrayMap<String, ExternalSafetySource> mExternalSafetySources;
+ private final List<SafetySourcesGroup> mLoggableSourcesGroups;
+ private final List<Broadcast> mBroadcasts;
private SafetyCenterConfigInternal(
- @NonNull SafetyCenterConfig safetyCenterConfig,
- @NonNull ArrayMap<String, ExternalSafetySource> externalSafetySources,
- @NonNull List<SafetySourcesGroup> loggableSourcesGroups,
- @NonNull List<Broadcast> broadcasts) {
+ SafetyCenterConfig safetyCenterConfig,
+ ArrayMap<String, ExternalSafetySource> externalSafetySources,
+ List<SafetySourcesGroup> loggableSourcesGroups,
+ List<Broadcast> broadcasts) {
mConfig = safetyCenterConfig;
mExternalSafetySources = externalSafetySources;
mLoggableSourcesGroups = loggableSourcesGroups;
mBroadcasts = broadcasts;
}
- @NonNull
private SafetyCenterConfig getSafetyCenterConfig() {
return mConfig;
}
- @NonNull
private ArrayMap<String, ExternalSafetySource> getExternalSafetySources() {
return mExternalSafetySources;
}
- @NonNull
private List<SafetySourcesGroup> getLoggableSourcesGroups() {
return mLoggableSourcesGroups;
}
- @NonNull
private List<Broadcast> getBroadcasts() {
return mBroadcasts;
}
@@ -288,9 +278,7 @@ public final class SafetyCenterConfigReader {
+ '}';
}
- @NonNull
- private static SafetyCenterConfigInternal from(
- @NonNull SafetyCenterConfig safetyCenterConfig) {
+ private static SafetyCenterConfigInternal from(SafetyCenterConfig safetyCenterConfig) {
return new SafetyCenterConfigInternal(
safetyCenterConfig,
extractExternalSafetySources(safetyCenterConfig),
@@ -298,9 +286,8 @@ public final class SafetyCenterConfigReader {
unmodifiableList(extractBroadcasts(safetyCenterConfig)));
}
- @NonNull
private static ArrayMap<String, ExternalSafetySource> extractExternalSafetySources(
- @NonNull SafetyCenterConfig safetyCenterConfig) {
+ SafetyCenterConfig safetyCenterConfig) {
ArrayMap<String, ExternalSafetySource> externalSafetySources = new ArrayMap<>();
List<SafetySourcesGroup> safetySourcesGroups =
safetyCenterConfig.getSafetySourcesGroups();
@@ -330,9 +317,8 @@ public final class SafetyCenterConfigReader {
return externalSafetySources;
}
- @NonNull
private static List<SafetySourcesGroup> extractLoggableSafetySourcesGroups(
- @NonNull SafetyCenterConfig safetyCenterConfig) {
+ SafetyCenterConfig safetyCenterConfig) {
List<SafetySourcesGroup> originalGroups = safetyCenterConfig.getSafetySourcesGroups();
List<SafetySourcesGroup> filteredGroups = new ArrayList<>(originalGroups.size());
@@ -359,9 +345,7 @@ public final class SafetyCenterConfigReader {
return filteredGroups;
}
- @NonNull
- private static List<Broadcast> extractBroadcasts(
- @NonNull SafetyCenterConfig safetyCenterConfig) {
+ private static List<Broadcast> extractBroadcasts(SafetyCenterConfig safetyCenterConfig) {
ArrayMap<String, Broadcast> packageNameToBroadcast = new ArrayMap<>();
List<Broadcast> broadcasts = new ArrayList<>();
List<SafetySourcesGroup> safetySourcesGroups =
@@ -409,17 +393,15 @@ public final class SafetyCenterConfigReader {
* @hide
*/
public static final class ExternalSafetySource {
- @NonNull private final SafetySource mSafetySource;
- @NonNull private final boolean mHasEntryInStatelessGroup;
+ private final SafetySource mSafetySource;
+ private final boolean mHasEntryInStatelessGroup;
- private ExternalSafetySource(
- @NonNull SafetySource safetySource, boolean hasEntryInStatelessGroup) {
+ private ExternalSafetySource(SafetySource safetySource, boolean hasEntryInStatelessGroup) {
mSafetySource = safetySource;
mHasEntryInStatelessGroup = hasEntryInStatelessGroup;
}
/** Returns the external {@link SafetySource}. */
- @NonNull
public SafetySource getSafetySource() {
return mSafetySource;
}
@@ -460,19 +442,18 @@ public final class SafetyCenterConfigReader {
/** A class that represents a broadcast to be sent to safety sources. */
static final class Broadcast {
- @NonNull private final String mPackageName;
+ private final String mPackageName;
private final List<String> mSourceIdsForProfileParent = new ArrayList<>();
private final List<String> mSourceIdsForProfileParentOnPageOpen = new ArrayList<>();
private final List<String> mSourceIdsForManagedProfiles = new ArrayList<>();
private final List<String> mSourceIdsForManagedProfilesOnPageOpen = new ArrayList<>();
- private Broadcast(@NonNull String packageName) {
+ private Broadcast(String packageName) {
mPackageName = packageName;
}
/** Returns the package name to dispatch the broadcast to. */
- @NonNull
String getPackageName() {
return mPackageName;
}
@@ -482,7 +463,6 @@ public final class SafetyCenterConfigReader {
*
* <p>If this list is empty, there are no sources to dispatch to in the profile owner.
*/
- @NonNull
List<String> getSourceIdsForProfileParent() {
return unmodifiableList(mSourceIdsForProfileParent);
}
@@ -493,7 +473,6 @@ public final class SafetyCenterConfigReader {
*
* <p>If this list is empty, there are no sources to dispatch to in the profile owner.
*/
- @NonNull
List<String> getSourceIdsForProfileParentOnPageOpen() {
return unmodifiableList(mSourceIdsForProfileParentOnPageOpen);
}
@@ -503,7 +482,6 @@ public final class SafetyCenterConfigReader {
*
* <p>If this list is empty, there are no sources to dispatch to in the managed profile(s).
*/
- @NonNull
List<String> getSourceIdsForManagedProfiles() {
return unmodifiableList(mSourceIdsForManagedProfiles);
}
@@ -514,7 +492,6 @@ public final class SafetyCenterConfigReader {
*
* <p>If this list is empty, there are no sources to dispatch to in the managed profile(s).
*/
- @NonNull
List<String> getSourceIdsForManagedProfilesOnPageOpen() {
return unmodifiableList(mSourceIdsForManagedProfilesOnPageOpen);
}
diff --git a/service/java/com/android/safetycenter/SafetyCenterDataChangeNotifier.java b/service/java/com/android/safetycenter/SafetyCenterDataChangeNotifier.java
index 477d23a2f..877748b31 100644
--- a/service/java/com/android/safetycenter/SafetyCenterDataChangeNotifier.java
+++ b/service/java/com/android/safetycenter/SafetyCenterDataChangeNotifier.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.annotation.UserIdInt;
import androidx.annotation.RequiresApi;
@@ -35,31 +34,31 @@ import javax.annotation.concurrent.NotThreadSafe;
@NotThreadSafe
final class SafetyCenterDataChangeNotifier {
- @NonNull private final SafetyCenterNotificationSender mSafetyCenterNotificationSender;
- @NonNull private final SafetyCenterListeners mSafetyCenterListeners;
+ private final SafetyCenterNotificationSender mSafetyCenterNotificationSender;
+ private final SafetyCenterListeners mSafetyCenterListeners;
/** Initializes a new instance of {@link SafetyCenterDataChangeNotifier}. */
SafetyCenterDataChangeNotifier(
- @NonNull SafetyCenterNotificationSender safetyCenterNotificationSender,
- @NonNull SafetyCenterListeners safetyCenterListeners) {
+ SafetyCenterNotificationSender safetyCenterNotificationSender,
+ SafetyCenterListeners safetyCenterListeners) {
mSafetyCenterNotificationSender = safetyCenterNotificationSender;
mSafetyCenterListeners = safetyCenterListeners;
}
/** Updates classes that depend on data changes (changes of state in the data subpackage). */
- void updateDataConsumers(@NonNull UserProfileGroup userProfileGroup, @UserIdInt int userId) {
+ void updateDataConsumers(UserProfileGroup userProfileGroup, @UserIdInt int userId) {
mSafetyCenterNotificationSender.updateNotifications(userId);
mSafetyCenterListeners.deliverDataForUserProfileGroup(userProfileGroup);
}
/** Updates classes that depend on data changes (changes of state in the data subpackage). */
- void updateDataConsumers(@NonNull UserProfileGroup userProfileGroup) {
+ void updateDataConsumers(UserProfileGroup userProfileGroup) {
mSafetyCenterNotificationSender.updateNotifications(userProfileGroup);
mSafetyCenterListeners.deliverDataForUserProfileGroup(userProfileGroup);
}
/** Updates classes that depend on data changes (changes of state in the data subpackage). */
- void updateDataConsumers(@NonNull List<UserProfileGroup> userProfileGroups) {
+ void updateDataConsumers(List<UserProfileGroup> userProfileGroups) {
for (int i = 0; i < userProfileGroups.size(); i++) {
updateDataConsumers(userProfileGroups.get(i));
}
diff --git a/service/java/com/android/safetycenter/SafetyCenterDataFactory.java b/service/java/com/android/safetycenter/SafetyCenterDataFactory.java
index 158845560..626d45fba 100644
--- a/service/java/com/android/safetycenter/SafetyCenterDataFactory.java
+++ b/service/java/com/android/safetycenter/SafetyCenterDataFactory.java
@@ -21,7 +21,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static java.util.Collections.emptyList;
import static java.util.Objects.requireNonNull;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.PendingIntent;
@@ -79,19 +78,19 @@ public final class SafetyCenterDataFactory {
private static final String ANDROID_LOCK_SCREEN_SOURCES_GROUP_ID = "AndroidLockScreenSources";
- @NonNull private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
- @NonNull private final SafetyCenterConfigReader mSafetyCenterConfigReader;
- @NonNull private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
- @NonNull private final PendingIntentFactory mPendingIntentFactory;
+ private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
+ private final SafetyCenterConfigReader mSafetyCenterConfigReader;
+ private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
+ private final PendingIntentFactory mPendingIntentFactory;
- @NonNull private final SafetyCenterDataManager mSafetyCenterDataManager;
+ private final SafetyCenterDataManager mSafetyCenterDataManager;
SafetyCenterDataFactory(
- @NonNull SafetyCenterResourcesContext safetyCenterResourcesContext,
- @NonNull SafetyCenterConfigReader safetyCenterConfigReader,
- @NonNull SafetyCenterRefreshTracker safetyCenterRefreshTracker,
- @NonNull PendingIntentFactory pendingIntentFactory,
- @NonNull SafetyCenterDataManager safetyCenterDataManager) {
+ SafetyCenterResourcesContext safetyCenterResourcesContext,
+ SafetyCenterConfigReader safetyCenterConfigReader,
+ SafetyCenterRefreshTracker safetyCenterRefreshTracker,
+ PendingIntentFactory pendingIntentFactory,
+ SafetyCenterDataManager safetyCenterDataManager) {
mSafetyCenterResourcesContext = safetyCenterResourcesContext;
mSafetyCenterConfigReader = safetyCenterConfigReader;
mSafetyCenterRefreshTracker = safetyCenterRefreshTracker;
@@ -102,7 +101,6 @@ public final class SafetyCenterDataFactory {
/**
* Returns a default {@link SafetyCenterData} object to be returned when the API is disabled.
*/
- @NonNull
static SafetyCenterData getDefaultSafetyCenterData() {
SafetyCenterStatus defaultSafetyCenterStatus =
new SafetyCenterStatus.Builder("", "")
@@ -123,9 +121,8 @@ public final class SafetyCenterDataFactory {
* <p>If a {@link SafetySourceData} was not set, the default value from the {@link
* SafetyCenterConfig} is used.
*/
- @NonNull
SafetyCenterData assembleSafetyCenterData(
- @NonNull String packageName, @NonNull UserProfileGroup userProfileGroup) {
+ String packageName, UserProfileGroup userProfileGroup) {
return assembleSafetyCenterData(packageName, userProfileGroup, getAllGroups());
}
@@ -137,11 +134,10 @@ public final class SafetyCenterDataFactory {
* <p>If a {@link SafetySourceData} was not set, the default value from the {@link
* SafetyCenterConfig} is used.
*/
- @NonNull
public SafetyCenterData assembleSafetyCenterData(
- @NonNull String packageName,
- @NonNull UserProfileGroup userProfileGroup,
- @NonNull List<SafetySourcesGroup> safetySourcesGroups) {
+ String packageName,
+ UserProfileGroup userProfileGroup,
+ List<SafetySourcesGroup> safetySourcesGroups) {
List<SafetyCenterEntryOrGroup> safetyCenterEntryOrGroups = new ArrayList<>();
List<SafetyCenterStaticEntryGroup> safetyCenterStaticEntryGroups = new ArrayList<>();
SafetyCenterOverallState safetyCenterOverallState = new SafetyCenterOverallState();
@@ -255,16 +251,15 @@ public final class SafetyCenterDataFactory {
}
}
- @NonNull
private List<SafetySourcesGroup> getAllGroups() {
return mSafetyCenterConfigReader.getSafetySourcesGroups();
}
@Nullable
private SafetyCenterIssue toSafetyCenterIssue(
- @NonNull SafetySourceIssue safetySourceIssue,
- @NonNull SafetySourcesGroup safetySourcesGroup,
- @NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ SafetySourceIssue safetySourceIssue,
+ SafetySourcesGroup safetySourcesGroup,
+ SafetyCenterIssueKey safetyCenterIssueKey) {
SafetyCenterIssueId safetyCenterIssueId =
SafetyCenterIssueId.newBuilder()
.setSafetyCenterIssueKey(safetyCenterIssueKey)
@@ -308,10 +303,9 @@ public final class SafetyCenterDataFactory {
return safetyCenterIssueBuilder.build();
}
- @NonNull
private SafetyCenterIssue.Action toSafetyCenterIssueAction(
- @NonNull SafetySourceIssue.Action safetySourceIssueAction,
- @NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ SafetySourceIssue.Action safetySourceIssueAction,
+ SafetyCenterIssueKey safetyCenterIssueKey) {
SafetyCenterIssueActionId safetyCenterIssueActionId =
SafetyCenterIssueActionId.newBuilder()
.setSafetyCenterIssueKey(safetyCenterIssueKey)
@@ -333,11 +327,11 @@ public final class SafetyCenterDataFactory {
}
private void addSafetyCenterEntryGroup(
- @NonNull SafetyCenterOverallState safetyCenterOverallState,
- @NonNull List<SafetyCenterEntryOrGroup> safetyCenterEntryOrGroups,
- @NonNull SafetySourcesGroup safetySourcesGroup,
- @NonNull String defaultPackageName,
- @NonNull UserProfileGroup userProfileGroup) {
+ SafetyCenterOverallState safetyCenterOverallState,
+ List<SafetyCenterEntryOrGroup> safetyCenterEntryOrGroups,
+ SafetySourcesGroup safetySourcesGroup,
+ String defaultPackageName,
+ UserProfileGroup userProfileGroup) {
int groupSafetyCenterEntryLevel = SafetyCenterEntry.ENTRY_SEVERITY_LEVEL_UNSPECIFIED;
List<SafetySource> safetySources = safetySourcesGroup.getSafetySources();
@@ -425,9 +419,9 @@ public final class SafetyCenterDataFactory {
@Nullable
private CharSequence getSafetyCenterEntryGroupSummary(
- @NonNull SafetySourcesGroup safetySourcesGroup,
+ SafetySourcesGroup safetySourcesGroup,
@SafetyCenterEntry.EntrySeverityLevel int groupSafetyCenterEntryLevel,
- @NonNull List<SafetyCenterEntry> entries) {
+ List<SafetyCenterEntry> entries) {
switch (groupSafetyCenterEntryLevel) {
case SafetyCenterEntry.ENTRY_SEVERITY_LEVEL_CRITICAL_WARNING:
case SafetyCenterEntry.ENTRY_SEVERITY_LEVEL_RECOMMENDATION:
@@ -486,8 +480,7 @@ public final class SafetyCenterDataFactory {
@Nullable
private CharSequence getDefaultGroupSummary(
- @NonNull SafetySourcesGroup safetySourcesGroup,
- @NonNull List<SafetyCenterEntry> entries) {
+ SafetySourcesGroup safetySourcesGroup, List<SafetyCenterEntry> entries) {
CharSequence groupSummary =
mSafetyCenterResourcesContext.getOptionalString(
safetySourcesGroup.getSummaryResId());
@@ -511,10 +504,10 @@ public final class SafetyCenterDataFactory {
@SafetyCenterEntry.EntrySeverityLevel
private int addSafetyCenterEntry(
- @NonNull SafetyCenterOverallState safetyCenterOverallState,
- @NonNull List<SafetyCenterEntry> entries,
- @NonNull SafetySource safetySource,
- @NonNull String defaultPackageName,
+ SafetyCenterOverallState safetyCenterOverallState,
+ List<SafetyCenterEntry> entries,
+ SafetySource safetySource,
+ String defaultPackageName,
@UserIdInt int userId,
boolean isUserManaged,
boolean isManagedUserRunning) {
@@ -539,8 +532,8 @@ public final class SafetyCenterDataFactory {
@Nullable
private SafetyCenterEntry toSafetyCenterEntry(
- @NonNull SafetySource safetySource,
- @NonNull String defaultPackageName,
+ SafetySource safetySource,
+ String defaultPackageName,
@UserIdInt int userId,
boolean isUserManaged,
boolean isManagedUserRunning) {
@@ -632,8 +625,8 @@ public final class SafetyCenterDataFactory {
@Nullable
private SafetyCenterEntry toDefaultSafetyCenterEntry(
- @NonNull SafetySource safetySource,
- @NonNull String packageName,
+ SafetySource safetySource,
+ String packageName,
@SafetyCenterEntry.EntrySeverityLevel int entrySeverityLevel,
@SafetyCenterEntry.SeverityUnspecifiedIconType int severityUnspecifiedIconType,
@UserIdInt int userId,
@@ -687,11 +680,11 @@ public final class SafetyCenterDataFactory {
}
private void addSafetyCenterStaticEntryGroup(
- @NonNull SafetyCenterOverallState safetyCenterOverallState,
- @NonNull List<SafetyCenterStaticEntryGroup> safetyCenterStaticEntryGroups,
- @NonNull SafetySourcesGroup safetySourcesGroup,
- @NonNull String defaultPackageName,
- @NonNull UserProfileGroup userProfileGroup) {
+ SafetyCenterOverallState safetyCenterOverallState,
+ List<SafetyCenterStaticEntryGroup> safetyCenterStaticEntryGroups,
+ SafetySourcesGroup safetySourcesGroup,
+ String defaultPackageName,
+ UserProfileGroup userProfileGroup) {
List<SafetySource> safetySources = safetySourcesGroup.getSafetySources();
List<SafetyCenterStaticEntry> staticEntries = new ArrayList<>(safetySources.size());
for (int i = 0; i < safetySources.size(); i++) {
@@ -738,10 +731,10 @@ public final class SafetyCenterDataFactory {
}
private void addSafetyCenterStaticEntry(
- @NonNull SafetyCenterOverallState safetyCenterOverallState,
- @NonNull List<SafetyCenterStaticEntry> staticEntries,
- @NonNull SafetySource safetySource,
- @NonNull String defaultPackageName,
+ SafetyCenterOverallState safetyCenterOverallState,
+ List<SafetyCenterStaticEntry> staticEntries,
+ SafetySource safetySource,
+ String defaultPackageName,
@UserIdInt int userId,
boolean isUserManaged,
boolean isManagedUserRunning) {
@@ -767,8 +760,8 @@ public final class SafetyCenterDataFactory {
@Nullable
private SafetyCenterStaticEntry toSafetyCenterStaticEntry(
- @NonNull SafetySource safetySource,
- @NonNull String defaultPackageName,
+ SafetySource safetySource,
+ String defaultPackageName,
@UserIdInt int userId,
boolean isUserManaged,
boolean isManagedUserRunning) {
@@ -813,8 +806,8 @@ public final class SafetyCenterDataFactory {
@Nullable
private SafetyCenterStaticEntry toDefaultSafetyCenterStaticEntry(
- @NonNull SafetySource safetySource,
- @NonNull String packageName,
+ SafetySource safetySource,
+ String packageName,
@UserIdInt int userId,
boolean isUserManaged,
boolean isManagedUserRunning) {
@@ -868,9 +861,8 @@ public final class SafetyCenterDataFactory {
return safetySourceData.getStatus();
}
- @NonNull
private static String getStaticSourcePackageNameOrDefault(
- @NonNull SafetySource safetySource, @NonNull String defaultPackageName) {
+ SafetySource safetySource, String defaultPackageName) {
if (!SdkLevel.isAtLeastU()) {
return defaultPackageName;
}
@@ -997,7 +989,6 @@ public final class SafetyCenterDataFactory {
return SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_INFO;
}
- @NonNull
private String getSafetyCenterStatusTitle(
@SafetyCenterStatus.OverallSeverityLevel int overallSeverityLevel,
@Nullable SafetySourceIssueInfo topNonDismissedIssueInfo,
@@ -1043,15 +1034,14 @@ public final class SafetyCenterDataFactory {
return "";
}
- @NonNull
private String getStatusTitleFromIssueCategories(
@Nullable SafetySourceIssueInfo topNonDismissedIssueInfo,
- @NonNull String deviceResourceName,
- @NonNull String accountResourceName,
- @NonNull String generalResourceName,
- @NonNull String dataResourceName,
- @NonNull String passwordsResourceName,
- @NonNull String personalSafetyResourceName) {
+ String deviceResourceName,
+ String accountResourceName,
+ String generalResourceName,
+ String dataResourceName,
+ String passwordsResourceName,
+ String personalSafetyResourceName) {
String generalString = mSafetyCenterResourcesContext.getStringByName(generalResourceName);
if (topNonDismissedIssueInfo == null) {
Log.w(TAG, "No safety center issues found in a non-green status");
@@ -1082,9 +1072,8 @@ public final class SafetyCenterDataFactory {
return generalString;
}
- @NonNull
private String getSafetyCenterStatusSummary(
- @NonNull SafetyCenterOverallState safetyCenterOverallState,
+ SafetyCenterOverallState safetyCenterOverallState,
@Nullable SafetySourceIssueInfo topNonDismissedIssue,
@SafetyCenterStatus.RefreshStatus int refreshStatus,
int numTipIssues,
@@ -1123,25 +1112,23 @@ public final class SafetyCenterDataFactory {
return "";
}
- private static boolean isTip(@NonNull SafetySourceIssue safetySourceIssue) {
+ private static boolean isTip(SafetySourceIssue safetySourceIssue) {
return SdkLevel.isAtLeastU()
&& safetySourceIssue.getIssueActionability()
== SafetySourceIssue.ISSUE_ACTIONABILITY_TIP;
}
- private static boolean isAutomatic(@NonNull SafetySourceIssue safetySourceIssue) {
+ private static boolean isAutomatic(SafetySourceIssue safetySourceIssue) {
return SdkLevel.isAtLeastU()
&& safetySourceIssue.getIssueActionability()
== SafetySourceIssue.ISSUE_ACTIONABILITY_AUTOMATIC;
}
- @NonNull
private String getRefreshErrorString(int numberOfErrorEntries) {
return getIcuPluralsString("refresh_error", numberOfErrorEntries);
}
- @NonNull
- private String getIcuPluralsString(String name, int count, @NonNull Object... formatArgs) {
+ private String getIcuPluralsString(String name, int count, Object... formatArgs) {
MessageFormat messageFormat =
new MessageFormat(
mSafetyCenterResourcesContext.getStringByName(name, formatArgs),
@@ -1185,8 +1172,7 @@ public final class SafetyCenterDataFactory {
return null;
}
- @NonNull
- private static SafetySourceKey toSafetySourceKey(@NonNull String safetyCenterEntryIdString) {
+ private static SafetySourceKey toSafetySourceKey(String safetyCenterEntryIdString) {
SafetyCenterEntryId id = SafetyCenterIds.entryIdFromString(safetyCenterEntryIdString);
return SafetySourceKey.of(id.getSafetySourceId(), id.getUserId());
}
diff --git a/service/java/com/android/safetycenter/SafetyCenterFlags.java b/service/java/com/android/safetycenter/SafetyCenterFlags.java
index e5a7d88aa..9a68d34c6 100644
--- a/service/java/com/android/safetycenter/SafetyCenterFlags.java
+++ b/service/java/com/android/safetycenter/SafetyCenterFlags.java
@@ -19,7 +19,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
import static android.safetycenter.SafetyCenterManager.RefreshReason;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Binder;
import android.provider.DeviceConfig;
@@ -114,7 +113,7 @@ public final class SafetyCenterFlags {
private static final Duration NOTIFICATIONS_MIN_DELAY_DEFAULT_DURATION = Duration.ofDays(180);
/** Dumps state for debugging purposes. */
- static void dump(@NonNull PrintWriter fout) {
+ static void dump(PrintWriter fout) {
fout.println("FLAGS");
printFlag(fout, PROPERTY_SAFETY_CENTER_ENABLED, getSafetyCenterEnabled());
printFlag(fout, PROPERTY_NOTIFICATIONS_ENABLED, getNotificationsEnabled());
@@ -181,7 +180,6 @@ public final class SafetyCenterFlags {
* <p>Note that the {@code areNotificationsAllowed} config attribute is only available on API U+
* and therefore this is the only way to enable notifications for sources on Android T.
*/
- @NonNull
static ArraySet<String> getNotificationsAllowedSourceIds() {
return getCommaSeparatedStrings(PROPERTY_NOTIFICATIONS_ALLOWED_SOURCES);
}
@@ -192,7 +190,7 @@ public final class SafetyCenterFlags {
*
* The actual delay used may be longer.
*/
- @NonNull
+
static Duration getNotificationsMinDelay() {
return getDuration(
PROPERTY_NOTIFICATIONS_MIN_DELAY, NOTIFICATIONS_MIN_DELAY_DEFAULT_DURATION);
@@ -206,7 +204,6 @@ public final class SafetyCenterFlags {
*
* <p>Entries in this set should be strings of the form "safety_source_id/issue_type_id".
*/
- @NonNull
static ArraySet<String> getImmediateNotificationBehaviorIssues() {
return getCommaSeparatedStrings(PROPERTY_NOTIFICATIONS_IMMEDIATE_BEHAVIOR_ISSUES);
}
@@ -249,7 +246,6 @@ public final class SafetyCenterFlags {
* Returns the IDs of sources that should not be tracked, for example because they are
* mid-rollout. Broadcasts are still sent to these sources.
*/
- @NonNull
static ArraySet<String> getUntrackedSourceIds() {
return getCommaSeparatedStrings(PROPERTY_UNTRACKED_SOURCES);
}
@@ -258,7 +254,6 @@ public final class SafetyCenterFlags {
* Returns the IDs of sources that should only be refreshed when Safety Center is on screen. We
* will refresh these sources only on page open and when the scan button is clicked.
*/
- @NonNull
static ArraySet<String> getBackgroundRefreshDeniedSourceIds() {
return getCommaSeparatedStrings(PROPERTY_BACKGROUND_REFRESH_DENIED_SOURCES);
}
@@ -282,7 +277,6 @@ public final class SafetyCenterFlags {
* RefreshReason} and the right value is the refresh timeout applied for each source in case of
* a refresh.
*/
- @NonNull
private static String getRefreshSourcesTimeoutsMillis() {
return getString(PROPERTY_REFRESH_SOURCES_TIMEOUTS_MILLIS, "");
}
@@ -306,7 +300,6 @@ public final class SafetyCenterFlags {
* {@link SafetySourceData.SeverityLevel} and the right value is the number of times an issue of
* this {@link SafetySourceData.SeverityLevel} should be resurfaced.
*/
- @NonNull
private static String getResurfaceIssueMaxCounts() {
return getString(PROPERTY_RESURFACE_ISSUE_MAX_COUNTS, "");
}
@@ -317,7 +310,6 @@ public final class SafetyCenterFlags {
* which a dismissed issue of the given {@link SafetySourceData.SeverityLevel} should be
* resurfaced.
*/
- @NonNull
public static Duration getResurfaceIssueDelay(
@SafetySourceData.SeverityLevel int severityLevel) {
String delaysConfigString = getResurfaceIssueDelaysMillis();
@@ -335,7 +327,6 @@ public final class SafetyCenterFlags {
* maximum count for which a dismissed issue of this {@link SafetySourceData.SeverityLevel}
* should be resurfaced.
*/
- @NonNull
private static String getResurfaceIssueDelaysMillis() {
return getString(PROPERTY_RESURFACE_ISSUE_DELAYS_MILLIS, "");
}
@@ -344,9 +335,8 @@ public final class SafetyCenterFlags {
* Returns whether a safety source is allowed to send issues for the given {@link
* SafetySourceIssue.IssueCategory}.
*/
- @NonNull
public static boolean isIssueCategoryAllowedForSource(
- @SafetySourceIssue.IssueCategory int issueCategory, @NonNull String safetySourceId) {
+ @SafetySourceIssue.IssueCategory int issueCategory, String safetySourceId) {
String issueCategoryAllowlists = getIssueCategoryAllowlists();
String allowlistString =
getStringValueFromStringMapping(issueCategoryAllowlists, issueCategory);
@@ -363,8 +353,7 @@ public final class SafetyCenterFlags {
}
/** Returns a set of package certificates allowlisted for the given package name. */
- @NonNull
- public static ArraySet<String> getAdditionalAllowedPackageCerts(@NonNull String packageName) {
+ public static ArraySet<String> getAdditionalAllowedPackageCerts(String packageName) {
String property = getAdditionalAllowedPackageCertsString();
String allowlistedCertString = getStringValueFromStringMapping(property, packageName);
if (allowlistedCertString == null) {
@@ -378,12 +367,10 @@ public final class SafetyCenterFlags {
* {@link SafetySourceIssue.IssueCategory} and the right value is a vertical-bar-delimited list
* of IDs of safety sources that are allowed to send issues with this category.
*/
- @NonNull
private static String getIssueCategoryAllowlists() {
return getString(PROPERTY_ISSUE_CATEGORY_ALLOWLISTS, "");
}
- @NonNull
private static String getAdditionalAllowedPackageCertsString() {
return getString(PROPERTY_ADDITIONAL_ALLOW_PACKAGE_CERTS, "");
}
@@ -410,12 +397,11 @@ public final class SafetyCenterFlags {
return getCommaSeparatedStrings(PROPERTY_OVERRIDE_REFRESH_ON_PAGE_OPEN_SOURCES);
}
- @NonNull
- private static Duration getDuration(@NonNull String property, @NonNull Duration defaultValue) {
+ private static Duration getDuration(String property, Duration defaultValue) {
return Duration.ofMillis(getLong(property, defaultValue.toMillis()));
}
- private static boolean getBoolean(@NonNull String property, boolean defaultValue) {
+ private static boolean getBoolean(String property, boolean defaultValue) {
// This call requires the READ_DEVICE_CONFIG permission.
final long callingId = Binder.clearCallingIdentity();
try {
@@ -425,7 +411,7 @@ public final class SafetyCenterFlags {
}
}
- private static long getLong(@NonNull String property, long defaultValue) {
+ private static long getLong(String property, long defaultValue) {
// This call requires the READ_DEVICE_CONFIG permission.
final long callingId = Binder.clearCallingIdentity();
try {
@@ -435,13 +421,11 @@ public final class SafetyCenterFlags {
}
}
- @NonNull
- private static ArraySet<String> getCommaSeparatedStrings(@NonNull String property) {
+ private static ArraySet<String> getCommaSeparatedStrings(String property) {
return new ArraySet<>(getString(property, "").split(","));
}
- @NonNull
- private static String getString(@NonNull String property, @NonNull String defaultValue) {
+ private static String getString(String property, String defaultValue) {
// This call requires the READ_DEVICE_CONFIG permission.
final long callingId = Binder.clearCallingIdentity();
try {
@@ -456,7 +440,7 @@ public final class SafetyCenterFlags {
* pairs of integers and longs.
*/
@Nullable
- private static Long getLongValueFromStringMapping(@NonNull String config, int key) {
+ private static Long getLongValueFromStringMapping(String config, int key) {
String valueString = getStringValueFromStringMapping(config, key);
if (valueString == null) {
return null;
@@ -474,7 +458,7 @@ public final class SafetyCenterFlags {
* of integers and strings.
*/
@Nullable
- private static String getStringValueFromStringMapping(@NonNull String config, int key) {
+ private static String getStringValueFromStringMapping(String config, int key) {
return getStringValueFromStringMapping(config, Integer.toString(key));
}
@@ -483,8 +467,7 @@ public final class SafetyCenterFlags {
* string pairs.
*/
@Nullable
- private static String getStringValueFromStringMapping(
- @NonNull String config, @NonNull String key) {
+ private static String getStringValueFromStringMapping(String config, String key) {
if (config.isEmpty()) {
return null;
}
diff --git a/service/java/com/android/safetycenter/SafetyCenterListeners.java b/service/java/com/android/safetycenter/SafetyCenterListeners.java
index 794ba6694..9e07c3d17 100644
--- a/service/java/com/android/safetycenter/SafetyCenterListeners.java
+++ b/service/java/com/android/safetycenter/SafetyCenterListeners.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.os.IBinder;
@@ -50,12 +49,12 @@ final class SafetyCenterListeners {
private static final String TAG = "SafetyCenterListeners";
- @NonNull private final SafetyCenterDataFactory mSafetyCenterDataFactory;
+ private final SafetyCenterDataFactory mSafetyCenterDataFactory;
private final SparseArray<RemoteCallbackList<IOnSafetyCenterDataChangedListener>>
mSafetyCenterDataChangedListeners = new SparseArray<>();
- SafetyCenterListeners(@NonNull SafetyCenterDataFactory safetyCenterDataFactory) {
+ SafetyCenterListeners(SafetyCenterDataFactory safetyCenterDataFactory) {
mSafetyCenterDataFactory = safetyCenterDataFactory;
}
@@ -64,8 +63,7 @@ final class SafetyCenterListeners {
* IOnSafetyCenterDataChangedListener}.
*/
static void deliverDataForListener(
- @NonNull IOnSafetyCenterDataChangedListener listener,
- @NonNull SafetyCenterData safetyCenterData) {
+ IOnSafetyCenterDataChangedListener listener, SafetyCenterData safetyCenterData) {
try {
listener.onSafetyCenterDataChanged(safetyCenterData);
} catch (RemoteException e) {
@@ -78,8 +76,8 @@ final class SafetyCenterListeners {
* IOnSafetyCenterDataChangedListener}.
*/
private static void deliverErrorForListener(
- @NonNull IOnSafetyCenterDataChangedListener listener,
- @NonNull SafetyCenterErrorDetails safetyCenterErrorDetails) {
+ IOnSafetyCenterDataChangedListener listener,
+ SafetyCenterErrorDetails safetyCenterErrorDetails) {
try {
listener.onError(safetyCenterErrorDetails);
} catch (RemoteException e) {
@@ -91,7 +89,7 @@ final class SafetyCenterListeners {
* Delivers a {@link SafetyCenterData} update on all listeners of the given {@link
* UserProfileGroup}.
*/
- void deliverDataForUserProfileGroup(@NonNull UserProfileGroup userProfileGroup) {
+ void deliverDataForUserProfileGroup(UserProfileGroup userProfileGroup) {
ArrayMap<String, SafetyCenterData> safetyCenterDataCache = new ArrayMap<>();
int[] relevantUserIds = userProfileGroup.getProfileParentAndManagedRunningProfilesUserIds();
for (int i = 0; i < relevantUserIds.length; i++) {
@@ -105,8 +103,7 @@ final class SafetyCenterListeners {
* {@link UserProfileGroup}.
*/
void deliverErrorForUserProfileGroup(
- @NonNull UserProfileGroup userProfileGroup,
- @NonNull SafetyCenterErrorDetails safetyCenterErrorDetails) {
+ UserProfileGroup userProfileGroup, SafetyCenterErrorDetails safetyCenterErrorDetails) {
ArrayMap<String, SafetyCenterData> safetyCenterDataCache = new ArrayMap<>();
int[] relevantUserIds = userProfileGroup.getProfileParentAndManagedRunningProfilesUserIds();
for (int i = 0; i < relevantUserIds.length; i++) {
@@ -128,8 +125,8 @@ final class SafetyCenterListeners {
*/
@Nullable
IOnSafetyCenterDataChangedListener addListener(
- @NonNull IOnSafetyCenterDataChangedListener listener,
- @NonNull String packageName,
+ IOnSafetyCenterDataChangedListener listener,
+ String packageName,
@UserIdInt int userId) {
RemoteCallbackList<IOnSafetyCenterDataChangedListener> listeners =
mSafetyCenterDataChangedListeners.get(userId);
@@ -152,8 +149,7 @@ final class SafetyCenterListeners {
* <p>Returns whether the callback was unregistered. Returns {@code false} if the callback was
* never registered.
*/
- boolean removeListener(
- @NonNull IOnSafetyCenterDataChangedListener listener, @UserIdInt int userId) {
+ boolean removeListener(IOnSafetyCenterDataChangedListener listener, @UserIdInt int userId) {
RemoteCallbackList<IOnSafetyCenterDataChangedListener> listeners =
mSafetyCenterDataChangedListeners.get(userId);
if (listeners == null) {
@@ -192,8 +188,8 @@ final class SafetyCenterListeners {
private void deliverUpdateForUser(
@UserIdInt int userId,
- @NonNull UserProfileGroup userProfileGroup,
- @NonNull ArrayMap<String, SafetyCenterData> safetyCenterDataCache,
+ UserProfileGroup userProfileGroup,
+ ArrayMap<String, SafetyCenterData> safetyCenterDataCache,
boolean updateSafetyCenterData,
@Nullable SafetyCenterErrorDetails safetyCenterErrorDetails) {
RemoteCallbackList<IOnSafetyCenterDataChangedListener> listenersForUserId =
@@ -226,11 +222,10 @@ final class SafetyCenterListeners {
}
}
- @NonNull
private SafetyCenterData assembleSafetyCenterDataIfAbsent(
- @NonNull ArrayMap<String, SafetyCenterData> safetyCenterDataCache,
- @NonNull String packageName,
- @NonNull UserProfileGroup userProfileGroup) {
+ ArrayMap<String, SafetyCenterData> safetyCenterDataCache,
+ String packageName,
+ UserProfileGroup userProfileGroup) {
SafetyCenterData cachedSafetyCenterData = safetyCenterDataCache.get(packageName);
if (cachedSafetyCenterData != null) {
return cachedSafetyCenterData;
@@ -242,7 +237,7 @@ final class SafetyCenterListeners {
}
/** Dumps state for debugging purposes. */
- void dump(@NonNull PrintWriter fout) {
+ void dump(PrintWriter fout) {
int userIdCount = mSafetyCenterDataChangedListeners.size();
fout.println("DATA CHANGED LISTENERS (" + userIdCount + " user IDs)");
for (int i = 0; i < userIdCount; i++) {
@@ -268,20 +263,20 @@ final class SafetyCenterListeners {
private static final class OnSafetyCenterDataChangedListenerWrapper
implements IOnSafetyCenterDataChangedListener {
- @NonNull private final IOnSafetyCenterDataChangedListener mDelegate;
- @NonNull private final String mPackageName;
+ private final IOnSafetyCenterDataChangedListener mDelegate;
+ private final String mPackageName;
private final AtomicReference<SafetyCenterData> mLastSafetyCenterData =
new AtomicReference<>();
OnSafetyCenterDataChangedListenerWrapper(
- @NonNull IOnSafetyCenterDataChangedListener delegate, @NonNull String packageName) {
+ IOnSafetyCenterDataChangedListener delegate, String packageName) {
mDelegate = delegate;
mPackageName = packageName;
}
@Override
- public void onSafetyCenterDataChanged(@NonNull SafetyCenterData safetyCenterData)
+ public void onSafetyCenterDataChanged(SafetyCenterData safetyCenterData)
throws RemoteException {
if (safetyCenterData.equals(mLastSafetyCenterData.getAndSet(safetyCenterData))) {
return;
@@ -290,7 +285,7 @@ final class SafetyCenterListeners {
}
@Override
- public void onError(@NonNull SafetyCenterErrorDetails safetyCenterErrorDetails)
+ public void onError(SafetyCenterErrorDetails safetyCenterErrorDetails)
throws RemoteException {
mDelegate.onError(safetyCenterErrorDetails);
}
@@ -300,7 +295,6 @@ final class SafetyCenterListeners {
return mDelegate.asBinder();
}
- @NonNull
public String getPackageName() {
return mPackageName;
}
diff --git a/service/java/com/android/safetycenter/SafetyCenterNotificationChannels.java b/service/java/com/android/safetycenter/SafetyCenterNotificationChannels.java
index adf74f8a6..024b2cd22 100644
--- a/service/java/com/android/safetycenter/SafetyCenterNotificationChannels.java
+++ b/service/java/com/android/safetycenter/SafetyCenterNotificationChannels.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
@@ -43,10 +42,9 @@ final class SafetyCenterNotificationChannels {
private static final String CHANNEL_ID_RECOMMENDATION = "safety_center_recommendation";
private static final String CHANNEL_ID_CRITICAL_WARNING = "safety_center_critical_warning";
- @NonNull private final SafetyCenterResourcesContext mResourcesContext;
+ private final SafetyCenterResourcesContext mResourcesContext;
- SafetyCenterNotificationChannels(
- @NonNull SafetyCenterResourcesContext safetyCenterResourceContext) {
+ SafetyCenterNotificationChannels(SafetyCenterResourcesContext safetyCenterResourceContext) {
mResourcesContext = safetyCenterResourceContext;
}
@@ -55,8 +53,7 @@ final class SafetyCenterNotificationChannels {
* given {@code issue} after ensuring that channel has been created.
*/
@Nullable
- String createAndGetChannelId(
- @NonNull NotificationManager notificationManager, @NonNull SafetySourceIssue issue) {
+ String createAndGetChannelId(NotificationManager notificationManager, SafetySourceIssue issue) {
try {
createAllChannelsWithoutCallingIdentity(notificationManager);
} catch (RuntimeException e) {
@@ -67,7 +64,7 @@ final class SafetyCenterNotificationChannels {
}
@Nullable
- private String getChannelIdForIssue(@NonNull SafetySourceIssue issue) {
+ private String getChannelIdForIssue(SafetySourceIssue issue) {
switch (issue.getSeverityLevel()) {
case SafetySourceData.SEVERITY_LEVEL_INFORMATION:
return CHANNEL_ID_INFORMATION;
@@ -89,8 +86,7 @@ final class SafetyCenterNotificationChannels {
*/
// TODO(b/265277413): Recreate/update these channels on locale changes by calling this method
@Nullable
- private void createAllChannelsWithoutCallingIdentity(
- @NonNull NotificationManager notificationManager) {
+ private void createAllChannelsWithoutCallingIdentity(NotificationManager notificationManager) {
// Clearing calling identity to be able to make unblockable system notification channels
final long callingId = Binder.clearCallingIdentity();
try {
@@ -103,13 +99,11 @@ final class SafetyCenterNotificationChannels {
}
}
- @NonNull
private NotificationChannelGroup getChannelGroupDefinition() {
return new NotificationChannelGroup(
CHANNEL_GROUP_ID, getString("notification_channel_group_name"));
}
- @NonNull
private NotificationChannel getGreenChannelDefinition() {
NotificationChannel channel =
new NotificationChannel(
@@ -121,7 +115,6 @@ final class SafetyCenterNotificationChannels {
return channel;
}
- @NonNull
private NotificationChannel getYellowChannelDefinition() {
NotificationChannel channel =
new NotificationChannel(
@@ -133,7 +126,6 @@ final class SafetyCenterNotificationChannels {
return channel;
}
- @NonNull
private NotificationChannel getRedChannelDefinition() {
NotificationChannel channel =
new NotificationChannel(
@@ -145,8 +137,7 @@ final class SafetyCenterNotificationChannels {
return channel;
}
- @NonNull
- private String getString(@NonNull String name) {
+ private String getString(String name) {
return mResourcesContext.getStringByName(name);
}
}
diff --git a/service/java/com/android/safetycenter/SafetyCenterNotificationFactory.java b/service/java/com/android/safetycenter/SafetyCenterNotificationFactory.java
index 9f7977a3f..edf618922 100644
--- a/service/java/com/android/safetycenter/SafetyCenterNotificationFactory.java
+++ b/service/java/com/android/safetycenter/SafetyCenterNotificationFactory.java
@@ -21,7 +21,6 @@ import static android.safetycenter.SafetyCenterManager.EXTRA_SAFETY_SOURCE_ID;
import static android.safetycenter.SafetyCenterManager.EXTRA_SAFETY_SOURCE_ISSUE_ID;
import static android.safetycenter.SafetyCenterManager.EXTRA_SAFETY_SOURCE_USER_HANDLE;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -53,12 +52,11 @@ final class SafetyCenterNotificationFactory {
private static final int OPEN_SAFETY_CENTER_REQUEST_CODE = 1221;
- @NonNull private final Context mContext;
- @NonNull private final SafetyCenterNotificationChannels mNotificationChannels;
+ private final Context mContext;
+ private final SafetyCenterNotificationChannels mNotificationChannels;
SafetyCenterNotificationFactory(
- @NonNull Context context,
- @NonNull SafetyCenterNotificationChannels notificationChannels) {
+ Context context, SafetyCenterNotificationChannels notificationChannels) {
mContext = context;
mNotificationChannels = notificationChannels;
}
@@ -72,9 +70,9 @@ final class SafetyCenterNotificationFactory {
*/
@Nullable
Notification newNotificationForIssue(
- @NonNull NotificationManager notificationManager,
- @NonNull SafetySourceIssue issue,
- @NonNull SafetyCenterIssueKey issueKey) {
+ NotificationManager notificationManager,
+ SafetySourceIssue issue,
+ SafetyCenterIssueKey issueKey) {
String channelId = mNotificationChannels.createAndGetChannelId(notificationManager, issue);
if (channelId == null) {
@@ -115,8 +113,7 @@ final class SafetyCenterNotificationFactory {
return builder.build();
}
- @NonNull
- private PendingIntent newSafetyCenterPendingIntent(@NonNull SafetyCenterIssueKey issueKey) {
+ private PendingIntent newSafetyCenterPendingIntent(SafetyCenterIssueKey issueKey) {
Intent intent = new Intent(Intent.ACTION_SAFETY_CENTER);
// Set the encoded issue key as the intent's identifier to ensure the PendingIntents of
// different notifications do not collide:
@@ -130,7 +127,6 @@ final class SafetyCenterNotificationFactory {
mContext, OPEN_SAFETY_CENTER_REQUEST_CODE, intent, PendingIntent.FLAG_IMMUTABLE);
}
- @NonNull
private Bundle getNotificationExtras() {
Bundle extras = new Bundle();
// TODO(b/259399024): Use suitable string resource here
@@ -138,9 +134,8 @@ final class SafetyCenterNotificationFactory {
return extras;
}
- @NonNull
private Notification.Action toNotificationAction(
- @NonNull SafetyCenterIssueKey issueKey, @NonNull SafetySourceIssue.Action issueAction) {
+ SafetyCenterIssueKey issueKey, SafetySourceIssue.Action issueAction) {
// We do not use the action's PendingIntent directly here instead we build a new PI which
// will be handled by our SafetyCenterNotificationReceiver which will in turn dispatch
// the source-provided action PI. This ensures that action execution is consistent across
diff --git a/service/java/com/android/safetycenter/SafetyCenterNotificationReceiver.java b/service/java/com/android/safetycenter/SafetyCenterNotificationReceiver.java
index 93b2c7966..aeba5bcfc 100644
--- a/service/java/com/android/safetycenter/SafetyCenterNotificationReceiver.java
+++ b/service/java/com/android/safetycenter/SafetyCenterNotificationReceiver.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
@@ -63,9 +62,8 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
* Creates a broadcast {@code PendingIntent} for this receiver which will handle a Safety Center
* notification being dismissed.
*/
- @NonNull
static PendingIntent newNotificationDismissedIntent(
- @NonNull Context context, @NonNull SafetyCenterIssueKey issueKey) {
+ Context context, SafetyCenterIssueKey issueKey) {
String issueKeyString = SafetyCenterIds.encodeToString(issueKey);
Intent intent = new Intent(ACTION_NOTIFICATION_DISMISSED);
intent.putExtra(EXTRA_ISSUE_KEY, issueKeyString);
@@ -81,9 +79,8 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
*
* <p>Safety Center notification actions correspond to Safety Center issue actions.
*/
- @NonNull
static PendingIntent newNotificationActionClickedIntent(
- @NonNull Context context, @NonNull SafetyCenterIssueActionId issueActionId) {
+ Context context, SafetyCenterIssueActionId issueActionId) {
String issueActionIdString = SafetyCenterIds.encodeToString(issueActionId);
Intent intent = new Intent(ACTION_NOTIFICATION_ACTION_CLICKED);
intent.putExtra(EXTRA_ISSUE_ACTION_ID, issueActionIdString);
@@ -94,7 +91,7 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
}
@Nullable
- private static SafetyCenterIssueKey getIssueKeyExtra(@NonNull Intent intent) {
+ private static SafetyCenterIssueKey getIssueKeyExtra(Intent intent) {
String issueKeyString = intent.getStringExtra(EXTRA_ISSUE_KEY);
if (issueKeyString == null) {
Log.w(TAG, "Received notification dismissed broadcast with null issue key extra");
@@ -109,7 +106,7 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
}
@Nullable
- private static SafetyCenterIssueActionId getIssueActionIdExtra(@NonNull Intent intent) {
+ private static SafetyCenterIssueActionId getIssueActionIdExtra(Intent intent) {
String issueActionIdString = intent.getStringExtra(EXTRA_ISSUE_ACTION_ID);
if (issueActionIdString == null) {
Log.w(TAG, "Received notification action broadcast with null issue action ID");
@@ -123,23 +120,21 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
}
}
- @NonNull private final SafetyCenterService mService;
+ private final SafetyCenterService mService;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterDataManager mSafetyCenterDataManager;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterDataChangeNotifier mSafetyCenterDataChangeNotifier;
- @NonNull private final ApiLock mApiLock;
+ private final ApiLock mApiLock;
SafetyCenterNotificationReceiver(
- @NonNull SafetyCenterService service,
- @NonNull SafetyCenterDataManager safetyCenterDataManager,
- @NonNull SafetyCenterDataChangeNotifier safetyCenterDataChangeNotifier,
- @NonNull ApiLock apiLock) {
+ SafetyCenterService service,
+ SafetyCenterDataManager safetyCenterDataManager,
+ SafetyCenterDataChangeNotifier safetyCenterDataChangeNotifier,
+ ApiLock apiLock) {
mService = service;
mSafetyCenterDataManager = safetyCenterDataManager;
mSafetyCenterDataChangeNotifier = safetyCenterDataChangeNotifier;
@@ -152,7 +147,7 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
*
* @see #newNotificationDismissedIntent(Context, SafetyCenterIssueKey)
*/
- void register(@NonNull Context context) {
+ void register(Context context) {
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_NOTIFICATION_DISMISSED);
filter.addAction(ACTION_NOTIFICATION_ACTION_CLICKED);
@@ -160,7 +155,7 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
}
@Override
- public void onReceive(@NonNull Context context, @NonNull Intent intent) {
+ public void onReceive(Context context, Intent intent) {
if (!SafetyCenterFlags.getSafetyCenterEnabled()
|| !SafetyCenterFlags.getNotificationsEnabled()) {
return;
@@ -186,7 +181,7 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
}
}
- private void onNotificationDismissed(@NonNull Context context, @NonNull Intent intent) {
+ private void onNotificationDismissed(Context context, Intent intent) {
SafetyCenterIssueKey issueKey = getIssueKeyExtra(intent);
if (issueKey == null) {
return;
@@ -199,7 +194,7 @@ final class SafetyCenterNotificationReceiver extends BroadcastReceiver {
}
}
- private void onNotificationActionClicked(@NonNull Intent intent) {
+ private void onNotificationActionClicked(Intent intent) {
SafetyCenterIssueActionId issueActionId = getIssueActionIdExtra(intent);
if (issueActionId == null) {
return;
diff --git a/service/java/com/android/safetycenter/SafetyCenterNotificationSender.java b/service/java/com/android/safetycenter/SafetyCenterNotificationSender.java
index 7ef4ec3c8..5a9de1953 100644
--- a/service/java/com/android/safetycenter/SafetyCenterNotificationSender.java
+++ b/service/java/com/android/safetycenter/SafetyCenterNotificationSender.java
@@ -21,7 +21,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static com.android.safetycenter.internaldata.SafetyCenterIds.toUserFriendlyString;
import android.annotation.IntDef;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.Notification;
@@ -91,26 +90,26 @@ final class SafetyCenterNotificationSender {
@Retention(RetentionPolicy.SOURCE)
private @interface NotificationBehaviorInternal {}
- @NonNull private final Context mContext;
+ private final Context mContext;
- @NonNull private final SafetyCenterNotificationFactory mNotificationFactory;
+ private final SafetyCenterNotificationFactory mNotificationFactory;
- @NonNull private final SafetyCenterDataManager mSafetyCenterDataManager;
+ private final SafetyCenterDataManager mSafetyCenterDataManager;
private final ArrayMap<SafetyCenterIssueKey, SafetySourceIssue> mNotifiedIssues =
new ArrayMap<>();
SafetyCenterNotificationSender(
- @NonNull Context context,
- @NonNull SafetyCenterNotificationFactory notificationFactory,
- @NonNull SafetyCenterDataManager safetyCenterDataManager) {
+ Context context,
+ SafetyCenterNotificationFactory notificationFactory,
+ SafetyCenterDataManager safetyCenterDataManager) {
mContext = context;
mNotificationFactory = notificationFactory;
mSafetyCenterDataManager = safetyCenterDataManager;
}
/** Updates Safety Center notifications for the given {@link UserProfileGroup}. */
- void updateNotifications(@NonNull UserProfileGroup userProfileGroup) {
+ void updateNotifications(UserProfileGroup userProfileGroup) {
updateNotifications(userProfileGroup.getProfileParentUserId());
int[] managedProfileUserIds = userProfileGroup.getManagedProfilesUserIds();
@@ -177,7 +176,7 @@ final class SafetyCenterNotificationSender {
}
/** Dumps state for debugging purposes. */
- void dump(@NonNull PrintWriter fout) {
+ void dump(PrintWriter fout) {
int notifiedIssuesCount = mNotifiedIssues.size();
fout.println("NOTIFICATION SENDER (" + notifiedIssuesCount + " notified issues)");
for (int i = 0; i < notifiedIssuesCount; i++) {
@@ -189,7 +188,6 @@ final class SafetyCenterNotificationSender {
}
/** Get all of the key-issue pairs for which notifications should be posted or updated now. */
- @NonNull
private ArrayMap<SafetyCenterIssueKey, SafetySourceIssue> getIssuesToNotify(
@UserIdInt int userId) {
ArrayMap<SafetyCenterIssueKey, SafetySourceIssue> result = new ArrayMap<>();
@@ -241,8 +239,7 @@ final class SafetyCenterNotificationSender {
}
@NotificationBehaviorInternal
- private int getBehavior(
- @NonNull SafetySourceIssue issue, @NonNull SafetyCenterIssueKey issueKey) {
+ private int getBehavior(SafetySourceIssue issue, SafetyCenterIssueKey issueKey) {
if (SdkLevel.isAtLeastU()) {
switch (issue.getNotificationBehavior()) {
case SafetySourceIssue.NOTIFICATION_BEHAVIOR_NEVER:
@@ -259,7 +256,7 @@ final class SafetyCenterNotificationSender {
@NotificationBehaviorInternal
private int getBehaviorForIssueWithUnspecifiedBehavior(
- @NonNull SafetySourceIssue issue, @NonNull SafetyCenterIssueKey issueKey) {
+ SafetySourceIssue issue, SafetyCenterIssueKey issueKey) {
String flagKey = issueKey.getSafetySourceId() + "/" + issue.getIssueTypeId();
if (SafetyCenterFlags.getImmediateNotificationBehaviorIssues().contains(flagKey)) {
return NOTIFICATION_BEHAVIOR_INTERNAL_IMMEDIATELY;
@@ -268,7 +265,7 @@ final class SafetyCenterNotificationSender {
}
}
- private boolean areNotificationsAllowed(@NonNull SafetySource safetySource) {
+ private boolean areNotificationsAllowed(SafetySource safetySource) {
if (SdkLevel.isAtLeastU()) {
if (safetySource.areNotificationsAllowed()) {
return true;
@@ -278,9 +275,9 @@ final class SafetyCenterNotificationSender {
}
private boolean postNotificationForIssue(
- @NonNull NotificationManager notificationManager,
- @NonNull SafetySourceIssue safetySourceIssue,
- @NonNull SafetyCenterIssueKey key) {
+ NotificationManager notificationManager,
+ SafetySourceIssue safetySourceIssue,
+ SafetyCenterIssueKey key) {
Notification notification =
mNotificationFactory.newNotificationForIssue(
notificationManager, safetySourceIssue, key);
@@ -298,9 +295,9 @@ final class SafetyCenterNotificationSender {
}
private void cancelStaleNotifications(
- @NonNull NotificationManager notificationManager,
+ NotificationManager notificationManager,
@UserIdInt int userId,
- @NonNull ArraySet<SafetyCenterIssueKey> freshIssueKeys) {
+ ArraySet<SafetyCenterIssueKey> freshIssueKeys) {
// Loop in reverse index order to be able to remove entries while iterating
for (int i = mNotifiedIssues.size() - 1; i >= 0; i--) {
SafetyCenterIssueKey key = mNotifiedIssues.keyAt(i);
@@ -312,8 +309,7 @@ final class SafetyCenterNotificationSender {
}
}
- @NonNull
- private static String getNotificationTag(@NonNull SafetyCenterIssueKey issueKey) {
+ private static String getNotificationTag(SafetyCenterIssueKey issueKey) {
// Base 64 encoding of the issueKey proto:
return SafetyCenterIds.encodeToString(issueKey);
}
@@ -334,9 +330,9 @@ final class SafetyCenterNotificationSender {
* to a specific user.
*/
private boolean notifyFromSystem(
- @NonNull NotificationManager notificationManager,
+ NotificationManager notificationManager,
@Nullable String tag,
- @NonNull Notification notification) {
+ Notification notification) {
// This call is needed to send a notification from the system and this also grants the
// necessary POST_NOTIFICATIONS permission.
final long callingId = Binder.clearCallingIdentity();
@@ -360,7 +356,7 @@ final class SafetyCenterNotificationSender {
* sent to a specific user.
*/
private void cancelNotificationFromSystem(
- @NonNull NotificationManager notificationManager, @Nullable String tag) {
+ NotificationManager notificationManager, @Nullable String tag) {
// This call is needed to cancel a notification previously sent from the system
final long callingId = Binder.clearCallingIdentity();
try {
diff --git a/service/java/com/android/safetycenter/SafetyCenterRefreshTracker.java b/service/java/com/android/safetycenter/SafetyCenterRefreshTracker.java
index a3a65857d..ae1f80182 100644
--- a/service/java/com/android/safetycenter/SafetyCenterRefreshTracker.java
+++ b/service/java/com/android/safetycenter/SafetyCenterRefreshTracker.java
@@ -23,7 +23,6 @@ import static com.android.permission.PermissionStatsLog.SAFETY_CENTER_SYSTEM_EVE
import static com.android.safetycenter.logging.SafetyCenterStatsdLogger.toSystemEventResult;
import android.annotation.ElapsedRealtimeLong;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.os.SystemClock;
@@ -64,9 +63,9 @@ public final class SafetyCenterRefreshTracker {
private int mRefreshCounter = 0;
- @NonNull private final SafetyCenterStatsdLogger mSafetyCenterStatsdLogger;
+ private final SafetyCenterStatsdLogger mSafetyCenterStatsdLogger;
- SafetyCenterRefreshTracker(@NonNull SafetyCenterStatsdLogger safetyCenterStatsdLogger) {
+ SafetyCenterRefreshTracker(SafetyCenterStatsdLogger safetyCenterStatsdLogger) {
mSafetyCenterStatsdLogger = safetyCenterStatsdLogger;
}
@@ -74,9 +73,8 @@ public final class SafetyCenterRefreshTracker {
* Reports that a new refresh is in progress and returns the broadcast id associated with this
* refresh.
*/
- @NonNull
String reportRefreshInProgress(
- @RefreshReason int refreshReason, @NonNull UserProfileGroup userProfileGroup) {
+ @RefreshReason int refreshReason, UserProfileGroup userProfileGroup) {
if (mRefreshInProgress != null) {
Log.w(TAG, "Replacing an ongoing refresh");
}
@@ -119,9 +117,7 @@ public final class SafetyCenterRefreshTracker {
* as complete.
*/
void reportSourceRefreshesInFlight(
- @NonNull String refreshBroadcastId,
- @NonNull List<String> sourceIds,
- @UserIdInt int userId) {
+ String refreshBroadcastId, List<String> sourceIds, @UserIdInt int userId) {
if (!checkRefreshInProgress("reportSourceRefreshesInFlight", refreshBroadcastId)) {
return;
}
@@ -142,10 +138,7 @@ public final class SafetyCenterRefreshTracker {
* <p>Completed refreshes are logged to statsd.
*/
public boolean reportSourceRefreshCompleted(
- @NonNull String refreshBroadcastId,
- @NonNull String sourceId,
- @UserIdInt int userId,
- boolean successful) {
+ String refreshBroadcastId, String sourceId, @UserIdInt int userId, boolean successful) {
if (!checkRefreshInProgress("reportSourceRefreshCompleted", refreshBroadcastId)) {
return false;
}
@@ -191,7 +184,7 @@ public final class SafetyCenterRefreshTracker {
* scheduled broadcasts being sent by {@link
* android.safetycenter.SafetyCenterManager#refreshSafetySources}.
*/
- void clearRefresh(@NonNull String refreshBroadcastId) {
+ void clearRefresh(String refreshBroadcastId) {
if (!checkRefreshInProgress("clearRefresh", refreshBroadcastId)) {
return;
}
@@ -227,7 +220,7 @@ public final class SafetyCenterRefreshTracker {
* android.safetycenter.SafetyCenterManager#refreshSafetySources}.
*/
@Nullable
- ArraySet<SafetySourceKey> timeoutRefresh(@NonNull String refreshBroadcastId) {
+ ArraySet<SafetySourceKey> timeoutRefresh(String refreshBroadcastId) {
if (!checkRefreshInProgress("timeoutRefresh", refreshBroadcastId)) {
return null;
}
@@ -284,8 +277,7 @@ public final class SafetyCenterRefreshTracker {
* Returns {@code true} if there is currently a refresh in progress with the given ID, or logs a
* helpful warning and returns {@code false} if not.
*/
- private boolean checkRefreshInProgress(
- @NonNull String methodName, @NonNull String refreshBroadcastId) {
+ private boolean checkRefreshInProgress(String methodName, String refreshBroadcastId) {
if (mRefreshInProgress == null || !mRefreshInProgress.getId().equals(refreshBroadcastId)) {
Log.w(
TAG,
@@ -300,7 +292,7 @@ public final class SafetyCenterRefreshTracker {
}
/** Dumps state for debugging purposes. */
- void dump(@NonNull PrintWriter fout) {
+ void dump(PrintWriter fout) {
fout.println(
"REFRESH IN PROGRESS ("
+ (mRefreshInProgress != null)
@@ -316,10 +308,10 @@ public final class SafetyCenterRefreshTracker {
/** Class representing the state of a refresh in progress. */
private static final class RefreshInProgress {
- @NonNull private final String mId;
+ private final String mId;
@RefreshReason private final int mReason;
- @NonNull private final UserProfileGroup mUserProfileGroup;
- @NonNull private final ArraySet<String> mUntrackedSourcesIds;
+ private final UserProfileGroup mUserProfileGroup;
+ private final ArraySet<String> mUntrackedSourcesIds;
@ElapsedRealtimeLong private final long mStartElapsedMillis;
// The values in this map are the start times of each source refresh. The alternative of
@@ -330,10 +322,10 @@ public final class SafetyCenterRefreshTracker {
private boolean mAnyTrackedSourceErrors = false;
RefreshInProgress(
- @NonNull String id,
+ String id,
@RefreshReason int reason,
- @NonNull UserProfileGroup userProfileGroup,
- @NonNull ArraySet<String> untrackedSourceIds) {
+ UserProfileGroup userProfileGroup,
+ ArraySet<String> untrackedSourceIds) {
mId = id;
mReason = reason;
mUserProfileGroup = userProfileGroup;
@@ -346,7 +338,6 @@ public final class SafetyCenterRefreshTracker {
* android.safetycenter.SafetyCenterManager#EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID} used
* in the refresh.
*/
- @NonNull
private String getId() {
return mId;
}
@@ -358,13 +349,12 @@ public final class SafetyCenterRefreshTracker {
}
/** Returns the {@link Duration} since this refresh started. */
- @NonNull
private Duration getDurationSinceStart() {
return Duration.ofMillis(SystemClock.elapsedRealtime() - mStartElapsedMillis);
}
@Nullable
- private Duration getDurationSinceSourceStart(@NonNull SafetySourceKey safetySourceKey) {
+ private Duration getDurationSinceSourceStart(SafetySourceKey safetySourceKey) {
Long startElapsedMillis = mSourceRefreshesInFlight.get(safetySourceKey);
if (startElapsedMillis == null) {
return null;
@@ -373,7 +363,6 @@ public final class SafetyCenterRefreshTracker {
}
/** Returns the {@link SafetySourceKey} of all in-flight source refreshes. */
- @NonNull
private ArraySet<SafetySourceKey> getSourceRefreshesInFlight() {
return new ArraySet<>(mSourceRefreshesInFlight.keySet());
}
@@ -383,7 +372,7 @@ public final class SafetyCenterRefreshTracker {
return mAnyTrackedSourceErrors;
}
- private void markSourceRefreshInFlight(@NonNull SafetySourceKey safetySourceKey) {
+ private void markSourceRefreshInFlight(SafetySourceKey safetySourceKey) {
boolean tracked = isTracked(safetySourceKey);
long currentElapsedMillis = SystemClock.elapsedRealtime();
if (tracked) {
@@ -408,7 +397,7 @@ public final class SafetyCenterRefreshTracker {
@Nullable
private Duration markSourceRefreshComplete(
- @NonNull SafetySourceKey safetySourceKey, boolean successful) {
+ SafetySourceKey safetySourceKey, boolean successful) {
Long startElapsedMillis = mSourceRefreshesInFlight.remove(safetySourceKey);
boolean tracked = isTracked(safetySourceKey);
diff --git a/service/java/com/android/safetycenter/SafetyCenterService.java b/service/java/com/android/safetycenter/SafetyCenterService.java
index a3761bc12..109a6b794 100644
--- a/service/java/com/android/safetycenter/SafetyCenterService.java
+++ b/service/java/com/android/safetycenter/SafetyCenterService.java
@@ -34,7 +34,6 @@ import static com.android.safetycenter.internaldata.SafetyCenterIds.toUserFriend
import static java.util.Objects.requireNonNull;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.PendingIntent;
@@ -110,51 +109,42 @@ public final class SafetyCenterService extends SystemService {
@GuardedBy("mApiLock")
private final SafetyCenterTimeouts mSafetyCenterTimeouts = new SafetyCenterTimeouts();
- @NonNull private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
+ private final SafetyCenterResourcesContext mSafetyCenterResourcesContext;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterConfigReader mSafetyCenterConfigReader;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterDataManager mSafetyCenterDataManager;
@GuardedBy("mApiLock")
- @NonNull
private final PendingIntentFactory mPendingIntentFactory;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterDataFactory mSafetyCenterDataFactory;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterListeners mSafetyCenterListeners;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterNotificationSender mNotificationSender;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterBroadcastDispatcher mSafetyCenterBroadcastDispatcher;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterDataChangeNotifier mSafetyCenterDataChangeNotifier;
- @NonNull private final StatsPullAtomCallback mPullAtomCallback;
+ private final StatsPullAtomCallback mPullAtomCallback;
private final boolean mDeviceSupportsSafetyCenter;
/** Whether the {@link SafetyCenterConfig} was successfully loaded. */
private volatile boolean mConfigAvailable;
- public SafetyCenterService(@NonNull Context context) {
+ public SafetyCenterService(Context context) {
super(context);
mSafetyCenterResourcesContext = new SafetyCenterResourcesContext(context);
mSafetyCenterConfigReader = new SafetyCenterConfigReader(mSafetyCenterResourcesContext);
@@ -268,10 +258,10 @@ public final class SafetyCenterService extends SystemService {
@Override
public void setSafetySourceData(
- @NonNull String safetySourceId,
+ String safetySourceId,
@Nullable SafetySourceData safetySourceData,
- @NonNull SafetyEvent safetyEvent,
- @NonNull String packageName,
+ SafetyEvent safetyEvent,
+ String packageName,
@UserIdInt int userId) {
requireNonNull(safetySourceId);
requireNonNull(safetyEvent);
@@ -299,9 +289,7 @@ public final class SafetyCenterService extends SystemService {
@Override
@Nullable
public SafetySourceData getSafetySourceData(
- @NonNull String safetySourceId,
- @NonNull String packageName,
- @UserIdInt int userId) {
+ String safetySourceId, String packageName, @UserIdInt int userId) {
requireNonNull(safetySourceId);
requireNonNull(packageName);
getContext()
@@ -321,9 +309,9 @@ public final class SafetyCenterService extends SystemService {
@Override
public void reportSafetySourceError(
- @NonNull String safetySourceId,
- @NonNull SafetySourceErrorDetails errorDetails,
- @NonNull String packageName,
+ String safetySourceId,
+ SafetySourceErrorDetails errorDetails,
+ String packageName,
@UserIdInt int userId) {
requireNonNull(safetySourceId);
requireNonNull(errorDetails);
@@ -377,7 +365,7 @@ public final class SafetyCenterService extends SystemService {
public void refreshSpecificSafetySources(
@RefreshReason int refreshReason,
@UserIdInt int userId,
- @NonNull List<String> safetySourceIds) {
+ List<String> safetySourceIds) {
requireNonNull(safetySourceIds, "safetySourceIds cannot be null");
RefreshReasons.validate(refreshReason);
getContext()
@@ -408,9 +396,7 @@ public final class SafetyCenterService extends SystemService {
}
@Override
- @NonNull
- public SafetyCenterData getSafetyCenterData(
- @NonNull String packageName, @UserIdInt int userId) {
+ public SafetyCenterData getSafetyCenterData(String packageName, @UserIdInt int userId) {
requireNonNull(packageName);
getContext()
.enforceCallingOrSelfPermission(MANAGE_SAFETY_CENTER, "getSafetyCenterData");
@@ -430,8 +416,8 @@ public final class SafetyCenterService extends SystemService {
@Override
public void addOnSafetyCenterDataChangedListener(
- @NonNull IOnSafetyCenterDataChangedListener listener,
- @NonNull String packageName,
+ IOnSafetyCenterDataChangedListener listener,
+ String packageName,
@UserIdInt int userId) {
requireNonNull(listener);
requireNonNull(packageName);
@@ -460,7 +446,7 @@ public final class SafetyCenterService extends SystemService {
@Override
public void removeOnSafetyCenterDataChangedListener(
- @NonNull IOnSafetyCenterDataChangedListener listener, @UserIdInt int userId) {
+ IOnSafetyCenterDataChangedListener listener, @UserIdInt int userId) {
requireNonNull(listener);
getContext()
.enforceCallingOrSelfPermission(
@@ -476,7 +462,7 @@ public final class SafetyCenterService extends SystemService {
}
@Override
- public void dismissSafetyCenterIssue(@NonNull String issueId, @UserIdInt int userId) {
+ public void dismissSafetyCenterIssue(String issueId, @UserIdInt int userId) {
requireNonNull(issueId);
getContext()
.enforceCallingOrSelfPermission(
@@ -525,7 +511,7 @@ public final class SafetyCenterService extends SystemService {
@Override
public void executeSafetyCenterIssueAction(
- @NonNull String issueId, @NonNull String issueActionId, @UserIdInt int userId) {
+ String issueId, String issueActionId, @UserIdInt int userId) {
requireNonNull(issueId);
requireNonNull(issueActionId);
getContext()
@@ -578,7 +564,7 @@ public final class SafetyCenterService extends SystemService {
}
@Override
- public void setSafetyCenterConfigForTests(@NonNull SafetyCenterConfig safetyCenterConfig) {
+ public void setSafetyCenterConfigForTests(SafetyCenterConfig safetyCenterConfig) {
requireNonNull(safetyCenterConfig);
getContext()
.enforceCallingOrSelfPermission(
@@ -620,8 +606,7 @@ public final class SafetyCenterService extends SystemService {
return canUseSafetyCenter() && SafetyCenterFlags.getSafetyCenterEnabled();
}
- private void enforceAnyCallingOrSelfPermissions(
- @NonNull String message, @NonNull String... permissions) {
+ private void enforceAnyCallingOrSelfPermissions(String message, String... permissions) {
if (permissions.length == 0) {
throw new IllegalArgumentException("Must check at least one permission");
}
@@ -639,7 +624,7 @@ public final class SafetyCenterService extends SystemService {
}
/** Enforces cross user permission and returns whether the user is existent. */
- private boolean enforceCrossUserPermission(@NonNull String message, @UserIdInt int userId) {
+ private boolean enforceCrossUserPermission(String message, @UserIdInt int userId) {
UserUtils.enforceCrossUserPermission(userId, false, message, getContext());
if (!UserUtils.isUserExistent(userId, getContext())) {
Log.e(
@@ -661,8 +646,7 @@ public final class SafetyCenterService extends SystemService {
* <p>Throws a {@link SecurityException} if the {@code packageName} does not belong to the
* {@code callingUid}.
*/
- private boolean enforcePackage(
- int callingUid, @NonNull String packageName, @UserIdInt int userId) {
+ private boolean enforcePackage(int callingUid, String packageName, @UserIdInt int userId) {
if (TextUtils.isEmpty(packageName)) {
throw new IllegalArgumentException("packageName may not be empty");
}
@@ -689,7 +673,7 @@ public final class SafetyCenterService extends SystemService {
return true;
}
- private boolean checkApiEnabled(@NonNull String message) {
+ private boolean checkApiEnabled(String message) {
if (!isApiEnabled()) {
Log.w(TAG, "Called " + message + ", but Safety Center is disabled");
return false;
@@ -698,9 +682,7 @@ public final class SafetyCenterService extends SystemService {
}
private void enforceSameUserProfileGroup(
- @NonNull String message,
- @NonNull UserProfileGroup userProfileGroup,
- @UserIdInt int userId) {
+ String message, UserProfileGroup userProfileGroup, @UserIdInt int userId) {
if (!userProfileGroup.contains(userId)) {
throw new SecurityException(
message
@@ -713,10 +695,10 @@ public final class SafetyCenterService extends SystemService {
@Override
public int handleShellCommand(
- @NonNull ParcelFileDescriptor in,
- @NonNull ParcelFileDescriptor out,
- @NonNull ParcelFileDescriptor err,
- @NonNull String[] args) {
+ ParcelFileDescriptor in,
+ ParcelFileDescriptor out,
+ ParcelFileDescriptor err,
+ String[] args) {
return new SafetyCenterShellCommandHandler(
getContext(), this, mDeviceSupportsSafetyCenter)
.exec(
@@ -729,8 +711,7 @@ public final class SafetyCenterService extends SystemService {
/** Dumps state for debugging purposes. */
@Override
- protected void dump(
- @NonNull FileDescriptor fd, @NonNull PrintWriter fout, @Nullable String[] args) {
+ protected void dump(FileDescriptor fd, PrintWriter fout, @Nullable String[] args) {
if (!checkDumpPermission(fout)) {
return;
}
@@ -764,7 +745,7 @@ public final class SafetyCenterService extends SystemService {
}
}
- private boolean checkDumpPermission(@NonNull PrintWriter writer) {
+ private boolean checkDumpPermission(PrintWriter writer) {
if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
!= PERMISSION_GRANTED) {
writer.println(
@@ -802,7 +783,7 @@ public final class SafetyCenterService extends SystemService {
private boolean mSafetyCenterEnabled;
@Override
- public void onPropertiesChanged(@NonNull DeviceConfig.Properties properties) {
+ public void onPropertiesChanged(DeviceConfig.Properties properties) {
if (!properties.getKeyset().contains(PROPERTY_SAFETY_CENTER_ENABLED)) {
return;
}
@@ -848,11 +829,10 @@ public final class SafetyCenterService extends SystemService {
/** A {@link Runnable} that is called to signal a refresh timeout. */
private final class RefreshTimeout implements Runnable {
- @NonNull private final String mRefreshBroadcastId;
- @NonNull private final UserProfileGroup mUserProfileGroup;
+ private final String mRefreshBroadcastId;
+ private final UserProfileGroup mUserProfileGroup;
- RefreshTimeout(
- @NonNull String refreshBroadcastId, @NonNull UserProfileGroup userProfileGroup) {
+ RefreshTimeout(String refreshBroadcastId, UserProfileGroup userProfileGroup) {
mRefreshBroadcastId = refreshBroadcastId;
mUserProfileGroup = userProfileGroup;
}
@@ -903,12 +883,12 @@ public final class SafetyCenterService extends SystemService {
/** A {@link Runnable} that is called to signal a resolving action timeout. */
private final class ResolvingActionTimeout implements Runnable {
- @NonNull private final SafetyCenterIssueActionId mSafetyCenterIssueActionId;
- @NonNull private final UserProfileGroup mUserProfileGroup;
+ private final SafetyCenterIssueActionId mSafetyCenterIssueActionId;
+ private final UserProfileGroup mUserProfileGroup;
ResolvingActionTimeout(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId,
- @NonNull UserProfileGroup userProfileGroup) {
+ SafetyCenterIssueActionId safetyCenterIssueActionId,
+ UserProfileGroup userProfileGroup) {
mSafetyCenterIssueActionId = safetyCenterIssueActionId;
mUserProfileGroup = userProfileGroup;
}
@@ -960,8 +940,7 @@ public final class SafetyCenterService extends SystemService {
private static final String TAG = "UserBroadcastReceiver";
- @NonNull
- void register(@NonNull Context context) {
+ void register(Context context) {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_USER_ADDED);
filter.addAction(Intent.ACTION_USER_REMOVED);
@@ -973,7 +952,7 @@ public final class SafetyCenterService extends SystemService {
}
@Override
- public void onReceive(@NonNull Context context, @NonNull Intent intent) {
+ public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action == null) {
Log.w(TAG, "Received broadcast with null action!");
@@ -1056,7 +1035,7 @@ public final class SafetyCenterService extends SystemService {
*
* <p>No validation is performed on the contents of the given ID.
*/
- void executeIssueActionInternal(@NonNull SafetyCenterIssueActionId safetyCenterIssueActionId) {
+ void executeIssueActionInternal(SafetyCenterIssueActionId safetyCenterIssueActionId) {
SafetyCenterIssueKey safetyCenterIssueKey =
safetyCenterIssueActionId.getSafetyCenterIssueKey();
UserProfileGroup userProfileGroup =
@@ -1066,9 +1045,9 @@ public final class SafetyCenterService extends SystemService {
}
private void executeIssueActionInternal(
- @NonNull SafetyCenterIssueKey safetyCenterIssueKey,
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId,
- @NonNull UserProfileGroup userProfileGroup,
+ SafetyCenterIssueKey safetyCenterIssueKey,
+ SafetyCenterIssueActionId safetyCenterIssueActionId,
+ UserProfileGroup userProfileGroup,
@Nullable Integer taskId) {
synchronized (mApiLock) {
SafetySourceIssue.Action safetySourceIssueAction =
@@ -1118,7 +1097,7 @@ public final class SafetyCenterService extends SystemService {
}
private boolean dispatchPendingIntent(
- @NonNull PendingIntent pendingIntent, @Nullable Integer launchTaskId) {
+ PendingIntent pendingIntent, @Nullable Integer launchTaskId) {
if (launchTaskId != null
&& getContext().checkCallingOrSelfPermission(START_TASKS_FROM_RECENTS)
!= PERMISSION_GRANTED) {
@@ -1137,7 +1116,7 @@ public final class SafetyCenterService extends SystemService {
/** Dumps state for debugging purposes. */
@GuardedBy("mApiLock")
- private void dumpLocked(@NonNull PrintWriter fout) {
+ private void dumpLocked(PrintWriter fout) {
fout.println("SERVICE");
fout.println(
"\tSafetyCenterService{"
diff --git a/service/java/com/android/safetycenter/SafetyCenterShellCommandHandler.java b/service/java/com/android/safetycenter/SafetyCenterShellCommandHandler.java
index a96309ba7..87e3372f7 100644
--- a/service/java/com/android/safetycenter/SafetyCenterShellCommandHandler.java
+++ b/service/java/com/android/safetycenter/SafetyCenterShellCommandHandler.java
@@ -27,7 +27,6 @@ import static android.safetycenter.SafetyCenterManager.REFRESH_REASON_SAFETY_CEN
import static java.util.Collections.unmodifiableMap;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.Context;
@@ -52,15 +51,15 @@ import java.util.Map;
@RequiresApi(TIRAMISU)
final class SafetyCenterShellCommandHandler extends BasicShellCommandHandler {
- @NonNull private static final Map<String, Integer> REASONS = createReasonMap();
+ private static final Map<String, Integer> REASONS = createReasonMap();
- @NonNull private final Context mContext;
- @NonNull private final ISafetyCenterManager mSafetyCenterManager;
+ private final Context mContext;
+ private final ISafetyCenterManager mSafetyCenterManager;
private final boolean mDeviceSupportsSafetyCenter;
SafetyCenterShellCommandHandler(
- @NonNull Context context,
- @NonNull ISafetyCenterManager safetyCenterManager,
+ Context context,
+ ISafetyCenterManager safetyCenterManager,
boolean deviceSupportsSafetyCenter) {
mContext = context;
mSafetyCenterManager = safetyCenterManager;
@@ -187,7 +186,7 @@ final class SafetyCenterShellCommandHandler extends BasicShellCommandHandler {
}
/** Helper function to standardise pretty-printing of the help text. */
- private void printCmd(@NonNull String cmd, @NonNull String... description) {
+ private void printCmd(String cmd, String... description) {
PrintWriter pw = getOutPrintWriter();
pw.println(" " + cmd);
for (int i = 0; i < description.length; i++) {
@@ -195,7 +194,6 @@ final class SafetyCenterShellCommandHandler extends BasicShellCommandHandler {
}
}
- @NonNull
private static Map<String, Integer> createReasonMap() {
// LinkedHashMap so that options get printed in order
LinkedHashMap<String, Integer> reasons = new LinkedHashMap<>(6);
diff --git a/service/java/com/android/safetycenter/SafetyCenterTimeouts.java b/service/java/com/android/safetycenter/SafetyCenterTimeouts.java
index 661378a57..f8bfd691e 100644
--- a/service/java/com/android/safetycenter/SafetyCenterTimeouts.java
+++ b/service/java/com/android/safetycenter/SafetyCenterTimeouts.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.os.Handler;
import androidx.annotation.RequiresApi;
@@ -55,7 +54,7 @@ final class SafetyCenterTimeouts {
SafetyCenterTimeouts() {}
/** Adds the given {@link Runnable} to run as a timeout after the given {@link Duration}. */
- void add(@NonNull Runnable timeoutAction, @NonNull Duration timeoutDuration) {
+ void add(Runnable timeoutAction, Duration timeoutDuration) {
if (mTimeouts.size() + 1 >= MAX_TRACKED) {
remove(mTimeouts.pollFirst());
}
@@ -64,7 +63,7 @@ final class SafetyCenterTimeouts {
}
/** Removes the given {@link Runnable} to run as a timeout. */
- void remove(@NonNull Runnable timeoutAction) {
+ void remove(Runnable timeoutAction) {
mTimeouts.remove(timeoutAction);
mForegroundHandler.removeCallbacks(timeoutAction);
}
@@ -77,7 +76,7 @@ final class SafetyCenterTimeouts {
}
/** Dumps state for debugging purposes. */
- void dump(@NonNull PrintWriter fout) {
+ void dump(PrintWriter fout) {
int count = mTimeouts.size();
fout.println("TIMEOUTS (" + count + ")");
Iterator<Runnable> it = mTimeouts.iterator();
diff --git a/service/java/com/android/safetycenter/SafetySourceIssueInfo.java b/service/java/com/android/safetycenter/SafetySourceIssueInfo.java
index 171751dc7..51e6567d7 100644
--- a/service/java/com/android/safetycenter/SafetySourceIssueInfo.java
+++ b/service/java/com/android/safetycenter/SafetySourceIssueInfo.java
@@ -20,7 +20,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static com.android.safetycenter.internaldata.SafetyCenterIds.toUserFriendlyString;
-import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.safetycenter.SafetySourceIssue;
import android.safetycenter.config.SafetySource;
@@ -40,16 +39,16 @@ import java.util.Objects;
@RequiresApi(TIRAMISU)
public final class SafetySourceIssueInfo {
- @NonNull private final SafetySourceIssue mSafetySourceIssue;
- @NonNull private final SafetySource mSafetySource;
- @NonNull private final SafetySourcesGroup mSafetySourcesGroup;
- @NonNull private final SafetyCenterIssueKey mSafetyCenterIssueKey;
+ private final SafetySourceIssue mSafetySourceIssue;
+ private final SafetySource mSafetySource;
+ private final SafetySourcesGroup mSafetySourcesGroup;
+ private final SafetyCenterIssueKey mSafetyCenterIssueKey;
/** Creates a new {@link SafetySourceIssueInfo} instance. */
public SafetySourceIssueInfo(
- @NonNull SafetySourceIssue safetySourceIssue,
- @NonNull SafetySource safetySource,
- @NonNull SafetySourcesGroup safetySourcesGroup,
+ SafetySourceIssue safetySourceIssue,
+ SafetySource safetySource,
+ SafetySourcesGroup safetySourcesGroup,
@UserIdInt int userId) {
mSafetySourceIssue = safetySourceIssue;
mSafetySource = safetySource;
@@ -63,24 +62,20 @@ public final class SafetySourceIssueInfo {
}
/** Returns the {@link SafetyCenterIssueKey} related to this {@link SafetySourceIssue}. */
- @NonNull
public SafetyCenterIssueKey getSafetyCenterIssueKey() {
return mSafetyCenterIssueKey;
}
/** Returns the {@link SafetySourceIssue}. */
- @NonNull
public SafetySourceIssue getSafetySourceIssue() {
return mSafetySourceIssue;
}
/** Returns the {@link SafetySource} related to this {@link SafetySourceIssue}. */
- @NonNull
public SafetySource getSafetySource() {
return mSafetySource;
}
/** Returns the {@link SafetySourcesGroup} related to this {@link SafetySourceIssue}. */
- @NonNull
public SafetySourcesGroup getSafetySourcesGroup() {
return mSafetySourcesGroup;
}
diff --git a/service/java/com/android/safetycenter/SafetySourceKey.java b/service/java/com/android/safetycenter/SafetySourceKey.java
index bf856d37a..511fbef73 100644
--- a/service/java/com/android/safetycenter/SafetySourceKey.java
+++ b/service/java/com/android/safetycenter/SafetySourceKey.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.safetycenter.SafetySourceData;
@@ -36,22 +35,20 @@ import java.util.Objects;
@RequiresApi(TIRAMISU)
public final class SafetySourceKey {
- @NonNull private final String mSourceId;
+ private final String mSourceId;
@UserIdInt private final int mUserId;
- private SafetySourceKey(@NonNull String sourceId, @UserIdInt int userId) {
+ private SafetySourceKey(String sourceId, @UserIdInt int userId) {
mSourceId = sourceId;
mUserId = userId;
}
/** Creates a {@link SafetySourceKey} for the given {@code sourceId} and {@code userId}. */
- @NonNull
- public static SafetySourceKey of(@NonNull String sourceId, @UserIdInt int userId) {
+ public static SafetySourceKey of(String sourceId, @UserIdInt int userId) {
return new SafetySourceKey(sourceId, userId);
}
/** Returns the source id of this {@link SafetySourceKey}. */
- @NonNull
public String getSourceId() {
return mSourceId;
}
diff --git a/service/java/com/android/safetycenter/SafetySources.java b/service/java/com/android/safetycenter/SafetySources.java
index 6f9eb356e..f0f1ac7d6 100644
--- a/service/java/com/android/safetycenter/SafetySources.java
+++ b/service/java/com/android/safetycenter/SafetySources.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.safetycenter.SafetySourceData;
import android.safetycenter.config.SafetySource;
import android.util.Log;
@@ -39,7 +38,7 @@ public final class SafetySources {
* Returns whether a {@link SafetySource} is external, i.e. if {@link SafetySourceData} can be
* provided for it.
*/
- public static boolean isExternal(@NonNull SafetySource safetySource) {
+ public static boolean isExternal(SafetySource safetySource) {
int safetySourceType = safetySource.getType();
switch (safetySourceType) {
case SafetySource.SAFETY_SOURCE_TYPE_STATIC:
@@ -53,13 +52,13 @@ public final class SafetySources {
}
/** Returns whether a {@link SafetySource} is issue-only. */
- public static boolean isIssueOnly(@NonNull SafetySource safetySource) {
+ public static boolean isIssueOnly(SafetySource safetySource) {
int safetySourceType = safetySource.getType();
return safetySourceType == SafetySource.SAFETY_SOURCE_TYPE_ISSUE_ONLY;
}
/** Returns whether a {@link SafetySource} supports managed profiles. */
- public static boolean supportsManagedProfiles(@NonNull SafetySource safetySource) {
+ public static boolean supportsManagedProfiles(SafetySource safetySource) {
int safetySourceProfile = safetySource.getProfile();
switch (safetySourceProfile) {
case SafetySource.PROFILE_PRIMARY:
@@ -73,7 +72,7 @@ public final class SafetySources {
}
/** Returns whether a {@link SafetySource} default entry should be hidden in the UI. */
- static boolean isDefaultEntryHidden(@NonNull SafetySource safetySource) {
+ static boolean isDefaultEntryHidden(SafetySource safetySource) {
int safetySourceType = safetySource.getType();
switch (safetySourceType) {
case SafetySource.SAFETY_SOURCE_TYPE_STATIC:
@@ -88,7 +87,7 @@ public final class SafetySources {
}
/** Returns whether a {@link SafetySource} default entry should be disabled in the UI. */
- static boolean isDefaultEntryDisabled(@NonNull SafetySource safetySource) {
+ static boolean isDefaultEntryDisabled(SafetySource safetySource) {
int safetySourceType = safetySource.getType();
switch (safetySourceType) {
case SafetySource.SAFETY_SOURCE_TYPE_STATIC:
@@ -106,7 +105,7 @@ public final class SafetySources {
* Returns whether a {@link SafetySource} can be logged, without requiring a check of source
* type first.
*/
- public static boolean isLoggable(@NonNull SafetySource safetySource) {
+ public static boolean isLoggable(SafetySource safetySource) {
// Only external sources can have logging allowed values. Non-external sources cannot have
// their loggability configured. Unfortunately isLoggingAllowed throws if called on a
// non-external source.
diff --git a/service/java/com/android/safetycenter/SafetySourcesGroups.java b/service/java/com/android/safetycenter/SafetySourcesGroups.java
index 7afdde9ec..5233302aa 100644
--- a/service/java/com/android/safetycenter/SafetySourcesGroups.java
+++ b/service/java/com/android/safetycenter/SafetySourcesGroups.java
@@ -18,7 +18,6 @@ package com.android.safetycenter;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.safetycenter.config.SafetySourcesGroup;
import androidx.annotation.RequiresApi;
@@ -33,9 +32,7 @@ final class SafetySourcesGroups {
* Returns a builder with all fields of the original group copied other than {@link
* SafetySourcesGroup#getSafetySources()}.
*/
- @NonNull
- static SafetySourcesGroup.Builder copyToBuilderWithoutSources(
- @NonNull SafetySourcesGroup group) {
+ static SafetySourcesGroup.Builder copyToBuilderWithoutSources(SafetySourcesGroup group) {
SafetySourcesGroup.Builder safetySourcesGroupBuilder =
new SafetySourcesGroup.Builder()
.setId(group.getId())
diff --git a/service/java/com/android/safetycenter/UserProfileGroup.java b/service/java/com/android/safetycenter/UserProfileGroup.java
index e4c3336a8..bb9a2f704 100644
--- a/service/java/com/android/safetycenter/UserProfileGroup.java
+++ b/service/java/com/android/safetycenter/UserProfileGroup.java
@@ -20,7 +20,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static java.util.Objects.requireNonNull;
-import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -49,12 +48,12 @@ import java.util.Objects;
public final class UserProfileGroup {
@UserIdInt private final int mProfileParentUserId;
- @NonNull private final int[] mManagedProfilesUserIds;
- @NonNull private final int[] mManagedRunningProfilesUserIds;
+ private final int[] mManagedProfilesUserIds;
+ private final int[] mManagedRunningProfilesUserIds;
private UserProfileGroup(
@UserIdInt int profileParentUserId,
- @NonNull int[] managedProfilesUserIds,
+ int[] managedProfilesUserIds,
int[] managedRunningProfilesUserIds) {
mProfileParentUserId = profileParentUserId;
mManagedProfilesUserIds = managedProfilesUserIds;
@@ -62,7 +61,7 @@ public final class UserProfileGroup {
}
/** Returns all the alive {@link UserProfileGroup}s. */
- public static List<UserProfileGroup> getAllUserProfileGroups(@NonNull Context context) {
+ public static List<UserProfileGroup> getAllUserProfileGroups(Context context) {
List<UserProfileGroup> userProfileGroups = new ArrayList<>();
List<UserHandle> userHandles = UserUtils.getUserHandles(context);
for (int i = 0; i < userHandles.size(); i++) {
@@ -80,7 +79,7 @@ public final class UserProfileGroup {
}
private static boolean userProfileGroupsContain(
- @NonNull List<UserProfileGroup> userProfileGroups, @UserIdInt int userId) {
+ List<UserProfileGroup> userProfileGroups, @UserIdInt int userId) {
for (int i = 0; i < userProfileGroups.size(); i++) {
UserProfileGroup userProfileGroup = userProfileGroups.get(i);
@@ -98,7 +97,7 @@ public final class UserProfileGroup {
* <p>The given {@code userId} could be related to the profile parent or any of its associated
* managed profile(s).
*/
- public static UserProfileGroup from(@NonNull Context context, @UserIdInt int userId) {
+ public static UserProfileGroup from(Context context, @UserIdInt int userId) {
UserManager userManager = getUserManagerForUser(userId, context);
List<UserHandle> userProfiles = getEnabledUserProfiles(userManager);
UserHandle profileParent = getProfileParent(userManager, userId);
@@ -130,16 +129,12 @@ public final class UserProfileGroup {
Arrays.copyOf(managedRunningProfilesUserIds, managedRunningProfilesUserIdsLen));
}
- @NonNull
- private static UserManager getUserManagerForUser(
- @UserIdInt int userId, @NonNull Context context) {
+ private static UserManager getUserManagerForUser(@UserIdInt int userId, Context context) {
Context userContext = getUserContext(context, UserHandle.of(userId));
return requireNonNull(userContext.getSystemService(UserManager.class));
}
- @NonNull
- private static Context getUserContext(
- @NonNull Context context, @NonNull UserHandle userHandle) {
+ private static Context getUserContext(Context context, UserHandle userHandle) {
if (Process.myUserHandle().equals(userHandle)) {
return context;
} else {
@@ -151,8 +146,7 @@ public final class UserProfileGroup {
}
}
- @NonNull
- private static List<UserHandle> getEnabledUserProfiles(@NonNull UserManager userManager) {
+ private static List<UserHandle> getEnabledUserProfiles(UserManager userManager) {
// This call requires the QUERY_USERS permission.
final long callingId = Binder.clearCallingIdentity();
try {
@@ -163,8 +157,7 @@ public final class UserProfileGroup {
}
@Nullable
- private static UserHandle getProfileParent(
- @NonNull UserManager userManager, @UserIdInt int userId) {
+ private static UserHandle getProfileParent(UserManager userManager, @UserIdInt int userId) {
// This call requires the INTERACT_ACROSS_USERS permission.
final long callingId = Binder.clearCallingIdentity();
try {
diff --git a/service/java/com/android/safetycenter/data/SafetyCenterDataManager.java b/service/java/com/android/safetycenter/data/SafetyCenterDataManager.java
index 9d9febaec..9f6ffc257 100644
--- a/service/java/com/android/safetycenter/data/SafetyCenterDataManager.java
+++ b/service/java/com/android/safetycenter/data/SafetyCenterDataManager.java
@@ -18,7 +18,6 @@ package com.android.safetycenter.data;
import static android.os.Build.VERSION_CODES.TIRAMISU;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.Context;
@@ -61,24 +60,22 @@ import javax.annotation.concurrent.NotThreadSafe;
@NotThreadSafe
public final class SafetyCenterDataManager {
- @NonNull private final SafetySourceDataRepository mSafetySourceDataRepository;
+ private final SafetySourceDataRepository mSafetySourceDataRepository;
- @NonNull
private final SafetyCenterIssueDismissalRepository mSafetyCenterIssueDismissalRepository;
- @NonNull private final SafetyCenterIssueRepository mSafetyCenterIssueRepository;
+ private final SafetyCenterIssueRepository mSafetyCenterIssueRepository;
- @NonNull
private final SafetyCenterInFlightIssueActionRepository
mSafetyCenterInFlightIssueActionRepository;
/** Creates an instance of {@link SafetyCenterDataManager}. */
public SafetyCenterDataManager(
- @NonNull Context context,
- @NonNull SafetyCenterConfigReader safetyCenterConfigReader,
- @NonNull SafetyCenterRefreshTracker safetyCenterRefreshTracker,
- @NonNull SafetyCenterStatsdLogger safetyCenterStatsdLogger,
- @NonNull ApiLock apiLock) {
+ Context context,
+ SafetyCenterConfigReader safetyCenterConfigReader,
+ SafetyCenterRefreshTracker safetyCenterRefreshTracker,
+ SafetyCenterStatsdLogger safetyCenterStatsdLogger,
+ ApiLock apiLock) {
mSafetyCenterInFlightIssueActionRepository =
new SafetyCenterInFlightIssueActionRepository(safetyCenterStatsdLogger);
mSafetyCenterIssueDismissalRepository =
@@ -122,9 +119,9 @@ public final class SafetyCenterDataManager {
*/
public boolean setSafetySourceData(
@Nullable SafetySourceData safetySourceData,
- @NonNull String safetySourceId,
- @NonNull SafetyEvent safetyEvent,
- @NonNull String packageName,
+ String safetySourceId,
+ SafetyEvent safetyEvent,
+ String packageName,
@UserIdInt int userId) {
boolean dataUpdated =
mSafetySourceDataRepository.setSafetySourceData(
@@ -141,7 +138,7 @@ public final class SafetyCenterDataManager {
*
* <p>That issue's notification (if any) is also marked as dismissed.
*/
- public void dismissSafetyCenterIssue(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ public void dismissSafetyCenterIssue(SafetyCenterIssueKey safetyCenterIssueKey) {
mSafetyCenterIssueDismissalRepository.dismissIssue(safetyCenterIssueKey);
mSafetyCenterIssueRepository.updateIssues(safetyCenterIssueKey.getUserId());
}
@@ -152,7 +149,7 @@ public final class SafetyCenterDataManager {
* <p>The issue itself is <strong>not</strong> marked as dismissed and its warning card can
* still appear in the Safety Center UI.
*/
- public void dismissNotification(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ public void dismissNotification(SafetyCenterIssueKey safetyCenterIssueKey) {
mSafetyCenterIssueDismissalRepository.dismissNotification(safetyCenterIssueKey);
mSafetyCenterIssueRepository.updateIssues(safetyCenterIssueKey.getUserId());
}
@@ -166,9 +163,9 @@ public final class SafetyCenterDataManager {
* safetySourceId}, {@code packageName} and/or {@code userId} are unexpected.
*/
public boolean reportSafetySourceError(
- @NonNull SafetySourceErrorDetails safetySourceErrorDetails,
- @NonNull String safetySourceId,
- @NonNull String packageName,
+ SafetySourceErrorDetails safetySourceErrorDetails,
+ String safetySourceId,
+ String packageName,
@UserIdInt int userId) {
boolean dataUpdated =
mSafetySourceDataRepository.reportSafetySourceError(
@@ -184,7 +181,7 @@ public final class SafetyCenterDataManager {
* Marks the given {@link SafetySourceKey} as having errored-out and returns whether there was a
* change to the underlying {@link SafetyCenterData}.
*/
- public boolean setSafetySourceError(@NonNull SafetySourceKey safetySourceKey) {
+ public boolean setSafetySourceError(SafetySourceKey safetySourceKey) {
boolean dataUpdated = mSafetySourceDataRepository.setSafetySourceError(safetySourceKey);
if (dataUpdated) {
mSafetyCenterIssueRepository.updateIssues(safetySourceKey.getUserId());
@@ -197,14 +194,14 @@ public final class SafetyCenterDataManager {
* Clears all safety source errors received so far for the given {@link UserProfileGroup}, this
* is useful e.g. when starting a new broadcast.
*/
- public void clearSafetySourceErrors(@NonNull UserProfileGroup userProfileGroup) {
+ public void clearSafetySourceErrors(UserProfileGroup userProfileGroup) {
mSafetySourceDataRepository.clearSafetySourceErrors(userProfileGroup);
mSafetyCenterIssueRepository.updateIssues(userProfileGroup);
}
/** Marks the given {@link SafetyCenterIssueActionId} as in-flight. */
public void markSafetyCenterIssueActionInFlight(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId) {
+ SafetyCenterIssueActionId safetyCenterIssueActionId) {
mSafetyCenterInFlightIssueActionRepository.markSafetyCenterIssueActionInFlight(
safetyCenterIssueActionId);
mSafetyCenterIssueRepository.updateIssues(
@@ -217,8 +214,8 @@ public final class SafetyCenterDataManager {
* SafetyCenterData} changed.
*/
public boolean unmarkSafetyCenterIssueActionInFlight(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId,
- @NonNull SafetySourceIssue safetySourceIssue,
+ SafetyCenterIssueActionId safetyCenterIssueActionId,
+ SafetySourceIssue safetySourceIssue,
@SafetyCenterStatsdLogger.SystemEventResult int result) {
boolean dataUpdated =
mSafetyCenterInFlightIssueActionRepository.unmarkSafetyCenterIssueActionInFlight(
@@ -261,7 +258,7 @@ public final class SafetyCenterDataManager {
* <p>If the given issue key is not found in the repository this method returns {@code false}.
*/
public boolean isIssueDismissed(
- @NonNull SafetyCenterIssueKey safetyCenterIssueKey,
+ SafetyCenterIssueKey safetyCenterIssueKey,
@SafetySourceData.SeverityLevel int safetySourceIssueSeverityLevel) {
return mSafetyCenterIssueDismissalRepository.isIssueDismissed(
safetyCenterIssueKey, safetySourceIssueSeverityLevel);
@@ -272,7 +269,7 @@ public final class SafetyCenterDataManager {
* dismissed.
*/
@Nullable
- public Instant getNotificationDismissedAt(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ public Instant getNotificationDismissedAt(SafetyCenterIssueKey safetyCenterIssueKey) {
return mSafetyCenterIssueDismissalRepository.getNotificationDismissedAt(
safetyCenterIssueKey);
}
@@ -291,7 +288,7 @@ public final class SafetyCenterDataManager {
* Center.
*/
@Nullable
- public Instant getIssueFirstSeenAt(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ public Instant getIssueFirstSeenAt(SafetyCenterIssueKey safetyCenterIssueKey) {
return mSafetyCenterIssueDismissalRepository.getIssueFirstSeenAt(safetyCenterIssueKey);
}
@@ -308,9 +305,8 @@ public final class SafetyCenterDataManager {
* <p>Only includes issues related to active/running {@code userId}s in the given {@link
* UserProfileGroup}.
*/
- @NonNull
public List<SafetySourceIssueInfo> getIssuesDedupedSortedDescFor(
- @NonNull UserProfileGroup userProfileGroup) {
+ UserProfileGroup userProfileGroup) {
return mSafetyCenterIssueRepository.getIssuesDedupedSortedDescFor(userProfileGroup);
}
@@ -321,12 +317,11 @@ public final class SafetyCenterDataManager {
* <p>Only includes issues related to active/running {@code userId}s in the given {@link
* UserProfileGroup}.
*/
- public int countLoggableIssuesFor(@NonNull UserProfileGroup userProfileGroup) {
+ public int countLoggableIssuesFor(UserProfileGroup userProfileGroup) {
return mSafetyCenterIssueRepository.countLoggableIssuesFor(userProfileGroup);
}
/** Gets an unmodifiable list of all issues for the given {@code userId}. */
- @NonNull
public List<SafetySourceIssueInfo> getIssuesForUser(@UserIdInt int userId) {
return mSafetyCenterIssueRepository.getIssuesForUser(userId);
}
@@ -336,7 +331,7 @@ public final class SafetyCenterDataManager {
///////////////////////////////////////////////////////////////////////////////////////////////
/** Returns {@code true} if the given issue action is in flight. */
- public boolean actionIsInFlight(@NonNull SafetyCenterIssueActionId safetyCenterIssueActionId) {
+ public boolean actionIsInFlight(SafetyCenterIssueActionId safetyCenterIssueActionId) {
return mSafetyCenterInFlightIssueActionRepository.actionIsInFlight(
safetyCenterIssueActionId);
}
@@ -357,7 +352,7 @@ public final class SafetyCenterDataManager {
*/
@Nullable
public SafetySourceData getSafetySourceData(
- @NonNull String safetySourceId, @NonNull String packageName, @UserIdInt int userId) {
+ String safetySourceId, String packageName, @UserIdInt int userId) {
return mSafetySourceDataRepository.getSafetySourceData(safetySourceId, packageName, userId);
}
@@ -372,12 +367,12 @@ public final class SafetyCenterDataManager {
* {@link #setSafetySourceData} with a {@code null} value.
*/
@Nullable
- public SafetySourceData getSafetySourceDataInternal(@NonNull SafetySourceKey safetySourceKey) {
+ public SafetySourceData getSafetySourceDataInternal(SafetySourceKey safetySourceKey) {
return mSafetySourceDataRepository.getSafetySourceDataInternal(safetySourceKey);
}
/** Returns {@code true} if the given source has an error. */
- public boolean sourceHasError(@NonNull SafetySourceKey safetySourceKey) {
+ public boolean sourceHasError(SafetySourceKey safetySourceKey) {
return mSafetySourceDataRepository.sourceHasError(safetySourceKey);
}
@@ -388,8 +383,7 @@ public final class SafetyCenterDataManager {
* dismissed.
*/
@Nullable
- public SafetySourceIssue getSafetySourceIssue(
- @NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ public SafetySourceIssue getSafetySourceIssue(SafetyCenterIssueKey safetyCenterIssueKey) {
return mSafetySourceDataRepository.getSafetySourceIssue(safetyCenterIssueKey);
}
@@ -404,7 +398,7 @@ public final class SafetyCenterDataManager {
*/
@Nullable
public SafetySourceIssue.Action getSafetySourceIssueAction(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId) {
+ SafetyCenterIssueActionId safetyCenterIssueActionId) {
return mSafetySourceDataRepository.getSafetySourceIssueAction(safetyCenterIssueActionId);
}
@@ -413,7 +407,7 @@ public final class SafetyCenterDataManager {
///////////////////////////////////////////////////////////////////////////////////////////////
/** Dumps state for debugging purposes. */
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter fout) {
+ public void dump(FileDescriptor fd, PrintWriter fout) {
mSafetySourceDataRepository.dump(fout);
mSafetyCenterIssueDismissalRepository.dump(fd, fout);
mSafetyCenterInFlightIssueActionRepository.dump(fout);
diff --git a/service/java/com/android/safetycenter/data/SafetyCenterInFlightIssueActionRepository.java b/service/java/com/android/safetycenter/data/SafetyCenterInFlightIssueActionRepository.java
index cf5c894fa..be740ebaa 100644
--- a/service/java/com/android/safetycenter/data/SafetyCenterInFlightIssueActionRepository.java
+++ b/service/java/com/android/safetycenter/data/SafetyCenterInFlightIssueActionRepository.java
@@ -20,7 +20,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static com.android.safetycenter.internaldata.SafetyCenterIds.toUserFriendlyString;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.os.SystemClock;
@@ -48,20 +47,18 @@ final class SafetyCenterInFlightIssueActionRepository {
private static final String TAG = "SafetyCenterInFlight";
- @NonNull private final SafetyCenterStatsdLogger mSafetyCenterStatsdLogger;
+ private final SafetyCenterStatsdLogger mSafetyCenterStatsdLogger;
private final ArrayMap<SafetyCenterIssueActionId, Long> mSafetyCenterIssueActionsInFlight =
new ArrayMap<>();
/** Constructs a new instance of {@link SafetyCenterInFlightIssueActionRepository}. */
- SafetyCenterInFlightIssueActionRepository(
- @NonNull SafetyCenterStatsdLogger safetyCenterStatsdLogger) {
+ SafetyCenterInFlightIssueActionRepository(SafetyCenterStatsdLogger safetyCenterStatsdLogger) {
mSafetyCenterStatsdLogger = safetyCenterStatsdLogger;
}
/** Marks the given {@link SafetyCenterIssueActionId} as in-flight. */
- void markSafetyCenterIssueActionInFlight(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId) {
+ void markSafetyCenterIssueActionInFlight(SafetyCenterIssueActionId safetyCenterIssueActionId) {
mSafetyCenterIssueActionsInFlight.put(
safetyCenterIssueActionId, SystemClock.elapsedRealtime());
}
@@ -72,8 +69,8 @@ final class SafetyCenterInFlightIssueActionRepository {
* SafetyCenterData} changed.
*/
boolean unmarkSafetyCenterIssueActionInFlight(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId,
- @NonNull SafetySourceIssue safetySourceIssue,
+ SafetyCenterIssueActionId safetyCenterIssueActionId,
+ SafetySourceIssue safetySourceIssue,
@SafetyCenterStatsdLogger.SystemEventResult int result) {
Long startElapsedMillis =
mSafetyCenterIssueActionsInFlight.remove(safetyCenterIssueActionId);
@@ -106,7 +103,7 @@ final class SafetyCenterInFlightIssueActionRepository {
}
/** Returns {@code true} if the given issue action is in flight. */
- boolean actionIsInFlight(@NonNull SafetyCenterIssueActionId safetyCenterIssueActionId) {
+ boolean actionIsInFlight(SafetyCenterIssueActionId safetyCenterIssueActionId) {
return mSafetyCenterIssueActionsInFlight.containsKey(safetyCenterIssueActionId);
}
@@ -116,8 +113,8 @@ final class SafetyCenterInFlightIssueActionRepository {
*/
@Nullable
SafetySourceIssue.Action getSafetySourceIssueAction(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId,
- @NonNull SafetySourceIssue safetySourceIssue) {
+ SafetyCenterIssueActionId safetyCenterIssueActionId,
+ SafetySourceIssue safetySourceIssue) {
if (actionIsInFlight(safetyCenterIssueActionId)) {
return null;
}
@@ -137,7 +134,7 @@ final class SafetyCenterInFlightIssueActionRepository {
}
/** Dumps in-flight action data for debugging purposes. */
- void dump(@NonNull PrintWriter fout) {
+ void dump(PrintWriter fout) {
int actionInFlightCount = mSafetyCenterIssueActionsInFlight.size();
fout.println("ACTIONS IN FLIGHT (" + actionInFlightCount + ")");
for (int i = 0; i < actionInFlightCount; i++) {
diff --git a/service/java/com/android/safetycenter/data/SafetyCenterIssueDeduplicator.java b/service/java/com/android/safetycenter/data/SafetyCenterIssueDeduplicator.java
index 51b356778..3323dac95 100644
--- a/service/java/com/android/safetycenter/data/SafetyCenterIssueDeduplicator.java
+++ b/service/java/com/android/safetycenter/data/SafetyCenterIssueDeduplicator.java
@@ -18,7 +18,6 @@ package com.android.safetycenter.data;
import static android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.util.ArrayMap;
@@ -41,11 +40,10 @@ import javax.annotation.concurrent.NotThreadSafe;
@NotThreadSafe
final class SafetyCenterIssueDeduplicator {
- @NonNull
private final SafetyCenterIssueDismissalRepository mSafetyCenterIssueDismissalRepository;
SafetyCenterIssueDeduplicator(
- @NonNull SafetyCenterIssueDismissalRepository safetyCenterIssueDismissalRepository) {
+ SafetyCenterIssueDismissalRepository safetyCenterIssueDismissalRepository) {
this.mSafetyCenterIssueDismissalRepository = safetyCenterIssueDismissalRepository;
}
@@ -61,7 +59,7 @@ final class SafetyCenterIssueDeduplicator {
*
* <p>This method modifies the given argument.
*/
- void deduplicateIssues(@NonNull List<SafetySourceIssueInfo> sortedIssues) {
+ void deduplicateIssues(List<SafetySourceIssueInfo> sortedIssues) {
// (dedup key) -> list(issues)
ArrayMap<DeduplicationKey, List<SafetySourceIssueInfo>> dedupBuckets =
createDedupBuckets(sortedIssues);
@@ -85,7 +83,7 @@ final class SafetyCenterIssueDeduplicator {
* equal or lower severity (not priority).
*/
private void dismissDuplicateIssuesOfDismissedIssue(
- @NonNull ArrayMap<DeduplicationKey, List<SafetySourceIssueInfo>> dedupBuckets) {
+ ArrayMap<DeduplicationKey, List<SafetySourceIssueInfo>> dedupBuckets) {
for (int i = 0; i < dedupBuckets.size(); i++) {
List<SafetySourceIssueInfo> duplicates = dedupBuckets.valueAt(i);
SafetySourceIssueInfo topDismissed = getHighestPriorityDismissedIssue(duplicates);
@@ -98,8 +96,7 @@ final class SafetyCenterIssueDeduplicator {
* the bucket.
*/
private void alignDismissalsDataWithinBucket(
- @Nullable SafetySourceIssueInfo topDismissed,
- @NonNull List<SafetySourceIssueInfo> duplicates) {
+ @Nullable SafetySourceIssueInfo topDismissed, List<SafetySourceIssueInfo> duplicates) {
if (topDismissed == null) {
return;
}
@@ -120,7 +117,7 @@ final class SafetyCenterIssueDeduplicator {
@Nullable
private SafetySourceIssueInfo getHighestPriorityDismissedIssue(
- @NonNull List<SafetySourceIssueInfo> duplicates) {
+ List<SafetySourceIssueInfo> duplicates) {
for (int i = 0; i < duplicates.size(); i++) {
SafetySourceIssueInfo issueInfo = duplicates.get(i);
if (mSafetyCenterIssueDismissalRepository.isIssueDismissed(
@@ -134,9 +131,8 @@ final class SafetyCenterIssueDeduplicator {
}
/** Returns a set of duplicate issues that need to be filtered out. */
- @NonNull
private static ArraySet<SafetyCenterIssueKey> getDuplicatesToFilterOut(
- @NonNull ArrayMap<DeduplicationKey, List<SafetySourceIssueInfo>> dedupBuckets) {
+ ArrayMap<DeduplicationKey, List<SafetySourceIssueInfo>> dedupBuckets) {
ArraySet<SafetyCenterIssueKey> duplicatesToFilterOut = new ArraySet<>();
for (int i = 0; i < dedupBuckets.size(); i++) {
@@ -151,9 +147,8 @@ final class SafetyCenterIssueDeduplicator {
}
/** Returns a mapping (dedup key) -> list(issues). */
- @NonNull
private static ArrayMap<DeduplicationKey, List<SafetySourceIssueInfo>> createDedupBuckets(
- @NonNull List<SafetySourceIssueInfo> sortedIssues) {
+ List<SafetySourceIssueInfo> sortedIssues) {
ArrayMap<DeduplicationKey, List<SafetySourceIssueInfo>> dedupBuckets = new ArrayMap<>();
for (int i = 0; i < sortedIssues.size(); i++) {
@@ -176,7 +171,7 @@ final class SafetyCenterIssueDeduplicator {
/** Returns deduplication key of the given {@code issueInfo}. */
@Nullable
- private static DeduplicationKey getDedupKey(@NonNull SafetySourceIssueInfo issueInfo) {
+ private static DeduplicationKey getDedupKey(SafetySourceIssueInfo issueInfo) {
String deduplicationGroup = issueInfo.getSafetySource().getDeduplicationGroup();
String deduplicationId = issueInfo.getSafetySourceIssue().getDeduplicationId();
@@ -191,14 +186,12 @@ final class SafetyCenterIssueDeduplicator {
private static class DeduplicationKey {
- @NonNull private final String mDeduplicationGroup;
- @NonNull private final String mDeduplicationId;
+ private final String mDeduplicationGroup;
+ private final String mDeduplicationId;
private final int mUserId;
private DeduplicationKey(
- @NonNull String deduplicationGroup,
- @NonNull String deduplicationId,
- @UserIdInt int userId) {
+ String deduplicationGroup, String deduplicationId, @UserIdInt int userId) {
mDeduplicationGroup = deduplicationGroup;
mDeduplicationId = deduplicationId;
mUserId = userId;
diff --git a/service/java/com/android/safetycenter/data/SafetyCenterIssueDismissalRepository.java b/service/java/com/android/safetycenter/data/SafetyCenterIssueDismissalRepository.java
index d4c67f3f7..65b7635a2 100644
--- a/service/java/com/android/safetycenter/data/SafetyCenterIssueDismissalRepository.java
+++ b/service/java/com/android/safetycenter/data/SafetyCenterIssueDismissalRepository.java
@@ -20,7 +20,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static com.android.safetycenter.internaldata.SafetyCenterIds.toUserFriendlyString;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.annotation.WorkerThread;
@@ -84,15 +83,15 @@ final class SafetyCenterIssueDismissalRepository {
private final Handler mWriteHandler = BackgroundThread.getHandler();
- @NonNull private final ApiLock mApiLock;
+ private final ApiLock mApiLock;
- @NonNull private final SafetyCenterConfigReader mSafetyCenterConfigReader;
+ private final SafetyCenterConfigReader mSafetyCenterConfigReader;
private final ArrayMap<SafetyCenterIssueKey, IssueData> mIssues = new ArrayMap<>();
private boolean mWriteStateToFileScheduled = false;
SafetyCenterIssueDismissalRepository(
- @NonNull ApiLock apiLock, @NonNull SafetyCenterConfigReader safetyCenterConfigReader) {
+ ApiLock apiLock, SafetyCenterConfigReader safetyCenterConfigReader) {
mApiLock = apiLock;
mSafetyCenterConfigReader = safetyCenterConfigReader;
}
@@ -107,7 +106,7 @@ final class SafetyCenterIssueDismissalRepository {
* <p>If the given issue key is not found in the repository this method returns {@code false}.
*/
boolean isIssueDismissed(
- @NonNull SafetyCenterIssueKey safetyCenterIssueKey,
+ SafetyCenterIssueKey safetyCenterIssueKey,
@SafetySourceData.SeverityLevel int safetySourceIssueSeverityLevel) {
IssueData issueData = getOrWarn(safetyCenterIssueKey, "checking if dismissed");
if (issueData == null) {
@@ -143,7 +142,7 @@ final class SafetyCenterIssueDismissalRepository {
*
* <p>That issue's notification (if any) is also marked as dismissed.
*/
- void dismissIssue(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ void dismissIssue(SafetyCenterIssueKey safetyCenterIssueKey) {
IssueData issueData = getOrWarn(safetyCenterIssueKey, "dismissing");
if (issueData == null) {
return;
@@ -161,8 +160,7 @@ final class SafetyCenterIssueDismissalRepository {
* <p>This will align dismissal state of these issues, unless issues are of different
* severities, in which case they can potentially differ in resurface times.
*/
- void copyDismissalData(
- @NonNull SafetyCenterIssueKey keyFrom, @NonNull SafetyCenterIssueKey keyTo) {
+ void copyDismissalData(SafetyCenterIssueKey keyFrom, SafetyCenterIssueKey keyTo) {
IssueData dataFrom = getOrWarn(keyFrom, "copying dismissed data");
IssueData dataTo = getOrWarn(keyTo, "copying dismissed data");
if (dataFrom == null || dataTo == null) {
@@ -180,7 +178,7 @@ final class SafetyCenterIssueDismissalRepository {
* <p>The issue itself is <strong>not</strong> marked as dismissed and its warning card can
* still appear in the Safety Center UI.
*/
- void dismissNotification(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ void dismissNotification(SafetyCenterIssueKey safetyCenterIssueKey) {
IssueData issueData = getOrWarn(safetyCenterIssueKey, "dismissing notification");
if (issueData == null) {
return;
@@ -194,7 +192,7 @@ final class SafetyCenterIssueDismissalRepository {
* Center.
*/
@Nullable
- Instant getIssueFirstSeenAt(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ Instant getIssueFirstSeenAt(SafetyCenterIssueKey safetyCenterIssueKey) {
IssueData issueData = getOrWarn(safetyCenterIssueKey, "getting first seen");
if (issueData == null) {
return null;
@@ -208,7 +206,7 @@ final class SafetyCenterIssueDismissalRepository {
*/
// TODO(b/261429824): Handle mNotificationDismissedAt w.r.t. issue deduplication
@Nullable
- Instant getNotificationDismissedAt(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ Instant getNotificationDismissedAt(SafetyCenterIssueKey safetyCenterIssueKey) {
IssueData issueData = getOrWarn(safetyCenterIssueKey, "getting notification dismissed");
if (issueData == null) {
return null;
@@ -221,9 +219,7 @@ final class SafetyCenterIssueDismissalRepository {
* the supplied source and user.
*/
void updateIssuesForSource(
- @NonNull ArraySet<String> safetySourceIssueIds,
- @NonNull String safetySourceId,
- @UserIdInt int userId) {
+ ArraySet<String> safetySourceIssueIds, String safetySourceId, @UserIdInt int userId) {
boolean someDataChanged = false;
// Remove issues no longer reported by the source.
@@ -263,7 +259,6 @@ final class SafetyCenterIssueDismissalRepository {
}
/** Takes a snapshot of the contents of the repository to be written to persistent storage. */
- @NonNull
private List<PersistedSafetyCenterIssue> snapshot() {
List<PersistedSafetyCenterIssue> persistedIssues = new ArrayList<>();
for (int i = 0; i < mIssues.size(); i++) {
@@ -277,7 +272,7 @@ final class SafetyCenterIssueDismissalRepository {
/**
* Replaces the contents of the repository with the given issues read from persistent storage.
*/
- private void load(@NonNull List<PersistedSafetyCenterIssue> persistedSafetyCenterIssues) {
+ private void load(List<PersistedSafetyCenterIssue> persistedSafetyCenterIssues) {
boolean someDataChanged = false;
mIssues.clear();
for (int i = 0; i < persistedSafetyCenterIssues.size(); i++) {
@@ -323,7 +318,7 @@ final class SafetyCenterIssueDismissalRepository {
}
/** Dumps state for debugging purposes. */
- void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter fout) {
+ void dump(FileDescriptor fd, PrintWriter fout) {
int issueRepositoryCount = mIssues.size();
fout.println(
"ISSUE DISMISSAL REPOSITORY ("
@@ -354,7 +349,7 @@ final class SafetyCenterIssueDismissalRepository {
}
@Nullable
- private IssueData getOrWarn(@NonNull SafetyCenterIssueKey issueKey, @NonNull String reason) {
+ private IssueData getOrWarn(SafetyCenterIssueKey issueKey, String reason) {
IssueData issueData = mIssues.get(issueKey);
if (issueData == null) {
Log.w(
@@ -408,7 +403,6 @@ final class SafetyCenterIssueDismissalRepository {
scheduleWriteStateToFile();
}
- @NonNull
private static File getIssueDismissalRepositoryFile() {
ApexEnvironment apexEnvironment = ApexEnvironment.getApexEnvironment(APEX_MODULE_NAME);
File dataDirectory = apexEnvironment.getDeviceProtectedDataDir();
@@ -422,9 +416,7 @@ final class SafetyCenterIssueDismissalRepository {
*/
private static final class IssueData {
- @NonNull
- private static IssueData fromPersistedIssue(
- @NonNull PersistedSafetyCenterIssue persistedIssue) {
+ private static IssueData fromPersistedIssue(PersistedSafetyCenterIssue persistedIssue) {
IssueData issueData = new IssueData(persistedIssue.getFirstSeenAt());
issueData.setDismissedAt(persistedIssue.getDismissedAt());
issueData.setDismissCount(persistedIssue.getDismissCount());
@@ -432,18 +424,17 @@ final class SafetyCenterIssueDismissalRepository {
return issueData;
}
- @NonNull private final Instant mFirstSeenAt;
+ private final Instant mFirstSeenAt;
@Nullable private Instant mDismissedAt;
private int mDismissCount;
@Nullable private Instant mNotificationDismissedAt;
- private IssueData(@NonNull Instant firstSeenAt) {
+ private IssueData(Instant firstSeenAt) {
mFirstSeenAt = firstSeenAt;
}
- @NonNull
private Instant getFirstSeenAt() {
return mFirstSeenAt;
}
@@ -474,7 +465,6 @@ final class SafetyCenterIssueDismissalRepository {
mNotificationDismissedAt = notificationDismissedAt;
}
- @NonNull
private PersistedSafetyCenterIssue.Builder toPersistedIssueBuilder() {
return new PersistedSafetyCenterIssue.Builder()
.setFirstSeenAt(mFirstSeenAt)
diff --git a/service/java/com/android/safetycenter/data/SafetyCenterIssueRepository.java b/service/java/com/android/safetycenter/data/SafetyCenterIssueRepository.java
index 55c7297f4..aa2feebf9 100644
--- a/service/java/com/android/safetycenter/data/SafetyCenterIssueRepository.java
+++ b/service/java/com/android/safetycenter/data/SafetyCenterIssueRepository.java
@@ -21,7 +21,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static java.util.Collections.emptyList;
import static java.util.Collections.unmodifiableList;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.Context;
@@ -61,9 +60,9 @@ final class SafetyCenterIssueRepository {
SAFETY_SOURCE_ISSUES_INFO_BY_SEVERITY_DESCENDING =
new SafetySourceIssuesInfoBySeverityDescending();
- @NonNull private final Context mContext;
- @NonNull private final SafetySourceDataRepository mSafetySourceDataRepository;
- @NonNull private final SafetyCenterConfigReader mSafetyCenterConfigReader;
+ private final Context mContext;
+ private final SafetySourceDataRepository mSafetySourceDataRepository;
+ private final SafetyCenterConfigReader mSafetyCenterConfigReader;
// Only available on Android U+.
@Nullable private final SafetyCenterIssueDeduplicator mSafetyCenterIssueDeduplicator;
@@ -73,9 +72,9 @@ final class SafetyCenterIssueRepository {
new SparseArray<>();
SafetyCenterIssueRepository(
- @NonNull Context context,
- @NonNull SafetySourceDataRepository safetySourceDataRepository,
- @NonNull SafetyCenterConfigReader safetyCenterConfigReader,
+ Context context,
+ SafetySourceDataRepository safetySourceDataRepository,
+ SafetyCenterConfigReader safetyCenterConfigReader,
@Nullable SafetyCenterIssueDeduplicator safetyCenterIssueDeduplicator) {
mContext = context;
mSafetySourceDataRepository = safetySourceDataRepository;
@@ -87,7 +86,7 @@ final class SafetyCenterIssueRepository {
* Updates the class as per the current state of issues. Should be called after any state update
* that can affect issues.
*/
- void updateIssues(@NonNull UserProfileGroup userProfileGroup) {
+ void updateIssues(UserProfileGroup userProfileGroup) {
updateIssues(userProfileGroup.getProfileParentUserId(), /* isManagedProfile= */ false);
int[] managedProfileUserIds = userProfileGroup.getManagedProfilesUserIds();
@@ -120,9 +119,7 @@ final class SafetyCenterIssueRepository {
* <p>Only includes issues related to active/running {@code userId}s in the given {@link
* UserProfileGroup}.
*/
- @NonNull
- List<SafetySourceIssueInfo> getIssuesDedupedSortedDescFor(
- @NonNull UserProfileGroup userProfileGroup) {
+ List<SafetySourceIssueInfo> getIssuesDedupedSortedDescFor(UserProfileGroup userProfileGroup) {
List<SafetySourceIssueInfo> issuesInfo = getIssuesFor(userProfileGroup);
issuesInfo.sort(SAFETY_SOURCE_ISSUES_INFO_BY_SEVERITY_DESCENDING);
return issuesInfo;
@@ -135,7 +132,7 @@ final class SafetyCenterIssueRepository {
* <p>Only includes issues related to active/running {@code userId}s in the given {@link
* UserProfileGroup}.
*/
- int countLoggableIssuesFor(@NonNull UserProfileGroup userProfileGroup) {
+ int countLoggableIssuesFor(UserProfileGroup userProfileGroup) {
List<SafetySourceIssueInfo> relevantIssues = getIssuesFor(userProfileGroup);
int issueCount = 0;
for (int i = 0; i < relevantIssues.size(); i++) {
@@ -148,12 +145,11 @@ final class SafetyCenterIssueRepository {
}
/** Gets an unmodifiable list of all issues for the given {@code userId}. */
- @NonNull
List<SafetySourceIssueInfo> getIssuesForUser(@UserIdInt int userId) {
return mUserIdToIssuesInfo.get(userId, emptyList());
}
- private void processIssues(@NonNull List<SafetySourceIssueInfo> issuesInfo) {
+ private void processIssues(List<SafetySourceIssueInfo> issuesInfo) {
issuesInfo.sort(SAFETY_SOURCE_ISSUES_INFO_BY_SEVERITY_DESCENDING);
if (SdkLevel.isAtLeastU() && mSafetyCenterIssueDeduplicator != null) {
@@ -161,7 +157,6 @@ final class SafetyCenterIssueRepository {
}
}
- @NonNull
private List<SafetySourceIssueInfo> getAllStoredIssuesFromRawSourceData(
@UserIdInt int userId, boolean isManagedProfile) {
List<SafetySourceIssueInfo> allIssuesInfo = new ArrayList<>();
@@ -177,8 +172,8 @@ final class SafetyCenterIssueRepository {
}
private void addSafetySourceIssuesInfo(
- @NonNull List<SafetySourceIssueInfo> issuesInfo,
- @NonNull SafetySourcesGroup safetySourcesGroup,
+ List<SafetySourceIssueInfo> issuesInfo,
+ SafetySourcesGroup safetySourcesGroup,
@UserIdInt int userId,
boolean isManagedProfile) {
List<SafetySource> safetySources = safetySourcesGroup.getSafetySources();
@@ -197,9 +192,9 @@ final class SafetyCenterIssueRepository {
}
private void addSafetySourceIssuesInfo(
- @NonNull List<SafetySourceIssueInfo> issuesInfo,
- @NonNull SafetySource safetySource,
- @NonNull SafetySourcesGroup safetySourcesGroup,
+ List<SafetySourceIssueInfo> issuesInfo,
+ SafetySource safetySource,
+ SafetySourcesGroup safetySourcesGroup,
@UserIdInt int userId) {
SafetySourceKey key = SafetySourceKey.of(safetySource.getId(), userId);
SafetySourceData safetySourceData =
@@ -224,8 +219,7 @@ final class SafetyCenterIssueRepository {
* Only includes issues related to active/running {@code userId}s in the given {@link
* UserProfileGroup}.
*/
- @NonNull
- private List<SafetySourceIssueInfo> getIssuesFor(@NonNull UserProfileGroup userProfileGroup) {
+ private List<SafetySourceIssueInfo> getIssuesFor(UserProfileGroup userProfileGroup) {
List<SafetySourceIssueInfo> issues =
new ArrayList<>(getIssuesForUser(userProfileGroup.getProfileParentUserId()));
@@ -244,8 +238,7 @@ final class SafetyCenterIssueRepository {
private SafetySourceIssuesInfoBySeverityDescending() {}
@Override
- public int compare(
- @NonNull SafetySourceIssueInfo left, @NonNull SafetySourceIssueInfo right) {
+ public int compare(SafetySourceIssueInfo left, SafetySourceIssueInfo right) {
return Integer.compare(
right.getSafetySourceIssue().getSeverityLevel(),
left.getSafetySourceIssue().getSeverityLevel());
@@ -253,7 +246,7 @@ final class SafetyCenterIssueRepository {
}
/** Dumps state for debugging purposes. */
- void dump(@NonNull PrintWriter fout) {
+ void dump(PrintWriter fout) {
fout.println("ISSUE REPOSITORY");
for (int i = 0; i < mUserIdToIssuesInfo.size(); i++) {
List<SafetySourceIssueInfo> issues = mUserIdToIssuesInfo.valueAt(i);
diff --git a/service/java/com/android/safetycenter/data/SafetySourceDataRepository.java b/service/java/com/android/safetycenter/data/SafetySourceDataRepository.java
index e2b2cc6a7..bf54d9de6 100644
--- a/service/java/com/android/safetycenter/data/SafetySourceDataRepository.java
+++ b/service/java/com/android/safetycenter/data/SafetySourceDataRepository.java
@@ -20,7 +20,6 @@ import static android.os.Build.VERSION_CODES.TIRAMISU;
import static com.android.safetycenter.logging.SafetyCenterStatsdLogger.toSystemEventResult;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.Context;
@@ -75,27 +74,23 @@ final class SafetySourceDataRepository {
private final ArraySet<SafetySourceKey> mSafetySourceErrors = new ArraySet<>();
- @NonNull private final Context mContext;
- @NonNull private final SafetyCenterConfigReader mSafetyCenterConfigReader;
- @NonNull private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
+ private final Context mContext;
+ private final SafetyCenterConfigReader mSafetyCenterConfigReader;
+ private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
- @NonNull
private final SafetyCenterInFlightIssueActionRepository
mSafetyCenterInFlightIssueActionRepository;
- @NonNull
private final SafetyCenterIssueDismissalRepository mSafetyCenterIssueDismissalRepository;
- @NonNull private final PackageManager mPackageManager;
+ private final PackageManager mPackageManager;
SafetySourceDataRepository(
- @NonNull Context context,
- @NonNull SafetyCenterConfigReader safetyCenterConfigReader,
- @NonNull SafetyCenterRefreshTracker safetyCenterRefreshTracker,
- @NonNull
- SafetyCenterInFlightIssueActionRepository
- safetyCenterInFlightIssueActionRepository,
- @NonNull SafetyCenterIssueDismissalRepository safetyCenterIssueDismissalRepository) {
+ Context context,
+ SafetyCenterConfigReader safetyCenterConfigReader,
+ SafetyCenterRefreshTracker safetyCenterRefreshTracker,
+ SafetyCenterInFlightIssueActionRepository safetyCenterInFlightIssueActionRepository,
+ SafetyCenterIssueDismissalRepository safetyCenterIssueDismissalRepository) {
mContext = context;
mSafetyCenterConfigReader = safetyCenterConfigReader;
mSafetyCenterRefreshTracker = safetyCenterRefreshTracker;
@@ -121,9 +116,9 @@ final class SafetySourceDataRepository {
*/
boolean setSafetySourceData(
@Nullable SafetySourceData safetySourceData,
- @NonNull String safetySourceId,
- @NonNull SafetyEvent safetyEvent,
- @NonNull String packageName,
+ String safetySourceId,
+ SafetyEvent safetyEvent,
+ String packageName,
@UserIdInt int userId) {
if (!validateRequest(safetySourceData, safetySourceId, packageName, userId)) {
return false;
@@ -166,7 +161,7 @@ final class SafetySourceDataRepository {
*/
@Nullable
SafetySourceData getSafetySourceData(
- @NonNull String safetySourceId, @NonNull String packageName, @UserIdInt int userId) {
+ String safetySourceId, String packageName, @UserIdInt int userId) {
if (!validateRequest(null, safetySourceId, packageName, userId)) {
return null;
}
@@ -184,7 +179,7 @@ final class SafetySourceDataRepository {
* {@link #setSafetySourceData} with a {@code null} value.
*/
@Nullable
- SafetySourceData getSafetySourceDataInternal(@NonNull SafetySourceKey safetySourceKey) {
+ SafetySourceData getSafetySourceDataInternal(SafetySourceKey safetySourceKey) {
return mSafetySourceDataForKey.get(safetySourceKey);
}
@@ -197,9 +192,9 @@ final class SafetySourceDataRepository {
* safetySourceId}, {@code packageName} and/or {@code userId} are unexpected.
*/
boolean reportSafetySourceError(
- @NonNull SafetySourceErrorDetails safetySourceErrorDetails,
- @NonNull String safetySourceId,
- @NonNull String packageName,
+ SafetySourceErrorDetails safetySourceErrorDetails,
+ String safetySourceId,
+ String packageName,
@UserIdInt int userId) {
if (!validateRequest(null, safetySourceId, packageName, userId)) {
return false;
@@ -224,7 +219,7 @@ final class SafetySourceDataRepository {
* Marks the given {@link SafetySourceKey} as having errored-out and returns whether there was a
* change to the underlying {@link SafetyCenterData}.
*/
- boolean setSafetySourceError(@NonNull SafetySourceKey safetySourceKey) {
+ boolean setSafetySourceError(SafetySourceKey safetySourceKey) {
boolean removingSafetySourceDataChangedSafetyCenterData =
mSafetySourceDataForKey.remove(safetySourceKey) != null;
boolean addingSafetySourceErrorChangedSafetyCenterData =
@@ -237,7 +232,7 @@ final class SafetySourceDataRepository {
* Clears all safety source errors received so far for the given {@link UserProfileGroup}, this
* is useful e.g. when starting a new broadcast.
*/
- void clearSafetySourceErrors(@NonNull UserProfileGroup userProfileGroup) {
+ void clearSafetySourceErrors(UserProfileGroup userProfileGroup) {
// Loop in reverse index order to be able to remove entries while iterating.
for (int i = mSafetySourceErrors.size() - 1; i >= 0; i--) {
SafetySourceKey sourceKey = mSafetySourceErrors.valueAt(i);
@@ -254,7 +249,7 @@ final class SafetySourceDataRepository {
* dismissed.
*/
@Nullable
- SafetySourceIssue getSafetySourceIssue(@NonNull SafetyCenterIssueKey safetyCenterIssueKey) {
+ SafetySourceIssue getSafetySourceIssue(SafetyCenterIssueKey safetyCenterIssueKey) {
SafetySourceKey key =
SafetySourceKey.of(
safetyCenterIssueKey.getSafetySourceId(), safetyCenterIssueKey.getUserId());
@@ -296,7 +291,7 @@ final class SafetySourceDataRepository {
*/
@Nullable
SafetySourceIssue.Action getSafetySourceIssueAction(
- @NonNull SafetyCenterIssueActionId safetyCenterIssueActionId) {
+ SafetyCenterIssueActionId safetyCenterIssueActionId) {
SafetySourceIssue safetySourceIssue =
getSafetySourceIssue(safetyCenterIssueActionId.getSafetyCenterIssueKey());
@@ -336,7 +331,7 @@ final class SafetySourceDataRepository {
}
/** Dumps state for debugging purposes. */
- void dump(@NonNull PrintWriter fout) {
+ void dump(PrintWriter fout) {
int dataCount = mSafetySourceDataForKey.size();
fout.println("SOURCE DATA (" + dataCount + ")");
for (int i = 0; i < dataCount; i++) {
@@ -356,7 +351,7 @@ final class SafetySourceDataRepository {
}
/** Returns {@code true} if the given source has an error. */
- boolean sourceHasError(@NonNull SafetySourceKey safetySourceKey) {
+ boolean sourceHasError(SafetySourceKey safetySourceKey) {
return mSafetySourceErrors.contains(safetySourceKey);
}
@@ -366,8 +361,8 @@ final class SafetySourceDataRepository {
*/
private boolean validateRequest(
@Nullable SafetySourceData safetySourceData,
- @NonNull String safetySourceId,
- @NonNull String packageName,
+ String safetySourceId,
+ String packageName,
@UserIdInt int userId) {
SafetyCenterConfigReader.ExternalSafetySource externalSafetySource =
mSafetyCenterConfigReader.getExternalSafetySource(safetySourceId);
@@ -456,9 +451,7 @@ final class SafetySourceDataRepository {
}
private void validateCallingPackage(
- @NonNull SafetySource safetySource,
- @NonNull String packageName,
- @NonNull String safetySourceId) {
+ SafetySource safetySource, String packageName, String safetySourceId) {
if (!packageName.equals(safetySource.getPackageName())) {
throw new IllegalArgumentException(
"Unexpected package name: "
@@ -493,8 +486,7 @@ final class SafetySourceDataRepository {
}
}
- private boolean checkCerts(
- @NonNull String packageName, @NonNull Set<String> certificateHashes) {
+ private boolean checkCerts(String packageName, Set<String> certificateHashes) {
boolean hasMatchingCert = false;
for (String certHash : certificateHashes) {
try {
@@ -514,8 +506,8 @@ final class SafetySourceDataRepository {
}
private boolean processSafetyEvent(
- @NonNull String safetySourceId,
- @NonNull SafetyEvent safetyEvent,
+ String safetySourceId,
+ SafetyEvent safetyEvent,
@UserIdInt int userId,
boolean isError) {
int type = safetyEvent.getType();
diff --git a/service/java/com/android/safetycenter/data/package-info.java b/service/java/com/android/safetycenter/data/package-info.java
new file mode 100644
index 000000000..597847505
--- /dev/null
+++ b/service/java/com/android/safetycenter/data/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.safetycenter.data;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/service/java/com/android/safetycenter/logging/SafetyCenterPullAtomCallback.java b/service/java/com/android/safetycenter/logging/SafetyCenterPullAtomCallback.java
index bc520fd5c..2aab88ee7 100644
--- a/service/java/com/android/safetycenter/logging/SafetyCenterPullAtomCallback.java
+++ b/service/java/com/android/safetycenter/logging/SafetyCenterPullAtomCallback.java
@@ -22,7 +22,6 @@ import static com.android.permission.PermissionStatsLog.SAFETY_STATE;
import static java.util.Collections.emptyList;
-import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.app.StatsManager;
import android.app.StatsManager.StatsPullAtomCallback;
@@ -68,32 +67,28 @@ public final class SafetyCenterPullAtomCallback implements StatsPullAtomCallback
private static final String TAG = "SafetyCenterPullAtom";
- @NonNull private final Context mContext;
- @NonNull private final ApiLock mApiLock;
+ private final Context mContext;
+ private final ApiLock mApiLock;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterStatsdLogger mSafetyCenterStatsdLogger;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterConfigReader mSafetyCenterConfigReader;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterDataFactory mSafetyCenterDataFactory;
@GuardedBy("mApiLock")
- @NonNull
private final SafetyCenterDataManager mSafetyCenterDataManager;
public SafetyCenterPullAtomCallback(
- @NonNull Context context,
- @NonNull ApiLock apiLock,
- @NonNull SafetyCenterStatsdLogger safetyCenterStatsdLogger,
- @NonNull SafetyCenterConfigReader safetyCenterConfigReader,
- @NonNull SafetyCenterDataFactory safetyCenterDataFactory,
- @NonNull SafetyCenterDataManager safetyCenterDataManager) {
+ Context context,
+ ApiLock apiLock,
+ SafetyCenterStatsdLogger safetyCenterStatsdLogger,
+ SafetyCenterConfigReader safetyCenterConfigReader,
+ SafetyCenterDataFactory safetyCenterDataFactory,
+ SafetyCenterDataManager safetyCenterDataManager) {
mContext = context;
mApiLock = apiLock;
mSafetyCenterStatsdLogger = safetyCenterStatsdLogger;
@@ -103,7 +98,7 @@ public final class SafetyCenterPullAtomCallback implements StatsPullAtomCallback
}
@Override
- public int onPullAtom(int atomTag, @NonNull List<StatsEvent> statsEvents) {
+ public int onPullAtom(int atomTag, List<StatsEvent> statsEvents) {
if (atomTag != SAFETY_STATE) {
Log.w(TAG, "Attempt to pull atom: " + atomTag + ", but only SAFETY_STATE is supported");
return StatsManager.PULL_SKIP;
@@ -136,10 +131,8 @@ public final class SafetyCenterPullAtomCallback implements StatsPullAtomCallback
}
@GuardedBy("mApiLock")
- @NonNull
private StatsEvent createOverallSafetyStateAtomLocked(
- @NonNull UserProfileGroup userProfileGroup,
- @NonNull List<SafetySourcesGroup> loggableGroups) {
+ UserProfileGroup userProfileGroup, List<SafetySourcesGroup> loggableGroups) {
SafetyCenterData loggableData =
mSafetyCenterDataFactory.assembleSafetyCenterData(
"android", userProfileGroup, loggableGroups);
@@ -152,7 +145,7 @@ public final class SafetyCenterPullAtomCallback implements StatsPullAtomCallback
@GuardedBy("mApiLock")
private long getDismissedIssuesCountLocked(
- @NonNull SafetyCenterData loggableData, @NonNull UserProfileGroup userProfileGroup) {
+ SafetyCenterData loggableData, UserProfileGroup userProfileGroup) {
if (SdkLevel.isAtLeastU()) {
return loggableData.getDismissedIssues().size();
}
@@ -162,8 +155,7 @@ public final class SafetyCenterPullAtomCallback implements StatsPullAtomCallback
@GuardedBy("mApiLock")
private void writeSafetySourceStateCollectedAtomsLocked(
- @NonNull UserProfileGroup userProfileGroup,
- @NonNull List<SafetySourcesGroup> loggableGroups) {
+ UserProfileGroup userProfileGroup, List<SafetySourcesGroup> loggableGroups) {
for (int i = 0; i < loggableGroups.size(); i++) {
List<SafetySource> loggableSources = loggableGroups.get(i).getSafetySources();
@@ -197,7 +189,7 @@ public final class SafetyCenterPullAtomCallback implements StatsPullAtomCallback
@GuardedBy("mApiLock")
private void writeSafetySourceStateCollectedAtomLocked(
- @NonNull SafetySource safetySource, @UserIdInt int userId, boolean isUserManaged) {
+ SafetySource safetySource, @UserIdInt int userId, boolean isUserManaged) {
SafetySourceKey key = SafetySourceKey.of(safetySource.getId(), userId);
SafetySourceData safetySourceData =
mSafetyCenterDataManager.getSafetySourceDataInternal(key);
diff --git a/service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java b/service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java
index 4ae33d641..a94b69a57 100644
--- a/service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java
+++ b/service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java
@@ -46,7 +46,6 @@ import static com.android.permission.PermissionStatsLog.SAFETY_STATE__OVERALL_SE
import static com.android.permission.PermissionStatsLog.SAFETY_STATE__OVERALL_SEVERITY_LEVEL__SAFETY_SEVERITY_RECOMMENDATION;
import android.annotation.IntDef;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.Context;
@@ -103,11 +102,11 @@ public final class SafetyCenterStatsdLogger {
@Retention(RetentionPolicy.SOURCE)
public @interface SystemEventResult {}
- @NonNull private final Context mContext;
- @NonNull private final SafetyCenterConfigReader mSafetyCenterConfigReader;
+ private final Context mContext;
+ private final SafetyCenterConfigReader mSafetyCenterConfigReader;
public SafetyCenterStatsdLogger(
- @NonNull Context context, @NonNull SafetyCenterConfigReader safetyCenterConfigReader) {
+ Context context, SafetyCenterConfigReader safetyCenterConfigReader) {
mContext = context;
mSafetyCenterConfigReader = safetyCenterConfigReader;
}
@@ -116,7 +115,6 @@ public final class SafetyCenterStatsdLogger {
* Creates a {@link PermissionStatsLog#SAFETY_STATE} {@link StatsEvent} with the given
* parameters.
*/
- @NonNull
StatsEvent createSafetyStateEvent(
@SafetyCenterStatus.OverallSeverityLevel int severityLevel,
long openIssueCount,
@@ -135,7 +133,7 @@ public final class SafetyCenterStatsdLogger {
* source, or {@code null} if none/unknown severity should be recorded.
*/
void writeSafetySourceStateCollected(
- @NonNull String sourceId,
+ String sourceId,
boolean isManagedProfile,
@Nullable @SafetySourceData.SeverityLevel Integer sourceSeverityLevel,
long openIssuesCount,
@@ -162,9 +160,9 @@ public final class SafetyCenterStatsdLogger {
*/
public void writeSourceRefreshSystemEvent(
@RefreshRequestType int refreshType,
- @NonNull String sourceId,
+ String sourceId,
@UserIdInt int userId,
- @NonNull Duration duration,
+ Duration duration,
@SystemEventResult int result) {
if (!mSafetyCenterConfigReader.allowsStatsdLogging()) {
return;
@@ -184,9 +182,7 @@ public final class SafetyCenterStatsdLogger {
* COMPLETE_RESCAN} or {@code COMPLETE_GET_DATA}.
*/
public void writeWholeRefreshSystemEvent(
- @RefreshRequestType int refreshType,
- @NonNull Duration duration,
- @SystemEventResult int result) {
+ @RefreshRequestType int refreshType, Duration duration, @SystemEventResult int result) {
if (!mSafetyCenterConfigReader.allowsStatsdLogging()) {
return;
}
@@ -205,10 +201,10 @@ public final class SafetyCenterStatsdLogger {
* INLINE_ACTION}.
*/
public void writeInlineActionSystemEvent(
- @NonNull String sourceId,
+ String sourceId,
@UserIdInt int userId,
@Nullable String issueTypeId,
- @NonNull Duration duration,
+ Duration duration,
@SystemEventResult int result) {
if (!mSafetyCenterConfigReader.allowsStatsdLogging()) {
return;
@@ -266,7 +262,7 @@ public final class SafetyCenterStatsdLogger {
* Converts a {@link String} ID (e.g. a Safety Source ID) to a {@code long} suitable for logging
* to statsd.
*/
- private static long idStringToLong(@NonNull String id) {
+ private static long idStringToLong(String id) {
MessageDigest messageDigest;
try {
messageDigest = MessageDigest.getInstance("MD5");
diff --git a/service/java/com/android/safetycenter/logging/package-info.java b/service/java/com/android/safetycenter/logging/package-info.java
new file mode 100644
index 000000000..dcc1828b4
--- /dev/null
+++ b/service/java/com/android/safetycenter/logging/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.safetycenter.logging;
+
+import com.android.safetycenter.annotations.NonNullByDefault;
diff --git a/service/java/com/android/safetycenter/package-info.java b/service/java/com/android/safetycenter/package-info.java
new file mode 100644
index 000000000..0bccf89fa
--- /dev/null
+++ b/service/java/com/android/safetycenter/package-info.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@NonNullByDefault
+package com.android.safetycenter;
+
+import com.android.safetycenter.annotations.NonNullByDefault;