summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java37
-rw-r--r--packages/PrintSpooler/res/values-night/themes.xml35
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java20
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java7
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java36
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java4
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java5
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java6
-rw-r--r--tests/testables/src/android/testing/TestableInstrumentation.java26
-rw-r--r--tests/testables/src/android/testing/TestableLooper.java12
10 files changed, 88 insertions, 100 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 6c8be147528e..af50420208b3 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -106,7 +106,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
-import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
@@ -1062,7 +1061,7 @@ public class BatteryStatsImpl extends BatteryStats {
// methods are protected not private to be VisibleForTesting
public static class TimeBase {
- protected final ArrayList<WeakReference<TimeBaseObs>> mObservers = new ArrayList<>();
+ protected final ArrayList<TimeBaseObs> mObservers = new ArrayList<>();
protected long mUptime;
protected long mRealtime;
@@ -1106,24 +1105,17 @@ public class BatteryStatsImpl extends BatteryStats {
}
public void add(TimeBaseObs observer) {
- mObservers.add(new WeakReference<TimeBaseObs>(observer));
+ mObservers.add(observer);
}
public void remove(TimeBaseObs observer) {
- if (!mObservers.removeIf(ref -> ref.get() == observer)) {
- Slog.wtf(TAG, "Removed unknown observer: " + observer);
- }
+ if (!mObservers.remove(observer)) {
+ Slog.wtf(TAG, "Removed unknown observer: " + observer);
+ }
}
public boolean hasObserver(TimeBaseObs observer) {
- Iterator<WeakReference<TimeBaseObs>> i = mObservers.iterator();
- while (i.hasNext()) {
- TimeBaseObs obs = i.next().get();
- if (obs == observer) {
- return true;
- }
- }
- return false;
+ return mObservers.contains(observer);
}
public void init(long uptime, long realtime) {
@@ -1212,11 +1204,9 @@ public class BatteryStatsImpl extends BatteryStats {
mRealtimeStart = realtime;
long batteryUptime = mUnpluggedUptime = getUptime(uptime);
long batteryRealtime = mUnpluggedRealtime = getRealtime(realtime);
- for (WeakReference<TimeBaseObs> ref : mObservers) {
- TimeBaseObs obs = ref.get();
- if (obs != null) {
- obs.onTimeStarted(realtime, batteryUptime, batteryRealtime);
- }
+
+ for (int i = mObservers.size() - 1; i >= 0; i--) {
+ mObservers.get(i).onTimeStarted(realtime, batteryUptime, batteryRealtime);
}
} else {
mPastUptime += uptime - mUptimeStart;
@@ -1224,14 +1214,11 @@ public class BatteryStatsImpl extends BatteryStats {
long batteryUptime = getUptime(uptime);
long batteryRealtime = getRealtime(realtime);
- for (WeakReference<TimeBaseObs> ref : mObservers) {
- TimeBaseObs obs = ref.get();
- if (obs != null) {
- obs.onTimeStopped(realtime, batteryUptime, batteryRealtime);
- }
+
+ for (int i = mObservers.size() - 1; i >= 0; i--) {
+ mObservers.get(i).onTimeStopped(realtime, batteryUptime, batteryRealtime);
}
}
- mObservers.removeIf(ref -> ref.get() == null);
return true;
}
return false;
diff --git a/packages/PrintSpooler/res/values-night/themes.xml b/packages/PrintSpooler/res/values-night/themes.xml
new file mode 100644
index 000000000000..4428dbbbaaae
--- /dev/null
+++ b/packages/PrintSpooler/res/values-night/themes.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2018 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.
+ -->
+
+<resources>
+ <style name="Theme.AddPrinterActivity" parent="@android:style/Theme.DeviceDefault.Dialog">
+ <item name="android:listSeparatorTextViewStyle">@style/ListSeparator</item>
+ <item name="android:textAppearanceListItemSecondary">@style/ListItemSecondary</item>
+ </style>
+
+ <style name="Theme.SelectPrinterActivity"
+ parent="android:style/Theme.DeviceDefault">
+ <item name="android:textAppearanceListItemSecondary">@style/ListItemSecondary</item>
+ </style>
+
+ <style name="Theme.PrintActivity" parent="@android:style/Theme.DeviceDefault">
+ <item name="android:windowIsTranslucent">true</item>
+ <item name="android:windowActionBar">false</item>
+ <item name="android:windowNoTitle">true</item>
+ </style>
+
+</resources>
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java
index 2bec1d740af2..95edc5e1e31f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java
@@ -17,12 +17,13 @@ package com.android.settingslib.drawer;
import android.content.ComponentName;
import android.content.Context;
-import androidx.annotation.VisibleForTesting;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
+import androidx.annotation.VisibleForTesting;
+
import com.android.settingslib.applications.InterestingConfigChanges;
import java.util.ArrayList;
@@ -32,10 +33,10 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import static java.lang.String.CASE_INSENSITIVE_ORDER;
-
public class CategoryManager {
+ public static final String SETTING_PKG = "com.android.settings";
+
private static final String TAG = "CategoryManager";
private static CategoryManager sInstance;
@@ -70,22 +71,13 @@ public class CategoryManager {
}
public synchronized DashboardCategory getTilesByCategory(Context context, String categoryKey) {
- return getTilesByCategory(context, categoryKey, TileUtils.SETTING_PKG);
- }
-
- public synchronized DashboardCategory getTilesByCategory(Context context, String categoryKey,
- String settingPkg) {
- tryInitCategories(context, settingPkg);
+ tryInitCategories(context, SETTING_PKG);
return mCategoryByKeyMap.get(categoryKey);
}
public synchronized List<DashboardCategory> getCategories(Context context) {
- return getCategories(context, TileUtils.SETTING_PKG);
- }
-
- public synchronized List<DashboardCategory> getCategories(Context context, String settingPkg) {
- tryInitCategories(context, settingPkg);
+ tryInitCategories(context, SETTING_PKG);
return mCategories;
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java
index b55d2ef59445..0c802af71a90 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java
@@ -95,11 +95,6 @@ public class Tile implements Parcelable {
*/
public String key;
- /**
- * Optional remote view which will be displayed instead of the regular title-summary item.
- */
- public RemoteViews remoteViews;
-
public Tile() {
// Empty
}
@@ -135,7 +130,6 @@ public class Tile implements Parcelable {
dest.writeInt(priority);
dest.writeBundle(metaData);
dest.writeString(key);
- dest.writeParcelable(remoteViews, flags);
dest.writeBoolean(isIconTintable);
}
@@ -157,7 +151,6 @@ public class Tile implements Parcelable {
priority = in.readInt();
metaData = in.readBundle();
key = in.readString();
- remoteViews = in.readParcelable(RemoteViews.class.getClassLoader());
isIconTintable = in.readBoolean();
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
index 76f24bca8d83..f54ba8c947b6 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
@@ -166,8 +166,6 @@ public class TileUtils {
public static final String META_DATA_PREFERENCE_SUMMARY_URI =
"com.android.settings.summary_uri";
- public static final String SETTING_PKG = "com.android.settings";
-
/**
* Value for {@link #META_DATA_KEY_PROFILE}. When the device has a managed profile,
* the app will always be run in the primary profile.
@@ -280,15 +278,6 @@ public class TileUtils {
Context context, UserHandle user, Intent intent,
Map<Pair<String, String>, Tile> addedCache, String defaultCategory, List<Tile> outTiles,
boolean usePriority, boolean checkCategory, boolean forceTintExternalIcon) {
- getTilesForIntent(context, user, intent, addedCache, defaultCategory, outTiles,
- usePriority, checkCategory, forceTintExternalIcon, false /* shouldUpdateTiles */);
- }
-
- public static void getTilesForIntent(
- Context context, UserHandle user, Intent intent,
- Map<Pair<String, String>, Tile> addedCache, String defaultCategory, List<Tile> outTiles,
- boolean usePriority, boolean checkCategory, boolean forceTintExternalIcon,
- boolean shouldUpdateTiles) {
PackageManager pm = context.getPackageManager();
List<ResolveInfo> results = pm.queryIntentActivitiesAsUser(intent,
PackageManager.GET_META_DATA, user.getIdentifier());
@@ -313,8 +302,7 @@ public class TileUtils {
categoryKey = metaData.getString(EXTRA_CATEGORY_KEY);
}
- Pair<String, String> key = new Pair<String, String>(activityInfo.packageName,
- activityInfo.name);
+ Pair<String, String> key = new Pair<>(activityInfo.packageName, activityInfo.name);
Tile tile = addedCache.get(key);
if (tile == null) {
tile = new Tile();
@@ -327,8 +315,6 @@ public class TileUtils {
pm, providerMap, forceTintExternalIcon);
if (DEBUG) Log.d(LOG_TAG, "Adding tile " + tile.title);
addedCache.put(key, tile);
- } else if (shouldUpdateTiles) {
- updateSummaryAndTitle(context, providerMap, tile);
}
if (!tile.userHandle.contains(user)) {
@@ -435,26 +421,6 @@ public class TileUtils {
return false;
}
- private static void updateSummaryAndTitle(
- Context context, Map<String, IContentProvider> providerMap, Tile tile) {
- if (tile == null || tile.metaData == null
- || !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
- return;
- }
-
- String uriString = tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI);
- Bundle bundle = getBundleFromUri(context, uriString, providerMap);
- String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY);
- String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE);
- if (overrideSummary != null) {
- tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary);
- }
-
- if (overrideTitle != null) {
- tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle);
- }
- }
-
/**
* Gets the icon package name and resource id from content provider.
* @param context context
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java
index 605c861fa07f..c495511d4eb0 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java
@@ -20,13 +20,15 @@ import static com.google.common.truth.Truth.assertThat;
import android.util.ArraySet;
+import com.android.settingslib.SettingsLibRobolectricTestRunner;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import java.util.Set;
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsLibRobolectricTestRunner.class)
public class CategoryKeyTest {
@Test
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java
index 996a1223589c..5d352f08bedf 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java
@@ -7,12 +7,15 @@ import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL;
import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY;
import android.os.Bundle;
+
+import com.android.settingslib.SettingsLibRobolectricTestRunner;
+
import org.junit.Before;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.junit.Test;
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsLibRobolectricTestRunner.class)
public class TileTest {
private Tile mTile;
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
index 9df43185fd1f..31621afc87c3 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
@@ -178,7 +178,7 @@ public class TileUtilsTest {
.thenReturn(info);
List<DashboardCategory> categoryList = TileUtils.getCategories(
- mContext, cache, testAction, TileUtils.SETTING_PKG);
+ mContext, cache, testAction, CategoryManager.SETTING_PKG);
assertThat(categoryList.get(0).getTile(0).category).isEqualTo(testCategory);
}
@@ -193,12 +193,12 @@ public class TileUtilsTest {
userHandleList.add(new UserHandle(ActivityManager.getCurrentUser()));
when(mUserManager.getUserProfiles()).thenReturn(userHandleList);
- TileUtils.getCategories(mContext, cache, null /* action */, TileUtils.SETTING_PKG);
+ TileUtils.getCategories(mContext, cache, null /* action */, CategoryManager.SETTING_PKG);
verify(mPackageManager, atLeastOnce()).queryIntentActivitiesAsUser(
intentCaptor.capture(), anyInt(), anyInt());
assertThat(intentCaptor.getAllValues().get(0).getPackage())
- .isEqualTo(TileUtils.SETTING_PKG);
+ .isEqualTo(CategoryManager.SETTING_PKG);
}
@Test
diff --git a/tests/testables/src/android/testing/TestableInstrumentation.java b/tests/testables/src/android/testing/TestableInstrumentation.java
index 3207b486b329..c35dc68e071f 100644
--- a/tests/testables/src/android/testing/TestableInstrumentation.java
+++ b/tests/testables/src/android/testing/TestableInstrumentation.java
@@ -38,22 +38,26 @@ public class TestableInstrumentation extends AndroidJUnitRunner {
@Override
public void onCreate(Bundle arguments) {
- sManager = new MainLooperManager();
- Log.setWtfHandler((tag, what, system) -> {
- if (system) {
- Log.e(TAG, "WTF!!", what);
- } else {
- // These normally kill the app, but we don't want that in a test, instead we want
- // it to throw.
- throw new RuntimeException(what);
- }
- });
+ if (TestableLooper.HOLD_MAIN_THREAD) {
+ sManager = new MainLooperManager();
+ Log.setWtfHandler((tag, what, system) -> {
+ if (system) {
+ Log.e(TAG, "WTF!!", what);
+ } else {
+ // These normally kill the app, but we don't want that in a test, instead we want
+ // it to throw.
+ throw new RuntimeException(what);
+ }
+ });
+ }
super.onCreate(arguments);
}
@Override
public void finish(int resultCode, Bundle results) {
- sManager.destroy();
+ if (TestableLooper.HOLD_MAIN_THREAD) {
+ sManager.destroy();
+ }
super.finish(resultCode, results);
}
diff --git a/tests/testables/src/android/testing/TestableLooper.java b/tests/testables/src/android/testing/TestableLooper.java
index f8d223ab91b6..8b4cba12b0e6 100644
--- a/tests/testables/src/android/testing/TestableLooper.java
+++ b/tests/testables/src/android/testing/TestableLooper.java
@@ -39,6 +39,12 @@ import java.util.Map;
*/
public class TestableLooper {
+ /**
+ * Whether to hold onto the main thread through all tests in an attempt to
+ * catch crashes.
+ */
+ public static final boolean HOLD_MAIN_THREAD = false;
+
private Looper mLooper;
private MessageQueue mQueue;
private MessageHandler mMessageHandler;
@@ -77,7 +83,7 @@ public class TestableLooper {
*/
public void destroy() {
mQueueWrapper.release();
- if (mLooper == Looper.getMainLooper()) {
+ if (HOLD_MAIN_THREAD && mLooper == Looper.getMainLooper()) {
TestableInstrumentation.releaseMain();
}
}
@@ -199,7 +205,7 @@ public class TestableLooper {
}
private static TestLooperManager acquireLooperManager(Looper l) {
- if (l == Looper.getMainLooper()) {
+ if (HOLD_MAIN_THREAD && l == Looper.getMainLooper()) {
TestableInstrumentation.acquireMain();
}
return InstrumentationRegistry.getInstrumentation().acquireLooperManager(l);
@@ -291,7 +297,7 @@ public class TestableLooper {
if (set) {
mTestableLooper.mQueueWrapper.release();
mTestableLooper.mQueueWrapper = null;
- if (mLooper == Looper.getMainLooper()) {
+ if (HOLD_MAIN_THREAD && mLooper == Looper.getMainLooper()) {
TestableInstrumentation.releaseMain();
}
}