From 091440a9cb9d4f42406631004aa484cbb79214ca Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Wed, 18 Mar 2015 14:16:05 -0700 Subject: Reducing method count by eliminating synthetic accessors Elimates 304 methods based on dex analysis The java compiler generates sythetic accessor methods for all private fields, methods and contructors accessed from inner classes. By marking them package-private and @Thunk instead, sythentic accessor methods are no longer needeed. These annotated elements should be treated as private. Change-Id: Id0dc2c92733474250d8ff12fa793d3a8adeb1f26 --- src/com/android/launcher3/AppsContainerView.java | 8 +-- .../android/launcher3/AppsCustomizePagedView.java | 15 +++--- src/com/android/launcher3/AppsGridAdapter.java | 16 +++--- src/com/android/launcher3/AutoInstallsLayout.java | 9 ++-- src/com/android/launcher3/CellLayout.java | 31 +++++------ .../android/launcher3/CheckLongPressHelper.java | 6 ++- src/com/android/launcher3/CommonAppTypeParser.java | 4 +- src/com/android/launcher3/DefaultLayoutParser.java | 9 ++-- src/com/android/launcher3/DeferredHandler.java | 6 ++- src/com/android/launcher3/DeleteDropTarget.java | 5 +- src/com/android/launcher3/DeviceProfile.java | 4 +- src/com/android/launcher3/DragController.java | 16 +++--- src/com/android/launcher3/DragLayer.java | 11 ++-- src/com/android/launcher3/DragView.java | 10 ++-- .../launcher3/FirstFrameAnimatorHelper.java | 4 +- src/com/android/launcher3/FocusHelper.java | 5 +- src/com/android/launcher3/FocusIndicatorView.java | 4 +- src/com/android/launcher3/Folder.java | 35 +++++++------ src/com/android/launcher3/FolderIcon.java | 19 +++---- src/com/android/launcher3/FolderPagedView.java | 4 +- src/com/android/launcher3/IconCache.java | 3 +- .../android/launcher3/InstallShortcutReceiver.java | 3 +- .../launcher3/InterruptibleInOutAnimator.java | 4 +- src/com/android/launcher3/Launcher.java | 61 +++++++++++----------- .../launcher3/LauncherAccessibilityDelegate.java | 7 +-- src/com/android/launcher3/LauncherAppState.java | 3 +- src/com/android/launcher3/LauncherClings.java | 8 +-- src/com/android/launcher3/LauncherModel.java | 53 ++++++++++--------- src/com/android/launcher3/LauncherProvider.java | 17 +++--- .../LauncherStateTransitionAnimation.java | 8 +-- src/com/android/launcher3/PagedView.java | 20 +++---- src/com/android/launcher3/WeightWatcher.java | 6 ++- src/com/android/launcher3/WidgetPreviewLoader.java | 7 +-- src/com/android/launcher3/Workspace.java | 57 ++++++++++---------- .../launcher3/compat/LauncherAppsCompatV16.java | 6 ++- .../launcher3/compat/PackageInstallerCompatVL.java | 11 ++-- src/com/android/launcher3/util/Thunk.java | 43 +++++++++++++++ 37 files changed, 316 insertions(+), 222 deletions(-) create mode 100644 src/com/android/launcher3/util/Thunk.java (limited to 'src/com/android') diff --git a/src/com/android/launcher3/AppsContainerView.java b/src/com/android/launcher3/AppsContainerView.java index ce092bfe4..ea12fa361 100644 --- a/src/com/android/launcher3/AppsContainerView.java +++ b/src/com/android/launcher3/AppsContainerView.java @@ -33,6 +33,8 @@ import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; +import com.android.launcher3.util.Thunk; + import java.util.List; @@ -49,12 +51,12 @@ public class AppsContainerView extends FrameLayout implements DragSource, Insett private static final int LIST_LAYOUT = 1; private static final int USE_LAYOUT = GRID_LAYOUT; - private Launcher mLauncher; - private AlphabeticalAppsList mApps; + @Thunk Launcher mLauncher; + @Thunk AlphabeticalAppsList mApps; private RecyclerView.Adapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; private RecyclerView.ItemDecoration mItemDecoration; - private AppsContainerRecyclerView mAppsListView; + @Thunk AppsContainerRecyclerView mAppsListView; private EditText mSearchBar; private int mNumAppsPerRow; private Point mLastTouchDownPos = new Point(); diff --git a/src/com/android/launcher3/AppsCustomizePagedView.java b/src/com/android/launcher3/AppsCustomizePagedView.java index 3f2aa7036..1955547c8 100644 --- a/src/com/android/launcher3/AppsCustomizePagedView.java +++ b/src/com/android/launcher3/AppsCustomizePagedView.java @@ -45,6 +45,7 @@ import android.widget.Toast; import com.android.launcher3.DropTarget.DragObject; import com.android.launcher3.FocusHelper.PagedViewKeyListener; import com.android.launcher3.compat.AppWidgetManagerCompat; +import com.android.launcher3.util.Thunk; import java.util.ArrayList; import java.util.Iterator; @@ -151,7 +152,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen private ContentType mContentType = ContentType.Widgets; // Refs - private Launcher mLauncher; + @Thunk Launcher mLauncher; private DragController mDragController; private final LayoutInflater mLayoutInflater; private final PackageManager mPackageManager; @@ -167,7 +168,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen // Dimens private int mContentWidth, mContentHeight; - private int mWidgetCountX, mWidgetCountY; + @Thunk int mWidgetCountX, mWidgetCountY; private int mNumWidgetPages; // Previews & outlines @@ -191,10 +192,10 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen private Toast mWidgetInstructionToast; // Deferral of loading widget previews during launcher transitions - private boolean mInTransition; + @Thunk boolean mInTransition; private ArrayList mDeferredSyncWidgetPageItems = new ArrayList(); - private ArrayList mDeferredPrepareLoadWidgetPreviewsTasks = + @Thunk ArrayList mDeferredPrepareLoadWidgetPreviewsTasks = new ArrayList(); WidgetPreviewLoader mWidgetPreviewLoader; @@ -907,7 +908,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen /** * Creates and executes a new AsyncTask to load a page of widget previews. */ - private void prepareLoadWidgetPreviewsTask(int page, ArrayList widgets, + @Thunk void prepareLoadWidgetPreviewsTask(int page, ArrayList widgets, int cellWidth, int cellHeight, int cellCountX) { // Prune all tasks that are no longer needed @@ -1083,7 +1084,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen } }); } - private void loadWidgetPreviewsInBackground(AppsCustomizeAsyncTask task, + @Thunk void loadWidgetPreviewsInBackground(AppsCustomizeAsyncTask task, AsyncTaskPageData data) { // loadWidgetPreviewsInBackground can be called without a task to load a set of widget // previews synchronously @@ -1109,7 +1110,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen } } - private void onSyncWidgetPageItems(AsyncTaskPageData data, boolean immediatelySyncItems) { + @Thunk void onSyncWidgetPageItems(AsyncTaskPageData data, boolean immediatelySyncItems) { if (!immediatelySyncItems && mInTransition) { mDeferredSyncWidgetPageItems.add(data); return; diff --git a/src/com/android/launcher3/AppsGridAdapter.java b/src/com/android/launcher3/AppsGridAdapter.java index 6a4495e0e..5895cbf08 100644 --- a/src/com/android/launcher3/AppsGridAdapter.java +++ b/src/com/android/launcher3/AppsGridAdapter.java @@ -11,7 +11,9 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; + import com.android.launcher3.compat.AlphabeticIndexCompat; +import com.android.launcher3.util.Thunk; /** @@ -108,21 +110,21 @@ class AppsGridAdapter extends RecyclerView.Adapter { } private LayoutInflater mLayoutInflater; - private AlphabeticalAppsList mApps; + @Thunk AlphabeticalAppsList mApps; private GridSpanSizer mGridSizer; private GridItemDecoration mItemDecoration; private View.OnTouchListener mTouchListener; private View.OnClickListener mIconClickListener; private View.OnLongClickListener mIconLongClickListener; - private int mAppsPerRow; - private boolean mIsRtl; + @Thunk int mAppsPerRow; + @Thunk boolean mIsRtl; private String mEmptySearchText; // Section drawing - private int mPaddingStart; - private int mStartMargin; - private Paint mSectionTextPaint; - private Rect mTmpBounds = new Rect(); + @Thunk int mPaddingStart; + @Thunk int mStartMargin; + @Thunk Paint mSectionTextPaint; + @Thunk Rect mTmpBounds = new Rect(); public AppsGridAdapter(Context context, AlphabeticalAppsList apps, int appsPerRow, diff --git a/src/com/android/launcher3/AutoInstallsLayout.java b/src/com/android/launcher3/AutoInstallsLayout.java index 908bd3d79..cbab08bec 100644 --- a/src/com/android/launcher3/AutoInstallsLayout.java +++ b/src/com/android/launcher3/AutoInstallsLayout.java @@ -37,6 +37,7 @@ import android.util.Patterns; import com.android.launcher3.LauncherProvider.SqlArguments; import com.android.launcher3.LauncherSettings.Favorites; +import com.android.launcher3.util.Thunk; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -114,8 +115,8 @@ public class AutoInstallsLayout { private static final String ACTION_APPWIDGET_DEFAULT_WORKSPACE_CONFIGURE = "com.android.launcher.action.APPWIDGET_DEFAULT_WORKSPACE_CONFIGURE"; - private final Context mContext; - private final AppWidgetHost mAppWidgetHost; + @Thunk final Context mContext; + @Thunk final AppWidgetHost mAppWidgetHost; protected final LayoutParserCallback mCallback; protected final PackageManager mPackageManager; @@ -125,7 +126,7 @@ public class AutoInstallsLayout { private final int mHotseatAllAppsRank; private final long[] mTemp = new long[2]; - private final ContentValues mValues; + @Thunk final ContentValues mValues; protected final String mRootTag; protected SQLiteDatabase mDb; @@ -648,7 +649,7 @@ public class AutoInstallsLayout { long insertAndCheck(SQLiteDatabase db, ContentValues values); } - private static void copyInteger(ContentValues from, ContentValues to, String key) { + @Thunk static void copyInteger(ContentValues from, ContentValues to, String key) { to.put(key, from.getAsInteger(key)); } } diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index c57090d7c..eb2aa547d 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -55,6 +55,7 @@ import android.view.animation.LayoutAnimationController; import com.android.launcher3.FolderIcon.FolderRingAnimator; import com.android.launcher3.LauncherAccessibilityDelegate.DragType; +import com.android.launcher3.util.Thunk; import java.util.ArrayList; import java.util.Arrays; @@ -68,18 +69,18 @@ public class CellLayout extends ViewGroup { static final String TAG = "CellLayout"; private Launcher mLauncher; - private int mCellWidth; - private int mCellHeight; + @Thunk int mCellWidth; + @Thunk int mCellHeight; private int mFixedCellWidth; private int mFixedCellHeight; - private int mCountX; - private int mCountY; + @Thunk int mCountX; + @Thunk int mCountY; private int mOriginalWidthGap; private int mOriginalHeightGap; - private int mWidthGap; - private int mHeightGap; + @Thunk int mWidthGap; + @Thunk int mHeightGap; private int mMaxGap; private boolean mDropPending = false; private boolean mIsDragTarget = true; @@ -87,7 +88,7 @@ public class CellLayout extends ViewGroup { // These are temporary variables to prevent having to allocate a new object just to // return an (x, y) value from helper functions. Do NOT use them to maintain other state. private final int[] mTmpXY = new int[2]; - private final int[] mTmpPoint = new int[2]; + @Thunk final int[] mTmpPoint = new int[2]; int[] mTempLocation = new int[2]; boolean[][] mOccupied; @@ -124,8 +125,8 @@ public class CellLayout extends ViewGroup { // These arrays are used to implement the drag visualization on x-large screens. // They are used as circular arrays, indexed by mDragOutlineCurrent. - private Rect[] mDragOutlines = new Rect[4]; - private float[] mDragOutlineAlphas = new float[mDragOutlines.length]; + @Thunk Rect[] mDragOutlines = new Rect[4]; + @Thunk float[] mDragOutlineAlphas = new float[mDragOutlines.length]; private InterruptibleInOutAnimator[] mDragOutlineAnims = new InterruptibleInOutAnimator[mDragOutlines.length]; @@ -135,7 +136,7 @@ public class CellLayout extends ViewGroup { private final FastBitmapView mTouchFeedbackView; - private HashMap mReorderAnimators = new + @Thunk HashMap mReorderAnimators = new HashMap(); private HashMap mShakeAnimators = new HashMap(); @@ -166,7 +167,7 @@ public class CellLayout extends ViewGroup { private static final float REORDER_PREVIEW_MAGNITUDE = 0.12f; private static final int REORDER_ANIMATION_DURATION = 150; - private float mReorderPreviewAnimationMagnitude; + @Thunk float mReorderPreviewAnimationMagnitude; private ArrayList mIntersectingViews = new ArrayList(); private Rect mOccupiedRect = new Rect(); @@ -184,8 +185,8 @@ public class CellLayout extends ViewGroup { private boolean mUseTouchHelper = false; OnClickListener mOldClickListener = null; OnClickListener mOldWorkspaceListener = null; - private int mDownX = 0; - private int mDownY = 0; + @Thunk int mDownX = 0; + @Thunk int mDownY = 0; public CellLayout(Context context) { this(context, null); @@ -2550,7 +2551,7 @@ public class CellLayout extends ViewGroup { } } - private void completeAnimationImmediately() { + @Thunk void completeAnimationImmediately() { if (a != null) { a.cancel(); } @@ -2871,7 +2872,7 @@ public class CellLayout extends ViewGroup { return mItemPlacementDirty; } - private class ItemConfiguration { + @Thunk class ItemConfiguration { HashMap map = new HashMap(); private HashMap savedMap = new HashMap(); ArrayList sortedViews = new ArrayList(); diff --git a/src/com/android/launcher3/CheckLongPressHelper.java b/src/com/android/launcher3/CheckLongPressHelper.java index 81149793d..10ca6a371 100644 --- a/src/com/android/launcher3/CheckLongPressHelper.java +++ b/src/com/android/launcher3/CheckLongPressHelper.java @@ -18,9 +18,11 @@ package com.android.launcher3; import android.view.View; +import com.android.launcher3.util.Thunk; + public class CheckLongPressHelper { - private View mView; - private boolean mHasPerformedLongPress; + @Thunk View mView; + @Thunk boolean mHasPerformedLongPress; private CheckForLongPress mPendingCheckForLongPress; class CheckForLongPress implements Runnable { diff --git a/src/com/android/launcher3/CommonAppTypeParser.java b/src/com/android/launcher3/CommonAppTypeParser.java index fe2fbd75f..31641799d 100644 --- a/src/com/android/launcher3/CommonAppTypeParser.java +++ b/src/com/android/launcher3/CommonAppTypeParser.java @@ -91,8 +91,8 @@ public class CommonAppTypeParser implements LayoutParserCallback { private class MyLayoutParser extends DefaultLayoutParser { public MyLayoutParser() { - super(mContext, null, CommonAppTypeParser.this, - mContext.getResources(), mResId, TAG_RESOLVE, 0); + super(CommonAppTypeParser.this.mContext, null, CommonAppTypeParser.this, + CommonAppTypeParser.this.mContext.getResources(), mResId, TAG_RESOLVE, 0); } @Override diff --git a/src/com/android/launcher3/DefaultLayoutParser.java b/src/com/android/launcher3/DefaultLayoutParser.java index 6c3008b6e..7b91c675b 100644 --- a/src/com/android/launcher3/DefaultLayoutParser.java +++ b/src/com/android/launcher3/DefaultLayoutParser.java @@ -13,6 +13,7 @@ import android.text.TextUtils; import android.util.Log; import com.android.launcher3.LauncherSettings.Favorites; +import com.android.launcher3.util.Thunk; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -57,7 +58,7 @@ public class DefaultLayoutParser extends AutoInstallsLayout { return getFolderElementsMap(mSourceRes); } - private HashMap getFolderElementsMap(Resources res) { + @Thunk HashMap getFolderElementsMap(Resources res) { HashMap parsers = new HashMap(); parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser()); parsers.put(TAG_SHORTCUT, new UriShortcutParser(res)); @@ -89,7 +90,7 @@ public class DefaultLayoutParser extends AutoInstallsLayout { /** * AppShortcutParser which also supports adding URI based intents */ - private class AppShortcutWithUriParser extends AppShortcutParser { + @Thunk class AppShortcutWithUriParser extends AppShortcutParser { @Override protected long invalidPackageOrClass(XmlResourceParser parser) { @@ -231,7 +232,7 @@ public class DefaultLayoutParser extends AutoInstallsLayout { /** * A parser which adds a folder whose contents come from partner apk. */ - private class PartnerFolderParser implements TagParser { + @Thunk class PartnerFolderParser implements TagParser { @Override public long parseAndAdd(XmlResourceParser parser) throws XmlPullParserException, @@ -257,7 +258,7 @@ public class DefaultLayoutParser extends AutoInstallsLayout { /** * An extension of FolderParser which allows adding items from a different xml. */ - private class MyFolderParser extends FolderParser { + @Thunk class MyFolderParser extends FolderParser { @Override public long parseAndAdd(XmlResourceParser parser) throws XmlPullParserException, diff --git a/src/com/android/launcher3/DeferredHandler.java b/src/com/android/launcher3/DeferredHandler.java index a2d121d63..eb7c26a28 100644 --- a/src/com/android/launcher3/DeferredHandler.java +++ b/src/com/android/launcher3/DeferredHandler.java @@ -22,6 +22,8 @@ import android.os.Message; import android.os.MessageQueue; import android.util.Pair; +import com.android.launcher3.util.Thunk; + import java.util.LinkedList; import java.util.ListIterator; @@ -33,11 +35,11 @@ import java.util.ListIterator; * This class is fifo. */ public class DeferredHandler { - private LinkedList> mQueue = new LinkedList>(); + @Thunk LinkedList> mQueue = new LinkedList>(); private MessageQueue mMessageQueue = Looper.myQueue(); private Impl mHandler = new Impl(); - private class Impl extends Handler implements MessageQueue.IdleHandler { + @Thunk class Impl extends Handler implements MessageQueue.IdleHandler { public void handleMessage(Message msg) { Pair p; Runnable r; diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java index 1ada1a912..1f0dad221 100644 --- a/src/com/android/launcher3/DeleteDropTarget.java +++ b/src/com/android/launcher3/DeleteDropTarget.java @@ -41,6 +41,7 @@ import android.view.animation.DecelerateInterpolator; import android.view.animation.LinearInterpolator; import com.android.launcher3.compat.UserHandleCompat; +import com.android.launcher3.util.Thunk; public class DeleteDropTarget extends ButtonDropTarget { private static int DELETE_ANIMATION_DURATION = 285; @@ -56,7 +57,7 @@ public class DeleteDropTarget extends ButtonDropTarget { private TransitionDrawable mRemoveDrawable; private TransitionDrawable mCurrentDrawable; - private boolean mWaitingForUninstall = false; + @Thunk boolean mWaitingForUninstall = false; public DeleteDropTarget(Context context, AttributeSet attrs) { this(context, attrs, 0); @@ -272,7 +273,7 @@ public class DeleteDropTarget extends ButtonDropTarget { return false; } - private void completeDrop(DragObject d) { + @Thunk void completeDrop(DragObject d) { ItemInfo item = (ItemInfo) d.dragInfo; boolean wasWaitingForUninstall = mWaitingForUninstall; mWaitingForUninstall = false; diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index bc9ef763d..b4d225e8b 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -38,6 +38,8 @@ import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.LinearLayout; +import com.android.launcher3.util.Thunk; + import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -449,7 +451,7 @@ public class DeviceProfile { updateAvailableDimensions(context); } - private float dist(PointF p0, PointF p1) { + @Thunk float dist(PointF p0, PointF p1) { return (float) Math.sqrt((p1.x - p0.x)*(p1.x-p0.x) + (p1.y-p0.y)*(p1.y-p0.y)); } diff --git a/src/com/android/launcher3/DragController.java b/src/com/android/launcher3/DragController.java index 8dc6e185c..eb1686182 100644 --- a/src/com/android/launcher3/DragController.java +++ b/src/com/android/launcher3/DragController.java @@ -34,6 +34,8 @@ import android.view.View; import android.view.ViewConfiguration; import android.view.inputmethod.InputMethodManager; +import com.android.launcher3.util.Thunk; + import java.util.ArrayList; import java.util.HashSet; @@ -63,7 +65,7 @@ public class DragController { private static final float MAX_FLING_DEGREES = 35f; - private Launcher mLauncher; + @Thunk Launcher mLauncher; private Handler mHandler; // temporaries to avoid gc thrash @@ -102,17 +104,17 @@ public class DragController { private View mMoveTarget; - private DragScroller mDragScroller; - private int mScrollState = SCROLL_OUTSIDE_ZONE; + @Thunk DragScroller mDragScroller; + @Thunk int mScrollState = SCROLL_OUTSIDE_ZONE; private ScrollRunnable mScrollRunnable = new ScrollRunnable(); private DropTarget mLastDropTarget; private InputMethodManager mInputMethodManager; - private int mLastTouch[] = new int[2]; - private long mLastTouchUpTime = -1; - private int mDistanceSinceScroll = 0; + @Thunk int mLastTouch[] = new int[2]; + @Thunk long mLastTouchUpTime = -1; + @Thunk int mDistanceSinceScroll = 0; private int mTmpPoint[] = new int[2]; private Rect mDragLayerRect = new Rect(); @@ -543,7 +545,7 @@ public class DragController { mLastDropTarget = dropTarget; } - private void checkScrollState(int x, int y) { + @Thunk void checkScrollState(int x, int y) { final int slop = ViewConfiguration.get(mLauncher).getScaledWindowTouchSlop(); final int delay = mDistanceSinceScroll < slop ? RESCROLL_DELAY : SCROLL_DELAY; final DragLayer dragLayer = mLauncher.getDragLayer(); diff --git a/src/com/android/launcher3/DragLayer.java b/src/com/android/launcher3/DragLayer.java index a352b7914..ab2e094cb 100644 --- a/src/com/android/launcher3/DragLayer.java +++ b/src/com/android/launcher3/DragLayer.java @@ -39,6 +39,7 @@ import android.widget.FrameLayout; import android.widget.TextView; import com.android.launcher3.InsettableFrameLayout.LayoutParams; +import com.android.launcher3.util.Thunk; import java.util.ArrayList; @@ -46,7 +47,7 @@ import java.util.ArrayList; * A ViewGroup that coordinates dragging across its descendants */ public class DragLayer extends InsettableFrameLayout { - private DragController mDragController; + @Thunk DragController mDragController; private int[] mTmpXY = new int[2]; private int mXDown, mYDown; @@ -61,9 +62,9 @@ public class DragLayer extends InsettableFrameLayout { private ValueAnimator mDropAnim = null; private ValueAnimator mFadeOutAnim = null; private TimeInterpolator mCubicEaseOutInterpolator = new DecelerateInterpolator(1.5f); - private DragView mDropView = null; - private int mAnchorViewInitialScrollX = 0; - private View mAnchorView = null; + @Thunk DragView mDropView = null; + @Thunk int mAnchorViewInitialScrollX = 0; + @Thunk View mAnchorView = null; private boolean mHoverPointClosesFolder = false; private Rect mHitRect = new Rect(); @@ -779,7 +780,7 @@ public class DragLayer extends InsettableFrameLayout { return mDropView; } - private void fadeOutDragView() { + @Thunk void fadeOutDragView() { mFadeOutAnim = new ValueAnimator(); mFadeOutAnim.setDuration(150); mFadeOutAnim.setFloatValues(0f, 1f); diff --git a/src/com/android/launcher3/DragView.java b/src/com/android/launcher3/DragView.java index 78d72b30f..b1a6266cc 100644 --- a/src/com/android/launcher3/DragView.java +++ b/src/com/android/launcher3/DragView.java @@ -29,8 +29,10 @@ import android.graphics.Rect; import android.view.View; import android.view.animation.DecelerateInterpolator; +import com.android.launcher3.util.Thunk; + public class DragView extends View { - private static float sDragAlpha = 1f; + @Thunk static float sDragAlpha = 1f; private Bitmap mBitmap; private Bitmap mCrossFadeBitmap; @@ -42,11 +44,11 @@ public class DragView extends View { private Rect mDragRegion = null; private DragLayer mDragLayer = null; private boolean mHasDrawn = false; - private float mCrossFadeProgress = 0f; + @Thunk float mCrossFadeProgress = 0f; ValueAnimator mAnim; - private float mOffsetX = 0.0f; - private float mOffsetY = 0.0f; + @Thunk float mOffsetX = 0.0f; + @Thunk float mOffsetY = 0.0f; private float mInitialScale = 1f; // The intrinsic icon scale factor is the scale factor for a drag icon over the workspace // size. This is ignored for non-icons. diff --git a/src/com/android/launcher3/FirstFrameAnimatorHelper.java b/src/com/android/launcher3/FirstFrameAnimatorHelper.java index 095c5631d..a51ddd4b8 100644 --- a/src/com/android/launcher3/FirstFrameAnimatorHelper.java +++ b/src/com/android/launcher3/FirstFrameAnimatorHelper.java @@ -24,6 +24,8 @@ import android.view.View; import android.view.ViewPropertyAnimator; import android.view.ViewTreeObserver; +import com.android.launcher3.util.Thunk; + /* * This is a helper class that listens to updates from the corresponding animation. * For the first two frames, it adjusts the current play time of the animation to @@ -41,7 +43,7 @@ public class FirstFrameAnimatorHelper extends AnimatorListenerAdapter private boolean mAdjustedSecondFrameTime; private static ViewTreeObserver.OnDrawListener sGlobalDrawListener; - private static long sGlobalFrameCounter; + @Thunk static long sGlobalFrameCounter; private static boolean sVisible; public FirstFrameAnimatorHelper(ValueAnimator animator, View target) { diff --git a/src/com/android/launcher3/FocusHelper.java b/src/com/android/launcher3/FocusHelper.java index fc6895201..327fac460 100644 --- a/src/com/android/launcher3/FocusHelper.java +++ b/src/com/android/launcher3/FocusHelper.java @@ -25,6 +25,7 @@ import android.view.ViewGroup; import com.android.launcher3.FocusHelper.PagedViewKeyListener; import com.android.launcher3.util.FocusLogic; +import com.android.launcher3.util.Thunk; /** * A keyboard listener we set on all the workspace icons. @@ -480,7 +481,7 @@ public class FocusHelper { /** * Returns the Viewgroup containing page contents for the page at the index specified. */ - private static ViewGroup getAppsCustomizePage(ViewGroup container, int index) { + @Thunk static ViewGroup getAppsCustomizePage(ViewGroup container, int index) { ViewGroup page = (ViewGroup) ((PagedView) container).getPageAt(index); if (page instanceof CellLayout) { // There are two layers, a PagedViewCellLayout and PagedViewCellLayoutChildren @@ -510,7 +511,7 @@ public class FocusHelper { /** * Helper method to be used for playing sound effects. */ - private static void playSoundEffect(int keyCode, View v) { + @Thunk static void playSoundEffect(int keyCode, View v) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_LEFT: v.playSoundEffect(SoundEffectConstants.NAVIGATION_LEFT); diff --git a/src/com/android/launcher3/FocusIndicatorView.java b/src/com/android/launcher3/FocusIndicatorView.java index af3b97634..ab21c90e6 100644 --- a/src/com/android/launcher3/FocusIndicatorView.java +++ b/src/com/android/launcher3/FocusIndicatorView.java @@ -24,6 +24,8 @@ import android.util.AttributeSet; import android.util.Pair; import android.view.View; +import com.android.launcher3.util.Thunk; + public class FocusIndicatorView extends View implements View.OnFocusChangeListener { // It can be any number >0. The view is resized using scaleX and scaleY. @@ -176,7 +178,7 @@ public class FocusIndicatorView extends View implements View.OnFocusChangeListen } } - private static final class ViewAnimState { + @Thunk static final class ViewAnimState { float x, y, scaleX, scaleY; } } diff --git a/src/com/android/launcher3/Folder.java b/src/com/android/launcher3/Folder.java index 5d8a865f7..23582cec8 100644 --- a/src/com/android/launcher3/Folder.java +++ b/src/com/android/launcher3/Folder.java @@ -51,6 +51,7 @@ import android.widget.TextView; import com.android.launcher3.FolderInfo.FolderListener; import com.android.launcher3.Workspace.ItemOperator; +import com.android.launcher3.util.Thunk; import java.util.ArrayList; import java.util.Collections; @@ -106,7 +107,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList private final Alarm mReorderAlarm = new Alarm(); private final Alarm mOnExitAlarm = new Alarm(); - private final ArrayList mItemsInReadingOrder = new ArrayList(); + @Thunk final ArrayList mItemsInReadingOrder = new ArrayList(); private final int mExpandDuration; private final int mMaterialExpandDuration; @@ -118,19 +119,19 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList protected DragController mDragController; protected FolderInfo mInfo; - private FolderIcon mFolderIcon; + @Thunk FolderIcon mFolderIcon; - private FolderContent mContent; - private View mContentWrapper; + @Thunk FolderContent mContent; + @Thunk View mContentWrapper; FolderEditText mFolderName; private View mFooter; private int mFooterHeight; // Cell ranks used for drag and drop - private int mTargetRank, mPrevTargetRank, mEmptyCellRank; + @Thunk int mTargetRank, mPrevTargetRank, mEmptyCellRank; - private int mState = STATE_NONE; + @Thunk int mState = STATE_NONE; private boolean mRearrangeOnClose = false; boolean mItemsInvalidated = false; private ShortcutInfo mCurrentDragInfo; @@ -141,26 +142,26 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList private boolean mDeleteFolderOnDropCompleted = false; private boolean mSuppressFolderDeletion = false; private boolean mItemAddedBackToSelfViaIcon = false; - private float mFolderIconPivotX; - private float mFolderIconPivotY; + @Thunk float mFolderIconPivotX; + @Thunk float mFolderIconPivotY; private boolean mIsEditingName = false; private boolean mDestroyed; - private Runnable mDeferredAction; + @Thunk Runnable mDeferredAction; private boolean mDeferDropAfterUninstall; private boolean mUninstallSuccessful; // Folder scrolling private int mScrollAreaOffset; private Alarm mOnScrollHintAlarm; - private Alarm mScrollPauseAlarm; + @Thunk Alarm mScrollPauseAlarm; // TODO: Use {@link #mContent} once {@link #ALLOW_FOLDER_SCROLL} is removed. - private FolderPagedView mPagedView; + @Thunk FolderPagedView mPagedView; - private int mScrollHintDir = DragController.SCROLL_NONE; - private int mCurrentScrollDir = DragController.SCROLL_NONE; + @Thunk int mScrollHintDir = DragController.SCROLL_NONE; + @Thunk int mCurrentScrollDir = DragController.SCROLL_NONE; /** * Used to inflate the Workspace from XML. @@ -556,7 +557,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } - private void sendCustomAccessibilityEvent(int type, String text) { + @Thunk void sendCustomAccessibilityEvent(int type, String text) { AccessibilityManager accessibilityManager = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (accessibilityManager.isEnabled()) { @@ -635,7 +636,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList (int) recycle[0] - getPaddingLeft(), (int) recycle[1] - getPaddingTop()); } - private void onDragOver(DragObject d, int reorderDelay) { + @Thunk void onDragOver(DragObject d, int reorderDelay) { if (ALLOW_FOLDER_SCROLL && mScrollPauseAlarm.alarmPending()) { return; } @@ -997,7 +998,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList return mContent.getItemCount(); } - private void onCloseComplete() { + @Thunk void onCloseComplete() { DragLayer parent = (DragLayer) getParent(); if (parent != null) { parent.removeView(this); @@ -1020,7 +1021,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList mSuppressFolderDeletion = false; } - private void replaceFolderWithFinalItem() { + @Thunk void replaceFolderWithFinalItem() { // Add the last remaining child to the workspace in place of the folder Runnable onCompleteRunnable = new Runnable() { @Override diff --git a/src/com/android/launcher3/FolderIcon.java b/src/com/android/launcher3/FolderIcon.java index dbfedaafa..f5836c295 100644 --- a/src/com/android/launcher3/FolderIcon.java +++ b/src/com/android/launcher3/FolderIcon.java @@ -43,6 +43,7 @@ import android.widget.TextView; import com.android.launcher3.DropTarget.DragObject; import com.android.launcher3.FolderInfo.FolderListener; +import com.android.launcher3.util.Thunk; import java.util.ArrayList; @@ -50,10 +51,10 @@ import java.util.ArrayList; * An icon that can appear on in the workspace representing an {@link UserFolder}. */ public class FolderIcon extends FrameLayout implements FolderListener { - private Launcher mLauncher; - private Folder mFolder; + @Thunk Launcher mLauncher; + @Thunk Folder mFolder; private FolderInfo mInfo; - private static boolean sStaticValuesDirty = true; + @Thunk static boolean sStaticValuesDirty = true; private CheckLongPressHelper mLongPressHelper; @@ -88,8 +89,8 @@ public class FolderIcon extends FrameLayout implements FolderListener { public static Drawable sSharedFolderLeaveBehind = null; - private ImageView mPreviewBackground; - private BubbleTextView mFolderName; + @Thunk ImageView mPreviewBackground; + @Thunk BubbleTextView mFolderName; FolderRingAnimator mFolderRingAnimator = null; @@ -109,11 +110,11 @@ public class FolderIcon extends FrameLayout implements FolderListener { private float mSlop; private PreviewItemDrawingParams mParams = new PreviewItemDrawingParams(0, 0, 0, 0); - private PreviewItemDrawingParams mAnimParams = new PreviewItemDrawingParams(0, 0, 0, 0); - private ArrayList mHiddenItems = new ArrayList(); + @Thunk PreviewItemDrawingParams mAnimParams = new PreviewItemDrawingParams(0, 0, 0, 0); + @Thunk ArrayList mHiddenItems = new ArrayList(); private Alarm mOpenAlarm = new Alarm(); - private ItemInfo mDragInfo; + @Thunk ItemInfo mDragInfo; public FolderIcon(Context context, AttributeSet attrs) { super(context, attrs); @@ -192,7 +193,7 @@ public class FolderIcon extends FrameLayout implements FolderListener { public static class FolderRingAnimator { public int mCellX; public int mCellY; - private CellLayout mCellLayout; + @Thunk CellLayout mCellLayout; public float mOuterRingSize; public float mInnerRingSize; public FolderIcon mFolderIcon = null; diff --git a/src/com/android/launcher3/FolderPagedView.java b/src/com/android/launcher3/FolderPagedView.java index 21158b450..9f3126c27 100644 --- a/src/com/android/launcher3/FolderPagedView.java +++ b/src/com/android/launcher3/FolderPagedView.java @@ -31,6 +31,7 @@ import android.widget.Switch; import com.android.launcher3.FocusHelper.PagedFolderKeyEventListener; import com.android.launcher3.PageIndicator.PageMarkerResources; import com.android.launcher3.Workspace.ItemOperator; +import com.android.launcher3.util.Thunk; import java.text.Collator; import java.util.ArrayList; @@ -59,7 +60,8 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent { private final LayoutInflater mInflater; private final IconCache mIconCache; - private final HashMap mPendingAnimations = new HashMap<>(); + + @Thunk final HashMap mPendingAnimations = new HashMap<>(); private final int mMaxCountX; private final int mMaxCountY; diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java index 39a80be78..3c7adbe8d 100644 --- a/src/com/android/launcher3/IconCache.java +++ b/src/com/android/launcher3/IconCache.java @@ -43,6 +43,7 @@ import com.android.launcher3.compat.LauncherAppsCompat; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.util.ComponentKey; +import com.android.launcher3.util.Thunk; import java.util.HashMap; import java.util.HashSet; @@ -66,7 +67,7 @@ public class IconCache { private static final int LOW_RES_SCALE_FACTOR = 8; - private static class CacheEntry { + @Thunk static class CacheEntry { public Bitmap icon; public CharSequence title; public CharSequence contentDescription; diff --git a/src/com/android/launcher3/InstallShortcutReceiver.java b/src/com/android/launcher3/InstallShortcutReceiver.java index 201531ea8..4349e16c1 100644 --- a/src/com/android/launcher3/InstallShortcutReceiver.java +++ b/src/com/android/launcher3/InstallShortcutReceiver.java @@ -32,6 +32,7 @@ import com.android.launcher3.compat.LauncherActivityInfoCompat; import com.android.launcher3.compat.LauncherAppsCompat; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.compat.UserManagerCompat; +import com.android.launcher3.util.Thunk; import org.json.JSONException; import org.json.JSONObject; @@ -240,7 +241,7 @@ public class InstallShortcutReceiver extends BroadcastReceiver { * Ensures that we have a valid, non-null name. If the provided name is null, we will return * the application name instead. */ - private static CharSequence ensureValidName(Context context, Intent intent, CharSequence name) { + @Thunk static CharSequence ensureValidName(Context context, Intent intent, CharSequence name) { if (name == null) { try { PackageManager pm = context.getPackageManager(); diff --git a/src/com/android/launcher3/InterruptibleInOutAnimator.java b/src/com/android/launcher3/InterruptibleInOutAnimator.java index 2898b347d..29df38bae 100644 --- a/src/com/android/launcher3/InterruptibleInOutAnimator.java +++ b/src/com/android/launcher3/InterruptibleInOutAnimator.java @@ -21,6 +21,8 @@ import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.view.View; +import com.android.launcher3.util.Thunk; + /** * A convenience class for two-way animations, e.g. a fadeIn/fadeOut animation. * With a regular ValueAnimator, if you call reverse to show the 'out' animation, you'll get @@ -43,7 +45,7 @@ public class InterruptibleInOutAnimator { private static final int OUT = 2; // TODO: This isn't really necessary, but is here to help diagnose a bug in the drag viz - private int mDirection = STOPPED; + @Thunk int mDirection = STOPPED; public InterruptibleInOutAnimator(View view, long duration, float fromValue, float toValue) { mAnimator = LauncherAnimUtils.ofFloat(view, fromValue, toValue).setDuration(duration); diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index cc63f3a4f..f2610d6e4 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -101,6 +101,7 @@ import com.android.launcher3.compat.PackageInstallerCompat; import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.compat.UserManagerCompat; +import com.android.launcher3.util.Thunk; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -209,9 +210,9 @@ public class Launcher extends Activity /** The different states that Launcher can be in. */ enum State { NONE, WORKSPACE, APPS, APPS_SPRING_LOADED, WIDGETS, WIDGETS_SPRING_LOADED }; - private State mState = State.WORKSPACE; - private AnimatorSet mStateAnimation; - private LauncherStateTransitionAnimation mStateTransitionAnimation; + @Thunk State mState = State.WORKSPACE; + @Thunk AnimatorSet mStateAnimation; + @Thunk LauncherStateTransitionAnimation mStateTransitionAnimation; private boolean mIsSafeModeEnabled; @@ -230,7 +231,7 @@ public class Launcher extends Activity // How long to wait before the new-shortcut animation automatically pans the workspace private static int NEW_APPS_PAGE_MOVE_DELAY = 500; private static int NEW_APPS_ANIMATION_INACTIVE_TIMEOUT_SECONDS = 5; - private static int NEW_APPS_ANIMATION_DELAY = 500; + @Thunk static int NEW_APPS_ANIMATION_DELAY = 500; private final BroadcastReceiver mCloseSystemDialogsReceiver = new CloseSystemDialogsIntentReceiver(); @@ -238,17 +239,17 @@ public class Launcher extends Activity private LayoutInflater mInflater; - private Workspace mWorkspace; + @Thunk Workspace mWorkspace; private View mLauncherView; private View mPageIndicators; - private DragLayer mDragLayer; + @Thunk DragLayer mDragLayer; private DragController mDragController; private View mWeightWatcher; private AppWidgetManagerCompat mAppWidgetManager; private LauncherAppWidgetHost mAppWidgetHost; - private ItemInfo mPendingAddInfo = new ItemInfo(); + @Thunk ItemInfo mPendingAddInfo = new ItemInfo(); private LauncherAppWidgetProviderInfo mPendingAddWidgetInfo; private int mPendingAddWidgetId = -1; @@ -262,8 +263,8 @@ public class Launcher extends Activity private View mAllAppsButton; private SearchDropTargetBar mSearchDropTargetBar; - private AppsContainerView mAppsView; - private AppsCustomizeTabHost mAppsCustomizeTabHost; + @Thunk AppsContainerView mAppsView; + @Thunk AppsCustomizeTabHost mAppsCustomizeTabHost; private AppsCustomizePagedView mAppsCustomizeContent; private boolean mAutoAdvanceRunning = false; private AppWidgetHostView mQsb; @@ -276,7 +277,7 @@ public class Launcher extends Activity private SpannableStringBuilder mDefaultKeySsb = null; - private boolean mWorkspaceLoading = true; + @Thunk boolean mWorkspaceLoading = true; private boolean mPaused = true; private boolean mRestoring; @@ -290,12 +291,12 @@ public class Launcher extends Activity private LauncherModel mModel; private IconCache mIconCache; - private boolean mUserPresent = true; + @Thunk boolean mUserPresent = true; private boolean mVisible = false; private boolean mHasFocus = false; private boolean mAttached = false; - private static LocaleConfiguration sLocaleConfiguration = null; + @Thunk static LocaleConfiguration sLocaleConfiguration = null; private static HashMap sFolders = new HashMap(); @@ -307,14 +308,14 @@ public class Launcher extends Activity private final int mAdvanceStagger = 250; private long mAutoAdvanceSentTime; private long mAutoAdvanceTimeLeft = -1; - private HashMap mWidgetsToAdvance = + @Thunk HashMap mWidgetsToAdvance = new HashMap(); // Determines how long to wait after a rotation before restoring the screen orientation to // match the sensor state. private final int mRestoreScreenOrientationDelay = 500; - private Drawable mWorkspaceBackgroundDrawable; + @Thunk Drawable mWorkspaceBackgroundDrawable; private final ArrayList mSynchronouslyBoundPages = new ArrayList(); private static final boolean DISABLE_SYNCHRONOUS_BINDING_CURRENT_PAGE = false; @@ -332,7 +333,7 @@ public class Launcher extends Activity // Holds the page that we need to animate to, and the icon views that we need to animate up // when we scroll to that page on resume. - private ImageView mFolderIconImageView; + @Thunk ImageView mFolderIconImageView; private Bitmap mFolderIconBitmap; private Canvas mFolderIconCanvas; private Rect mRectForFolderAnimation = new Rect(); @@ -361,7 +362,7 @@ public class Launcher extends Activity } } - private Runnable mBuildLayersRunnable = new Runnable() { + @Thunk Runnable mBuildLayersRunnable = new Runnable() { public void run() { if (mWorkspace != null) { mWorkspace.buildPageHardwareLayers(); @@ -371,7 +372,7 @@ public class Launcher extends Activity private static PendingAddArguments sPendingAddItem; - private static class PendingAddArguments { + @Thunk static class PendingAddArguments { int requestCode; Intent intent; long container; @@ -560,7 +561,7 @@ public class Launcher extends Activity } } - private void checkForLocaleChange() { + @Thunk void checkForLocaleChange() { if (sLocaleConfiguration == null) { new AsyncTask() { @Override @@ -609,13 +610,13 @@ public class Launcher extends Activity } } - private static class LocaleConfiguration { + @Thunk static class LocaleConfiguration { public String locale; public int mcc = -1; public int mnc = -1; } - private static void readConfiguration(Context context, LocaleConfiguration configuration) { + @Thunk static void readConfiguration(Context context, LocaleConfiguration configuration) { DataInputStream in = null; try { in = new DataInputStream(context.openFileInput(LauncherFiles.LAUNCHER_PREFERENCES)); @@ -637,7 +638,7 @@ public class Launcher extends Activity } } - private static void writeConfiguration(Context context, LocaleConfiguration configuration) { + @Thunk static void writeConfiguration(Context context, LocaleConfiguration configuration) { DataOutputStream out = null; try { out = new DataOutputStream(context.openFileOutput( @@ -914,7 +915,7 @@ public class Launcher extends Activity } } - private void completeTwoStageWidgetDrop(final int resultCode, final int appWidgetId) { + @Thunk void completeTwoStageWidgetDrop(final int resultCode, final int appWidgetId) { CellLayout cellLayout = (CellLayout) mWorkspace.getScreenWithId(mPendingAddInfo.screenId); Runnable onCompleteRunnable = null; @@ -1590,7 +1591,7 @@ public class Launcher extends Activity * * @param appWidgetId The app widget id */ - private void completeAddAppWidget(int appWidgetId, long container, long screenId, + @Thunk void completeAddAppWidget(int appWidgetId, long container, long screenId, AppWidgetHostView hostView, LauncherAppWidgetProviderInfo appWidgetInfo) { ItemInfo info = mPendingAddInfo; @@ -1765,14 +1766,14 @@ public class Launcher extends Activity } } - private void sendAdvanceMessage(long delay) { + @Thunk void sendAdvanceMessage(long delay) { mHandler.removeMessages(ADVANCE_MSG); Message msg = mHandler.obtainMessage(ADVANCE_MSG); mHandler.sendMessageDelayed(msg, delay); mAutoAdvanceSentTime = System.currentTimeMillis(); } - private void updateAutoAdvanceState() { + @Thunk void updateAutoAdvanceState() { boolean autoAdvanceRunning = mVisible && mUserPresent && !mWidgetsToAdvance.isEmpty(); if (autoAdvanceRunning != mAutoAdvanceRunning) { mAutoAdvanceRunning = autoAdvanceRunning; @@ -2482,7 +2483,7 @@ public class Launcher extends Activity /** * Re-listen when widgets are reset. */ - private void onAppWidgetReset() { + @Thunk void onAppWidgetReset() { if (mAppWidgetHost != null) { mAppWidgetHost.startListening(); } @@ -2680,7 +2681,7 @@ public class Launcher extends Activity } } - private void startAppShortcutOrInfoActivity(View v) { + @Thunk void startAppShortcutOrInfoActivity(View v) { Object tag = v.getTag(); final ShortcutInfo shortcut; final Intent intent; @@ -3507,7 +3508,7 @@ public class Launcher extends Activity /** * Receives notifications when system dialogs are to be closed. */ - private class CloseSystemDialogsIntentReceiver extends BroadcastReceiver { + @Thunk class CloseSystemDialogsIntentReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { closeSystemDialogs(); @@ -4245,7 +4246,7 @@ public class Launcher extends Activity /** * A number of packages were updated. */ - private ArrayList mWidgetsAndShortcuts; + @Thunk ArrayList mWidgetsAndShortcuts; private Runnable mBindPackagesUpdatedRunnable = new Runnable() { public void run() { bindPackagesUpdated(mWidgetsAndShortcuts); @@ -4470,7 +4471,7 @@ public class Launcher extends Activity editor.apply(); } - private void showFirstRunClings() { + @Thunk void showFirstRunClings() { // The two first run cling paths are mutually exclusive, if the launcher is preinstalled // on the device, then we always show the first run cling experience (or if there is no // launcher2). Otherwise, we prompt the user upon started for migration diff --git a/src/com/android/launcher3/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/LauncherAccessibilityDelegate.java index 0ae1c0e90..42f1914c6 100644 --- a/src/com/android/launcher3/LauncherAccessibilityDelegate.java +++ b/src/com/android/launcher3/LauncherAccessibilityDelegate.java @@ -15,6 +15,7 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import com.android.launcher3.LauncherModel.ScreenPosProvider; +import com.android.launcher3.util.Thunk; import java.util.ArrayList; @@ -43,7 +44,7 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate { private final SparseArray mActions = new SparseArray(); - private final Launcher mLauncher; + @Thunk final Launcher mLauncher; public LauncherAccessibilityDelegate(Launcher launcher) { mLauncher = launcher; @@ -139,11 +140,11 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate { return false; } - private void announceConfirmation(int resId) { + @Thunk void announceConfirmation(int resId) { announceConfirmation(mLauncher.getResources().getString(resId)); } - private void announceConfirmation(String confirmation) { + @Thunk void announceConfirmation(String confirmation) { mLauncher.getDragLayer().announceForAccessibility(confirmation); } diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java index d8896ccd2..d5d78e97d 100644 --- a/src/com/android/launcher3/LauncherAppState.java +++ b/src/com/android/launcher3/LauncherAppState.java @@ -38,6 +38,7 @@ import android.view.WindowManager; import com.android.launcher3.compat.LauncherAppsCompat; import com.android.launcher3.compat.PackageInstallerCompat; import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo; +import com.android.launcher3.util.Thunk; import java.lang.ref.WeakReference; import java.util.ArrayList; @@ -46,7 +47,7 @@ public class LauncherAppState implements DeviceProfile.DeviceProfileCallbacks { private final AppFilter mAppFilter; private final BuildInfo mBuildInfo; - private final LauncherModel mModel; + @Thunk final LauncherModel mModel; private final IconCache mIconCache; private final boolean mIsScreenLarge; diff --git a/src/com/android/launcher3/LauncherClings.java b/src/com/android/launcher3/LauncherClings.java index ef8e8abcf..2ce8b1c59 100644 --- a/src/com/android/launcher3/LauncherClings.java +++ b/src/com/android/launcher3/LauncherClings.java @@ -35,6 +35,8 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.accessibility.AccessibilityManager; +import com.android.launcher3.util.Thunk; + class LauncherClings implements OnClickListener { private static final String MIGRATION_CLING_DISMISSED_KEY = "cling_gel.migration.dismissed"; private static final String WORKSPACE_CLING_DISMISSED_KEY = "cling_gel.workspace.dismissed"; @@ -49,7 +51,7 @@ class LauncherClings implements OnClickListener { // New Secure Setting in L private static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints"; - private Launcher mLauncher; + @Thunk Launcher mLauncher; private LayoutInflater mInflater; /** Ctor */ @@ -174,7 +176,7 @@ class LauncherClings implements OnClickListener { }); } - private void dismissLongPressCling() { + @Thunk void dismissLongPressCling() { Runnable dismissCb = new Runnable() { public void run() { dismissCling(mLauncher.findViewById(R.id.longpress_cling), null, @@ -185,7 +187,7 @@ class LauncherClings implements OnClickListener { } /** Hides the specified Cling */ - private void dismissCling(final View cling, final Runnable postAnimationCb, + @Thunk void dismissCling(final View cling, final Runnable postAnimationCb, final String flag, int duration) { // To catch cases where siblings of top-level views are made invisible, just check whether // the cling is directly set to GONE before dismissing it. diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 135930146..8cedcc572 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -59,6 +59,7 @@ import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.util.ComponentKey; +import com.android.launcher3.util.Thunk; import java.lang.ref.WeakReference; import java.net.URISyntaxException; @@ -97,14 +98,14 @@ public class LauncherModel extends BroadcastReceiver private static final int ITEMS_CHUNK = 6; // batch size for the workspace icons private static final long INVALID_SCREEN_ID = -1L; - private final boolean mAppsCanBeOnRemoveableStorage; + @Thunk final boolean mAppsCanBeOnRemoveableStorage; private final boolean mOldContentProviderExists; - private final LauncherAppState mApp; - private final Object mLock = new Object(); - private DeferredHandler mHandler = new DeferredHandler(); - private LoaderTask mLoaderTask; - private boolean mIsLoaderTaskRunning; + @Thunk final LauncherAppState mApp; + @Thunk final Object mLock = new Object(); + @Thunk DeferredHandler mHandler = new DeferredHandler(); + @Thunk LoaderTask mLoaderTask; + @Thunk boolean mIsLoaderTaskRunning; /** * Maintain a set of packages per user, for which we added a shortcut on the workspace. @@ -118,17 +119,17 @@ public class LauncherModel extends BroadcastReceiver private static final String MIGRATE_AUTHORITY = "com.android.launcher2.settings"; - static final HandlerThread sWorkerThread = new HandlerThread("launcher-loader"); + @Thunk static final HandlerThread sWorkerThread = new HandlerThread("launcher-loader"); static { sWorkerThread.start(); } - private static final Handler sWorker = new Handler(sWorkerThread.getLooper()); + @Thunk static final Handler sWorker = new Handler(sWorkerThread.getLooper()); // We start off with everything not loaded. After that, we assume that // our monitoring of the package manager provides all updates and we never // need to do a requery. These are only ever touched from the loader thread. - private boolean mWorkspaceLoaded; - private boolean mAllAppsLoaded; + @Thunk boolean mWorkspaceLoaded; + @Thunk boolean mAllAppsLoaded; // When we are loading pages synchronously, we can't just post the binding of items on the side // pages as this delays the rotation process. Instead, we wait for a callback from the first @@ -136,7 +137,7 @@ public class LauncherModel extends BroadcastReceiver // a normal load, we also clear this set of Runnables. static final ArrayList mDeferredBindRunnables = new ArrayList(); - private WeakReference mCallbacks; + @Thunk WeakReference mCallbacks; // < only access in worker thread > AllAppsList mBgAllAppsList; @@ -175,12 +176,12 @@ public class LauncherModel extends BroadcastReceiver // - private IconCache mIconCache; + @Thunk IconCache mIconCache; protected int mPreviousConfigMcc; - private final LauncherAppsCompat mLauncherApps; - private final UserManagerCompat mUserManager; + @Thunk final LauncherAppsCompat mLauncherApps; + @Thunk final UserManagerCompat mUserManager; public interface Callbacks { public boolean setLoadOnResume(); @@ -258,10 +259,10 @@ public class LauncherModel extends BroadcastReceiver /** Runs the specified runnable immediately if called from the main thread, otherwise it is * posted on the main thread handler. */ - private void runOnMainThread(Runnable r) { + @Thunk void runOnMainThread(Runnable r) { runOnMainThread(r, 0); } - private void runOnMainThread(Runnable r, int type) { + @Thunk void runOnMainThread(Runnable r, int type) { if (sWorkerThread.getThreadId() == Process.myTid()) { // If we are on the worker thread, post onto the main handler mHandler.post(r); @@ -372,7 +373,7 @@ public class LauncherModel extends BroadcastReceiver * Find a position on the screen for the given size or adds a new screen. * @return screenId and the coordinates for the item. */ - private static Pair findSpaceForItem( + @Thunk static Pair findSpaceForItem( Context context, ScreenPosProvider preferredScreen, int fallbackStartScreen, @@ -1425,7 +1426,7 @@ public class LauncherModel extends BroadcastReceiver /** * Loads the workspace screen ids in an ordered list. */ - private static ArrayList loadWorkspaceScreensDb(Context context) { + @Thunk static ArrayList loadWorkspaceScreensDb(Context context) { final ContentResolver contentResolver = context.getContentResolver(); final Uri screensUri = LauncherSettings.WorkspaceScreens.CONTENT_URI; @@ -1471,9 +1472,9 @@ public class LauncherModel extends BroadcastReceiver private class LoaderTask implements Runnable { private Context mContext; private boolean mIsLaunching; - private boolean mIsLoadingAndBindingWorkspace; + @Thunk boolean mIsLoadingAndBindingWorkspace; private boolean mStopped; - private boolean mLoadAndBindStepFinished; + @Thunk boolean mLoadAndBindStepFinished; private int mFlags; LoaderTask(Context context, boolean isLaunching, int flags) { @@ -2904,7 +2905,7 @@ public class LauncherModel extends BroadcastReceiver sWorker.post(task); } - private class AppsAvailabilityCheck extends BroadcastReceiver { + @Thunk class AppsAvailabilityCheck extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { @@ -3331,7 +3332,7 @@ public class LauncherModel extends BroadcastReceiver return widgetsAndShortcuts; } - private static boolean isPackageDisabled(Context context, String packageName, + @Thunk static boolean isPackageDisabled(Context context, String packageName, UserHandleCompat user) { final LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(context); return !launcherApps.isPackageEnabledForProfile(packageName, user); @@ -3394,7 +3395,7 @@ public class LauncherModel extends BroadcastReceiver * Make an Intent object for a restored application or shortcut item that points * to the market page for the item. */ - private Intent getRestoredItemIntent(Cursor c, Context context, Intent intent) { + @Thunk Intent getRestoredItemIntent(Cursor c, Context context, Intent intent) { ComponentName componentName = intent.getComponent(); return getMarketIntent(componentName.getPackageName()); } @@ -3489,7 +3490,7 @@ public class LauncherModel extends BroadcastReceiver return new ArrayList(filtered); } - private ArrayList getItemInfoForComponentName(final ComponentName cname, + @Thunk ArrayList getItemInfoForComponentName(final ComponentName cname, final UserHandleCompat user) { ItemInfoFilter filter = new ItemInfoFilter() { @Override @@ -3507,7 +3508,7 @@ public class LauncherModel extends BroadcastReceiver /** * Make an ShortcutInfo object for a shortcut that isn't an application. */ - private ShortcutInfo getShortcutInfo(Cursor c, Context context, + @Thunk ShortcutInfo getShortcutInfo(Cursor c, Context context, int iconTypeIndex, int iconPackageIndex, int iconResourceIndex, int iconIndex, int titleIndex) { @@ -3611,7 +3612,7 @@ public class LauncherModel extends BroadcastReceiver * Return an existing FolderInfo object if we have encountered this ID previously, * or make a new one. */ - private static FolderInfo findOrMakeFolder(HashMap folders, long id) { + @Thunk static FolderInfo findOrMakeFolder(HashMap folders, long id) { // See if a placeholder was created for us already FolderInfo folderInfo = folders.get(id); if (folderInfo == null) { diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index 59c8d929a..6dd130505 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -46,6 +46,7 @@ import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.config.ProviderConfig; +import com.android.launcher3.util.Thunk; import java.io.File; import java.net.URISyntaxException; @@ -124,7 +125,7 @@ public class LauncherProvider extends ContentProvider { return result; } - private static long dbInsertAndCheck(DatabaseHelper helper, + @Thunk static long dbInsertAndCheck(DatabaseHelper helper, SQLiteDatabase db, String table, String nullColumnHack, ContentValues values) { if (values == null) { throw new RuntimeException("Error: attempting to insert null values"); @@ -233,7 +234,7 @@ public class LauncherProvider extends ContentProvider { } } - private static void addModifiedTime(ContentValues values) { + @Thunk static void addModifiedTime(ContentValues values) { values.put(LauncherSettings.ChangeLogColumns.MODIFIED, System.currentTimeMillis()); } @@ -342,7 +343,7 @@ public class LauncherProvider extends ContentProvider { private static class DatabaseHelper extends SQLiteOpenHelper implements LayoutParserCallback { private final Context mContext; - private final AppWidgetHost mAppWidgetHost; + @Thunk final AppWidgetHost mAppWidgetHost; private long mMaxItemId = -1; private long mMaxScreenId = -1; @@ -647,7 +648,7 @@ public class LauncherProvider extends ContentProvider { return true; } - private boolean updateFolderItemsRank(SQLiteDatabase db, boolean addRankColumn) { + @Thunk boolean updateFolderItemsRank(SQLiteDatabase db, boolean addRankColumn) { db.beginTransaction(); try { if (addRankColumn) { @@ -758,7 +759,7 @@ public class LauncherProvider extends ContentProvider { return getMaxId(db, TABLE_WORKSPACE_SCREENS); } - private boolean initializeExternalAdd(ContentValues values) { + @Thunk boolean initializeExternalAdd(ContentValues values) { // 1. Ensure that externally added items have a valid item id long id = generateNewItemId(); values.put(LauncherSettings.Favorites._ID, id); @@ -845,7 +846,7 @@ public class LauncherProvider extends ContentProvider { return rank; } - private int loadFavorites(SQLiteDatabase db, AutoInstallsLayout loader) { + @Thunk int loadFavorites(SQLiteDatabase db, AutoInstallsLayout loader) { ArrayList screenIds = new ArrayList(); // TODO: Use multiple loaders with fall-back and transaction. int count = loader.loadLayout(db, screenIds); @@ -872,7 +873,7 @@ public class LauncherProvider extends ContentProvider { return count; } - private void migrateLauncher2Shortcuts(SQLiteDatabase db, Uri uri) { + @Thunk void migrateLauncher2Shortcuts(SQLiteDatabase db, Uri uri) { final ContentResolver resolver = mContext.getContentResolver(); Cursor c = null; int count = 0; @@ -1171,7 +1172,7 @@ public class LauncherProvider extends ContentProvider { /** * @return the max _id in the provided table. */ - private static long getMaxId(SQLiteDatabase db, String table) { + @Thunk static long getMaxId(SQLiteDatabase db, String table) { Cursor c = db.rawQuery("SELECT MAX(_id) FROM " + table, null); // get the result long id = -1; diff --git a/src/com/android/launcher3/LauncherStateTransitionAnimation.java b/src/com/android/launcher3/LauncherStateTransitionAnimation.java index 484ed5c30..4a0aaf3f4 100644 --- a/src/com/android/launcher3/LauncherStateTransitionAnimation.java +++ b/src/com/android/launcher3/LauncherStateTransitionAnimation.java @@ -29,6 +29,8 @@ import android.view.ViewAnimationUtils; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; +import com.android.launcher3.util.Thunk; + import java.util.HashMap; /** @@ -112,9 +114,9 @@ public class LauncherStateTransitionAnimation { public static final int BUILD_AND_SET_LAYER = 1; public static final int SINGLE_FRAME_DELAY = 16; - private Launcher mLauncher; - private Callbacks mCb; - private AnimatorSet mStateAnimation; + @Thunk Launcher mLauncher; + @Thunk Callbacks mCb; + @Thunk AnimatorSet mStateAnimation; public LauncherStateTransitionAnimation(Launcher l, Callbacks cb) { mLauncher = l; diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 7d65f4686..e7049e2ac 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -51,6 +51,8 @@ import android.view.animation.DecelerateInterpolator; import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; +import com.android.launcher3.util.Thunk; + import java.util.ArrayList; interface Page { @@ -124,7 +126,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc protected LauncherScroller mScroller; private Interpolator mDefaultInterpolator; private VelocityTracker mVelocityTracker; - private int mPageSpacing = 0; + @Thunk int mPageSpacing = 0; private float mParentDownMotionX; private float mParentDownMotionY; @@ -207,8 +209,8 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc private boolean mWasInOverscroll = false; // Page Indicator - private int mPageIndicatorViewId; - private PageIndicator mPageIndicator; + @Thunk int mPageIndicatorViewId; + @Thunk PageIndicator mPageIndicator; private boolean mAllowPagedViewAnimations = true; // The viewport whether the pages are to be contained (the actual view may be larger than the @@ -227,7 +229,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc protected View mDragView; protected AnimatorSet mZoomInOutAnim; private Runnable mSidePageHoverRunnable; - private int mSidePageHoverIndex = -1; + @Thunk int mSidePageHoverIndex = -1; // This variable's scope is only for the duration of startReordering() and endReordering() private boolean mReorderingStarted = false; // This variable's scope is for the duration of startReordering() and after the zoomIn() @@ -246,14 +248,14 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc private Rect mAltTmpRect = new Rect(); // Fling to delete - private int FLING_TO_DELETE_FADE_OUT_DURATION = 350; + @Thunk int FLING_TO_DELETE_FADE_OUT_DURATION = 350; private float FLING_TO_DELETE_FRICTION = 0.035f; // The degrees specifies how much deviation from the up vector to still consider a fling "up" private float FLING_TO_DELETE_MAX_FLING_DEGREES = 65f; protected int mFlingToDeleteThresholdVelocity = -1400; // Drag to delete - private boolean mDeferringForDelete = false; - private int DELETE_SLIDE_IN_SIDE_PAGE_DURATION = 250; + @Thunk boolean mDeferringForDelete = false; + @Thunk int DELETE_SLIDE_IN_SIDE_PAGE_DURATION = 250; private int DRAG_TO_DELETE_FADE_OUT_DURATION = 350; // Drop to delete @@ -2356,7 +2358,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc super(superState); } - private SavedState(Parcel in) { + @Thunk SavedState(Parcel in) { super(in); currentPage = in.readInt(); } @@ -2514,7 +2516,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc invalidate(); } - private void onPostReorderingAnimationCompleted() { + @Thunk void onPostReorderingAnimationCompleted() { // Trigger the callback when reordering has settled --mPostReorderingPreZoomInRemainingAnimationCount; if (mPostReorderingPreZoomInRunnable != null && diff --git a/src/com/android/launcher3/WeightWatcher.java b/src/com/android/launcher3/WeightWatcher.java index 70b8afea8..75684797f 100644 --- a/src/com/android/launcher3/WeightWatcher.java +++ b/src/com/android/launcher3/WeightWatcher.java @@ -34,6 +34,8 @@ import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; +import com.android.launcher3.util.Thunk; + public class WeightWatcher extends LinearLayout { private static final int RAM_GRAPH_RSS_COLOR = 0xFF990000; private static final int RAM_GRAPH_PSS_COLOR = 0xFF99CC00; @@ -81,7 +83,7 @@ public class WeightWatcher extends LinearLayout { } } }; - private MemoryTracker mMemoryService; + @Thunk MemoryTracker mMemoryService; public WeightWatcher(Context context, AttributeSet attrs) { super(context, attrs); @@ -134,7 +136,7 @@ public class WeightWatcher extends LinearLayout { GraphView mRamGraph; TextView mText; int mPid; - private MemoryTracker.ProcessMemInfo mMemInfo; + @Thunk MemoryTracker.ProcessMemInfo mMemInfo; public ProcessWatcher(Context context) { this(context, null); diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java index 3d57acca4..0a5f0af4e 100644 --- a/src/com/android/launcher3/WidgetPreviewLoader.java +++ b/src/com/android/launcher3/WidgetPreviewLoader.java @@ -30,6 +30,7 @@ import android.os.Build; import android.util.Log; import com.android.launcher3.compat.AppWidgetManagerCompat; +import com.android.launcher3.util.Thunk; import java.io.ByteArrayOutputStream; import java.io.File; @@ -50,7 +51,7 @@ public class WidgetPreviewLoader { private static final String ANDROID_INCREMENTAL_VERSION_NAME_KEY = "android.incremental.version"; private static final float WIDGET_PREVIEW_ICON_PADDING_PERCENTAGE = 0.25f; - private static final HashSet sInvalidPackages = new HashSet(); + @Thunk static final HashSet sInvalidPackages = new HashSet(); private final HashMap> mLoadedPreviews = new HashMap<>(); private final ArrayList> mUnusedBitmaps = new ArrayList<>(); @@ -275,7 +276,7 @@ public class WidgetPreviewLoader { } } - private void writeToDb(Object o, Bitmap preview) { + @Thunk void writeToDb(Object o, Bitmap preview) { String name = getObjectName(o); SQLiteDatabase db = mDb.getWritableDatabase(); ContentValues values = new ContentValues(); @@ -590,7 +591,7 @@ public class WidgetPreviewLoader { /** * Dumps all files that are open in this process without allocating a file descriptor. */ - private static void dumpOpenFiles() { + @Thunk static void dumpOpenFiles() { try { Log.i(TAG, "DUMP OF OPEN FILES (sample rate: 1 every " + SAMPLE_RATE + "):"); final String TYPE_APK = "apk"; diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 7df801da5..37265fe47 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -69,6 +69,7 @@ import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.compat.PackageInstallerCompat; import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo; import com.android.launcher3.compat.UserHandleCompat; +import com.android.launcher3.util.Thunk; import java.util.ArrayList; import java.util.HashMap; @@ -117,24 +118,24 @@ public class Workspace extends SmoothPagedView private long mCustomContentShowTime = -1; private LayoutTransition mLayoutTransition; - private final WallpaperManager mWallpaperManager; - private IBinder mWindowToken; + @Thunk final WallpaperManager mWallpaperManager; + @Thunk IBinder mWindowToken; private int mOriginalDefaultPage; private int mDefaultPage; private ShortcutAndWidgetContainer mDragSourceInternal; - private static boolean sAccessibilityEnabled; + @Thunk static boolean sAccessibilityEnabled; // The screen id used for the empty screen always present to the right. final static long EXTRA_EMPTY_SCREEN_ID = -201; private final static long CUSTOM_CONTENT_SCREEN_ID = -301; - private HashMap mWorkspaceScreens = new HashMap(); - private ArrayList mScreenOrder = new ArrayList(); + @Thunk HashMap mWorkspaceScreens = new HashMap(); + @Thunk ArrayList mScreenOrder = new ArrayList(); - private Runnable mRemoveEmptyScreenRunnable; - private boolean mDeferRemoveExtraEmptyScreen = false; + @Thunk Runnable mRemoveEmptyScreenRunnable; + @Thunk boolean mDeferRemoveExtraEmptyScreen = false; /** * CellInfo for the cell that is currently being dragged @@ -144,7 +145,7 @@ public class Workspace extends SmoothPagedView /** * Target drop area calculated during last acceptDrop call. */ - private int[] mTargetCell = new int[2]; + @Thunk int[] mTargetCell = new int[2]; private int mDragOverX = -1; private int mDragOverY = -1; @@ -159,7 +160,7 @@ public class Workspace extends SmoothPagedView /** * The CellLayout that is currently being dragged over */ - private CellLayout mDragTargetLayout = null; + @Thunk CellLayout mDragTargetLayout = null; /** * The CellLayout that we will show as glowing */ @@ -170,16 +171,16 @@ public class Workspace extends SmoothPagedView */ private CellLayout mDropToLayout = null; - private Launcher mLauncher; - private IconCache mIconCache; - private DragController mDragController; + @Thunk Launcher mLauncher; + @Thunk IconCache mIconCache; + @Thunk DragController mDragController; // These are temporary variables to prevent having to allocate a new object just to // return an (x, y) value from helper functions. Do NOT use them to maintain other state. private int[] mTempCell = new int[2]; private int[] mTempPt = new int[2]; private int[] mTempEstimate = new int[2]; - private float[] mDragViewVisualCenter = new float[2]; + @Thunk float[] mDragViewVisualCenter = new float[2]; private float[] mTempCellLayoutCenterCoordinates = new float[2]; private Matrix mTempInverseMatrix = new Matrix(); @@ -204,7 +205,7 @@ public class Workspace extends SmoothPagedView private boolean mInScrollArea = false; private HolographicOutlineHelper mOutlineHelper; - private Bitmap mDragOutline = null; + @Thunk Bitmap mDragOutline = null; private static final Rect sTempRect = new Rect(); private final int[] mTempXY = new int[2]; private int[] mTempVisiblePagesRange = new int[2]; @@ -213,11 +214,11 @@ public class Workspace extends SmoothPagedView private boolean mWorkspaceFadeInAdjacentScreens; WallpaperOffsetInterpolator mWallpaperOffset; - private boolean mWallpaperIsLiveWallpaper; - private int mNumPagesForWallpaperParallax; - private float mLastSetWallpaperOffsetSteps = 0; + @Thunk boolean mWallpaperIsLiveWallpaper; + @Thunk int mNumPagesForWallpaperParallax; + @Thunk float mLastSetWallpaperOffsetSteps = 0; - private Runnable mDelayedResizeRunnable; + @Thunk Runnable mDelayedResizeRunnable; private Runnable mDelayedSnapToPageRunnable; private Point mDisplaySize = new Point(); @@ -226,7 +227,7 @@ public class Workspace extends SmoothPagedView public static final int REORDER_TIMEOUT = 350; private final Alarm mFolderCreationAlarm = new Alarm(); private final Alarm mReorderAlarm = new Alarm(); - private FolderRingAnimator mDragFolderRingAnimator = null; + @Thunk FolderRingAnimator mDragFolderRingAnimator = null; private FolderIcon mDragOverFolderIcon = null; private boolean mCreateUserFolderOnDrop = false; private boolean mAddToExistingFolderOnDrop = false; @@ -255,8 +256,8 @@ public class Workspace extends SmoothPagedView private static final int DRAG_MODE_ADD_TO_FOLDER = 2; private static final int DRAG_MODE_REORDER = 3; private int mDragMode = DRAG_MODE_NONE; - private int mLastReorderX = -1; - private int mLastReorderY = -1; + @Thunk int mLastReorderX = -1; + @Thunk int mLastReorderY = -1; private SparseArray mSavedStates; private final ArrayList mRestoredPages = new ArrayList(); @@ -268,17 +269,17 @@ public class Workspace extends SmoothPagedView private float mCurrentScale; private float mNewScale; - private float[] mOldBackgroundAlphas; + @Thunk float[] mOldBackgroundAlphas; private float[] mOldAlphas; - private float[] mNewBackgroundAlphas; + @Thunk float[] mNewBackgroundAlphas; private float[] mNewAlphas; private int mLastChildCount = -1; private float mTransitionProgress; - private Animator mStateAnimator = null; + @Thunk Animator mStateAnimator = null; float mOverScrollEffect = 0f; - private Runnable mDeferredAction; + @Thunk Runnable mDeferredAction; private boolean mDeferDropAfterUninstall; private boolean mUninstallSuccessful; @@ -1882,7 +1883,7 @@ public class Workspace extends SmoothPagedView } } - private void updateChildrenLayersEnabled(boolean force) { + @Thunk void updateChildrenLayersEnabled(boolean force) { boolean small = mState == State.OVERVIEW || mIsSwitchingState; boolean enableChildrenLayers = force || small || mAnimatingViewIntoPlace || isPageMoving(); @@ -2571,7 +2572,7 @@ public class Workspace extends SmoothPagedView } } - private void onTransitionEnd() { + @Thunk void onTransitionEnd() { mIsSwitchingState = false; updateChildrenLayersEnabled(false); showCustomContentIfNecessary(); @@ -4186,7 +4187,7 @@ public class Workspace extends SmoothPagedView * * pixelX and pixelY should be in the coordinate system of layout */ - private int[] findNearestArea(int pixelX, int pixelY, + @Thunk int[] findNearestArea(int pixelX, int pixelY, int spanX, int spanY, CellLayout layout, int[] recycle) { return layout.findNearestArea( pixelX, pixelY, spanX, spanY, recycle); diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatV16.java b/src/com/android/launcher3/compat/LauncherAppsCompatV16.java index e47b9a58d..ac3d252f5 100644 --- a/src/com/android/launcher3/compat/LauncherAppsCompatV16.java +++ b/src/com/android/launcher3/compat/LauncherAppsCompatV16.java @@ -31,6 +31,8 @@ import android.os.Build; import android.os.Bundle; import android.provider.Settings; +import com.android.launcher3.util.Thunk; + import java.util.ArrayList; import java.util.List; @@ -139,11 +141,11 @@ public class LauncherAppsCompatV16 extends LauncherAppsCompat { mContext.registerReceiver(mPackageMonitor, filter); } - private synchronized List getCallbacks() { + @Thunk synchronized List getCallbacks() { return new ArrayList(mCallbacks); } - private class PackageMonitor extends BroadcastReceiver { + @Thunk class PackageMonitor extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); final UserHandleCompat user = UserHandleCompat.myUserHandle(); diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java index 601f04cea..d6d4b8287 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java @@ -26,6 +26,7 @@ import android.util.SparseArray; import com.android.launcher3.IconCache; import com.android.launcher3.LauncherAppState; +import com.android.launcher3.util.Thunk; import java.util.ArrayList; import java.util.HashSet; @@ -36,10 +37,10 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat implements private static final boolean DEBUG = false; // All updates to these sets must happen on the {@link #mWorker} thread. - private final SparseArray mPendingReplays = new SparseArray(); - private final HashSet mPendingBadgeUpdates = new HashSet(); + @Thunk final SparseArray mPendingReplays = new SparseArray(); + @Thunk final HashSet mPendingBadgeUpdates = new HashSet(); - private final PackageInstaller mInstaller; + @Thunk final PackageInstaller mInstaller; private final IconCache mCache; private final Handler mWorker; @@ -82,7 +83,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat implements return activePackages; } - private void addSessionInfoToCahce(SessionInfo info, UserHandleCompat user) { + @Thunk void addSessionInfoToCahce(SessionInfo info, UserHandleCompat user) { String packageName = info.getAppPackageName(); if (packageName != null) { mCache.cachePackageInstallInfo(packageName, user, info.getAppIcon(), @@ -123,7 +124,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat implements replayUpdates(null); } - private void replayUpdates(PackageInstallInfo newInfo) { + @Thunk void replayUpdates(PackageInstallInfo newInfo) { if (DEBUG) Log.d(TAG, "updates resumed"); if (!mResumed || !mBound) { // Not yet ready diff --git a/src/com/android/launcher3/util/Thunk.java b/src/com/android/launcher3/util/Thunk.java new file mode 100644 index 000000000..de350b068 --- /dev/null +++ b/src/com/android/launcher3/util/Thunk.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2015 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.launcher3.util; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Indicates that the given field or method has package visibility solely to prevent the creation + * of a synthetic method. In practice, you should treat this field/method as if it were private. + *

+ * + * When a private method is called from an inner class, the Java compiler generates a simple + * package private shim method that the class generated from the inner class can call. This results + * in unnecessary bloat and runtime method call overhead. It also gets us closer to the dex method + * count limit. + *

+ * + * If you'd like to see warnings for these synthetic methods in eclipse, turn on: + * Window > Preferences > Java > Compiler > Errors/Warnings > "Access to a non-accessible member + * of an enclosing type". + *

+ * + */ +@Retention(RetentionPolicy.SOURCE) +@Target({ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.TYPE}) +public @interface Thunk { } \ No newline at end of file -- cgit v1.2.3