diff options
Diffstat (limited to 'src/com/android')
37 files changed, 316 insertions, 222 deletions
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<AsyncTaskPageData> mDeferredSyncWidgetPageItems = new ArrayList<AsyncTaskPageData>(); - private ArrayList<Runnable> mDeferredPrepareLoadWidgetPreviewsTasks = + @Thunk ArrayList<Runnable> mDeferredPrepareLoadWidgetPreviewsTasks = new ArrayList<Runnable>(); 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<Object> widgets, + @Thunk void prepareLoadWidgetPreviewsTask(int page, ArrayList<Object> 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<AppsGridAdapter.ViewHolder> { } 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<CellLayout.LayoutParams, Animator> mReorderAnimators = new + @Thunk HashMap<CellLayout.LayoutParams, Animator> mReorderAnimators = new HashMap<CellLayout.LayoutParams, Animator>(); private HashMap<View, ReorderPreviewAnimation> mShakeAnimators = new HashMap<View, ReorderPreviewAnimation>(); @@ -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<View> mIntersectingViews = new ArrayList<View>(); 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<View, CellAndSpan> map = new HashMap<View, CellAndSpan>(); private HashMap<View, CellAndSpan> savedMap = new HashMap<View, CellAndSpan>(); ArrayList<View> sortedViews = new ArrayList<View>(); 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<String, TagParser> getFolderElementsMap(Resources res) { + @Thunk HashMap<String, TagParser> getFolderElementsMap(Resources res) { HashMap<String, TagParser> parsers = new HashMap<String, TagParser>(); 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<Pair<Runnable, Integer>> mQueue = new LinkedList<Pair<Runnable, Integer>>(); + @Thunk LinkedList<Pair<Runnable, Integer>> mQueue = new LinkedList<Pair<Runnable, Integer>>(); 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<Runnable, Integer> 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<View> mItemsInReadingOrder = new ArrayList<View>(); + @Thunk final ArrayList<View> mItemsInReadingOrder = new ArrayList<View>(); 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<ShortcutInfo> mHiddenItems = new ArrayList<ShortcutInfo>(); + @Thunk PreviewItemDrawingParams mAnimParams = new PreviewItemDrawingParams(0, 0, 0, 0); + @Thunk ArrayList<ShortcutInfo> mHiddenItems = new ArrayList<ShortcutInfo>(); 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<View, Runnable> mPendingAnimations = new HashMap<>(); + + @Thunk final HashMap<View, Runnable> 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<Long, FolderInfo> sFolders = new HashMap<Long, FolderInfo>(); @@ -307,14 +308,14 @@ public class Launcher extends Activity private final int mAdvanceStagger = 250; private long mAutoAdvanceSentTime; private long mAutoAdvanceTimeLeft = -1; - private HashMap<View, AppWidgetProviderInfo> mWidgetsToAdvance = + @Thunk HashMap<View, AppWidgetProviderInfo> mWidgetsToAdvance = new HashMap<View, AppWidgetProviderInfo>(); // 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<Integer> mSynchronouslyBoundPages = new ArrayList<Integer>(); 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<Void, Void, LocaleConfiguration>() { @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<Object> mWidgetsAndShortcuts; + @Thunk ArrayList<Object> 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<AccessibilityAction> mActions = new SparseArray<AccessibilityAction>(); - 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<Runnable> mDeferredBindRunnables = new ArrayList<Runnable>(); - private WeakReference<Callbacks> mCallbacks; + @Thunk WeakReference<Callbacks> mCallbacks; // < only access in worker thread > AllAppsList mBgAllAppsList; @@ -175,12 +176,12 @@ public class LauncherModel extends BroadcastReceiver // </ only access in worker thread > - 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<Long, int[]> findSpaceForItem( + @Thunk static Pair<Long, int[]> 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<Long> loadWorkspaceScreensDb(Context context) { + @Thunk static ArrayList<Long> 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<ItemInfo>(filtered); } - private ArrayList<ItemInfo> getItemInfoForComponentName(final ComponentName cname, + @Thunk ArrayList<ItemInfo> 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<Long, FolderInfo> folders, long id) { + @Thunk static FolderInfo findOrMakeFolder(HashMap<Long, FolderInfo> 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<Long> screenIds = new ArrayList<Long>(); // 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<String> sInvalidPackages = new HashSet<String>(); + @Thunk static final HashSet<String> sInvalidPackages = new HashSet<String>(); private final HashMap<String, WeakReference<Bitmap>> mLoadedPreviews = new HashMap<>(); private final ArrayList<SoftReference<Bitmap>> 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<Long, CellLayout> mWorkspaceScreens = new HashMap<Long, CellLayout>(); - private ArrayList<Long> mScreenOrder = new ArrayList<Long>(); + @Thunk HashMap<Long, CellLayout> mWorkspaceScreens = new HashMap<Long, CellLayout>(); + @Thunk ArrayList<Long> mScreenOrder = new ArrayList<Long>(); - 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<Parcelable> mSavedStates; private final ArrayList<Integer> mRestoredPages = new ArrayList<Integer>(); @@ -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<OnAppsChangedCallbackCompat> getCallbacks() { + @Thunk synchronized List<OnAppsChangedCallbackCompat> getCallbacks() { return new ArrayList<OnAppsChangedCallbackCompat>(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<SessionInfo> mPendingReplays = new SparseArray<SessionInfo>(); - private final HashSet<String> mPendingBadgeUpdates = new HashSet<String>(); + @Thunk final SparseArray<SessionInfo> mPendingReplays = new SparseArray<SessionInfo>(); + @Thunk final HashSet<String> mPendingBadgeUpdates = new HashSet<String>(); - 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. + * <p> + * + * 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. + * <p> + * + * 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". + * <p> + * + */ +@Retention(RetentionPolicy.SOURCE) +@Target({ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.TYPE}) +public @interface Thunk { }
\ No newline at end of file |