diff options
| -rw-r--r-- | Android.mk | 24 | ||||
| -rw-r--r-- | config/hiddenapi-light-greylist.txt | 42 | ||||
| -rw-r--r-- | config/hiddenapi-vendor-list.txt | 13 | ||||
| -rw-r--r-- | core/java/android/widget/Magnifier.java | 198 | ||||
| -rw-r--r-- | core/res/res/anim-ldrtl/cross_profile_apps_thumbnail_enter.xml | 76 | ||||
| -rw-r--r-- | core/res/res/anim/cross_profile_apps_thumbnail_enter.xml | 2 | ||||
| -rw-r--r-- | core/res/res/layout/magnifier.xml | 35 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 3 | ||||
| -rw-r--r-- | packages/SystemUI/res/layout/qs_paged_page.xml | 4 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/TileLayout.java | 18 |
10 files changed, 211 insertions, 204 deletions
diff --git a/Android.mk b/Android.mk index 88394d6332b6..bb37fa21c463 100644 --- a/Android.mk +++ b/Android.mk @@ -448,6 +448,7 @@ LOCAL_DROIDDOC_OPTIONS:=\ -showAnnotation android.annotation.SystemApi \ -showAnnotation android.annotation.TestApi \ -privateDexApi $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE) \ + -removedDexApi $(INTERNAL_PLATFORM_REMOVED_DEX_API_FILE) \ -nodocs LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=external/doclava/res/assets/templates-sdk @@ -456,7 +457,8 @@ LOCAL_UNINSTALLABLE_MODULE := true include $(BUILD_DROIDDOC) -$(full_target): .KATI_IMPLICIT_OUTPUTS := $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE) +$(full_target): .KATI_IMPLICIT_OUTPUTS := $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE) \ + $(INTERNAL_PLATFORM_REMOVED_DEX_API_FILE) # ==== check javadoc comments but don't generate docs ======== include $(CLEAR_VARS) @@ -871,9 +873,16 @@ include $(BUILD_STATIC_JAVA_LIBRARY) # rules for building them. Other rules in the build system should depend on the # files in the build folder. -# Automatically add all methods which match the following signatures. -# These need to be greylisted in order to allow applications to write their -# own serializers. +# Merge light greylist from multiple files: +# (1) manual light greylist +# (2) list of usages from vendor apps +# (3) list of removed APIs +# @removed does not imply private in Doclava. We must take the subset also +# in PRIVATE_API. +# (4) list of serialization APIs +# Automatically adds all methods which match the signatures in +# REGEX_SERIALIZATION. These are greylisted in order to allow applications +# to write their own serializers. $(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST): REGEX_SERIALIZATION := \ "readObject\(Ljava/io/ObjectInputStream;\)V" \ "readObjectNoData\(\)V" \ @@ -883,14 +892,15 @@ $(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST): REGEX_SERIALIZATION := \ "writeObject\(Ljava/io/ObjectOutputStream;\)V" \ "writeReplace\(\)Ljava/lang/Object;" $(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST): PRIVATE_API := $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE) -# Temporarily merge light greylist from two files. Vendor list will become dark -# grey once we remove the UI toast. +$(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST): REMOVED_API := $(INTERNAL_PLATFORM_REMOVED_DEX_API_FILE) $(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST): frameworks/base/config/hiddenapi-light-greylist.txt \ frameworks/base/config/hiddenapi-vendor-list.txt \ - $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE) + $(INTERNAL_PLATFORM_PRIVATE_DEX_API_FILE) \ + $(INTERNAL_PLATFORM_REMOVED_DEX_API_FILE) sort frameworks/base/config/hiddenapi-light-greylist.txt \ frameworks/base/config/hiddenapi-vendor-list.txt \ <(grep -E "\->("$(subst $(space),"|",$(REGEX_SERIALIZATION))")$$" $(PRIVATE_API)) \ + <(comm -12 <(sort $(REMOVED_API)) <(sort $(PRIVATE_API))) \ > $@ $(eval $(call copy-one-file,frameworks/base/config/hiddenapi-dark-greylist.txt,\ diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt index cb91b6abb815..1abb94c7a4f3 100644 --- a/config/hiddenapi-light-greylist.txt +++ b/config/hiddenapi-light-greylist.txt @@ -410,14 +410,12 @@ Landroid/app/NativeActivity;->showIme(I)V Landroid/app/Notification$Action;->mIcon:Landroid/graphics/drawable/Icon; Landroid/app/Notification$Builder;->mActions:Ljava/util/ArrayList; Landroid/app/Notification$Builder;->makePublicContentView()Landroid/widget/RemoteViews; -Landroid/app/Notification$Builder;->setChannel(Ljava/lang/String;)Landroid/app/Notification$Builder; Landroid/app/Notification;-><init>(Landroid/content/Context;ILjava/lang/CharSequence;JLjava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/content/Intent;)V Landroid/app/Notification;->isGroupSummary()Z Landroid/app/Notification;->mChannelId:Ljava/lang/String; Landroid/app/Notification;->mGroupKey:Ljava/lang/String; Landroid/app/Notification;->mLargeIcon:Landroid/graphics/drawable/Icon; Landroid/app/Notification;->mSmallIcon:Landroid/graphics/drawable/Icon; -Landroid/app/Notification;->setLatestEventInfo(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V Landroid/app/Notification;->setSmallIcon(Landroid/graphics/drawable/Icon;)V Landroid/app/NotificationManager;->getService()Landroid/app/INotificationManager; Landroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V @@ -450,11 +448,6 @@ Landroid/app/Service;->setForeground(Z)V Landroid/app/SharedPreferencesImpl;-><init>(Ljava/io/File;I)V Landroid/app/SharedPreferencesImpl;->mFile:Ljava/io/File; Landroid/app/SharedPreferencesImpl;->startReloadIfChangedUnexpectedly()V -Landroid/app/slice/Slice$Builder;-><init>(Landroid/net/Uri;)V -Landroid/app/slice/Slice$Builder;->setSpec(Landroid/app/slice/SliceSpec;)Landroid/app/slice/Slice$Builder; -Landroid/app/slice/SliceItem;->getTimestamp()J -Landroid/app/slice/SliceManager;->bindSlice(Landroid/net/Uri;Ljava/util/List;)Landroid/app/slice/Slice; -Landroid/app/slice/SliceManager;->pinSlice(Landroid/net/Uri;Ljava/util/List;)V Landroid/app/StatusBarManager;->collapsePanels()V Landroid/app/StatusBarManager;->disable(I)V Landroid/app/StatusBarManager;->expandNotificationsPanel()V @@ -846,7 +839,6 @@ Landroid/content/pm/PackageParser;->parsePackage(Ljava/io/File;I)Landroid/conten Landroid/content/pm/PackageParser;->parsePackage(Ljava/io/File;IZ)Landroid/content/pm/PackageParser$Package; Landroid/content/pm/PackageUserState;-><init>()V Landroid/content/pm/ParceledListSlice;-><init>(Ljava/util/List;)V -Landroid/content/pm/ResolveInfo;->instantAppAvailable:Z Landroid/content/pm/ShortcutManager;->mService:Landroid/content/pm/IShortcutService; Landroid/content/pm/Signature;->getPublicKey()Ljava/security/PublicKey; Landroid/content/pm/UserInfo;-><init>(ILjava/lang/String;I)V @@ -968,7 +960,6 @@ Landroid/content/UriMatcher;->mChildren:Ljava/util/ArrayList; Landroid/content/UriMatcher;->mText:Ljava/lang/String; Landroid/database/AbstractCursor;->mExtras:Landroid/os/Bundle; Landroid/database/AbstractCursor;->mNotifyUri:Landroid/net/Uri; -Landroid/database/AbstractCursor;->mRowIdColumnIndex:I Landroid/database/AbstractWindowedCursor;->clearOrCreateWindow(Ljava/lang/String;)V Landroid/database/CursorWindow;->mWindowPtr:J Landroid/database/CursorWindow;->sCursorWindowSize:I @@ -989,8 +980,6 @@ Landroid/database/sqlite/SQLiteOpenHelper;->mName:Ljava/lang/String; Landroid/database/sqlite/SQLiteStatement;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V Landroid/ddm/DdmHandleAppName;->getAppName()Ljava/lang/String; Landroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;I)V -Landroid/graphics/AvoidXfermode$Mode;->AVOID:Landroid/graphics/AvoidXfermode$Mode; -Landroid/graphics/AvoidXfermode$Mode;->TARGET:Landroid/graphics/AvoidXfermode$Mode; Landroid/graphics/BaseCanvas;->mNativeCanvasWrapper:J Landroid/graphics/Bitmap$Config;->nativeInt:I Landroid/graphics/Bitmap$Config;->nativeToConfig(I)Landroid/graphics/Bitmap$Config; @@ -1011,7 +1000,6 @@ Landroid/graphics/BitmapRegionDecoder;-><init>(J)V Landroid/graphics/Camera;->native_instance:J Landroid/graphics/Canvas;-><init>(J)V Landroid/graphics/Canvas;->release()V -Landroid/graphics/Canvas;->save(I)I Landroid/graphics/ColorMatrixColorFilter;->setColorMatrix(Landroid/graphics/ColorMatrix;)V Landroid/graphics/drawable/AnimatedImageDrawable;->onAnimationEnd()V Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->mStateIds:Landroid/util/SparseIntArray; @@ -1106,7 +1094,6 @@ Landroid/graphics/Movie;->mNativeMovie:J Landroid/graphics/NinePatch$InsetStruct;-><init>(IIIIIIIIFIF)V Landroid/graphics/NinePatch;->mBitmap:Landroid/graphics/Bitmap; Landroid/graphics/Picture;->mNativePicture:J -Landroid/graphics/PixelXorXfermode;-><init>(I)V Landroid/graphics/PorterDuffColorFilter;->getColor()I Landroid/graphics/PorterDuffColorFilter;->setColor(I)V Landroid/graphics/PorterDuffColorFilter;->setMode(Landroid/graphics/PorterDuff$Mode;)V @@ -1515,7 +1502,6 @@ Landroid/net/ConnectivityManager;->isNetworkSupported(I)Z Landroid/net/ConnectivityManager;->isNetworkTypeMobile(I)Z Landroid/net/ConnectivityManager;->mService:Landroid/net/IConnectivityManager; Landroid/net/ConnectivityManager;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V -Landroid/net/ConnectivityManager;->requestRouteToHost(II)Z Landroid/net/ConnectivityManager;->requestRouteToHostAddress(ILjava/net/InetAddress;)Z Landroid/net/ConnectivityManager;->setBackgroundDataSetting(Z)V Landroid/net/ConnectivityManager;->TYPE_MOBILE_CBS:I @@ -1575,7 +1561,6 @@ Landroid/net/SSLCertificateSocketFactory;-><init>(ILandroid/net/SSLSessionCache; Landroid/net/SSLCertificateSocketFactory;->castToOpenSSLSocket(Ljava/net/Socket;)Lcom/android/org/conscrypt/OpenSSLSocketImpl; Landroid/net/SSLCertificateSocketFactory;->getAlpnSelectedProtocol(Ljava/net/Socket;)[B Landroid/net/SSLCertificateSocketFactory;->getDelegate()Ljavax/net/ssl/SSLSocketFactory; -Landroid/net/SSLCertificateSocketFactory;->getHttpSocketFactory(ILandroid/net/SSLSessionCache;)Lorg/apache/http/conn/ssl/SSLSocketFactory; Landroid/net/SSLCertificateSocketFactory;->INSECURE_TRUST_MANAGER:[Ljavax/net/ssl/TrustManager; Landroid/net/SSLCertificateSocketFactory;->isSslCheckRelaxed()Z Landroid/net/SSLCertificateSocketFactory;->makeSocketFactory([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;)Ljavax/net/ssl/SSLSocketFactory; @@ -1643,7 +1628,6 @@ Landroid/net/wifi/ScanResult;->hessid:J Landroid/net/wifi/ScanResult;->informationElements:[Landroid/net/wifi/ScanResult$InformationElement; Landroid/net/wifi/ScanResult;->numUsage:I Landroid/net/wifi/ScanResult;->seen:J -Landroid/net/wifi/ScanResult;->untrusted:Z Landroid/net/wifi/ScanResult;->wifiSsid:Landroid/net/wifi/WifiSsid; Landroid/net/wifi/WifiConfiguration;->apBand:I Landroid/net/wifi/WifiConfiguration;->apChannel:I @@ -1837,9 +1821,7 @@ Landroid/os/PowerManager;->getMaximumScreenBrightnessSetting()I Landroid/os/PowerManager;->getMinimumScreenBrightnessSetting()I Landroid/os/PowerManager;->isLightDeviceIdleMode()Z Landroid/os/PowerManager;->mService:Landroid/os/IPowerManager; -Landroid/os/PowerManager;->userActivity(JZ)V Landroid/os/PowerManager;->validateWakeLockParameters(ILjava/lang/String;)V -Landroid/os/PowerManager;->wakeUp(J)V Landroid/os/PowerManager;->wakeUp(JLjava/lang/String;)V Landroid/os/Process;->getFreeMemory()J Landroid/os/Process;->getParentPid(I)I @@ -1873,11 +1855,9 @@ Landroid/os/storage/IStorageManager$Stub;->asInterface(Landroid/os/IBinder;)Land Landroid/os/storage/StorageManager;->findVolumeByUuid(Ljava/lang/String;)Landroid/os/storage/VolumeInfo; Landroid/os/storage/StorageManager;->getBestVolumeDescription(Landroid/os/storage/VolumeInfo;)Ljava/lang/String; Landroid/os/storage/StorageManager;->getDisks()Ljava/util/List; -Landroid/os/storage/StorageManager;->getPrimaryVolume()Landroid/os/storage/StorageVolume; Landroid/os/storage/StorageManager;->getStorageBytesUntilLow(Ljava/io/File;)J Landroid/os/storage/StorageManager;->getStorageFullBytes(Ljava/io/File;)J Landroid/os/storage/StorageManager;->getStorageLowBytes(Ljava/io/File;)J -Landroid/os/storage/StorageManager;->getVolumeList()[Landroid/os/storage/StorageVolume; Landroid/os/storage/StorageManager;->getVolumeList(II)[Landroid/os/storage/StorageVolume; Landroid/os/storage/StorageManager;->getVolumePaths()[Ljava/lang/String; Landroid/os/storage/StorageManager;->getVolumes()Ljava/util/List; @@ -1900,7 +1880,6 @@ Landroid/os/storage/VolumeInfo;->isVisible()Z Landroid/os/storage/VolumeInfo;->TYPE_EMULATED:I Landroid/os/storage/VolumeInfo;->TYPE_PUBLIC:I Landroid/os/StrictMode$Span;->finish()V -Landroid/os/StrictMode$ThreadPolicy$Builder;->penaltyListener(Landroid/os/StrictMode$OnThreadViolationListener;Ljava/util/concurrent/Executor;)Landroid/os/StrictMode$ThreadPolicy$Builder; Landroid/os/StrictMode;->conditionallyCheckInstanceCounts()V Landroid/os/StrictMode;->disableDeathOnFileUriExposure()V Landroid/os/StrictMode;->enterCriticalSpan(Ljava/lang/String;)Landroid/os/StrictMode$Span; @@ -1952,7 +1931,6 @@ Landroid/os/UserHandle;->USER_OWNER:I Landroid/os/UserHandle;->USER_SERIAL_SYSTEM:I Landroid/os/UserHandle;->USER_SYSTEM:I Landroid/os/UserManager;->get(Landroid/content/Context;)Landroid/os/UserManager; -Landroid/os/UserManager;->getBadgedLabelForUser(Ljava/lang/CharSequence;Landroid/os/UserHandle;)Ljava/lang/CharSequence; Landroid/os/UserManager;->getMaxSupportedUsers()I Landroid/os/UserManager;->getProfiles(I)Ljava/util/List; Landroid/os/UserManager;->getUserHandle()I @@ -2027,17 +2005,8 @@ Landroid/preference/PreferenceScreen;->mRootAdapter:Landroid/widget/ListAdapter; Landroid/print/PrinterId;->getServiceName()Landroid/content/ComponentName; Landroid/print/PrintJobInfo;->getAdvancedOptions()Landroid/os/Bundle; Landroid/print/PrintJobInfo;->getDocumentInfo()Landroid/print/PrintDocumentInfo; -Landroid/provider/Browser$BookmarkColumns;->DATE:Ljava/lang/String; -Landroid/provider/Browser;->BOOKMARKS_URI:Landroid/net/Uri; -Landroid/provider/Browser;->canClearHistory(Landroid/content/ContentResolver;)Z -Landroid/provider/Browser;->clearHistory(Landroid/content/ContentResolver;)V -Landroid/provider/Browser;->clearSearches(Landroid/content/ContentResolver;)V -Landroid/provider/Browser;->deleteFromHistory(Landroid/content/ContentResolver;Ljava/lang/String;)V Landroid/provider/Browser;->getVisitedHistory(Landroid/content/ContentResolver;)[Ljava/lang/String; -Landroid/provider/Browser;->HISTORY_PROJECTION:[Ljava/lang/String; -Landroid/provider/Browser;->SEARCHES_URI:Landroid/net/Uri; Landroid/provider/Browser;->sendString(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V -Landroid/provider/Browser;->updateVisitedHistory(Landroid/content/ContentResolver;Ljava/lang/String;Z)V Landroid/provider/CalendarContract$CalendarAlerts;->findNextAlarmTime(Landroid/content/ContentResolver;J)J Landroid/provider/CalendarContract$CalendarAlerts;->rescheduleMissedAlarms(Landroid/content/ContentResolver;Landroid/content/Context;Landroid/app/AlarmManager;)V Landroid/provider/Downloads$Impl$RequestHeaders;->INSERT_KEY_PREFIX:Ljava/lang/String; @@ -2083,7 +2052,6 @@ Landroid/provider/Settings$System;->MASTER_MONO:Ljava/lang/String; Landroid/provider/Settings$System;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z Landroid/provider/Settings$System;->SCREEN_AUTO_BRIGHTNESS_ADJ:Ljava/lang/String; Landroid/provider/Settings$System;->sNameValueCache:Landroid/provider/Settings$NameValueCache; -Landroid/provider/Settings$System;->VOLUME_SETTINGS:[Ljava/lang/String; Landroid/provider/Settings;->isCallingPackageAllowedToDrawOverlays(Landroid/content/Context;ILjava/lang/String;Z)Z Landroid/provider/Settings;->isCallingPackageAllowedToWriteSettings(Landroid/content/Context;ILjava/lang/String;Z)Z Landroid/provider/Telephony$Sms$Inbox;->addMessage(ILandroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Z)Landroid/net/Uri; @@ -2292,8 +2260,6 @@ Landroid/renderscript/RenderScript;->getMinorID()J Landroid/renderscript/RenderScriptCacheDir;->mCacheDir:Ljava/io/File; Landroid/renderscript/RenderScriptCacheDir;->setupDiskCache(Ljava/io/File;)V Landroid/security/keystore/AndroidKeyStoreProvider;->getKeyStoreOperationHandle(Ljava/lang/Object;)J -Landroid/security/keystore/recovery/RecoveryController;->getRecoveryStatus(Ljava/lang/String;Ljava/lang/String;)I -Landroid/security/keystore/recovery/RecoveryController;->initRecoveryService(Ljava/lang/String;[B)V Landroid/security/KeyStore;->getInstance()Landroid/security/KeyStore; Landroid/security/net/config/RootTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/media/IMediaBrowserServiceCallbacks; @@ -2305,8 +2271,6 @@ Landroid/service/media/MediaBrowserService$Result;->mFlags:I Landroid/service/media/MediaBrowserService;->KEY_MEDIA_ITEM:Ljava/lang/String; Landroid/service/notification/NotificationListenerService;->isBound()Z Landroid/service/notification/NotificationListenerService;->mHandler:Landroid/os/Handler; -Landroid/service/notification/NotificationListenerService;->registerAsSystemService(Landroid/content/Context;Landroid/content/ComponentName;I)V -Landroid/service/notification/NotificationListenerService;->unregisterAsSystemService()V Landroid/service/notification/StatusBarNotification;->getInitialPid()I Landroid/service/notification/StatusBarNotification;->getUid()I Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/persistentdata/IPersistentDataBlockService; @@ -2813,7 +2777,6 @@ Landroid/view/View;->getVerticalScrollFactor()F Landroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl; Landroid/view/View;->getWindowDisplayFrame(Landroid/graphics/Rect;)V Landroid/view/View;->includeForAccessibility()Z -Landroid/view/View;->initializeScrollbars(Landroid/content/res/TypedArray;)V Landroid/view/View;->internalSetPadding(IIII)V Landroid/view/View;->invalidateParentIfNeeded()V Landroid/view/View;->isPaddingResolved()Z @@ -2881,7 +2844,6 @@ Landroid/view/View;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V Landroid/view/View;->transformMatrixToLocal(Landroid/graphics/Matrix;)V Landroid/view/ViewConfiguration;->getDeviceGlobalActionKeyTimeout()J Landroid/view/ViewConfiguration;->getDoubleTapMinTime()I -Landroid/view/ViewConfiguration;->getScaledScrollFactor()I Landroid/view/ViewConfiguration;->mFadingMarqueeEnabled:Z Landroid/view/ViewConfiguration;->sHasPermanentMenuKey:Z Landroid/view/ViewConfiguration;->sHasPermanentMenuKeySet:Z @@ -2992,7 +2954,6 @@ Landroid/webkit/WebView;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landr Landroid/webkit/WebView;->restorePicture(Landroid/os/Bundle;Ljava/io/File;)Z Landroid/webkit/WebView;->savePicture(Landroid/os/Bundle;Ljava/io/File;)Z Landroid/webkit/WebView;->sEnforceThreadChecking:Z -Landroid/webkit/WebViewClient;->onUnhandledInputEvent(Landroid/webkit/WebView;Landroid/view/InputEvent;)V Landroid/webkit/WebViewDelegate;-><init>()V Landroid/webkit/WebViewFactory;->getProvider()Landroid/webkit/WebViewFactoryProvider; Landroid/webkit/WebViewFactory;->getUpdateService()Landroid/webkit/IWebViewUpdateService; @@ -3115,8 +3076,6 @@ Landroid/widget/ListPopupWindow;->setForceIgnoreOutsideTouch(Z)V Landroid/widget/ListView;->fillDown(II)Landroid/view/View; Landroid/widget/ListView;->fillSpecific(II)Landroid/view/View; Landroid/widget/ListView;->fillUp(II)Landroid/view/View; -Landroid/widget/ListView;->findViewTraversal(I)Landroid/view/View; -Landroid/widget/ListView;->findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View; Landroid/widget/ListView;->mAreAllItemsSelectable:Z Landroid/widget/ListView;->mFooterViewInfos:Ljava/util/ArrayList; Landroid/widget/ListView;->mHeaderViewInfos:Ljava/util/ArrayList; @@ -3225,7 +3184,6 @@ Landroid/widget/TabWidget;->setTabSelectionListener(Landroid/widget/TabWidget$On Landroid/widget/TextView;->assumeLayout()V Landroid/widget/TextView;->createEditorIfNeeded()V Landroid/widget/TextView;->getHorizontallyScrolling()Z -Landroid/widget/TextView;->getTextColor(Landroid/content/Context;Landroid/content/res/TypedArray;I)I Landroid/widget/TextView;->isSingleLine()Z Landroid/widget/TextView;->LINES:I Landroid/widget/TextView;->mCursorDrawableRes:I diff --git a/config/hiddenapi-vendor-list.txt b/config/hiddenapi-vendor-list.txt index 4f878ac52b42..fe10f41360a7 100644 --- a/config/hiddenapi-vendor-list.txt +++ b/config/hiddenapi-vendor-list.txt @@ -100,11 +100,8 @@ Landroid/content/pm/IPackageManager;->getPackageInfo(Ljava/lang/String;II)Landro Landroid/content/pm/IPackageStatsObserver;->onGetStatsCompleted(Landroid/content/pm/PackageStats;Z)V Landroid/database/sqlite/SqliteWrapper;->insert(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; Landroid/database/sqlite/SqliteWrapper;->query(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; -Landroid/graphics/AvoidXfermode;-><init>(IILandroid/graphics/AvoidXfermode$Mode;)V Landroid/graphics/Bitmap;->createGraphicBufferHandle()Landroid/graphics/GraphicBuffer; Landroid/graphics/Bitmap;->createHardwareBitmap(Landroid/graphics/GraphicBuffer;)Landroid/graphics/Bitmap; -Landroid/graphics/Canvas;->clipRegion(Landroid/graphics/Region;)Z -Landroid/graphics/Canvas;->clipRegion(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z Landroid/graphics/drawable/Drawable;->isProjected()Z Landroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; Landroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V @@ -152,8 +149,6 @@ Landroid/net/ConnectivityManager$PacketKeepaliveCallback;->onStopped()V Landroid/net/ConnectivityManager;->getActiveNetworkQuotaInfo()Landroid/net/NetworkQuotaInfo; Landroid/net/ConnectivityManager;->setAirplaneMode(Z)V Landroid/net/ConnectivityManager;->startNattKeepalive(Landroid/net/Network;ILandroid/net/ConnectivityManager$PacketKeepaliveCallback;Ljava/net/InetAddress;ILjava/net/InetAddress;)Landroid/net/ConnectivityManager$PacketKeepalive; -Landroid/net/ConnectivityManager;->startUsingNetworkFeature(ILjava/lang/String;)I -Landroid/net/ConnectivityManager;->stopUsingNetworkFeature(ILjava/lang/String;)I Landroid/net/ConnectivityManager;->tether(Ljava/lang/String;)I Landroid/net/ConnectivityManager;->untether(Ljava/lang/String;)I Landroid/net/DhcpResults;-><init>()V @@ -355,8 +350,6 @@ Landroid/os/Message;->setCallback(Ljava/lang/Runnable;)Landroid/os/Message; Landroid/os/Parcel;->readBlob()[B Landroid/os/Parcel;->readStringArray()[Ljava/lang/String; Landroid/os/Parcel;->writeBlob([B)V -Landroid/os/PowerManager;->goToSleep(J)V -Landroid/os/PowerManager;->isScreenBrightnessBoosted()Z Landroid/os/Registrant;-><init>(Landroid/os/Handler;ILjava/lang/Object;)V Landroid/os/Registrant;->clear()V Landroid/os/Registrant;->notifyRegistrant()V @@ -514,12 +507,6 @@ Landroid/telephony/TelephonyManager;->nvResetConfig(I)Z Landroid/telephony/TelephonyManager;->putIntAtIndex(Landroid/content/ContentResolver;Ljava/lang/String;II)Z Landroid/telephony/TelephonyManager;->setPreferredNetworkType(II)Z Landroid/text/TextUtils;->isPrintableAsciiOnly(Ljava/lang/CharSequence;)Z -Landroid/util/FloatMath;->ceil(F)F -Landroid/util/FloatMath;->cos(F)F -Landroid/util/FloatMath;->exp(F)F -Landroid/util/FloatMath;->floor(F)F -Landroid/util/FloatMath;->sin(F)F -Landroid/util/FloatMath;->sqrt(F)F Landroid/util/IconDrawableFactory;->getBadgedIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;I)Landroid/graphics/drawable/Drawable; Landroid/util/IconDrawableFactory;->newInstance(Landroid/content/Context;)Landroid/util/IconDrawableFactory; Landroid/util/LocalLog$ReadOnlyLocalLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V diff --git a/core/java/android/widget/Magnifier.java b/core/java/android/widget/Magnifier.java index 08c4dc9c0c4d..929496f2d237 100644 --- a/core/java/android/widget/Magnifier.java +++ b/core/java/android/widget/Magnifier.java @@ -38,7 +38,6 @@ import android.os.Message; import android.view.ContextThemeWrapper; import android.view.Display; import android.view.DisplayListCanvas; -import android.view.LayoutInflater; import android.view.PixelCopy; import android.view.RenderNode; import android.view.Surface; @@ -71,8 +70,6 @@ public final class Magnifier { private final int[] mViewCoordinatesInSurface; // The window containing the magnifier. private InternalPopupWindow mWindow; - // The center coordinates of the window containing the magnifier. - private final Point mWindowCoords = new Point(); // The width of the window containing the magnifier. private final int mWindowWidth; // The height of the window containing the magnifier. @@ -87,8 +84,18 @@ public final class Magnifier { private final float mWindowElevation; // The corner radius of the window containing the magnifier. private final float mWindowCornerRadius; - // The center coordinates of the content that is to be magnified. + // The parent surface for the magnifier surface. + private SurfaceInfo mParentSurface; + // The surface where the content will be copied from. + private SurfaceInfo mContentCopySurface; + // The center coordinates of the window containing the magnifier. + private final Point mWindowCoords = new Point(); + // The center coordinates of the content to be magnified, + // which can potentially contain a region outside the magnified view. private final Point mCenterZoomCoords = new Point(); + // The center coordinates of the content to be magnified, + // clamped inside the visible region of the magnified view. + private final Point mClampedCenterZoomCoords = new Point(); // Variables holding previous states, used for detecting redundant calls and invalidation. private final Point mPrevStartCoordsInSurface = new Point( NONEXISTENT_PREVIOUS_CONFIG_VALUE, NONEXISTENT_PREVIOUS_CONFIG_VALUE); @@ -108,8 +115,6 @@ public final class Magnifier { public Magnifier(@NonNull View view) { mView = Preconditions.checkNotNull(view); final Context context = mView.getContext(); - final View content = LayoutInflater.from(context).inflate(R.layout.magnifier, null); - content.findViewById(R.id.magnifier_inner).setClipToOutline(true); mWindowWidth = context.getResources().getDimensionPixelSize(R.dimen.magnifier_width); mWindowHeight = context.getResources().getDimensionPixelSize(R.dimen.magnifier_height); mWindowElevation = context.getResources().getDimension(R.dimen.magnifier_elevation); @@ -155,31 +160,17 @@ public final class Magnifier { xPosInView = Math.max(0, Math.min(xPosInView, mView.getWidth())); yPosInView = Math.max(0, Math.min(yPosInView, mView.getHeight())); - configureCoordinates(xPosInView, yPosInView); - - // Clamp the startX location to avoid magnifying content which does not belong - // to the magnified view. This will not take into account overlapping views. - final Rect viewVisibleRegion = new Rect(); - mView.getGlobalVisibleRect(viewVisibleRegion); - if (mView.getViewRootImpl() != null) { - // Clamping coordinates relative to the surface, not to the window. - final Rect surfaceInsets = mView.getViewRootImpl().mWindowAttributes.surfaceInsets; - viewVisibleRegion.offset(surfaceInsets.left, surfaceInsets.top); - } - if (mView instanceof SurfaceView) { - // If we copy content from a SurfaceView, clamp coordinates relative to it. - viewVisibleRegion.offset(-mViewCoordinatesInSurface[0], -mViewCoordinatesInSurface[1]); - } - final int startX = Math.max(viewVisibleRegion.left, Math.min( - mCenterZoomCoords.x - mBitmapWidth / 2, - viewVisibleRegion.right - mBitmapWidth)); - final int startY = mCenterZoomCoords.y - mBitmapHeight / 2; + obtainSurfaces(); + obtainContentCoordinates(xPosInView, yPosInView); + obtainWindowCoordinates(); + final int startX = mClampedCenterZoomCoords.x - mBitmapWidth / 2; + final int startY = mClampedCenterZoomCoords.y - mBitmapHeight / 2; if (xPosInView != mPrevPosInView.x || yPosInView != mPrevPosInView.y) { if (mWindow == null) { synchronized (mLock) { mWindow = new InternalPopupWindow(mView.getContext(), mView.getDisplay(), - getValidParentSurfaceForMagnifier(), + mParentSurface.mSurface, mWindowWidth, mWindowHeight, mWindowElevation, mWindowCornerRadius, Handler.getMain() /* draw the magnifier on the UI thread */, mLock, mCallback); @@ -213,6 +204,7 @@ public final class Magnifier { */ public void update() { if (mWindow != null) { + obtainSurfaces(); // Update the content shown in the magnifier. performPixelCopy(mPrevStartCoordsInSurface.x, mPrevStartCoordsInSurface.y, false /* update window position */); @@ -257,26 +249,53 @@ public final class Magnifier { mWindow.mLastDrawContentPositionY - surfaceInsets.top); } - @Nullable - private Surface getValidParentSurfaceForMagnifier() { + /** + * Retrieves the surfaces used by the magnifier: + * - a parent surface for the magnifier surface. This will usually be the main app window. + * - a surface where the magnified content will be copied from. This will be the main app + * window unless the magnified view is a SurfaceView, in which case its backing surface + * will be used. + */ + private void obtainSurfaces() { + // Get the main window surface. + SurfaceInfo validMainWindowSurface = SurfaceInfo.NULL; if (mView.getViewRootImpl() != null) { - final Surface mainWindowSurface = mView.getViewRootImpl().mSurface; + final ViewRootImpl viewRootImpl = mView.getViewRootImpl(); + final Surface mainWindowSurface = viewRootImpl.mSurface; if (mainWindowSurface != null && mainWindowSurface.isValid()) { - return mainWindowSurface; + final Rect surfaceInsets = viewRootImpl.mWindowAttributes.surfaceInsets; + final int surfaceWidth = + viewRootImpl.getWidth() + surfaceInsets.left + surfaceInsets.right; + final int surfaceHeight = + viewRootImpl.getHeight() + surfaceInsets.top + surfaceInsets.bottom; + validMainWindowSurface = + new SurfaceInfo(mainWindowSurface, surfaceWidth, surfaceHeight, true); } } + // Get the surface backing the magnified view, if it is a SurfaceView. + SurfaceInfo validSurfaceViewSurface = SurfaceInfo.NULL; if (mView instanceof SurfaceView) { - final Surface surfaceViewSurface = ((SurfaceView) mView).getHolder().getSurface(); + final SurfaceHolder surfaceHolder = ((SurfaceView) mView).getHolder(); + final Surface surfaceViewSurface = surfaceHolder.getSurface(); if (surfaceViewSurface != null && surfaceViewSurface.isValid()) { - return surfaceViewSurface; + final Rect surfaceFrame = surfaceHolder.getSurfaceFrame(); + validSurfaceViewSurface = new SurfaceInfo(surfaceViewSurface, + surfaceFrame.right, surfaceFrame.bottom, false); } } - return null; + + // Choose the parent surface for the magnifier and the source surface for the content. + mParentSurface = validMainWindowSurface != SurfaceInfo.NULL + ? validMainWindowSurface : validSurfaceViewSurface; + mContentCopySurface = mView instanceof SurfaceView + ? validSurfaceViewSurface : validMainWindowSurface; } - private void configureCoordinates(final float xPosInView, final float yPosInView) { - // Compute the coordinates of the center of the content going to be displayed in the - // magnifier. These are relative to the surface the content is copied from. + /** + * Computes the coordinates of the center of the content going to be displayed in the + * magnifier. These are relative to the surface the content is copied from. + */ + private void obtainContentCoordinates(final float xPosInView, final float yPosInView) { final float posX; final float posY; mView.getLocationInSurface(mViewCoordinatesInSurface); @@ -291,78 +310,59 @@ public final class Magnifier { mCenterZoomCoords.x = Math.round(posX); mCenterZoomCoords.y = Math.round(posY); + // Clamp the x location to avoid magnifying content which does not belong + // to the magnified view. This will not take into account overlapping views. + final Rect viewVisibleRegion = new Rect(); + mView.getGlobalVisibleRect(viewVisibleRegion); + if (mView.getViewRootImpl() != null) { + // Clamping coordinates relative to the surface, not to the window. + final Rect surfaceInsets = mView.getViewRootImpl().mWindowAttributes.surfaceInsets; + viewVisibleRegion.offset(surfaceInsets.left, surfaceInsets.top); + } + if (mView instanceof SurfaceView) { + // If we copy content from a SurfaceView, clamp coordinates relative to it. + viewVisibleRegion.offset(-mViewCoordinatesInSurface[0], -mViewCoordinatesInSurface[1]); + } + mClampedCenterZoomCoords.x = Math.max(viewVisibleRegion.left + mBitmapWidth / 2, Math.min( + mCenterZoomCoords.x, viewVisibleRegion.right - mBitmapWidth / 2)); + mClampedCenterZoomCoords.y = mCenterZoomCoords.y; + } + + private void obtainWindowCoordinates() { // Compute the position of the magnifier window. Again, this has to be relative to the // surface of the magnified view, as this surface is the parent of the magnifier surface. final int verticalOffset = mView.getContext().getResources().getDimensionPixelSize( R.dimen.magnifier_offset); mWindowCoords.x = mCenterZoomCoords.x - mWindowWidth / 2; mWindowCoords.y = mCenterZoomCoords.y - mWindowHeight / 2 - verticalOffset; - if (mView instanceof SurfaceView && mView.getViewRootImpl() != null) { - // TODO: deduplicate against the first part of #getValidParentSurfaceForMagnifier() - final Surface mainWindowSurface = mView.getViewRootImpl().mSurface; - if (mainWindowSurface != null && mainWindowSurface.isValid()) { - mWindowCoords.x += mViewCoordinatesInSurface[0]; - mWindowCoords.y += mViewCoordinatesInSurface[1]; - } + if (mParentSurface != mContentCopySurface) { + mWindowCoords.x += mViewCoordinatesInSurface[0]; + mWindowCoords.y += mViewCoordinatesInSurface[1]; } } private void performPixelCopy(final int startXInSurface, final int startYInSurface, final boolean updateWindowPosition) { - // Get the view surface where the content will be copied from. - final Surface surface; - final int surfaceWidth; - final int surfaceHeight; - if (mView instanceof SurfaceView) { - final SurfaceHolder surfaceHolder = ((SurfaceView) mView).getHolder(); - surface = surfaceHolder.getSurface(); - surfaceWidth = surfaceHolder.getSurfaceFrame().right; - surfaceHeight = surfaceHolder.getSurfaceFrame().bottom; - } else if (mView.getViewRootImpl() != null) { - final ViewRootImpl viewRootImpl = mView.getViewRootImpl(); - surface = viewRootImpl.mSurface; - final Rect surfaceInsets = viewRootImpl.mWindowAttributes.surfaceInsets; - surfaceWidth = viewRootImpl.getWidth() + surfaceInsets.left + surfaceInsets.right; - surfaceHeight = viewRootImpl.getHeight() + surfaceInsets.top + surfaceInsets.bottom; - } else { - surface = null; - surfaceWidth = NONEXISTENT_PREVIOUS_CONFIG_VALUE; - surfaceHeight = NONEXISTENT_PREVIOUS_CONFIG_VALUE; - } - - if (surface == null || !surface.isValid()) { + if (mContentCopySurface.mSurface == null || !mContentCopySurface.mSurface.isValid()) { return; } - // Clamp copy coordinates inside the surface to avoid displaying distorted content. final int clampedStartXInSurface = Math.max(0, - Math.min(startXInSurface, surfaceWidth - mBitmapWidth)); + Math.min(startXInSurface, mContentCopySurface.mWidth - mBitmapWidth)); final int clampedStartYInSurface = Math.max(0, - Math.min(startYInSurface, surfaceHeight - mBitmapHeight)); + Math.min(startYInSurface, mContentCopySurface.mHeight - mBitmapHeight)); // Clamp window coordinates inside the parent surface, to avoid displaying // the magnifier out of screen or overlapping with system insets. - Rect windowBounds = null; - if (mView.getViewRootImpl() != null) { - // TODO: deduplicate against the first part of #getValidParentSurfaceForMagnifier() - // TODO: deduplicate against the first part of the current method - final ViewRootImpl viewRootImpl = mView.getViewRootImpl(); - final Surface parentSurface = viewRootImpl.mSurface; - final Rect surfaceInsets = viewRootImpl.mWindowAttributes.surfaceInsets; - final int parentWidth = - viewRootImpl.getWidth() + surfaceInsets.left + surfaceInsets.right; - final int parentHeight = - viewRootImpl.getHeight() + surfaceInsets.top + surfaceInsets.bottom; - if (parentSurface != null && parentSurface.isValid()) { - final Rect systemInsets = mView.getRootWindowInsets().getSystemWindowInsets(); - windowBounds = new Rect(systemInsets.left, systemInsets.top, - parentWidth - systemInsets.right, parentHeight - systemInsets.bottom); - } - } - if (windowBounds == null && mView instanceof SurfaceView) { - windowBounds = ((SurfaceView) mView).getHolder().getSurfaceFrame(); + final Rect windowBounds; + if (mParentSurface.mIsMainWindowSurface) { + final Rect systemInsets = mView.getRootWindowInsets().getSystemWindowInsets(); + windowBounds = new Rect(systemInsets.left, systemInsets.top, + mParentSurface.mWidth - systemInsets.right, + mParentSurface.mHeight - systemInsets.bottom); + } else { + windowBounds = new Rect(0, 0, mParentSurface.mWidth, mParentSurface.mHeight); } - final int windowCoordsX = Math.max(windowBounds.left, Math.min(windowBounds.right - mWindowWidth, mWindowCoords.x)); final int windowCoordsY = Math.max(windowBounds.top, @@ -376,7 +376,7 @@ public final class Magnifier { final InternalPopupWindow currentWindowInstance = mWindow; final Bitmap bitmap = Bitmap.createBitmap(mBitmapWidth, mBitmapHeight, Bitmap.Config.ARGB_8888); - PixelCopy.request(surface, mPixelCopyRequestRect, bitmap, + PixelCopy.request(mContentCopySurface.mSurface, mPixelCopyRequestRect, bitmap, result -> { synchronized (mLock) { if (mWindow != currentWindowInstance) { @@ -396,6 +396,26 @@ public final class Magnifier { } /** + * Contains a surface and metadata corresponding to it. + */ + private static class SurfaceInfo { + public static final SurfaceInfo NULL = new SurfaceInfo(null, 0, 0, false); + + private Surface mSurface; + private int mWidth; + private int mHeight; + private boolean mIsMainWindowSurface; + + SurfaceInfo(final Surface surface, final int width, final int height, + final boolean isMainWindowSurface) { + mSurface = surface; + mWidth = width; + mHeight = height; + mIsMainWindowSurface = isMainWindowSurface; + } + } + + /** * Magnifier's own implementation of PopupWindow-similar floating window. * This exists to ensure frame-synchronization between window position updates and window * content updates. By using a PopupWindow, these events would happen in different frames, diff --git a/core/res/res/anim-ldrtl/cross_profile_apps_thumbnail_enter.xml b/core/res/res/anim-ldrtl/cross_profile_apps_thumbnail_enter.xml new file mode 100644 index 000000000000..6f3dc8c7de0e --- /dev/null +++ b/core/res/res/anim-ldrtl/cross_profile_apps_thumbnail_enter.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 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. +*/ +--> +<!-- This should be kept in sync with task_open_enter.xml --> +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:shareInterpolator="false" android:zAdjustment="top"> + + <alpha + android:fromAlpha="1" + android:toAlpha="1.0" + android:fillEnabled="true" + android:fillBefore="true" + android:fillAfter="true" + android:interpolator="@interpolator/linear" + android:startOffset="67" + android:duration="217"/> + + <translate + android:fromXDelta="-105%" + android:toXDelta="0" + android:fillEnabled="true" + android:fillBefore="true" + android:fillAfter="true" + android:interpolator="@interpolator/aggressive_ease" + android:startOffset="50" + android:duration="383"/> + + <scale + android:fromXScale="1.0526" + android:toXScale="1" + android:fromYScale="1.0526" + android:toYScale="1" + android:pivotX="50%" + android:pivotY="50%" + android:fillEnabled="true" + android:fillBefore="true" + android:fillAfter="true" + android:interpolator="@interpolator/fast_out_slow_in" + android:duration="283"/> + + <scale + android:fromXScale="0.95" + android:toXScale="1" + android:fromYScale="0.95" + android:toYScale="1" + android:pivotX="50%" + android:pivotY="50%" + android:fillEnabled="true" + android:fillBefore="true" + android:fillAfter="true" + android:interpolator="@interpolator/fast_out_slow_in" + android:startOffset="283" + android:duration="317"/> + + <!-- To keep the thumbnail around longer and fade out the thumbnail --> + <alpha android:fromAlpha="1.0" android:toAlpha="0" + android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true" + android:interpolator="@interpolator/decelerate_quint" + android:startOffset="717" + android:duration="200"/> +</set>
\ No newline at end of file diff --git a/core/res/res/anim/cross_profile_apps_thumbnail_enter.xml b/core/res/res/anim/cross_profile_apps_thumbnail_enter.xml index 6f3dc8c7de0e..4c2559f1e47d 100644 --- a/core/res/res/anim/cross_profile_apps_thumbnail_enter.xml +++ b/core/res/res/anim/cross_profile_apps_thumbnail_enter.xml @@ -31,7 +31,7 @@ android:duration="217"/> <translate - android:fromXDelta="-105%" + android:fromXDelta="105%" android:toXDelta="0" android:fillEnabled="true" android:fillBefore="true" diff --git a/core/res/res/layout/magnifier.xml b/core/res/res/layout/magnifier.xml deleted file mode 100644 index f3344c7470a1..000000000000 --- a/core/res/res/layout/magnifier.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ Copyright (C) 2017 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 - --> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/magnifier_inner" - android:layout_width="@android:dimen/magnifier_width" - android:layout_height="@android:dimen/magnifier_height" - android:elevation="@android:dimen/magnifier_elevation" - android:background="?android:attr/floatingToolbarPopupBackgroundDrawable" - android:scaleType="fitXY"> - <ImageView - android:id="@+id/magnifier_image" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - </LinearLayout> -</LinearLayout> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index c3ab1a683044..5edafecca841 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2587,9 +2587,6 @@ <java-symbol type="attr" name="floatingToolbarDividerColor" /> <!-- Magnifier --> - <java-symbol type="id" name="magnifier_image" /> - <java-symbol type="id" name="magnifier_inner" /> - <java-symbol type="layout" name="magnifier" /> <java-symbol type="dimen" name="magnifier_width" /> <java-symbol type="dimen" name="magnifier_height" /> <java-symbol type="dimen" name="magnifier_elevation" /> diff --git a/packages/SystemUI/res/layout/qs_paged_page.xml b/packages/SystemUI/res/layout/qs_paged_page.xml index 25b1a2b79a1c..07f0c83e7b2e 100644 --- a/packages/SystemUI/res/layout/qs_paged_page.xml +++ b/packages/SystemUI/res/layout/qs_paged_page.xml @@ -20,7 +20,7 @@ android:id="@+id/tile_page" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingLeft="@dimen/notification_side_paddings" - android:paddingRight="@dimen/notification_side_paddings" + android:paddingStart="@dimen/notification_side_paddings" + android:paddingEnd="@dimen/notification_side_paddings" android:clipChildren="false" android:clipToPadding="false" /> diff --git a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java index 6d46e857c8b4..45d63e0c1359 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java @@ -93,7 +93,8 @@ public class TileLayout extends ViewGroup implements QSTileLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int numTiles = mRecords.size(); - final int width = MeasureSpec.getSize(widthMeasureSpec) - mPaddingLeft - mPaddingRight; + final int width = MeasureSpec.getSize(widthMeasureSpec) + - getPaddingStart() - getPaddingEnd(); final int numRows = (numTiles + mColumns - 1) / mColumns; mCellWidth = (width - mSidePadding * 2 - (mCellMarginHorizontal * mColumns)) / mColumns; @@ -140,16 +141,8 @@ public class TileLayout extends ViewGroup implements QSTileLayout { final TileRecord record = mRecords.get(i); final int top = getRowTop(row); - final int right; - final int left; - if (isRtl) { - right = w - getColumnStart(column); - left = right - mCellWidth; - } else { - left = getColumnStart(column); - right = left + mCellWidth; - } - + final int left = getColumnStart(isRtl ? mColumns - column - 1 : column); + final int right = left + mCellWidth; record.tileView.layout(left, top, right, top + record.tileView.getMeasuredHeight()); } } @@ -159,6 +152,7 @@ public class TileLayout extends ViewGroup implements QSTileLayout { } private int getColumnStart(int column) { - return column * (mCellWidth + mCellMarginHorizontal) + mCellMarginHorizontal + mPaddingLeft; + return getPaddingStart() + mSidePadding + mCellMarginHorizontal / 2 + + column * (mCellWidth + mCellMarginHorizontal); } } |