Merge "Add Settings Slice Whitelist key" into pi-dev
diff --git a/api/system-current.txt b/api/system-current.txt
index 20f0ba8..3b4a0be 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -384,16 +384,16 @@
public final class StatsManager {
method public void addConfig(long, byte[]) throws android.app.StatsManager.StatsUnavailableException;
- method public boolean addConfiguration(long, byte[]);
- method public byte[] getData(long);
- method public byte[] getMetadata();
+ method public deprecated boolean addConfiguration(long, byte[]);
+ method public deprecated byte[] getData(long);
+ method public deprecated byte[] getMetadata();
method public byte[] getReports(long) throws android.app.StatsManager.StatsUnavailableException;
method public byte[] getStatsMetadata() throws android.app.StatsManager.StatsUnavailableException;
method public void removeConfig(long) throws android.app.StatsManager.StatsUnavailableException;
- method public boolean removeConfiguration(long);
+ method public deprecated boolean removeConfiguration(long);
method public void setBroadcastSubscriber(android.app.PendingIntent, long, long) throws android.app.StatsManager.StatsUnavailableException;
- method public boolean setBroadcastSubscriber(long, long, android.app.PendingIntent);
- method public boolean setDataFetchOperation(long, android.app.PendingIntent);
+ method public deprecated boolean setBroadcastSubscriber(long, long, android.app.PendingIntent);
+ method public deprecated boolean setDataFetchOperation(long, android.app.PendingIntent);
method public void setFetchReportsOperation(android.app.PendingIntent, long) throws android.app.StatsManager.StatsUnavailableException;
field public static final java.lang.String ACTION_STATSD_STARTED = "android.app.action.STATSD_STARTED";
field public static final java.lang.String EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES = "android.app.extra.STATS_BROADCAST_SUBSCRIBER_COOKIES";
diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt
index b957e4d..d278b55 100644
--- a/config/hiddenapi-light-greylist.txt
+++ b/config/hiddenapi-light-greylist.txt
@@ -352,13 +352,13 @@
Landroid/app/ApplicationPackageManager;->mPM:Landroid/content/pm/IPackageManager;
Landroid/app/ApplicationPackageManager;->shouldShowRequestPermissionRationale(Ljava/lang/String;)Z
Landroid/app/AppOpsManager$OpEntry;->getDuration()I
-Landroid/app/AppOpsManager$OpEntry;->getMode()I
-Landroid/app/AppOpsManager$OpEntry;->getLastAccessTime()J
Landroid/app/AppOpsManager$OpEntry;->getLastAccessBackgroundTime()J
Landroid/app/AppOpsManager$OpEntry;->getLastAccessForegroundTime()J
-Landroid/app/AppOpsManager$OpEntry;->getLastRejectTime()J
+Landroid/app/AppOpsManager$OpEntry;->getLastAccessTime()J
Landroid/app/AppOpsManager$OpEntry;->getLastRejectBackgroundTime()J
Landroid/app/AppOpsManager$OpEntry;->getLastRejectForegroundTime()J
+Landroid/app/AppOpsManager$OpEntry;->getLastRejectTime()J
+Landroid/app/AppOpsManager$OpEntry;->getMode()I
Landroid/app/AppOpsManager$OpEntry;->getRejectTime()J
Landroid/app/AppOpsManager$PackageOps;-><init>(Ljava/lang/String;ILjava/util/List;)V
Landroid/app/AppOpsManager$PackageOps;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -865,7 +865,9 @@
Landroid/app/PictureInPictureArgs;-><init>()V
Landroid/app/PictureInPictureArgs;->setActions(Ljava/util/List;)V
Landroid/app/PictureInPictureArgs;->setAspectRatio(F)V
+Landroid/app/PictureInPictureParams;->getActions()Ljava/util/List;
Landroid/app/PictureInPictureParams;->getAspectRatio()F
+Landroid/app/PictureInPictureParams;->getSourceRectHint()Landroid/graphics/Rect;
Landroid/app/Presentation;->createPresentationContext(Landroid/content/Context;Landroid/view/Display;I)Landroid/content/Context;
Landroid/app/ProgressDialog;->mMessageView:Landroid/widget/TextView;
Landroid/app/ProgressDialog;->mProgress:Landroid/widget/ProgressBar;
@@ -1039,6 +1041,7 @@
Landroid/bluetooth/BluetoothA2dp;->setOptionalCodecsEnabled(Landroid/bluetooth/BluetoothDevice;I)V
Landroid/bluetooth/BluetoothA2dp;->stateToString(I)Ljava/lang/String;
Landroid/bluetooth/BluetoothA2dp;->supportsOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)I
+Landroid/bluetooth/BluetoothA2dpSink;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/BluetoothAdapter;->disable(Z)Z
Landroid/bluetooth/BluetoothAdapter;->factoryReset()Z
Landroid/bluetooth/BluetoothAdapter;->getBluetoothManager()Landroid/bluetooth/IBluetoothManager;
@@ -1114,6 +1117,7 @@
Landroid/bluetooth/BluetoothDevice;->EXTRA_SDP_SEARCH_STATUS:Ljava/lang/String;
Landroid/bluetooth/BluetoothDevice;->getAlias()Ljava/lang/String;
Landroid/bluetooth/BluetoothDevice;->getAliasName()Ljava/lang/String;
+Landroid/bluetooth/BluetoothDevice;->getBatteryLevel()I
Landroid/bluetooth/BluetoothDevice;->getMessageAccessPermission()I
Landroid/bluetooth/BluetoothDevice;->getPhonebookAccessPermission()I
Landroid/bluetooth/BluetoothDevice;->getService()Landroid/bluetooth/IBluetooth;
@@ -1174,6 +1178,7 @@
Landroid/bluetooth/BluetoothHearingAid;->ACTION_ACTIVE_DEVICE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothHearingAid;->getActiveDevices()Ljava/util/List;
Landroid/bluetooth/BluetoothHearingAid;->setActiveDevice(Landroid/bluetooth/BluetoothDevice;)Z
+Landroid/bluetooth/BluetoothMap;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/BluetoothMapClient;->sendMessage(Landroid/bluetooth/BluetoothDevice;[Landroid/net/Uri;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)Z
Landroid/bluetooth/BluetoothPan;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothPan;->close()V
@@ -1185,11 +1190,13 @@
Landroid/bluetooth/BluetoothPan;->isValidDevice(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/BluetoothPan;->log(Ljava/lang/String;)V
Landroid/bluetooth/BluetoothPan;->setBluetoothTethering(Z)V
+Landroid/bluetooth/BluetoothPbap;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/BluetoothProfile;->A2DP_SINK:I
Landroid/bluetooth/BluetoothProfile;->AVRCP_CONTROLLER:I
Landroid/bluetooth/BluetoothProfile;->PAN:I
Landroid/bluetooth/BluetoothProfile;->PRIORITY_AUTO_CONNECT:I
Landroid/bluetooth/BluetoothProfile;->PRIORITY_UNDEFINED:I
+Landroid/bluetooth/BluetoothSap;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/BluetoothServerSocket;->mSocket:Landroid/bluetooth/BluetoothSocket;
Landroid/bluetooth/BluetoothSocket;->EADDRINUSE:I
Landroid/bluetooth/BluetoothSocket;->flush()V
@@ -1321,6 +1328,7 @@
Landroid/content/Context;->checkPermission(Ljava/lang/String;IILandroid/os/IBinder;)I
Landroid/content/Context;->COUNTRY_DETECTOR:Ljava/lang/String;
Landroid/content/Context;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context;
+Landroid/content/Context;->ETHERNET_SERVICE:Ljava/lang/String;
Landroid/content/Context;->getBasePackageName()Ljava/lang/String;
Landroid/content/Context;->getDisplay()Landroid/view/Display;
Landroid/content/Context;->getSharedPrefsFile(Ljava/lang/String;)Ljava/io/File;
@@ -1399,6 +1407,7 @@
Landroid/content/ISyncAdapter$Stub;-><init>()V
Landroid/content/ISyncAdapter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncAdapter;
Landroid/content/ISyncAdapter;->cancelSync(Landroid/content/ISyncContext;)V
+Landroid/content/ISyncAdapter;->onUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V
Landroid/content/ISyncAdapter;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
Landroid/content/ISyncContext$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/ISyncContext$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -1444,6 +1453,8 @@
Landroid/content/pm/ApplicationInfo;->secondaryCpuAbi:Ljava/lang/String;
Landroid/content/pm/ApplicationInfo;->secondaryNativeLibraryDir:Ljava/lang/String;
Landroid/content/pm/ApplicationInfo;->versionCode:I
+Landroid/content/pm/BaseParceledListSlice;->getList()Ljava/util/List;
+Landroid/content/pm/BaseParceledListSlice;->writeParcelableCreator(Ljava/lang/Object;Landroid/os/Parcel;)V
Landroid/content/pm/ComponentInfo;->getComponentName()Landroid/content/ComponentName;
Landroid/content/pm/IPackageDataObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IPackageDataObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -1663,6 +1674,7 @@
Landroid/content/pm/PackageParser$Package;->mSharedUserId:Ljava/lang/String;
Landroid/content/pm/PackageParser$Package;->mSharedUserLabel:I
Landroid/content/pm/PackageParser$Package;->mSigningDetails:Landroid/content/pm/PackageParser$SigningDetails;
+Landroid/content/pm/PackageParser$Package;->mUpgradeKeySets:Landroid/util/ArraySet;
Landroid/content/pm/PackageParser$Package;->mVersionCode:I
Landroid/content/pm/PackageParser$Package;->mVersionName:Ljava/lang/String;
Landroid/content/pm/PackageParser$Package;->packageName:Ljava/lang/String;
@@ -1716,6 +1728,8 @@
Landroid/content/pm/PackageStats;->userHandle:I
Landroid/content/pm/PackageUserState;-><init>()V
Landroid/content/pm/ParceledListSlice;-><init>(Ljava/util/List;)V
+Landroid/content/pm/ParceledListSlice;->CREATOR:Landroid/os/Parcelable$ClassLoaderCreator;
+Landroid/content/pm/ParceledListSlice;->writeParcelableCreator(Landroid/os/Parcelable;Landroid/os/Parcel;)V
Landroid/content/pm/PermissionInfo;->protectionToString(I)Ljava/lang/String;
Landroid/content/pm/RegisteredServicesCache$ServiceInfo;->componentName:Landroid/content/ComponentName;
Landroid/content/pm/RegisteredServicesCache$ServiceInfo;->type:Ljava/lang/Object;
@@ -2098,6 +2112,8 @@
Landroid/graphics/Canvas;->mBitmap:Landroid/graphics/Bitmap;
Landroid/graphics/Canvas;->release()V
Landroid/graphics/Canvas;->setScreenDensity(I)V
+Landroid/graphics/CanvasProperty;->createFloat(F)Landroid/graphics/CanvasProperty;
+Landroid/graphics/CanvasProperty;->createPaint(Landroid/graphics/Paint;)Landroid/graphics/CanvasProperty;
Landroid/graphics/ColorMatrixColorFilter;->mMatrix:Landroid/graphics/ColorMatrix;
Landroid/graphics/ColorMatrixColorFilter;->setColorMatrix(Landroid/graphics/ColorMatrix;)V
Landroid/graphics/drawable/AnimatedImageDrawable;->onAnimationEnd()V
@@ -2207,6 +2223,7 @@
Landroid/graphics/drawable/VectorDrawable;->mTintFilter:Landroid/graphics/PorterDuffColorFilter;
Landroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V
Landroid/graphics/FontFamily;-><init>()V
+Landroid/graphics/FontFamily;-><init>([Ljava/lang/String;I)V
Landroid/graphics/FontFamily;->abortCreation()V
Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z
Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z
@@ -2226,6 +2243,8 @@
Landroid/graphics/Insets;->of(Landroid/graphics/Rect;)Landroid/graphics/Insets;
Landroid/graphics/Insets;->right:I
Landroid/graphics/Insets;->top:I
+Landroid/graphics/LightingColorFilter;->setColorAdd(I)V
+Landroid/graphics/LightingColorFilter;->setColorMultiply(I)V
Landroid/graphics/LinearGradient;->mColor0:I
Landroid/graphics/LinearGradient;->mColor1:I
Landroid/graphics/LinearGradient;->mColors:[I
@@ -2291,6 +2310,7 @@
Landroid/graphics/TableMaskFilter;->CreateClipTable(II)Landroid/graphics/TableMaskFilter;
Landroid/graphics/TemporaryBuffer;->obtain(I)[C
Landroid/graphics/TemporaryBuffer;->recycle([C)V
+Landroid/graphics/Typeface;-><init>(J)V
Landroid/graphics/Typeface;->createFromFamilies([Landroid/graphics/FontFamily;)Landroid/graphics/Typeface;
Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;II)Landroid/graphics/Typeface;
Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface;
@@ -2300,6 +2320,7 @@
Landroid/graphics/Typeface;->native_instance:J
Landroid/graphics/Typeface;->sDefaults:[Landroid/graphics/Typeface;
Landroid/graphics/Typeface;->setDefault(Landroid/graphics/Typeface;)V
+Landroid/graphics/Typeface;->sSystemFallbackMap:Ljava/util/Map;
Landroid/graphics/Typeface;->sSystemFontMap:Ljava/util/Map;
Landroid/graphics/Xfermode;->porterDuffMode:I
Landroid/hardware/biometrics/BiometricConstants;->BIOMETRIC_ACQUIRED_GOOD:I
@@ -2423,6 +2444,7 @@
Landroid/hardware/Camera;->openLegacy(II)Landroid/hardware/Camera;
Landroid/hardware/Camera;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
Landroid/hardware/Camera;->previewEnabled()Z
+Landroid/hardware/Camera;->setPreviewSurface(Landroid/view/Surface;)V
Landroid/hardware/display/DisplayManager;->ACTION_WIFI_DISPLAY_STATUS_CHANGED:Ljava/lang/String;
Landroid/hardware/display/DisplayManager;->connectWifiDisplay(Ljava/lang/String;)V
Landroid/hardware/display/DisplayManager;->disconnectWifiDisplay()V
@@ -3251,6 +3273,14 @@
Landroid/net/ConnectivityManager;->TYPE_PROXY:I
Landroid/net/ConnectivityManager;->TYPE_WIFI_P2P:I
Landroid/net/ConnectivityManager;->unregisterNetworkFactory(Landroid/os/Messenger;)V
+Landroid/net/EthernetManager$Listener;->onAvailabilityChanged(Ljava/lang/String;Z)V
+Landroid/net/EthernetManager;->addListener(Landroid/net/EthernetManager$Listener;)V
+Landroid/net/EthernetManager;->getAvailableInterfaces()[Ljava/lang/String;
+Landroid/net/EthernetManager;->getConfiguration(Ljava/lang/String;)Landroid/net/IpConfiguration;
+Landroid/net/EthernetManager;->isAvailable()Z
+Landroid/net/EthernetManager;->isAvailable(Ljava/lang/String;)Z
+Landroid/net/EthernetManager;->removeListener(Landroid/net/EthernetManager$Listener;)V
+Landroid/net/EthernetManager;->setConfiguration(Ljava/lang/String;Landroid/net/IpConfiguration;)V
Landroid/net/http/SslCertificate;->getDigest(Ljava/security/cert/X509Certificate;Ljava/lang/String;)Ljava/lang/String;
Landroid/net/http/SslCertificate;->getSerialNumber(Ljava/security/cert/X509Certificate;)Ljava/lang/String;
Landroid/net/http/SslCertificate;->inflateCertificateView(Landroid/content/Context;)Landroid/view/View;
@@ -3865,6 +3895,7 @@
Landroid/os/Environment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File;
Landroid/os/Environment;->buildExternalStorageAppMediaDirs(Ljava/lang/String;)[Ljava/io/File;
Landroid/os/Environment;->buildExternalStorageAppObbDirs(Ljava/lang/String;)[Ljava/io/File;
+Landroid/os/Environment;->getDataSystemDirectory()Ljava/io/File;
Landroid/os/Environment;->getLegacyExternalStorageObbDirectory()Ljava/io/File;
Landroid/os/Environment;->getOemDirectory()Ljava/io/File;
Landroid/os/Environment;->getStorageDirectory()Ljava/io/File;
@@ -4139,6 +4170,7 @@
Landroid/os/storage/StorageManager;->getVolumes()Ljava/util/List;
Landroid/os/storage/StorageManager;->getVolumeState(Ljava/lang/String;)Ljava/lang/String;
Landroid/os/storage/StorageManager;->isFileEncryptedNativeOnly()Z
+Landroid/os/storage/StorageManager;->isUsbMassStorageConnected()Z
Landroid/os/storage/StorageManager;->isUsbMassStorageEnabled()Z
Landroid/os/storage/StorageManager;->partitionPublic(Ljava/lang/String;)V
Landroid/os/storage/StorageManager;->unmount(Ljava/lang/String;)V
@@ -4149,7 +4181,10 @@
Landroid/os/storage/StorageVolume;->getPath()Ljava/lang/String;
Landroid/os/storage/StorageVolume;->getPathFile()Ljava/io/File;
Landroid/os/storage/StorageVolume;->getUserLabel()Ljava/lang/String;
+Landroid/os/storage/StorageVolume;->mDescription:Ljava/lang/String;
+Landroid/os/storage/StorageVolume;->mId:Ljava/lang/String;
Landroid/os/storage/StorageVolume;->mPath:Ljava/io/File;
+Landroid/os/storage/StorageVolume;->mPrimary:Z
Landroid/os/storage/StorageVolume;->mRemovable:Z
Landroid/os/storage/VolumeInfo;-><init>(Landroid/os/Parcel;)V
Landroid/os/storage/VolumeInfo;->buildBrowseIntent()Landroid/content/Intent;
@@ -4197,6 +4232,7 @@
Landroid/os/StrictMode;->onBinderStrictModePolicyChange(I)V
Landroid/os/StrictMode;->onWebViewMethodCalledOnWrongThread(Ljava/lang/Throwable;)V
Landroid/os/StrictMode;->sLastVmViolationTime:Ljava/util/HashMap;
+Landroid/os/StrictMode;->sWindowManager:Landroid/util/Singleton;
Landroid/os/StrictMode;->violationsBeingTimed:Ljava/lang/ThreadLocal;
Landroid/os/SystemClock;->currentThreadTimeMicro()J
Landroid/os/SystemClock;->currentTimeMicro()J
@@ -4477,6 +4513,7 @@
Landroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z
Landroid/provider/Settings$Global;->REQUIRE_PASSWORD_TO_DECRYPT:Ljava/lang/String;
Landroid/provider/Settings$Global;->sNameValueCache:Landroid/provider/Settings$NameValueCache;
+Landroid/provider/Settings$Global;->sProviderHolder:Landroid/provider/Settings$ContentProviderHolder;
Landroid/provider/Settings$Global;->WEBVIEW_PROVIDER:Ljava/lang/String;
Landroid/provider/Settings$Global;->WIFI_SAVED_STATE:Ljava/lang/String;
Landroid/provider/Settings$Global;->WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED:Ljava/lang/String;
@@ -4489,6 +4526,7 @@
Landroid/provider/Settings$NameValueCache;->mProviderHolder:Landroid/provider/Settings$ContentProviderHolder;
Landroid/provider/Settings$Secure;->ACCESSIBILITY_AUTOCLICK_ENABLED:Ljava/lang/String;
Landroid/provider/Settings$Secure;->ACCESSIBILITY_CAPTIONING_TYPEFACE:Ljava/lang/String;
+Landroid/provider/Settings$Secure;->ACCESSIBILITY_DISPLAY_DALTONIZER:Ljava/lang/String;
Landroid/provider/Settings$Secure;->ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED:Ljava/lang/String;
Landroid/provider/Settings$Secure;->ACCESSIBILITY_LARGE_POINTER_ICON:Ljava/lang/String;
Landroid/provider/Settings$Secure;->ANR_SHOW_BACKGROUND:Ljava/lang/String;
@@ -4536,6 +4574,7 @@
Landroid/provider/Settings$System;->LOCKSCREEN_SOUNDS_ENABLED:Ljava/lang/String;
Landroid/provider/Settings$System;->LOCK_SOUND:Ljava/lang/String;
Landroid/provider/Settings$System;->MASTER_MONO:Ljava/lang/String;
+Landroid/provider/Settings$System;->NOTIFICATION_LIGHT_PULSE:Ljava/lang/String;
Landroid/provider/Settings$System;->POINTER_LOCATION:Ljava/lang/String;
Landroid/provider/Settings$System;->POINTER_SPEED:Ljava/lang/String;
Landroid/provider/Settings$System;->PRIVATE_SETTINGS:Ljava/util/Set;
@@ -4546,6 +4585,7 @@
Landroid/provider/Settings$System;->SETTINGS_TO_BACKUP:[Ljava/lang/String;
Landroid/provider/Settings$System;->SHOW_TOUCHES:Ljava/lang/String;
Landroid/provider/Settings$System;->sNameValueCache:Landroid/provider/Settings$NameValueCache;
+Landroid/provider/Settings$System;->sProviderHolder:Landroid/provider/Settings$ContentProviderHolder;
Landroid/provider/Settings$System;->TTY_MODE:Ljava/lang/String;
Landroid/provider/Settings$System;->UNLOCK_SOUND:Ljava/lang/String;
Landroid/provider/Settings$System;->VIBRATE_IN_SILENT:Ljava/lang/String;
@@ -4661,6 +4701,7 @@
Landroid/R$styleable;->ProgressBar_progressDrawable:I
Landroid/R$styleable;->RingtonePreference:[I
Landroid/R$styleable;->ScrollView:[I
+Landroid/R$styleable;->SearchView:[I
Landroid/R$styleable;->SeekBar:[I
Landroid/R$styleable;->SeekBar_thumb:I
Landroid/R$styleable;->SeekBar_thumbOffset:I
@@ -5211,6 +5252,7 @@
Landroid/telephony/DisconnectCause;->toString(I)Ljava/lang/String;
Landroid/telephony/euicc/EuiccInfo;->osVersion:Ljava/lang/String;
Landroid/telephony/gsm/GsmCellLocation;->setPsc(I)V
+Landroid/telephony/ims/ImsSsInfo;-><init>()V
Landroid/telephony/NeighboringCellInfo;->mCid:I
Landroid/telephony/NeighboringCellInfo;->mLac:I
Landroid/telephony/NeighboringCellInfo;->mNetworkType:I
@@ -5392,6 +5434,7 @@
Landroid/telephony/SubscriptionManager;->setDataRoaming(II)I
Landroid/telephony/SubscriptionManager;->setDefaultDataSubId(I)V
Landroid/telephony/SubscriptionManager;->setDefaultSmsSubId(I)V
+Landroid/telephony/SubscriptionManager;->setDisplayNumber(Ljava/lang/String;I)I
Landroid/telephony/TelephonyManager$MultiSimVariants;->TSTS:Landroid/telephony/TelephonyManager$MultiSimVariants;
Landroid/telephony/TelephonyManager$MultiSimVariants;->UNKNOWN:Landroid/telephony/TelephonyManager$MultiSimVariants;
Landroid/telephony/TelephonyManager$MultiSimVariants;->values()[Landroid/telephony/TelephonyManager$MultiSimVariants;
@@ -5689,6 +5732,7 @@
Landroid/util/MathUtils;->constrain(FFF)F
Landroid/util/MathUtils;->constrain(III)I
Landroid/util/MathUtils;->lerp(FFF)F
+Landroid/util/MathUtils;->max(II)F
Landroid/util/NtpTrustedTime;->forceRefresh()Z
Landroid/util/NtpTrustedTime;->getCachedNtpTime()J
Landroid/util/NtpTrustedTime;->getCachedNtpTimeReference()J
@@ -5738,6 +5782,7 @@
Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache()V
Landroid/view/accessibility/AccessibilityInteractionClient;->getInstance()Landroid/view/accessibility/AccessibilityInteractionClient;
Landroid/view/accessibility/AccessibilityInteractionClient;->setSameThreadMessage(Landroid/os/Message;)V
+Landroid/view/accessibility/AccessibilityManager;->DALTONIZER_SIMULATE_MONOCHROMACY:I
Landroid/view/accessibility/AccessibilityManager;->getInstance(Landroid/content/Context;)Landroid/view/accessibility/AccessibilityManager;
Landroid/view/accessibility/AccessibilityManager;->isHighTextContrastEnabled()Z
Landroid/view/accessibility/AccessibilityManager;->mAccessibilityStateChangeListeners:Landroid/util/ArrayMap;
@@ -5775,6 +5820,7 @@
Landroid/view/ActionProvider;->reset()V
Landroid/view/ActionProvider;->setSubUiVisibilityListener(Landroid/view/ActionProvider$SubUiVisibilityListener;)V
Landroid/view/animation/Animation;->detach()V
+Landroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V
Landroid/view/animation/Animation;->initializeInvalidateRegion(IIII)V
Landroid/view/animation/Animation;->mListener:Landroid/view/animation/Animation$AnimationListener;
Landroid/view/animation/Animation;->mPreviousRegion:Landroid/graphics/RectF;
@@ -5836,6 +5882,7 @@
Landroid/view/DisplayInfo;->logicalWidth:I
Landroid/view/DisplayInfo;->rotation:I
Landroid/view/DisplayListCanvas;->callDrawGLFunction2(J)V
+Landroid/view/DisplayListCanvas;->drawCircle(Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;)V
Landroid/view/DisplayListCanvas;->drawGLFunctor2(JLjava/lang/Runnable;)V
Landroid/view/DragEvent;->mClipData:Landroid/content/ClipData;
Landroid/view/DragEvent;->mClipDescription:Landroid/content/ClipDescription;
@@ -6042,9 +6089,13 @@
Landroid/view/RenderNode;->offsetLeftAndRight(I)Z
Landroid/view/RenderNode;->output()V
Landroid/view/RenderNode;->setHasOverlappingRendering(Z)Z
+Landroid/view/RenderNode;->setProjectBackwards(Z)Z
Landroid/view/RenderNodeAnimator;-><init>(IF)V
+Landroid/view/RenderNodeAnimator;-><init>(Landroid/graphics/CanvasProperty;F)V
+Landroid/view/RenderNodeAnimator;-><init>(Landroid/graphics/CanvasProperty;IF)V
Landroid/view/RenderNodeAnimator;->callOnFinished(Landroid/view/RenderNodeAnimator;)V
Landroid/view/RenderNodeAnimator;->mapViewPropertyToRenderProperty(I)I
+Landroid/view/RenderNodeAnimator;->setStartValue(F)V
Landroid/view/RenderNodeAnimator;->setTarget(Landroid/view/View;)V
Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;
Landroid/view/ScaleGestureDetector;->mMinSpan:I
@@ -6136,6 +6187,10 @@
Landroid/view/TextureView;->nCreateNativeWindow(Landroid/graphics/SurfaceTexture;)V
Landroid/view/TextureView;->nDestroyNativeWindow()V
Landroid/view/TextureView;->onDetachedFromWindowInternal()V
+Landroid/view/ThreadedRenderer;->addRenderNode(Landroid/view/RenderNode;Z)V
+Landroid/view/ThreadedRenderer;->drawRenderNode(Landroid/view/RenderNode;)V
+Landroid/view/ThreadedRenderer;->removeRenderNode(Landroid/view/RenderNode;)V
+Landroid/view/ThreadedRenderer;->setContentDrawBounds(IIII)V
Landroid/view/ThreadedRenderer;->setupDiskCache(Ljava/io/File;)V
Landroid/view/TouchDelegate;->mDelegateTargeted:Z
Landroid/view/VelocityTracker$Estimator;->confidence:F
@@ -6215,10 +6270,12 @@
Landroid/view/View;->getIterableTextForAccessibility()Ljava/lang/CharSequence;
Landroid/view/View;->getIteratorForGranularity(I)Landroid/view/AccessibilityIterators$TextSegmentIterator;
Landroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo;
+Landroid/view/View;->getLocationInSurface([I)V
Landroid/view/View;->getLocationOnScreen()[I
Landroid/view/View;->getRawTextAlignment()I
Landroid/view/View;->getRawTextDirection()I
Landroid/view/View;->getScrollCache()Landroid/view/View$ScrollabilityCache;
+Landroid/view/View;->getThreadedRenderer()Landroid/view/ThreadedRenderer;
Landroid/view/View;->getTransitionAlpha()F
Landroid/view/View;->getVerticalScrollFactor()F
Landroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl;
@@ -6288,8 +6345,11 @@
Landroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V
Landroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V
Landroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V
+Landroid/view/View;->onDetachedFromWindowInternal()V
+Landroid/view/View;->onDrawHorizontalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V
Landroid/view/View;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V
Landroid/view/View;->onFocusLost()V
+Landroid/view/View;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V
Landroid/view/View;->performAccessibilityActionInternal(ILandroid/os/Bundle;)Z
Landroid/view/View;->pointInView(FFF)Z
Landroid/view/View;->recomputePadding()V
@@ -6323,6 +6383,7 @@
Landroid/view/View;->toLocalMotionEvent(Landroid/view/MotionEvent;)Z
Landroid/view/View;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V
Landroid/view/View;->transformMatrixToLocal(Landroid/graphics/Matrix;)V
+Landroid/view/View;->updateDisplayListIfDirty()Landroid/view/RenderNode;
Landroid/view/ViewConfiguration;->getDeviceGlobalActionKeyTimeout()J
Landroid/view/ViewConfiguration;->getDoubleTapMinTime()I
Landroid/view/ViewConfiguration;->getDoubleTapSlop()I
@@ -6351,6 +6412,7 @@
Landroid/view/ViewGroup;->dispatchGetDisplayList()V
Landroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V
Landroid/view/ViewGroup;->dispatchViewRemoved(Landroid/view/View;)V
+Landroid/view/ViewGroup;->encodeProperties(Landroid/view/ViewHierarchyEncoder;)V
Landroid/view/ViewGroup;->FLAG_DISALLOW_INTERCEPT:I
Landroid/view/ViewGroup;->FLAG_SUPPORT_STATIC_TRANSFORMATIONS:I
Landroid/view/ViewGroup;->FLAG_USE_CHILD_DRAWING_ORDER:I
@@ -6368,6 +6430,7 @@
Landroid/view/ViewGroup;->mPersistentDrawingCache:I
Landroid/view/ViewGroup;->offsetChildrenTopAndBottom(I)V
Landroid/view/ViewGroup;->onChildVisibilityChanged(Landroid/view/View;II)V
+Landroid/view/ViewGroup;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V
Landroid/view/ViewGroup;->removeTransientView(Landroid/view/View;)V
Landroid/view/ViewGroup;->resetResolvedDrawables()V
Landroid/view/ViewGroup;->resetResolvedLayoutDirection()V
@@ -6541,6 +6604,8 @@
Landroid/webkit/IWebViewUpdateService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
Landroid/webkit/IWebViewUpdateService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/webkit/IWebViewUpdateService;
+Landroid/webkit/IWebViewUpdateService;->getCurrentWebViewPackageName()Ljava/lang/String;
+Landroid/webkit/IWebViewUpdateService;->getValidWebViewPackages()[Landroid/webkit/WebViewProviderInfo;
Landroid/webkit/IWebViewUpdateService;->isFallbackPackage(Ljava/lang/String;)Z
Landroid/webkit/JsResult;->mReceiver:Landroid/webkit/JsResult$ResultReceiver;
Landroid/webkit/PluginData;-><init>(Ljava/io/InputStream;JLjava/util/Map;I)V
@@ -6548,6 +6613,8 @@
Landroid/webkit/PluginData;->getHeaders()Ljava/util/Map;
Landroid/webkit/PluginData;->getInputStream()Ljava/io/InputStream;
Landroid/webkit/PluginData;->getStatusCode()I
+Landroid/webkit/UrlInterceptHandler;->getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;
+Landroid/webkit/UrlInterceptHandler;->service(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;
Landroid/webkit/UrlInterceptRegistry;->getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;
Landroid/webkit/UrlInterceptRegistry;->registerHandler(Landroid/webkit/UrlInterceptHandler;)Z
Landroid/webkit/UrlInterceptRegistry;->setUrlInterceptDisabled(Z)V
@@ -6706,6 +6773,7 @@
Landroid/widget/AutoCompleteTextView;->mPopup:Landroid/widget/ListPopupWindow;
Landroid/widget/AutoCompleteTextView;->setDropDownAlwaysVisible(Z)V
Landroid/widget/AutoCompleteTextView;->setDropDownAnimationStyle(I)V
+Landroid/widget/AutoCompleteTextView;->setDropDownDismissedOnCompletion(Z)V
Landroid/widget/AutoCompleteTextView;->setForceIgnoreOutsideTouch(Z)V
Landroid/widget/AutoCompleteTextView;->showDropDownAfterLayout()V
Landroid/widget/BaseAdapter;->mDataSetObservable:Landroid/database/DataSetObservable;
@@ -6732,7 +6800,9 @@
Landroid/widget/Editor;->invalidateTextDisplayList()V
Landroid/widget/Editor;->mCreatedWithASelection:Z
Landroid/widget/Editor;->mInsertionControllerEnabled:Z
+Landroid/widget/Editor;->mSelectHandleCenter:Landroid/graphics/drawable/Drawable;
Landroid/widget/Editor;->mSelectHandleLeft:Landroid/graphics/drawable/Drawable;
+Landroid/widget/Editor;->mSelectHandleRight:Landroid/graphics/drawable/Drawable;
Landroid/widget/Editor;->mSelectionControllerEnabled:Z
Landroid/widget/Editor;->mShowCursor:J
Landroid/widget/Editor;->mShowSoftInputOnFocus:Z
@@ -6833,8 +6903,10 @@
Landroid/widget/LinearLayout;->mTotalLength:I
Landroid/widget/LinearLayout;->mUseLargestChild:Z
Landroid/widget/ListPopupWindow;->buildDropDown()I
+Landroid/widget/ListPopupWindow;->isDropDownAlwaysVisible()Z
Landroid/widget/ListPopupWindow;->mDropDownList:Landroid/widget/DropDownListView;
Landroid/widget/ListPopupWindow;->mPopup:Landroid/widget/PopupWindow;
+Landroid/widget/ListPopupWindow;->setDropDownAlwaysVisible(Z)V
Landroid/widget/ListPopupWindow;->setForceIgnoreOutsideTouch(Z)V
Landroid/widget/ListPopupWindow;->setListItemExpandMax(I)V
Landroid/widget/ListView;->arrowScroll(I)Z
@@ -7452,6 +7524,7 @@
Lcom/android/internal/os/BatteryStatsHelper;-><init>(Landroid/content/Context;ZZ)V
Lcom/android/internal/os/BatteryStatsHelper;->clearStats()V
Lcom/android/internal/os/BatteryStatsHelper;->create(Landroid/os/Bundle;)V
+Lcom/android/internal/os/BatteryStatsHelper;->dropFile(Landroid/content/Context;Ljava/lang/String;)V
Lcom/android/internal/os/BatteryStatsHelper;->getBatteryBroadcast()Landroid/content/Intent;
Lcom/android/internal/os/BatteryStatsHelper;->getMaxPower()D
Lcom/android/internal/os/BatteryStatsHelper;->getStats()Landroid/os/BatteryStats;
@@ -7576,6 +7649,8 @@
Lcom/android/internal/policy/IKeyguardService;->setKeyguardEnabled(Z)V
Lcom/android/internal/policy/IKeyguardStateCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardStateCallback;
Lcom/android/internal/R$anim;->fade_in:I
+Lcom/android/internal/R$array;->config_autoBrightnessLcdBacklightValues:I
+Lcom/android/internal/R$array;->config_autoBrightnessLevels:I
Lcom/android/internal/R$array;->config_mobile_hotspot_provision_app:I
Lcom/android/internal/R$array;->config_sms_enabled_locking_shift_tables:I
Lcom/android/internal/R$array;->config_sms_enabled_single_shift_tables:I
@@ -7618,6 +7693,7 @@
Lcom/android/internal/R$drawable;->no_tile_256:I
Lcom/android/internal/R$drawable;->reticle:I
Lcom/android/internal/R$drawable;->stat_sys_download:I
+Lcom/android/internal/R$fraction;->config_autoBrightnessAdjustmentMaxGamma:I
Lcom/android/internal/R$id;->account_name:I
Lcom/android/internal/R$id;->account_type:I
Lcom/android/internal/R$id;->alertTitle:I
@@ -7694,6 +7770,8 @@
Lcom/android/internal/R$id;->zoomControls:I
Lcom/android/internal/R$id;->zoomMagnify:I
Lcom/android/internal/R$integer;->config_screenBrightnessDim:I
+Lcom/android/internal/R$integer;->config_screenBrightnessSettingMaximum:I
+Lcom/android/internal/R$integer;->config_screenBrightnessSettingMinimum:I
Lcom/android/internal/R$integer;->config_toastDefaultGravity:I
Lcom/android/internal/R$interpolator;->accelerate_cubic:I
Lcom/android/internal/R$interpolator;->decelerate_cubic:I
@@ -7873,6 +7951,8 @@
Lcom/android/internal/R$styleable;->ListView_overScrollHeader:I
Lcom/android/internal/R$styleable;->MapView:[I
Lcom/android/internal/R$styleable;->MapView_apiKey:I
+Lcom/android/internal/R$styleable;->MenuGroup:[I
+Lcom/android/internal/R$styleable;->MenuItem:[I
Lcom/android/internal/R$styleable;->MenuView:[I
Lcom/android/internal/R$styleable;->PopupWindow:[I
Lcom/android/internal/R$styleable;->PopupWindow_popupAnimationStyle:I
@@ -8103,6 +8183,8 @@
Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDeviceId(Ljava/lang/String;)Ljava/lang/String;
Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/telephony/ITelephony$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephony;
+Lcom/android/internal/telephony/ITelephony$Stub;->DESCRIPTOR:Ljava/lang/String;
+Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_answerRingingCall:I
Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_call:I
Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_endCall:I
Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_getDeviceId:I
@@ -8261,6 +8343,7 @@
Lcom/android/internal/view/menu/MenuBuilder$Callback;->onMenuItemSelected(Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/MenuItem;)Z
Lcom/android/internal/view/menu/MenuBuilder$Callback;->onMenuModeChange(Lcom/android/internal/view/menu/MenuBuilder;)V
Lcom/android/internal/view/menu/MenuBuilder;-><init>(Landroid/content/Context;)V
+Lcom/android/internal/view/menu/MenuBuilder;->addMenuPresenter(Lcom/android/internal/view/menu/MenuPresenter;)V
Lcom/android/internal/view/menu/MenuBuilder;->addMenuPresenter(Lcom/android/internal/view/menu/MenuPresenter;Landroid/content/Context;)V
Lcom/android/internal/view/menu/MenuBuilder;->collapseItemActionView(Lcom/android/internal/view/menu/MenuItemImpl;)Z
Lcom/android/internal/view/menu/MenuBuilder;->getContext()Landroid/content/Context;
@@ -8268,6 +8351,7 @@
Lcom/android/internal/view/menu/MenuBuilder;->getRootMenu()Lcom/android/internal/view/menu/MenuBuilder;
Lcom/android/internal/view/menu/MenuBuilder;->getVisibleItems()Ljava/util/ArrayList;
Lcom/android/internal/view/menu/MenuBuilder;->mContext:Landroid/content/Context;
+Lcom/android/internal/view/menu/MenuBuilder;->removeMenuPresenter(Lcom/android/internal/view/menu/MenuPresenter;)V
Lcom/android/internal/view/menu/MenuBuilder;->setCallback(Lcom/android/internal/view/menu/MenuBuilder$Callback;)V
Lcom/android/internal/view/menu/MenuBuilder;->setCurrentMenuInfo(Landroid/view/ContextMenu$ContextMenuInfo;)V
Lcom/android/internal/view/menu/MenuBuilder;->setDefaultShowAsAction(I)Lcom/android/internal/view/menu/MenuBuilder;
diff --git a/core/java/android/app/StatsManager.java b/core/java/android/app/StatsManager.java
index 45754ae..32fc0dc 100644
--- a/core/java/android/app/StatsManager.java
+++ b/core/java/android/app/StatsManager.java
@@ -115,8 +115,9 @@
}
}
+ // TODO: Temporary for backwards compatibility. Remove.
/**
- * TODO: Temporary for backwards compatibility. Remove.
+ * @deprecated Use {@link #addConfig(long, byte[])}
*/
@RequiresPermission(allOf = { DUMP, PACKAGE_USAGE_STATS })
public boolean addConfiguration(long configKey, byte[] config) {
@@ -149,8 +150,9 @@
}
}
+ // TODO: Temporary for backwards compatibility. Remove.
/**
- * TODO: Temporary for backwards compatibility. Remove.
+ * @deprecated Use {@link #removeConfig(long)}
*/
@RequiresPermission(allOf = { DUMP, PACKAGE_USAGE_STATS })
public boolean removeConfiguration(long configKey) {
@@ -216,8 +218,9 @@
}
}
+ // TODO: Temporary for backwards compatibility. Remove.
/**
- * TODO: Temporary for backwards compatibility. Remove.
+ * @deprecated Use {@link #setBroadcastSubscriber(PendingIntent, long, long)}
*/
@RequiresPermission(allOf = { DUMP, PACKAGE_USAGE_STATS })
public boolean setBroadcastSubscriber(
@@ -268,8 +271,9 @@
}
}
+ // TODO: Temporary for backwards compatibility. Remove.
/**
- * TODO: Temporary for backwards compatibility. Remove.
+ * @deprecated Use {@link #setFetchReportsOperation(PendingIntent, long)}
*/
@RequiresPermission(allOf = { DUMP, PACKAGE_USAGE_STATS })
public boolean setDataFetchOperation(long configKey, PendingIntent pendingIntent) {
@@ -304,8 +308,9 @@
}
}
+ // TODO: Temporary for backwards compatibility. Remove.
/**
- * TODO: Temporary for backwards compatibility. Remove.
+ * @deprecated Use {@link #getReports(long)}
*/
@RequiresPermission(allOf = { DUMP, PACKAGE_USAGE_STATS })
public @Nullable byte[] getData(long configKey) {
@@ -339,12 +344,9 @@
}
}
+ // TODO: Temporary for backwards compatibility. Remove.
/**
- * Clients can request metadata for statsd. Will contain stats across all configurations but not
- * the actual metrics themselves (metrics must be collected via {@link #getReports(long)}.
- * This getter is not destructive and will not reset any metrics/counters.
- *
- * @return Serialized StatsdStatsReport proto. Returns null on failure (eg, if statsd crashed).
+ * @deprecated Use {@link #getStatsMetadata()}
*/
@RequiresPermission(allOf = { DUMP, PACKAGE_USAGE_STATS })
public @Nullable byte[] getMetadata() {
diff --git a/core/java/android/app/slice/SliceManager.java b/core/java/android/app/slice/SliceManager.java
index f682ec1..ad862fc 100644
--- a/core/java/android/app/slice/SliceManager.java
+++ b/core/java/android/app/slice/SliceManager.java
@@ -245,7 +245,8 @@
ContentResolver resolver = mContext.getContentResolver();
try (ContentProviderClient provider = resolver.acquireContentProviderClient(uri)) {
if (provider == null) {
- throw new IllegalArgumentException("Unknown URI " + uri);
+ Log.w(TAG, String.format("Unknown URI: %s", uri));
+ return null;
}
Bundle extras = new Bundle();
extras.putParcelable(SliceProvider.EXTRA_BIND_URI, uri);
@@ -306,7 +307,8 @@
.authority(authority).build();
try (ContentProviderClient provider = resolver.acquireContentProviderClient(uri)) {
if (provider == null) {
- throw new IllegalArgumentException("Unknown URI " + uri);
+ Log.w(TAG, String.format("Unknown URI: %s", uri));
+ return null;
}
Bundle extras = new Bundle();
extras.putParcelable(SliceProvider.EXTRA_INTENT, intent);
@@ -383,7 +385,8 @@
.authority(authority).build();
try (ContentProviderClient provider = resolver.acquireContentProviderClient(uri)) {
if (provider == null) {
- throw new IllegalArgumentException("Unknown URI " + uri);
+ Log.w(TAG, String.format("Unknown URI: %s", uri));
+ return null;
}
Bundle extras = new Bundle();
extras.putParcelable(SliceProvider.EXTRA_INTENT, intent);
diff --git a/core/java/android/os/storage/VolumeInfo.java b/core/java/android/os/storage/VolumeInfo.java
index 576ea52..8d4c3c3 100644
--- a/core/java/android/os/storage/VolumeInfo.java
+++ b/core/java/android/os/storage/VolumeInfo.java
@@ -407,8 +407,12 @@
* {@link #TYPE_EMULATED} or {@link #TYPE_PUBLIC}.
*/
public @Nullable Intent buildBrowseIntent() {
+ return buildBrowseIntentForUser(UserHandle.myUserId());
+ }
+
+ public @Nullable Intent buildBrowseIntentForUser(int userId) {
final Uri uri;
- if (type == VolumeInfo.TYPE_PUBLIC && mountUserId == UserHandle.myUserId()) {
+ if (type == VolumeInfo.TYPE_PUBLIC && mountUserId == userId) {
uri = DocumentsContract.buildRootUri(DOCUMENT_AUTHORITY, fsUuid);
} else if (type == VolumeInfo.TYPE_EMULATED && isPrimary()) {
uri = DocumentsContract.buildRootUri(DOCUMENT_AUTHORITY,
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 45b851ff..6f3a44e 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -23,6 +23,7 @@
import static android.provider.SettingsValidators.LENIENT_IP_ADDRESS_VALIDATOR;
import static android.provider.SettingsValidators.LOCALE_VALIDATOR;
import static android.provider.SettingsValidators.NON_NEGATIVE_INTEGER_VALIDATOR;
+import static android.provider.SettingsValidators.NULLABLE_COMPONENT_NAME_VALIDATOR;
import static android.provider.SettingsValidators.PACKAGE_NAME_VALIDATOR;
import static android.provider.SettingsValidators.URI_VALIDATOR;
@@ -5452,7 +5453,8 @@
@TestApi
public static final String AUTOFILL_SERVICE = "autofill_service";
- private static final Validator AUTOFILL_SERVICE_VALIDATOR = COMPONENT_NAME_VALIDATOR;
+ private static final Validator AUTOFILL_SERVICE_VALIDATOR =
+ NULLABLE_COMPONENT_NAME_VALIDATOR;
/**
* Boolean indicating if Autofill supports field classification.
@@ -5950,7 +5952,7 @@
"accessibility_shortcut_target_service";
private static final Validator ACCESSIBILITY_SHORTCUT_TARGET_SERVICE_VALIDATOR =
- COMPONENT_NAME_VALIDATOR;
+ NULLABLE_COMPONENT_NAME_VALIDATOR;
/**
* Setting specifying the accessibility service or feature to be toggled via the
@@ -7112,6 +7114,35 @@
public static final String UI_NIGHT_MODE = "ui_night_mode";
/**
+ * The current device UI theme mode effect SystemUI and Launcher.<br/>
+ * <b>Values:</b><br/>
+ * 0 - The mode that theme will controlled by wallpaper color.<br/>
+ * 1 - The mode that will always light theme.<br/>
+ * 2 - The mode that will always dark theme.<br/>
+ *
+ * @hide
+ */
+ public static final String THEME_MODE = "theme_mode";
+
+ /**
+ * THEME_MODE value for wallpaper mode.
+ * @hide
+ */
+ public static final int THEME_MODE_WALLPAPER = 0;
+
+ /**
+ * THEME_MODE value for light theme mode.
+ * @hide
+ */
+ public static final int THEME_MODE_LIGHT = 1;
+
+ /**
+ * THEME_MODE value for dark theme mode.
+ * @hide
+ */
+ public static final int THEME_MODE_DARK = 2;
+
+ /**
* Whether screensavers are enabled.
* @hide
*/
diff --git a/core/java/android/provider/SettingsValidators.java b/core/java/android/provider/SettingsValidators.java
index b53b0f0..25e77867 100644
--- a/core/java/android/provider/SettingsValidators.java
+++ b/core/java/android/provider/SettingsValidators.java
@@ -77,6 +77,11 @@
}
};
+ /**
+ * Does not allow a setting to have a null {@link ComponentName}. Use {@link
+ * SettingsValidators#NULLABLE_COMPONENT_NAME_VALIDATOR} instead if a setting can have a
+ * nullable {@link ComponentName}.
+ */
public static final Validator COMPONENT_NAME_VALIDATOR = new Validator() {
@Override
public boolean validate(@Nullable String value) {
@@ -84,6 +89,16 @@
}
};
+ /**
+ * Allows a setting to have a null {@link ComponentName}.
+ */
+ public static final Validator NULLABLE_COMPONENT_NAME_VALIDATOR = new Validator() {
+ @Override
+ public boolean validate(@Nullable String value) {
+ return value == null || COMPONENT_NAME_VALIDATOR.validate(value);
+ }
+ };
+
public static final Validator PACKAGE_NAME_VALIDATOR = new Validator() {
@Override
public boolean validate(@Nullable String value) {
diff --git a/core/java/android/widget/SelectionActionModeHelper.java b/core/java/android/widget/SelectionActionModeHelper.java
index 275ef57..d22b1e6 100644
--- a/core/java/android/widget/SelectionActionModeHelper.java
+++ b/core/java/android/widget/SelectionActionModeHelper.java
@@ -641,7 +641,7 @@
mSelectionStart, mSelectionEnd,
SelectionEvent.ACTION_ABANDON, null /* classification */);
mSelectionStart = mSelectionEnd = -1;
- mTextView.getTextClassificationSession().destroy();
+ mLogger.endTextClassificationSession();
mIsPending = false;
}
}
@@ -707,8 +707,10 @@
mTokenIterator.setText(mText);
mStartIndex = index;
mClassificationSession = classificationSession;
- mClassificationSession.onSelectionEvent(
- SelectionEvent.createSelectionStartedEvent(invocationMethod, 0));
+ if (hasActiveClassificationSession()) {
+ mClassificationSession.onSelectionEvent(
+ SelectionEvent.createSelectionStartedEvent(invocationMethod, 0));
+ }
} catch (Exception e) {
// Avoid crashes due to logging.
Log.e(LOG_TAG, "" + e.getMessage(), e);
@@ -718,23 +720,19 @@
public void logSelectionModified(int start, int end,
@Nullable TextClassification classification, @Nullable TextSelection selection) {
try {
- Preconditions.checkArgumentInRange(start, 0, mText.length(), "start");
- Preconditions.checkArgumentInRange(end, start, mText.length(), "end");
- int[] wordIndices = getWordDelta(start, end);
- if (selection != null) {
- if (mClassificationSession != null) {
+ if (hasActiveClassificationSession()) {
+ Preconditions.checkArgumentInRange(start, 0, mText.length(), "start");
+ Preconditions.checkArgumentInRange(end, start, mText.length(), "end");
+ int[] wordIndices = getWordDelta(start, end);
+ if (selection != null) {
mClassificationSession.onSelectionEvent(
SelectionEvent.createSelectionModifiedEvent(
wordIndices[0], wordIndices[1], selection));
- }
- } else if (classification != null) {
- if (mClassificationSession != null) {
+ } else if (classification != null) {
mClassificationSession.onSelectionEvent(
SelectionEvent.createSelectionModifiedEvent(
wordIndices[0], wordIndices[1], classification));
- }
- } else {
- if (mClassificationSession != null) {
+ } else {
mClassificationSession.onSelectionEvent(
SelectionEvent.createSelectionModifiedEvent(
wordIndices[0], wordIndices[1]));
@@ -751,21 +749,23 @@
@SelectionEvent.ActionType int action,
@Nullable TextClassification classification) {
try {
- Preconditions.checkArgumentInRange(start, 0, mText.length(), "start");
- Preconditions.checkArgumentInRange(end, start, mText.length(), "end");
- int[] wordIndices = getWordDelta(start, end);
- if (classification != null) {
- if (mClassificationSession != null) {
+ if (hasActiveClassificationSession()) {
+ Preconditions.checkArgumentInRange(start, 0, mText.length(), "start");
+ Preconditions.checkArgumentInRange(end, start, mText.length(), "end");
+ int[] wordIndices = getWordDelta(start, end);
+ if (classification != null) {
mClassificationSession.onSelectionEvent(
SelectionEvent.createSelectionActionEvent(
- wordIndices[0], wordIndices[1], action, classification));
- }
- } else {
- if (mClassificationSession != null) {
+ wordIndices[0], wordIndices[1], action,
+ classification));
+ } else {
mClassificationSession.onSelectionEvent(
SelectionEvent.createSelectionActionEvent(
wordIndices[0], wordIndices[1], action));
}
+ if (SelectionEvent.isTerminal(action)) {
+ endTextClassificationSession();
+ }
}
} catch (Exception e) {
// Avoid crashes due to logging.
@@ -777,6 +777,16 @@
return mEditTextLogger;
}
+ public void endTextClassificationSession() {
+ if (hasActiveClassificationSession()) {
+ mClassificationSession.destroy();
+ }
+ }
+
+ private boolean hasActiveClassificationSession() {
+ return mClassificationSession != null && !mClassificationSession.isDestroyed();
+ }
+
private int[] getWordDelta(int start, int end) {
int[] wordIndices = new int[2];
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 48775ad..a57d154 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -11527,12 +11527,9 @@
} else {
widgetType = TextClassifier.WIDGET_TYPE_UNSELECTABLE_TEXTVIEW;
}
- // TODO: Tagged this widgetType with a * so it we can monitor if it reports
- // SelectionEvents exactly as the older Logger does. Remove once investigations
- // are complete.
final TextClassificationContext textClassificationContext =
new TextClassificationContext.Builder(
- mContext.getPackageName(), "*" + widgetType)
+ mContext.getPackageName(), widgetType)
.build();
if (mTextClassifier != null) {
mTextClassificationSession = tcm.createTextClassificationSession(
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 97043c7..571878d 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -21,6 +21,7 @@
import android.animation.ObjectAnimator;
import android.annotation.NonNull;
import android.app.Activity;
+import android.app.ActivityManager;
import android.app.usage.UsageStatsManager;
import android.content.ComponentName;
import android.content.Context;
@@ -1022,6 +1023,11 @@
@Override
public void onListRebuilt() {
+ // don't support direct share on low ram devices
+ if (ActivityManager.isLowRamDeviceStatic()) {
+ return;
+ }
+
if (mServiceTargets != null) {
pruneServiceTargets();
}
diff --git a/core/res/res/drawable/ic_camera.xml b/core/res/res/drawable/ic_camera.xml
index 2921a68..7074531 100644
--- a/core/res/res/drawable/ic_camera.xml
+++ b/core/res/res/drawable/ic_camera.xml
@@ -19,9 +19,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
- android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0"
- android:fillColor="#FFFFFF"/>
- <path
- android:pathData="M9,2L7.17,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2L9,2zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z"
- android:fillColor="#FFFFFF"/>
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M20,5h-3.17L15,3H9L7.17,5H4C2.9,5 2,5.9 2,7v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V7C22,5.9 21.1,5 20,5zM20,19H4V7h16V19zM12,9c-2.21,0 -4,1.79 -4,4c0,2.21 1.79,4 4,4s4,-1.79 4,-4C16,10.79 14.21,9 12,9z"/>
</vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/ic_mic.xml b/core/res/res/drawable/ic_mic.xml
index 3212330..29389fa 100644
--- a/core/res/res/drawable/ic_mic.xml
+++ b/core/res/res/drawable/ic_mic.xml
@@ -19,6 +19,9 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
- android:pathData="M12,14c1.66,0 2.99,-1.34 2.99,-3L15,5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v6c0,1.66 1.34,3 3,3zM17.3,11c0,3 -2.54,5.1 -5.3,5.1S6.7,14 6.7,11L5,11c0,3.41 2.72,6.23 6,6.72L11,21h2v-3.28c3.28,-0.48 6,-3.3 6,-6.72h-1.7z"
- android:fillColor="#FFFFFF"/>
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M12,14c1.66,0 3,-1.34 3,-3V5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v6C9,12.66 10.34,14 12,14zM11,5c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v6c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1V5z"/>
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M17,11c0,2.76 -2.24,5 -5,5s-5,-2.24 -5,-5H5c0,3.53 2.61,6.43 6,6.92V21h2v-3.08c3.39,-0.49 6,-3.39 6,-6.92H17z"/>
</vector>
\ No newline at end of file
diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
index d1b047b..5126794 100644
--- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
@@ -592,6 +592,7 @@
Settings.Secure.SHOW_ROTATION_SUGGESTIONS,
Settings.Secure.SKIP_FIRST_USE_HINTS, // candidate?
Settings.Secure.SMS_DEFAULT_APPLICATION,
+ Settings.Secure.THEME_MODE,
Settings.Secure.TRUST_AGENTS_INITIALIZED,
Settings.Secure.TV_INPUT_CUSTOM_LABELS,
Settings.Secure.TV_INPUT_HIDDEN_INPUTS,
diff --git a/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java b/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java
index 50f24d3..8909293 100644
--- a/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java
@@ -88,6 +88,23 @@
}
@Test
+ public void testNullableComponentNameValidator_onValidComponentName_returnsTrue() {
+ assertTrue(SettingsValidators.NULLABLE_COMPONENT_NAME_VALIDATOR.validate(
+ "android/com.android.internal.backup.LocalTransport"));
+ }
+
+ @Test
+ public void testNullableComponentNameValidator_onInvalidComponentName_returnsFalse() {
+ assertFalse(SettingsValidators.NULLABLE_COMPONENT_NAME_VALIDATOR.validate(
+ "rectangle"));
+ }
+
+ @Test
+ public void testNullableComponentNameValidator_onNullValue_returnsTrue() {
+ assertTrue(SettingsValidators.NULLABLE_COMPONENT_NAME_VALIDATOR.validate(null));
+ }
+
+ @Test
public void testLocaleValidator() {
assertTrue(SettingsValidators.LOCALE_VALIDATOR.validate("en_US"));
assertTrue(SettingsValidators.LOCALE_VALIDATOR.validate("es"));
diff --git a/core/tests/coretests/src/android/widget/TextViewActivityTest.java b/core/tests/coretests/src/android/widget/TextViewActivityTest.java
index bcb7cf3..70dc618 100644
--- a/core/tests/coretests/src/android/widget/TextViewActivityTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewActivityTest.java
@@ -46,6 +46,7 @@
import static android.widget.espresso.TextViewAssertions.hasInsertionPointerAtIndex;
import static android.widget.espresso.TextViewAssertions.hasSelection;
+import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
@@ -77,6 +78,7 @@
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.textclassifier.SelectionEvent;
import android.view.textclassifier.TextClassificationManager;
import android.view.textclassifier.TextClassifier;
import android.view.textclassifier.TextLinks;
@@ -90,6 +92,9 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Tests the TextView widget from an Activity
*/
@@ -978,6 +983,30 @@
}
@Test
+ public void testSelectionMetricsLogger_noAbandonAfterCopy() throws Throwable {
+ final List<SelectionEvent> selectionEvents = new ArrayList<>();
+ final TextClassifier classifier = new TextClassifier() {
+ @Override
+ public void onSelectionEvent(SelectionEvent event) {
+ selectionEvents.add(event);
+ }
+ };
+ final TextView textView = mActivity.findViewById(R.id.textview);
+ mActivityRule.runOnUiThread(() -> textView.setTextClassifier(classifier));
+ mInstrumentation.waitForIdleSync();
+ final String text = "andyroid@android.com";
+
+ onView(withId(R.id.textview)).perform(replaceText(text));
+ onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf('@')));
+ sleepForFloatingToolbarPopup();
+ clickFloatingToolbarItem(mActivity.getString(com.android.internal.R.string.copy));
+ mInstrumentation.waitForIdleSync();
+
+ final SelectionEvent lastEvent = selectionEvents.get(selectionEvents.size() - 1);
+ assertEquals(SelectionEvent.ACTION_COPY, lastEvent.getEventType());
+ }
+
+ @Test
public void testPastePlainText_menuAction() {
initializeClipboardWithText(TextStyle.STYLED);
diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp
index 007cddd..b644cc3 100644
--- a/libs/androidfw/ResourceTypes.cpp
+++ b/libs/androidfw/ResourceTypes.cpp
@@ -458,7 +458,7 @@
// The chunk must be at least the size of the string pool header.
if (size < sizeof(ResStringPool_header)) {
- LOG_ALWAYS_FATAL("Bad string block: data size %zu is too small to be a string block", size);
+ ALOGW("Bad string block: data size %zu is too small to be a string block", size);
return (mError=BAD_TYPE);
}
@@ -468,7 +468,7 @@
if (validate_chunk(reinterpret_cast<const ResChunk_header*>(data), sizeof(ResStringPool_header),
reinterpret_cast<const uint8_t*>(data) + size,
"ResStringPool_header") != NO_ERROR) {
- LOG_ALWAYS_FATAL("Bad string block: malformed block dimensions");
+ ALOGW("Bad string block: malformed block dimensions");
return (mError=BAD_TYPE);
}
diff --git a/media/java/android/media/audiofx/DynamicsProcessing.java b/media/java/android/media/audiofx/DynamicsProcessing.java
index 4c17ae1..1c3cff9 100644
--- a/media/java/android/media/audiofx/DynamicsProcessing.java
+++ b/media/java/android/media/audiofx/DynamicsProcessing.java
@@ -279,25 +279,24 @@
private static final boolean PREEQ_DEFAULT_ENABLED = true;
private static final boolean POSTEQ_DEFAULT_ENABLED = true;
-
private static final boolean MBC_DEFAULT_ENABLED = true;
- private static final float MBC_DEFAULT_ATTACK_TIME = 50; // ms
- private static final float MBC_DEFAULT_RELEASE_TIME = 120; // ms
- private static final float MBC_DEFAULT_RATIO = 2; // 1:N
- private static final float MBC_DEFAULT_THRESHOLD = -30; // dB
+ private static final float MBC_DEFAULT_ATTACK_TIME = 3; // ms
+ private static final float MBC_DEFAULT_RELEASE_TIME = 80; // ms
+ private static final float MBC_DEFAULT_RATIO = 1; // N:1
+ private static final float MBC_DEFAULT_THRESHOLD = -45; // dB
private static final float MBC_DEFAULT_KNEE_WIDTH = 0; // dB
- private static final float MBC_DEFAULT_NOISE_GATE_THRESHOLD = -80; // dB
- private static final float MBC_DEFAULT_EXPANDER_RATIO = 1.5f; // N:1
+ private static final float MBC_DEFAULT_NOISE_GATE_THRESHOLD = -90; // dB
+ private static final float MBC_DEFAULT_EXPANDER_RATIO = 1; // 1:N
private static final float MBC_DEFAULT_PRE_GAIN = 0; // dB
- private static final float MBC_DEFAULT_POST_GAIN = 10; // dB
+ private static final float MBC_DEFAULT_POST_GAIN = 0; // dB
private static final boolean LIMITER_DEFAULT_ENABLED = true;
private static final int LIMITER_DEFAULT_LINK_GROUP = 0;//;
- private static final float LIMITER_DEFAULT_ATTACK_TIME = 50; // ms
- private static final float LIMITER_DEFAULT_RELEASE_TIME = 120; // ms
- private static final float LIMITER_DEFAULT_RATIO = 2; // 1:N
- private static final float LIMITER_DEFAULT_THRESHOLD = -30; // dB
- private static final float LIMITER_DEFAULT_POST_GAIN = 10; // dB
+ private static final float LIMITER_DEFAULT_ATTACK_TIME = 1; // ms
+ private static final float LIMITER_DEFAULT_RELEASE_TIME = 60; // ms
+ private static final float LIMITER_DEFAULT_RATIO = 10; // N:1
+ private static final float LIMITER_DEFAULT_THRESHOLD = -2; // dB
+ private static final float LIMITER_DEFAULT_POST_GAIN = 0; // dB
private static final float DEFAULT_MIN_FREQUENCY = 220; // Hz
private static final float DEFAULT_MAX_FREQUENCY = 20000; // Hz
@@ -540,13 +539,14 @@
* band number, thus band 0 cutoffFrequency <= band 1 cutoffFrequency, and so on.
* @param attackTime Attack Time for compressor in milliseconds (ms)
* @param releaseTime Release Time for compressor in milliseconds (ms)
- * @param ratio Compressor ratio (1:N)
+ * @param ratio Compressor ratio (N:1) (input:output)
* @param threshold Compressor threshold measured in decibels (dB) from 0 dB Full Scale
* (dBFS).
* @param kneeWidth Width in decibels (dB) around compressor threshold point.
* @param noiseGateThreshold Noise gate threshold in decibels (dB) from 0 dB Full Scale
* (dBFS).
- * @param expanderRatio Expander ratio (N:1) for signals below the Noise Gate Threshold.
+ * @param expanderRatio Expander ratio (1:N) (input:output) for signals below the Noise Gate
+ * Threshold.
* @param preGain Gain applied to the signal BEFORE the compression.
* @param postGain Gain applied to the signal AFTER compression.
*/
@@ -618,13 +618,13 @@
*/
public void setReleaseTime(float releaseTime) { mReleaseTime = releaseTime; }
/**
- * gets the compressor ratio (1:N)
- * @return compressor ratio (1:N)
+ * gets the compressor ratio (N:1)
+ * @return compressor ratio (N:1)
*/
public float getRatio() { return mRatio; }
/**
- * sets compressor ratio (1:N)
- * @param ratio desired for the compressor (1:N)
+ * sets compressor ratio (N:1)
+ * @param ratio desired for the compressor (N:1)
*/
public void setRatio(float ratio) { mRatio = ratio; }
/**
@@ -670,13 +670,13 @@
public void setNoiseGateThreshold(float noiseGateThreshold) {
mNoiseGateThreshold = noiseGateThreshold; }
/**
- * gets Expander ratio (N:1) for signals below the Noise Gate Threshold.
- * @return Expander ratio (N:1)
+ * gets Expander ratio (1:N) for signals below the Noise Gate Threshold.
+ * @return Expander ratio (1:N)
*/
public float getExpanderRatio() { return mExpanderRatio; }
/**
- * sets Expander ratio (N:1) for signals below the Noise Gate Threshold.
- * @param expanderRatio desired expander ratio (N:1)
+ * sets Expander ratio (1:N) for signals below the Noise Gate Threshold.
+ * @param expanderRatio desired expander ratio (1:N)
*/
public void setExpanderRatio(float expanderRatio) { mExpanderRatio = expanderRatio; }
/**
@@ -909,7 +909,7 @@
* same linkGroup index will react together.
* @param attackTime Attack Time for limiter compressor in milliseconds (ms)
* @param releaseTime Release Time for limiter compressor in milliseconds (ms)
- * @param ratio Limiter Compressor ratio (1:N)
+ * @param ratio Limiter Compressor ratio (N:1) (input:output)
* @param threshold Limiter Compressor threshold measured in decibels (dB) from 0 dB Full
* Scale (dBFS).
* @param postGain Gain applied to the signal AFTER compression.
@@ -985,13 +985,13 @@
*/
public void setReleaseTime(float releaseTime) { mReleaseTime = releaseTime; }
/**
- * gets the limiter compressor ratio (1:N)
- * @return limiter compressor ratio (1:N)
+ * gets the limiter compressor ratio (N:1)
+ * @return limiter compressor ratio (N:1)
*/
public float getRatio() { return mRatio; }
/**
- * sets limiter compressor ratio (1:N)
- * @param ratio desired for the limiter compressor (1:N)
+ * sets limiter compressor ratio (N:1)
+ * @param ratio desired for the limiter compressor (N:1)
*/
public void setRatio(float ratio) { mRatio = ratio; }
/**
diff --git a/packages/SettingsLib/res/values-as/arrays.xml b/packages/SettingsLib/res/values-as/arrays.xml
index d0973f0..b8353ee 100644
--- a/packages/SettingsLib/res/values-as/arrays.xml
+++ b/packages/SettingsLib/res/values-as/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"সংযোগৰ ক্ষমতা অনুযায়ী সৰ্বোত্তম"</item>
<item msgid="364670732877872677">"উত্তম প্ৰচেষ্টা (অভিযোজিত বিট ৰেইট)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", সক্ৰিয়"</item>
+ <item msgid="8962366465966010158">", সক্ৰিয় (মিডিয়া)"</item>
+ <item msgid="4046665544396189228">", সক্ৰিয় (ফ\'ন)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"অফ কৰক"</item>
<item msgid="1593289376502312923">"৬৪কে."</item>
diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml
index e186bb4..6340034 100644
--- a/packages/SettingsLib/res/values-bn/arrays.xml
+++ b/packages/SettingsLib/res/values-bn/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"সংযোগের গুণমানের জন্য অপটিমাইজ করা হয়েছে"</item>
<item msgid="364670732877872677">"সেরা প্রচেষ্টা (অ্যাডাপ্টিভ বিট রেট)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", চালু আছে"</item>
+ <item msgid="8962366465966010158">", চালু আছে (মিডিয়া)"</item>
+ <item msgid="4046665544396189228">", চালু আছে (ফোন)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"বন্ধ আছে"</item>
<item msgid="1593289376502312923">"৬৪K"</item>
diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml
index 30a9339..ecf5525 100644
--- a/packages/SettingsLib/res/values-gu/arrays.xml
+++ b/packages/SettingsLib/res/values-gu/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"કનેક્શનની ગુણવત્તા માટે ઓપ્ટિમાઇઝ કર્યું"</item>
<item msgid="364670732877872677">"ઉત્તમ પ્રયાસ (અનુકૂલનશીલ બિટ રેટ)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", સક્રિય"</item>
+ <item msgid="8962366465966010158">", સક્રિય (મીડિયા)"</item>
+ <item msgid="4046665544396189228">", સક્રિય (ફોન)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"બંધ"</item>
<item msgid="1593289376502312923">"64K"</item>
diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml
index 0e34b77..d1d0157 100644
--- a/packages/SettingsLib/res/values-hi/arrays.xml
+++ b/packages/SettingsLib/res/values-hi/arrays.xml
@@ -140,9 +140,9 @@
</string-array>
<string-array name="bluetooth_audio_active_device_summaries">
<item msgid="4862957058729193940"></item>
- <item msgid="6481691720774549651">"चालू है"</item>
- <item msgid="8962366465966010158">"चालू है (सिर्फ़ मीडिया के लिए)"</item>
- <item msgid="4046665544396189228">"चालू है (सिर्फ़ फ़ोन के लिए)"</item>
+ <item msgid="6481691720774549651">", चालू है"</item>
+ <item msgid="8962366465966010158">", चालू है (सिर्फ़ मीडिया के लिए)"</item>
+ <item msgid="4046665544396189228">", चालू है (सिर्फ़ फ़ोन के लिए)"</item>
</string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"बंद"</item>
diff --git a/packages/SettingsLib/res/values-is/arrays.xml b/packages/SettingsLib/res/values-is/arrays.xml
index 3aef4ce..b073371 100644
--- a/packages/SettingsLib/res/values-is/arrays.xml
+++ b/packages/SettingsLib/res/values-is/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"Fínstillt fyrir gæði tengingar"</item>
<item msgid="364670732877872677">"Bestu mögulegu gæði (breytilegur bitahraði)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", virkt"</item>
+ <item msgid="8962366465966010158">", virkt (hljóð- og myndefni)"</item>
+ <item msgid="4046665544396189228">", virkt (sími)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"Slökkt"</item>
<item msgid="1593289376502312923">"64 k"</item>
diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml
index 037c23f..8b6b8ca 100644
--- a/packages/SettingsLib/res/values-iw/arrays.xml
+++ b/packages/SettingsLib/res/values-iw/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"אופטימיזציה להשגת איכות חיבור מרבית"</item>
<item msgid="364670732877872677">"האיכות הטובה ביותר (קצב העברת נתונים מותאם)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", פעיל"</item>
+ <item msgid="8962366465966010158">", פעיל (מדיה)"</item>
+ <item msgid="4046665544396189228">", פעיל (טלפון)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"כבוי"</item>
<item msgid="1593289376502312923">"64K"</item>
diff --git a/packages/SettingsLib/res/values-kn/arrays.xml b/packages/SettingsLib/res/values-kn/arrays.xml
index a66af95..75d5dcb 100644
--- a/packages/SettingsLib/res/values-kn/arrays.xml
+++ b/packages/SettingsLib/res/values-kn/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"ಸಂಪರ್ಕ ಗುಣಮಟ್ಟಕ್ಕಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗಿದೆ"</item>
<item msgid="364670732877872677">"ಅತ್ಯುತ್ತಮ ಪ್ರಯತ್ನ (ಹೊಂದಿಸಬಹುದಾದ ಬಿಟ್ ಪ್ರಮಾಣ)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">"ಸಕ್ರಿಯ"</item>
+ <item msgid="8962366465966010158">", ಸಕ್ರಿಯ (ಮಾಧ್ಯಮ)"</item>
+ <item msgid="4046665544396189228">", ಸಕ್ರಿಯ (ಫೋನ್)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"ಆಫ್"</item>
<item msgid="1593289376502312923">"64K"</item>
diff --git a/packages/SettingsLib/res/values-ml/arrays.xml b/packages/SettingsLib/res/values-ml/arrays.xml
index 74689e3..3337913 100644
--- a/packages/SettingsLib/res/values-ml/arrays.xml
+++ b/packages/SettingsLib/res/values-ml/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"കണക്ഷൻ നിലവാരമുയർത്താൻ ഒപ്റ്റിമൈസ് ചെയ്തു"</item>
<item msgid="364670732877872677">"മികച്ച സംവിധാനം (അനുയോജ്യമായ ബിറ്റ് റേറ്റ്)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", സജീവം"</item>
+ <item msgid="8962366465966010158">", സജീവ (മീഡിയ)"</item>
+ <item msgid="4046665544396189228">", സജീവമായ (ഫോൺ)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"ഓഫ്"</item>
<item msgid="1593289376502312923">"64K"</item>
diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml
index 841e564..f5bf2ea 100644
--- a/packages/SettingsLib/res/values-mr/arrays.xml
+++ b/packages/SettingsLib/res/values-mr/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"कनेक्शन गुणवत्तेसाठी ऑप्टिमाइझ केले"</item>
<item msgid="364670732877872677">"सर्वोत्तम प्रयत्न (अनुकूल बिट रेट)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", अॅक्टिव्ह"</item>
+ <item msgid="8962366465966010158">", अॅक्टिव्ह (मीडिया)"</item>
+ <item msgid="4046665544396189228">", अॅक्टिव्ह (फोन)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"बंद"</item>
<item msgid="1593289376502312923">"64K"</item>
diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml
index 95a26d2..4ed55cc 100644
--- a/packages/SettingsLib/res/values-ne/arrays.xml
+++ b/packages/SettingsLib/res/values-ne/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"जडानको गुणस्तर सुधार्न अनुकूलन गरिएको"</item>
<item msgid="364670732877872677">"उत्कृष्ट प्रयास (अनुकूलनीय बिट दर)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", सक्रिय"</item>
+ <item msgid="8962366465966010158">", सक्रिय (मिडिया)"</item>
+ <item msgid="4046665544396189228">", सक्रिय (फोन)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"निष्क्रिय गर्नुहोस्"</item>
<item msgid="1593289376502312923">"६४के"</item>
diff --git a/packages/SettingsLib/res/values-or/arrays.xml b/packages/SettingsLib/res/values-or/arrays.xml
index 9da5d6e..18de8f9 100644
--- a/packages/SettingsLib/res/values-or/arrays.xml
+++ b/packages/SettingsLib/res/values-or/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"ସଂଯୋଗର ଗୁଣବତ୍ତା ପାଇଁ ଅନୁକୂଳିତ"</item>
<item msgid="364670732877872677">"ସର୍ବୋତ୍ତମ ପ୍ରୟାସ (ଅନୁକୂଳ ବିଟ୍ ରେଟ୍)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", ସକ୍ରିୟ"</item>
+ <item msgid="8962366465966010158">", ସକ୍ରିୟ (ମିଡିଆ)"</item>
+ <item msgid="4046665544396189228">", ସକ୍ରିୟ (ଫୋନ୍)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"ଅଫ୍"</item>
<item msgid="1593289376502312923">"64K"</item>
diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml
index 2b3b919..ddb40ce 100644
--- a/packages/SettingsLib/res/values-te/arrays.xml
+++ b/packages/SettingsLib/res/values-te/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"కనెక్షన్ నాణ్యత కోసం అనుకూలీకరించబడింది"</item>
<item msgid="364670732877872677">"ఉత్తమ కృషి (అనుకూల బిట్ రేట్)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">", సక్రియంగా ఉంది"</item>
+ <item msgid="8962366465966010158">", (మీడియా) సక్రియంగా ఉంది"</item>
+ <item msgid="4046665544396189228">", (ఫోన్) సక్రియంగా ఉంది"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"ఆఫ్"</item>
<item msgid="1593289376502312923">"64K"</item>
diff --git a/packages/SettingsLib/res/values-ur/arrays.xml b/packages/SettingsLib/res/values-ur/arrays.xml
index 6e2f904..c6eadd98 100644
--- a/packages/SettingsLib/res/values-ur/arrays.xml
+++ b/packages/SettingsLib/res/values-ur/arrays.xml
@@ -138,9 +138,12 @@
<item msgid="4681409244565426925">"کنکشن کے معیار کیلئے بہتر بنایا گيا"</item>
<item msgid="364670732877872677">"بہترین کوشش (اڈاپٹیو بٹ ریٹ)"</item>
</string-array>
- <!-- no translation found for bluetooth_audio_active_device_summaries:1 (6481691720774549651) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:2 (8962366465966010158) -->
- <!-- no translation found for bluetooth_audio_active_device_summaries:3 (4046665544396189228) -->
+ <string-array name="bluetooth_audio_active_device_summaries">
+ <item msgid="4862957058729193940"></item>
+ <item msgid="6481691720774549651">"، فعال"</item>
+ <item msgid="8962366465966010158">"، فعال (میڈیا)"</item>
+ <item msgid="4046665544396189228">"، فعال (فون)"</item>
+ </string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"آف"</item>
<item msgid="1593289376502312923">"64K"</item>
diff --git a/packages/SystemUI/res/drawable/ic_device_thermostat_24.xml b/packages/SystemUI/res/drawable/ic_device_thermostat_24.xml
index 1972f6e..90948dbc 100644
--- a/packages/SystemUI/res/drawable/ic_device_thermostat_24.xml
+++ b/packages/SystemUI/res/drawable/ic_device_thermostat_24.xml
@@ -21,5 +21,5 @@
android:tint="?attr/colorControlNormal">
<path
android:fillColor="#FFFFFFFF"
- android:pathData="M15,13L15,5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v8c-1.21,0.91 -2,2.37 -2,4 0,2.76 2.24,5 5,5s5,-2.24 5,-5c0,-1.63 -0.79,-3.09 -2,-4zM11,5c0,-0.55 0.45,-1 1,-1s1,0.45 1,1h-1v1h1v2h-1v1h1v2h-2L11,5z"/>
+ android:pathData="M18,9h-5v2h5M21,5h-8v2h8M12,18.97c0.62,-0.83 1,-1.85 1,-2.97c0,-1.63 -0.79,-3.09 -2,-4V6c0,-1.66 -1.34,-3 -3,-3C6.34,3 5,4.34 5,6v6c-1.21,0.91 -2,2.37 -2,4c0,1.12 0.38,2.14 1,2.97V19h0.02c0.91,1.21 2.35,2 3.98,2s3.06,-0.79 3.98,-2H12V18.97zM6.2,13.6L7,13v-1V6c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v6v1l0.8,0.6c0.75,0.57 1.2,1.46 1.2,2.4H5C5,15.06 5.45,14.16 6.2,13.6z"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/ic_mic_26dp.xml b/packages/SystemUI/res/drawable/ic_mic_26dp.xml
index 15c97b3..1160c90 100644
--- a/packages/SystemUI/res/drawable/ic_mic_26dp.xml
+++ b/packages/SystemUI/res/drawable/ic_mic_26dp.xml
@@ -20,5 +20,8 @@
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
- android:pathData="M12,14c1.66,0 2.99,-1.34 2.99,-3L15,5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v6c0,1.66 1.34,3 3,3zM18.08,11c-0.42,0 -0.77,0.3 -0.83,0.71 -0.37,2.61 -2.72,4.39 -5.25,4.39s-4.88,-1.77 -5.25,-4.39a0.839,0.839 0,0 0,-0.83 -0.71c-0.52,0 -0.92,0.46 -0.85,0.97 0.46,2.96 2.96,5.3 5.93,5.75v2.43c0,0.47 0.38,0.85 0.85,0.85h0.31c0.47,0 0.85,-0.38 0.85,-0.85v-2.43c2.96,-0.43 5.47,-2.78 5.93,-5.75a0.87,0.87 0,0 0,-0.86 -0.97z"/>
+ android:pathData="M12,14c1.66,0 3,-1.34 3,-3V5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v6C9,12.66 10.34,14 12,14zM11,5c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v6c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1V5z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M17,11c0,2.76 -2.24,5 -5,5s-5,-2.24 -5,-5H5c0,3.53 2.61,6.43 6,6.92V21h2v-3.08c3.39,-0.49 6,-3.39 6,-6.92H17z"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/ic_person.xml b/packages/SystemUI/res/drawable/ic_person.xml
index 101911f..1ee9401 100644
--- a/packages/SystemUI/res/drawable/ic_person.xml
+++ b/packages/SystemUI/res/drawable/ic_person.xml
@@ -16,9 +16,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24.0dp"
android:height="24.0dp"
- android:viewportWidth="48.0"
- android:viewportHeight="48.0">
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
<path
- android:fillColor="#ffffffff"
- android:pathData="M24 24c4.42 0 8,-3.59 8,-8 0,-4.42,-3.58,-8,-8,-8s-8 3.58,-8 8c0 4.41 3.58 8 8 8zm0 4c-5.33 0,-16 2.67,-16 8v4h32v-4c0,-5.33,-10.67,-8,-16,-8z"/>
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M12,6c1.1,0 2,0.9 2,2s-0.9,2 -2,2s-2,-0.9 -2,-2S10.9,6 12,6M12,15c2.7,0 5.8,1.29 6,2v1H6l0,-0.99C6.2,16.29 9.3,15 12,15M12,4C9.79,4 8,5.79 8,8s1.79,4 4,4s4,-1.79 4,-4S14.21,4 12,4L12,4zM12,13c-2.67,0 -8,1.34 -8,4v3h16v-3C20,14.34 14.67,13 12,13L12,13z"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_branded_vpn.xml b/packages/SystemUI/res/drawable/ic_qs_branded_vpn.xml
index 736a04a..b20e158 100644
--- a/packages/SystemUI/res/drawable/ic_qs_branded_vpn.xml
+++ b/packages/SystemUI/res/drawable/ic_qs_branded_vpn.xml
@@ -20,5 +20,8 @@
android:viewportHeight="24.0">
<path
android:fillColor="#4DFFFFFF"
- android:pathData="M12.700000,10.000000c-0.800000,-2.300000 -3.000000,-4.000000 -5.700000,-4.000000c-3.300000,0.000000 -6.000000,2.700000 -6.000000,6.000000s2.700000,6.000000 6.000000,6.000000c2.600000,0.000000 4.800000,-1.700000 5.700000,-4.000000L17.000000,14.000000l0.000000,4.000000l4.000000,0.000000l0.000000,-4.000000l2.000000,0.000000l0.000000,-4.000000L12.700000,10.000000zM7.000000,14.000000c-1.100000,0.000000 -2.000000,-0.900000 -2.000000,-2.000000c0.000000,-1.100000 0.900000,-2.000000 2.000000,-2.000000s2.000000,0.900000 2.000000,2.000000C9.000000,13.100000 8.100000,14.000000 7.000000,14.000000z"/>
+ android:pathData="M12.09,9C11.11,7.5 9.43,6.5 7.5,6.5C4.46,6.5 2,8.96 2,12c0,3.04 2.46,5.5 5.5,5.5c1.93,0 3.61,-1 4.59,-2.5H14v3h6v-3h2V9H12.09zM20,13h-2v3h-2v-3h-5.16c-0.43,1.44 -1.76,2.5 -3.34,2.5C5.57,15.5 4,13.93 4,12c0,-1.93 1.57,-3.5 3.5,-3.5c1.58,0 2.9,1.06 3.34,2.5H20V13z"/>
+ <path
+ android:fillColor="#4DFFFFFF"
+ android:pathData="M7.5,12m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_no_sim.xml b/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
index 5dcd9f7..22e12cc 100644
--- a/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
+++ b/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
@@ -16,14 +16,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
- android:viewportWidth="18.4"
- android:viewportHeight="18.4">
-
- <group
- android:translateX="0.7"
- android:translateY="1.0">
- <path
- android:fillColor="#FFFFFFFF"
- android:pathData="M13.91,11.84L5.14,3.08l1.81,-1.81h5.41c0.85,0 1.54,0.69 1.54,1.54l0.01,9.03zM15.06,14.95L2.54,2.44c-0.28,-0.28 -0.71,-0.28 -0.99,0s-0.28,0.71 0,0.98l1.53,1.53v8.67c0,0.85 0.69,1.54 1.54,1.54h7.74c0.27,0 0.52,-0.07 0.74,-0.2l0.96,0.96c0.28,0.28 0.71,0.28 0.99,0 0.28,-0.26 0.28,-0.69 0.01,-0.97z"/>
- </group>
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M10.84,5H17v9.11l2,2V5c0,-1.1 -0.9,-2 -2,-2h-6.99L7.95,5.06l1.41,1.41L10.84,5z"/>
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M2.81,2.81L1.39,4.22L5,7.83V19c0,1.1 0.9,2 2,2h10c0.34,0 0.65,-0.1 0.93,-0.24l1.85,1.85l1.41,-1.41L2.81,2.81zM7,19V9.83L16.17,19H7z"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_vpn.xml b/packages/SystemUI/res/drawable/ic_qs_vpn.xml
index cf24e12..6567d12 100644
--- a/packages/SystemUI/res/drawable/ic_qs_vpn.xml
+++ b/packages/SystemUI/res/drawable/ic_qs_vpn.xml
@@ -20,5 +20,8 @@
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
- android:pathData="M12.700000,10.000000c-0.800000,-2.300000 -3.000000,-4.000000 -5.700000,-4.000000c-3.300000,0.000000 -6.000000,2.700000 -6.000000,6.000000s2.700000,6.000000 6.000000,6.000000c2.600000,0.000000 4.800000,-1.700000 5.700000,-4.000000L17.000000,14.000000l0.000000,4.000000l4.000000,0.000000l0.000000,-4.000000l2.000000,0.000000l0.000000,-4.000000L12.700000,10.000000zM7.000000,14.000000c-1.100000,0.000000 -2.000000,-0.900000 -2.000000,-2.000000c0.000000,-1.100000 0.900000,-2.000000 2.000000,-2.000000s2.000000,0.900000 2.000000,2.000000C9.000000,13.100000 8.100000,14.000000 7.000000,14.000000z"/>
+ android:pathData="M12.09,9C11.11,7.5 9.43,6.5 7.5,6.5C4.46,6.5 2,8.96 2,12c0,3.04 2.46,5.5 5.5,5.5c1.93,0 3.61,-1 4.59,-2.5H14v3h6v-3h2V9H12.09zM20,13h-2v3h-2v-3h-5.16c-0.43,1.44 -1.76,2.5 -3.34,2.5C5.57,15.5 4,13.93 4,12c0,-1.93 1.57,-3.5 3.5,-3.5c1.58,0 2.9,1.06 3.34,2.5H20V13z"/>
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M7.5,12m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/ic_sim.xml b/packages/SystemUI/res/drawable/ic_sim.xml
index 983c1d0..a9a1902 100644
--- a/packages/SystemUI/res/drawable/ic_sim.xml
+++ b/packages/SystemUI/res/drawable/ic_sim.xml
@@ -19,9 +19,24 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
- android:pathData="M0 0h24v24H0z"
- android:fillColor="#00000000"/>
+ android:fillColor="#FF000000"
+ android:pathData="M18,2h-8L4,8v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4C20,2.9 19.1,2 18,2zM18,4v16H6V8.83L10.83,4L18,4L18,4z"/>
<path
android:fillColor="#FF000000"
- android:pathData="M18.0,2.0l-8.0,0.0L4.02,8.0 4.0,20.0c0.0,1.0 0.9,2.0 2.0,2.0l12.0,0.0c1.1,0.0 2.0,-0.9 2.0,-2.0L20.0,4.0c0.0,-1.1 -0.9,-2.0 -2.0,-2.0z"/>
+ android:pathData="M7,17h2v2h-2z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M15,17h2v2h-2z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M7,11h2v4h-2z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M11,15h2v4h-2z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M11,11h2v2h-2z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M15,11h2v4h-2z"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_branded_vpn.xml b/packages/SystemUI/res/drawable/stat_sys_branded_vpn.xml
index a86e5b9..bfae857 100644
--- a/packages/SystemUI/res/drawable/stat_sys_branded_vpn.xml
+++ b/packages/SystemUI/res/drawable/stat_sys_branded_vpn.xml
@@ -20,5 +20,8 @@
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
- android:pathData="M12.700000,10.000000c-0.800000,-2.300000 -3.000000,-4.000000 -5.700000,-4.000000c-3.300000,0.000000 -6.000000,2.700000 -6.000000,6.000000s2.700000,6.000000 6.000000,6.000000c2.600000,0.000000 4.800000,-1.700000 5.700000,-4.000000L17.000000,14.000000l0.000000,4.000000l4.000000,0.000000l0.000000,-4.000000l2.000000,0.000000l0.000000,-4.000000L12.700000,10.000000zM7.000000,14.000000c-1.100000,0.000000 -2.000000,-0.900000 -2.000000,-2.000000c0.000000,-1.100000 0.900000,-2.000000 2.000000,-2.000000s2.000000,0.900000 2.000000,2.000000C9.000000,13.100000 8.100000,14.000000 7.000000,14.000000z"/>
+ android:pathData="M12.09,9C11.11,7.5 9.43,6.5 7.5,6.5C4.46,6.5 2,8.96 2,12c0,3.04 2.46,5.5 5.5,5.5c1.93,0 3.61,-1 4.59,-2.5H14v3h6v-3h2V9H12.09zM20,13h-2v3h-2v-3h-5.16c-0.43,1.44 -1.76,2.5 -3.34,2.5C5.57,15.5 4,13.93 4,12c0,-1.93 1.57,-3.5 3.5,-3.5c1.58,0 2.9,1.06 3.34,2.5H20V13z"/>
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M7.5,12m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_no_sims.xml b/packages/SystemUI/res/drawable/stat_sys_no_sims.xml
index faea7d1..5c9be5c 100644
--- a/packages/SystemUI/res/drawable/stat_sys_no_sims.xml
+++ b/packages/SystemUI/res/drawable/stat_sys_no_sims.xml
@@ -19,13 +19,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="17dp"
android:height="17dp"
- android:viewportWidth="18.4"
- android:viewportHeight="18.4">
- <group
- android:translateX="0.7"
- android:translateY="1.0">
- <path
- android:pathData="M13.91,11.84L5.14,3.08l1.81,-1.81h5.41c0.85,0 1.54,0.69 1.54,1.54l0.01,9.03zM15.06,14.95L2.54,2.44c-0.28,-0.28 -0.71,-0.28 -0.99,0s-0.28,0.71 0,0.98l1.53,1.53v8.67c0,0.85 0.69,1.54 1.54,1.54h7.74c0.27,0 0.52,-0.07 0.74,-0.2l0.96,0.96c0.28,0.28 0.71,0.28 0.99,0 0.28,-0.26 0.28,-0.69 0.01,-0.97z"
- android:fillColor="?attr/backgroundColor"/>
- </group>
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M12.09,9C11.11,7.5 9.43,6.5 7.5,6.5C4.46,6.5 2,8.96 2,12c0,3.04 2.46,5.5 5.5,5.5c1.93,0 3.61,-1 4.59,-2.5H14v3h6v-3h2V9H12.09zM20,13h-2v3h-2v-3h-5.16c-0.43,1.44 -1.76,2.5 -3.34,2.5C5.57,15.5 4,13.93 4,12c0,-1.93 1.57,-3.5 3.5,-3.5c1.58,0 2.9,1.06 3.34,2.5H20V13z"/>
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M7.5,12m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_vpn_ic.xml b/packages/SystemUI/res/drawable/stat_sys_vpn_ic.xml
index 66f4fbb..5c9be5c 100644
--- a/packages/SystemUI/res/drawable/stat_sys_vpn_ic.xml
+++ b/packages/SystemUI/res/drawable/stat_sys_vpn_ic.xml
@@ -19,13 +19,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="17dp"
android:height="17dp"
- android:viewportWidth="19.0"
- android:viewportHeight="19.0">
- <group
- android:translateX="1.0"
- android:translateY="1.0">
- <path
- android:pathData="M15.46,6.96H9a4.637,4.637 0,0 0,-4.37 -3.09C2.07,3.87 0,5.94 0,8.5s2.07,4.63 4.63,4.63c2.02,0 3.73,-1.29 4.37,-3.09h2.2v1.54a1.54,1.54 0,0 0,3.08 0v-1.54h1.16c0.87,0 1.56,-0.69 1.56,-1.54s-0.69,-1.54 -1.54,-1.54zM4.63,10.04a1.54,1.54 0,1 1,0.001 -3.081,1.54 1.54,0 0,1 -0.001,3.081z"
- android:fillColor="#FFF"/>
- </group>
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M12.09,9C11.11,7.5 9.43,6.5 7.5,6.5C4.46,6.5 2,8.96 2,12c0,3.04 2.46,5.5 5.5,5.5c1.93,0 3.61,-1 4.59,-2.5H14v3h6v-3h2V9H12.09zM20,13h-2v3h-2v-3h-5.16c-0.43,1.44 -1.76,2.5 -3.34,2.5C5.57,15.5 4,13.93 4,12c0,-1.93 1.57,-3.5 3.5,-3.5c1.58,0 2.9,1.06 3.34,2.5H20V13z"/>
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M7.5,12m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
index 2b7ab10..e52829a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
@@ -300,9 +300,11 @@
private void saveImportance() {
if (!mIsNonblockable) {
- // Only go through the lock screen/bouncer if the user didn't hit 'Keep showing'.
+ // Only go through the lock screen/bouncer if the user hit 'Stop notifications'.
+ // Otherwise, update the importance immediately.
if (mCheckSaveListener != null
- && !NotificationCounters.BLOCKING_HELPER_KEEP_SHOWING.equals(mExitReason)) {
+ && NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS.equals(
+ mExitReason)) {
mCheckSaveListener.checkSave(this::updateImportance, mSbn);
} else {
updateImportance();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java
index 04c500f..d6bef12 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java
@@ -88,6 +88,17 @@
super(context, attrs, defStyleAttr, defStyleRes);
}
+ @Override
+ public void getDrawingRect(Rect outRect) {
+ super.getDrawingRect(outRect);
+ float translationX = getTranslationX();
+ float translationY = getTranslationY();
+ outRect.left += translationX;
+ outRect.right += translationX;
+ outRect.top += translationY;
+ outRect.bottom += translationY;
+ }
+
private void init() {
mMobileGroup = findViewById(R.id.mobile_group);
mMobile = findViewById(R.id.mobile_signal);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java
index ca00a5a..59a0adc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java
@@ -151,6 +151,17 @@
return mVisibleState;
}
+ @Override
+ public void getDrawingRect(Rect outRect) {
+ super.getDrawingRect(outRect);
+ float translationX = getTranslationX();
+ float translationY = getTranslationY();
+ outRect.left += translationX;
+ outRect.right += translationX;
+ outRect.top += translationY;
+ outRect.bottom += translationY;
+ }
+
private void init() {
int dualToneLightTheme = Utils.getThemeAttr(mContext, R.attr.lightIconTheme);
int dualToneDarkTheme = Utils.getThemeAttr(mContext, R.attr.darkIconTheme);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java
index d040f7c..ba265d8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java
@@ -18,13 +18,13 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
-import android.car.user.CarUserManagerHelper;
import android.content.Context;
import android.view.View;
import android.view.ViewStub;
import android.support.v7.widget.GridLayoutManager;
+import com.android.settingslib.users.UserManagerHelper;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.StatusBar;
@@ -37,7 +37,7 @@
private final UserGridRecyclerView mUserGridView;
private final int mShortAnimDuration;
private final StatusBar mStatusBar;
- private final CarUserManagerHelper mCarUserManagerHelper;
+ private final UserManagerHelper mUserManagerHelper;
private int mCurrentForegroundUserId;
private boolean mShowing;
@@ -52,7 +52,7 @@
mUserGridView.buildAdapter();
mUserGridView.setUserSelectionListener(this::onUserSelected);
- mCarUserManagerHelper = new CarUserManagerHelper(context);
+ mUserManagerHelper = new UserManagerHelper(context);
updateCurrentForegroundUser();
mShortAnimDuration = mContainer.getResources()
@@ -84,11 +84,11 @@
}
private boolean foregroundUserChanged() {
- return mCurrentForegroundUserId != mCarUserManagerHelper.getCurrentForegroundUserId();
+ return mCurrentForegroundUserId != mUserManagerHelper.getForegroundUserId();
}
private void updateCurrentForegroundUser() {
- mCurrentForegroundUserId = mCarUserManagerHelper.getCurrentForegroundUserId();
+ mCurrentForegroundUserId = mUserManagerHelper.getForegroundUserId();
}
private void onUserSelected(UserGridRecyclerView.UserRecord record) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
index dda25ec..92dd060 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
@@ -21,7 +21,6 @@
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
-import android.car.user.CarUserManagerHelper;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.UserInfo;
@@ -42,6 +41,7 @@
import androidx.car.widget.PagedListView;
import com.android.internal.util.UserIcons;
+import com.android.settingslib.users.UserManagerHelper;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.SystemUIDialog;
@@ -53,16 +53,16 @@
* One of the uses of this is for the lock screen in auto.
*/
public class UserGridRecyclerView extends PagedListView implements
- CarUserManagerHelper.OnUsersUpdateListener {
+ UserManagerHelper.OnUsersUpdateListener {
private UserSelectionListener mUserSelectionListener;
private UserAdapter mAdapter;
- private CarUserManagerHelper mCarUserManagerHelper;
+ private UserManagerHelper mUserManagerHelper;
private Context mContext;
public UserGridRecyclerView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
- mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+ mUserManagerHelper = new UserManagerHelper(mContext);
}
/**
@@ -71,7 +71,7 @@
@Override
public void onFinishInflate() {
super.onFinishInflate();
- mCarUserManagerHelper.registerOnUsersUpdateListener(this);
+ mUserManagerHelper.registerOnUsersUpdateListener(this);
}
/**
@@ -80,7 +80,7 @@
@Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
- mCarUserManagerHelper.unregisterOnUsersUpdateListener();
+ mUserManagerHelper.unregisterOnUsersUpdateListener();
}
/**
@@ -89,8 +89,8 @@
* @return the adapter
*/
public void buildAdapter() {
- List<UserRecord> userRecords = createUserRecords(mCarUserManagerHelper
- .getAllUsers());
+ List<UserRecord> userRecords = createUserRecords(mUserManagerHelper
+ .getAllUsersExcludesSystemUser());
mAdapter = new UserAdapter(mContext, userRecords);
super.setAdapter(mAdapter);
}
@@ -103,19 +103,19 @@
continue;
}
boolean isForeground =
- mCarUserManagerHelper.getCurrentForegroundUserId() == userInfo.id;
+ mUserManagerHelper.getForegroundUserId() == userInfo.id;
UserRecord record = new UserRecord(userInfo, false /* isStartGuestSession */,
false /* isAddUser */, isForeground);
userRecords.add(record);
}
// Add guest user record if the foreground user is not a guest
- if (!mCarUserManagerHelper.isForegroundUserGuest()) {
+ if (!mUserManagerHelper.foregroundUserIsGuestUser()) {
userRecords.add(addGuestUserRecord());
}
// Add add user record if the foreground user can add users
- if (mCarUserManagerHelper.canForegroundUserAddUsers()) {
+ if (mUserManagerHelper.foregroundUserCanAddUsers()) {
userRecords.add(addUserRecord());
}
@@ -149,7 +149,7 @@
@Override
public void onUsersUpdate() {
mAdapter.clearUsers();
- mAdapter.updateUsers(createUserRecords(mCarUserManagerHelper.getAllUsers()));
+ mAdapter.updateUsers(createUserRecords(mUserManagerHelper.getAllUsersExcludesSystemUser()));
mAdapter.notifyDataSetChanged();
}
@@ -213,7 +213,7 @@
// If the user selects Guest, start the guest session.
if (userRecord.mIsStartGuestSession) {
- mCarUserManagerHelper.startNewGuestSession(mGuestName);
+ mUserManagerHelper.startNewGuestSession(mGuestName);
return;
}
@@ -240,14 +240,14 @@
return;
}
// If the user doesn't want to be a guest or add a user, switch to the user selected
- mCarUserManagerHelper.switchToUser(userRecord.mInfo);
+ mUserManagerHelper.switchToUser(userRecord.mInfo);
});
}
private Bitmap getUserRecordIcon(UserRecord userRecord) {
if (userRecord.mIsStartGuestSession) {
- return mCarUserManagerHelper.getGuestDefaultIcon();
+ return mUserManagerHelper.getGuestDefaultIcon();
}
if (userRecord.mIsAddUser) {
@@ -255,7 +255,7 @@
.getDrawable(R.drawable.car_add_circle_round));
}
- return mCarUserManagerHelper.getUserIcon(userRecord.mInfo);
+ return mUserManagerHelper.getUserIcon(userRecord.mInfo);
}
@Override
@@ -273,10 +273,7 @@
@Override
protected UserInfo doInBackground(String... userNames) {
- // Default to create a non admin user for now. Need to add logic
- // for user to choose whether they want to create an admin or non-admin
- // user later.
- return mCarUserManagerHelper.createNewNonAdminUser(userNames[0]);
+ return mUserManagerHelper.createNewUser(userNames[0]);
}
@Override
@@ -286,7 +283,7 @@
@Override
protected void onPostExecute(UserInfo user) {
if (user != null) {
- mCarUserManagerHelper.switchToUser(user);
+ mUserManagerHelper.switchToUser(user);
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 1b658b8..93e9cdf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -2090,7 +2090,8 @@
* @param animate should the change of the icons be animated.
*/
private void updateHideIconsForBouncer(boolean animate) {
- boolean hideBecauseApp = mTopHidesStatusBar && mIsOccluded && mStatusBarWindowHidden;
+ boolean hideBecauseApp = mTopHidesStatusBar && mIsOccluded
+ && (mStatusBarWindowHidden || mBouncerShowing);
boolean hideBecauseKeyguard = !mPanelExpanded && !mIsOccluded && mBouncerShowing;
boolean shouldHideIconsForBouncer = hideBecauseApp || hideBecauseKeyguard;
if (mHideIconsForBouncer != shouldHideIconsForBouncer) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
index 91a4b07..db3f0d9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/AmbientState.java
@@ -30,7 +30,6 @@
import com.android.systemui.statusbar.policy.HeadsUpManager;
import java.util.ArrayList;
-import java.util.Collection;
/**
* A global state to track all input states for the algorithm.
@@ -72,6 +71,7 @@
private ExpandableNotificationRow mExpandingNotification;
private int mDarkTopPadding;
private float mDarkAmount;
+ private boolean mAppearing;
public AmbientState(Context context) {
reload(context);
@@ -436,4 +436,12 @@
public int getDarkTopPadding() {
return mDarkTopPadding;
}
+
+ public void setAppearing(boolean appearing) {
+ mAppearing = appearing;
+ }
+
+ public boolean isAppearing() {
+ return mAppearing;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index bd56d79..a2b33fa 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -885,7 +885,9 @@
float appearEndPosition = getAppearEndPosition();
float appearStartPosition = getAppearStartPosition();
float appearFraction = 1.0f;
- if (height >= appearEndPosition) {
+ boolean appearing = height < appearEndPosition;
+ mAmbientState.setAppearing(appearing);
+ if (!appearing) {
translationY = 0;
if (mShouldShowShelfOnly) {
stackHeight = mTopPadding + mShelf.getIntrinsicHeight();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
index 85f33d7..0d50f5a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
@@ -478,22 +478,6 @@
childState.hidden = false;
}
}
- // Let's hide all the views if we are not expanded. the views might otherwise be visible
- // in the headsup area if a view was swiped away
- if (!mIsExpanded) {
- for (int i = 0; i < childCount; i++) {
- boolean visible = false;
- View child = algorithmState.visibleChildren.get(i);
- if (child instanceof ExpandableNotificationRow) {
- ExpandableNotificationRow row = (ExpandableNotificationRow) child;
- visible = row.isHeadsUp() || row.isHeadsUpAnimatingAway();
- }
- if (!visible) {
- ExpandableViewState childState = resultState.getViewStateForView(child);
- childState.hidden = true;
- }
- }
- }
}
private void clampHunToTop(AmbientState ambientState, ExpandableNotificationRow row,
@@ -536,6 +520,10 @@
int shelfStart = ambientState.getInnerHeight()
- ambientState.getShelf().getIntrinsicHeight();
+ if (ambientState.isAppearing() && !child.isAboveShelf()) {
+ // Don't show none heads-up notifications while in appearing phase.
+ childViewState.yTranslation = Math.max(childViewState.yTranslation, shelfStart);
+ }
childViewState.yTranslation = Math.min(childViewState.yTranslation, shelfStart);
if (childViewState.yTranslation >= shelfStart) {
childViewState.hidden = !child.isExpandAnimationRunning() && !child.hasExpandingChild();
diff --git a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
index d527465..2f8dfdc 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
@@ -640,7 +640,7 @@
}
private PendingIntent buildBrowsePendingIntent(VolumeInfo vol) {
- final Intent intent = vol.buildBrowseIntent();
+ final Intent intent = vol.buildBrowseIntentForUser(vol.getMountUserId());
final int requestKey = vol.getId().hashCode();
return PendingIntent.getActivityAsUser(mContext, requestKey, intent,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java
index bdeb8bc..a72fed4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java
@@ -508,7 +508,6 @@
anyString(), eq(TEST_UID), eq(true));
}
-
@Test
public void testCloseControls_nonNullCheckSaveListenerDoesntDelayKeepShowing()
throws Exception {
@@ -537,6 +536,43 @@
anyString(), eq(TEST_UID), eq(true));
}
+ @Test
+ public void testCloseControls_nonNullCheckSaveListenerDoesntDelayDismiss()
+ throws Exception {
+ NotificationInfo.CheckSaveListener listener =
+ mock(NotificationInfo.CheckSaveListener.class);
+ mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
+ TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
+ 10 /* numUniqueChannelsInRow */, mSbn, listener /* checkSaveListener */,
+ null /* onSettingsClick */, null /* onAppSettingsClick */ ,
+ false /* isNonblockable */, true /* isForBlockingHelper */,
+ true /* isUserSentimentNegative */);
+
+ mNotificationInfo.handleCloseControls(true /* save */, false /* force */);
+
+ mTestableLooper.processAllMessages();
+ verify(listener, times(0)).checkSave(any(Runnable.class), eq(mSbn));
+ }
+
+ @Test
+ public void testCloseControls_checkSaveListenerDelaysStopNotifications()
+ throws Exception {
+ NotificationInfo.CheckSaveListener listener =
+ mock(NotificationInfo.CheckSaveListener.class);
+ mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
+ TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
+ 10 /* numUniqueChannelsInRow */, mSbn, listener /* checkSaveListener */,
+ null /* onSettingsClick */, null /* onAppSettingsClick */ ,
+ false /* isNonblockable */, true /* isForBlockingHelper */,
+ true /* isUserSentimentNegative */);
+
+ mNotificationInfo.findViewById(R.id.block).performClick();
+ waitForUndoButton();
+ mNotificationInfo.handleCloseControls(true /* save */, false /* force */);
+
+ mTestableLooper.processAllMessages();
+ verify(listener).checkSave(any(Runnable.class), eq(mSbn));
+ }
@Test
public void testCloseControls_blockingHelperDismissedIfShown() throws Exception {
diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto
index 9ff8e7d..bf9ccb8 100644
--- a/proto/src/wifi.proto
+++ b/proto/src/wifi.proto
@@ -453,6 +453,10 @@
// Number of times the firmware picked a SoftAp channel not satisfying user band preference.
optional int32 num_soft_ap_user_band_preference_unsatisfied = 116;
+
+ // Identifier for experimental scoring parameter settings.
+ optional string score_experiment_id = 117;
+
}
// Information that gets logged for every WiFi connection.
diff --git a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
index fa2a0d9..a5311b2 100644
--- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
@@ -53,7 +53,6 @@
import android.view.autofill.AutofillManager;
import android.widget.ImageView;
import android.widget.RemoteViews;
-import android.widget.ScrollView;
import android.widget.TextView;
import com.android.internal.R;
@@ -208,7 +207,7 @@
mSubTitle = info.getDescription();
if (mSubTitle != null) {
writeLog(MetricsEvent.AUTOFILL_SAVE_CUSTOM_SUBTITLE, type);
- final ScrollView subtitleContainer =
+ final ViewGroup subtitleContainer =
view.findViewById(R.id.autofill_save_custom_subtitle);
final TextView subtitleView = new TextView(context);
subtitleView.setText(mSubTitle);
@@ -361,7 +360,7 @@
}
// Finally, add the custom description to the save UI.
- final ScrollView subtitleContainer =
+ final ViewGroup subtitleContainer =
saveUiView.findViewById(R.id.autofill_save_custom_subtitle);
subtitleContainer.addView(customSubtitleView);
subtitleContainer.setVisibility(View.VISIBLE);
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 73710d3..d64b429 100644
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -1077,6 +1077,11 @@
// System process can launch home activity.
return true;
}
+ // Allow the recents component to launch the home activity.
+ final RecentTasks recentTasks = mStackSupervisor.mService.getRecentTasks();
+ if (recentTasks != null && recentTasks.isCallerRecents(uid)) {
+ return true;
+ }
// Resolver activity can launch home activity.
return sourceRecord != null && sourceRecord.isResolverActivity();
}
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 3c66526..99412c5 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -489,6 +489,7 @@
mTemporaryScreenBrightness = -1;
mPendingScreenBrightnessSetting = -1;
mTemporaryAutoBrightnessAdjustment = Float.NaN;
+ mPendingAutoBrightnessAdjustment = Float.NaN;
}
/**
@@ -1499,6 +1500,7 @@
return false;
}
if (mAutoBrightnessAdjustment == mPendingAutoBrightnessAdjustment) {
+ mPendingAutoBrightnessAdjustment = Float.NaN;
return false;
}
mAutoBrightnessAdjustment = mPendingAutoBrightnessAdjustment;
diff --git a/services/core/java/com/android/server/slice/SliceManagerService.java b/services/core/java/com/android/server/slice/SliceManagerService.java
index 2621c50..c3b9841 100644
--- a/services/core/java/com/android/server/slice/SliceManagerService.java
+++ b/services/core/java/com/android/server/slice/SliceManagerService.java
@@ -55,6 +55,7 @@
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.Slog;
+import android.util.SparseArray;
import android.util.Xml.Encoding;
import com.android.internal.annotations.GuardedBy;
@@ -77,6 +78,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.function.Supplier;
public class SliceManagerService extends ISliceManager.Stub {
@@ -90,6 +92,10 @@
@GuardedBy("mLock")
private final ArrayMap<Uri, PinnedSliceState> mPinnedSlicesByUri = new ArrayMap<>();
+ @GuardedBy("mLock")
+ private final SparseArray<PackageMatchingCache> mAssistantLookup = new SparseArray<>();
+ @GuardedBy("mLock")
+ private final SparseArray<PackageMatchingCache> mHomeLookup = new SparseArray<>();
private final Handler mHandler;
private final SlicePermissionManager mPermissions;
@@ -453,17 +459,37 @@
}
private boolean isAssistant(String pkg, int userId) {
- final ComponentName cn = mAssistUtils.getAssistComponentForUser(userId);
- if (cn == null) {
- return false;
- }
- return cn.getPackageName().equals(pkg);
+ return getAssistantMatcher(userId).matches(pkg);
}
private boolean isDefaultHomeApp(String pkg, int userId) {
- String defaultHome = getDefaultHome(userId);
+ return getHomeMatcher(userId).matches(pkg);
+ }
- return pkg != null && Objects.equals(pkg, defaultHome);
+ private PackageMatchingCache getAssistantMatcher(int userId) {
+ PackageMatchingCache matcher = mAssistantLookup.get(userId);
+ if (matcher == null) {
+ matcher = new PackageMatchingCache(() -> getAssistant(userId));
+ mAssistantLookup.put(userId, matcher);
+ }
+ return matcher;
+ }
+
+ private PackageMatchingCache getHomeMatcher(int userId) {
+ PackageMatchingCache matcher = mHomeLookup.get(userId);
+ if (matcher == null) {
+ matcher = new PackageMatchingCache(() -> getDefaultHome(userId));
+ mHomeLookup.put(userId, matcher);
+ }
+ return matcher;
+ }
+
+ private String getAssistant(int userId) {
+ final ComponentName cn = mAssistUtils.getAssistComponentForUser(userId);
+ if (cn == null) {
+ return null;
+ }
+ return cn.getPackageName();
}
// Based on getDefaultHome in ShortcutService.
@@ -559,6 +585,30 @@
return mPermissions.getAllPackagesGranted(pkg);
}
+ /**
+ * Holder that caches a package that has access to a slice.
+ */
+ static class PackageMatchingCache {
+
+ private final Supplier<String> mPkgSource;
+ private String mCurrentPkg;
+
+ public PackageMatchingCache(Supplier<String> pkgSource) {
+ mPkgSource = pkgSource;
+ }
+
+ public boolean matches(String pkgCandidate) {
+ if (pkgCandidate == null) return false;
+
+ if (Objects.equals(pkgCandidate, mCurrentPkg)) {
+ return true;
+ }
+ // Failed on cached value, try updating.
+ mCurrentPkg = mPkgSource.get();
+ return Objects.equals(pkgCandidate, mCurrentPkg);
+ }
+ }
+
public static class Lifecycle extends SystemService {
private SliceManagerService mService;
diff --git a/services/core/java/com/android/server/updates/ApnDbInstallReceiver.java b/services/core/java/com/android/server/updates/ApnDbInstallReceiver.java
index 3b6f9d6..8d53143 100644
--- a/services/core/java/com/android/server/updates/ApnDbInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/ApnDbInstallReceiver.java
@@ -29,7 +29,7 @@
"update_db");
public ApnDbInstallReceiver() {
- super("/data/misc/", "apns-conf.xml", "metadata/", "version");
+ super("/data/misc/apns/", "apns-conf.xml", "metadata/", "version");
}
@Override
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index a7c203d..2886126 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -51,6 +51,7 @@
import android.content.pm.ServiceInfo;
import android.content.pm.UserInfo;
import android.content.res.Resources;
+import android.database.ContentObserver;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapRegionDecoder;
@@ -75,6 +76,7 @@
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.Settings;
import android.service.wallpaper.IWallpaperConnection;
import android.service.wallpaper.IWallpaperEngine;
import android.service.wallpaper.IWallpaperService;
@@ -336,6 +338,102 @@
}
}
+ /**
+ * Observes changes of theme settings. It will check whether to call
+ * notifyWallpaperColorsChanged by the current theme and updated theme.
+ * The light theme and dark theme are controlled by the hint values in Wallpaper colors,
+ * threrfore, if light theme mode is chosen, HINT_SUPPORTS_DARK_THEME in hint will be
+ * removed and then notify listeners.
+ */
+ private class ThemeSettingsObserver extends ContentObserver {
+
+ public ThemeSettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ public void startObserving(Context context) {
+ context.getContentResolver().registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.THEME_MODE),
+ false,
+ this);
+ }
+
+ public void stopObserving(Context context) {
+ context.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ onThemeSettingsChanged();
+ }
+ }
+
+ /**
+ * Check whether to call notifyWallpaperColorsChanged. Assumed that the theme mode
+ * was wallpaper theme mode and dark wallpaper was set, therefoe, the theme was dark.
+ * Then theme mode changing to dark theme mode, however, theme should not update since
+ * theme was dark already.
+ */
+ private boolean needUpdateLocked(WallpaperColors colors, int themeMode) {
+ if (colors == null) {
+ return false;
+ }
+
+ if (themeMode == mThemeMode) {
+ return false;
+ }
+
+ boolean result = true;
+ boolean supportDarkTheme =
+ (colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0;
+ switch (themeMode) {
+ case Settings.Secure.THEME_MODE_WALLPAPER:
+ if (mThemeMode == Settings.Secure.THEME_MODE_LIGHT) {
+ result = supportDarkTheme;
+ } else {
+ result = !supportDarkTheme;
+ }
+ break;
+ case Settings.Secure.THEME_MODE_LIGHT:
+ if (mThemeMode == Settings.Secure.THEME_MODE_WALLPAPER) {
+ result = supportDarkTheme;
+ }
+ break;
+ case Settings.Secure.THEME_MODE_DARK:
+ if (mThemeMode == Settings.Secure.THEME_MODE_WALLPAPER) {
+ result = !supportDarkTheme;
+ }
+ break;
+ default:
+ Slog.w(TAG, "unkonwn theme mode " + themeMode);
+ return false;
+ }
+ mThemeMode = themeMode;
+ return result;
+ }
+
+ void onThemeSettingsChanged() {
+ WallpaperData wallpaper;
+ synchronized (mLock) {
+ wallpaper = mWallpaperMap.get(mCurrentUserId);
+ int updatedThemeMode = Settings.Secure.getInt(
+ mContext.getContentResolver(), Settings.Secure.THEME_MODE,
+ Settings.Secure.THEME_MODE_WALLPAPER);
+
+ if (DEBUG) {
+ Slog.v(TAG, "onThemeSettingsChanged, mode = " + updatedThemeMode);
+ }
+
+ if (!needUpdateLocked(wallpaper.primaryColors, updatedThemeMode)) {
+ return;
+ }
+ }
+
+ if (wallpaper != null) {
+ notifyWallpaperColorsChanged(wallpaper, FLAG_SYSTEM);
+ }
+ }
+
void notifyLockWallpaperChanged() {
final IWallpaperManagerCallback cb = mKeyguardListener;
if (cb != null) {
@@ -413,6 +511,7 @@
}
userAllColorListeners.finishBroadcast();
}
+ wallpaperColors = getThemeColorsLocked(wallpaperColors);
}
final int count = colorListeners.size();
@@ -481,6 +580,40 @@
}
/**
+ * We can easily change theme by modified colors hint. This function will check
+ * current theme mode and return the WallpaperColors fit current theme mode.
+ * If color need modified, it will return a copied WallpaperColors which
+ * its ColorsHint is modified to fit current theme mode.
+ *
+ * @param colors a wallpaper primary colors representation
+ */
+ private WallpaperColors getThemeColorsLocked(WallpaperColors colors) {
+ if (colors == null) {
+ Slog.w(TAG, "Cannot get theme colors because WallpaperColors is null.");
+ return null;
+ }
+
+ int colorHints = colors.getColorHints();
+ boolean supportDarkTheme = (colorHints & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0;
+ if (mThemeMode == Settings.Secure.THEME_MODE_WALLPAPER ||
+ (mThemeMode == Settings.Secure.THEME_MODE_LIGHT && !supportDarkTheme) ||
+ (mThemeMode == Settings.Secure.THEME_MODE_DARK && supportDarkTheme)) {
+ return colors;
+ }
+
+ WallpaperColors themeColors = new WallpaperColors(colors.getPrimaryColor(),
+ colors.getSecondaryColor(), colors.getTertiaryColor());
+
+ if (mThemeMode == Settings.Secure.THEME_MODE_LIGHT) {
+ colorHints &= ~WallpaperColors.HINT_SUPPORTS_DARK_THEME;
+ } else if (mThemeMode == Settings.Secure.THEME_MODE_DARK) {
+ colorHints |= WallpaperColors.HINT_SUPPORTS_DARK_THEME;
+ }
+ themeColors.setColorHints(colorHints);
+ return themeColors;
+ }
+
+ /**
* Once a new wallpaper has been written via setWallpaper(...), it needs to be cropped
* for display.
*/
@@ -676,6 +809,7 @@
final SparseArray<Boolean> mUserRestorecon = new SparseArray<Boolean>();
int mCurrentUserId = UserHandle.USER_NULL;
boolean mInAmbientMode;
+ int mThemeMode;
static class WallpaperData {
@@ -734,6 +868,7 @@
long lastDiedTime;
boolean wallpaperUpdating;
WallpaperObserver wallpaperObserver;
+ ThemeSettingsObserver themeSettingsObserver;
/**
* List of callbacks registered they should each be notified when the wallpaper is changed.
@@ -1279,6 +1414,10 @@
wallpaper.wallpaperObserver.stopWatching();
wallpaper.wallpaperObserver = null;
}
+ if (wallpaper.themeSettingsObserver != null) {
+ wallpaper.themeSettingsObserver.stopObserving(mContext);
+ wallpaper.themeSettingsObserver = null;
+ }
}
}
@@ -1362,6 +1501,13 @@
systemWallpaper.wallpaperObserver = new WallpaperObserver(systemWallpaper);
systemWallpaper.wallpaperObserver.startWatching();
}
+ if (systemWallpaper.themeSettingsObserver == null) {
+ systemWallpaper.themeSettingsObserver = new ThemeSettingsObserver(null);
+ systemWallpaper.themeSettingsObserver.startObserving(mContext);
+ }
+ mThemeMode = Settings.Secure.getInt(
+ mContext.getContentResolver(), Settings.Secure.THEME_MODE,
+ Settings.Secure.THEME_MODE_WALLPAPER);
switchWallpaper(systemWallpaper, reply);
}
@@ -1835,7 +1981,7 @@
}
synchronized (mLock) {
- return wallpaperData.primaryColors;
+ return getThemeColorsLocked(wallpaperData.primaryColors);
}
}
diff --git a/services/tests/uiservicestests/src/com/android/server/slice/PackageMatchingCacheTest.java b/services/tests/uiservicestests/src/com/android/server/slice/PackageMatchingCacheTest.java
new file mode 100644
index 0000000..c6aea88
--- /dev/null
+++ b/services/tests/uiservicestests/src/com/android/server/slice/PackageMatchingCacheTest.java
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+
+package com.android.server.slice;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.support.test.filters.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper.RunWithLooper;
+
+import com.android.server.UiServiceTestCase;
+import com.android.server.slice.SliceManagerService.PackageMatchingCache;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.function.Supplier;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@RunWithLooper
+public class PackageMatchingCacheTest extends UiServiceTestCase {
+
+ private final Supplier<String> supplier = mock(Supplier.class);
+ private final PackageMatchingCache cache = new PackageMatchingCache(supplier);
+
+ @Test
+ public void testNulls() {
+ // Doesn't get for a null input
+ cache.matches(null);
+ verify(supplier, never()).get();
+
+ // Gets once valid input in sent.
+ cache.matches("");
+ verify(supplier).get();
+ }
+
+ @Test
+ public void testCaching() {
+ when(supplier.get()).thenReturn("ret.pkg");
+
+ assertTrue(cache.matches("ret.pkg"));
+ assertTrue(cache.matches("ret.pkg"));
+ assertTrue(cache.matches("ret.pkg"));
+
+ verify(supplier, times(1)).get();
+ }
+
+ @Test
+ public void testGetOnFailure() {
+ when(supplier.get()).thenReturn("ret.pkg");
+ assertTrue(cache.matches("ret.pkg"));
+
+ when(supplier.get()).thenReturn("other.pkg");
+ assertTrue(cache.matches("other.pkg"));
+ verify(supplier, times(2)).get();
+ }
+}