Snap for 7867461 from d71a4288cf to sc-v2-release
Change-Id: Ib2fa5d45e182e5371ab58ce2b014682ee959f7e2
This commit is contained in:
@@ -121,10 +121,9 @@ public class NavbarButtonsViewController {
|
||||
/**
|
||||
* Initializes the controller
|
||||
*/
|
||||
public void init(TaskbarControllers controllers, TaskbarSharedState sharedState) {
|
||||
public void init(TaskbarControllers controllers) {
|
||||
mControllers = controllers;
|
||||
mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize;
|
||||
parseSystemUiFlags(sharedState.sysuiStateFlags);
|
||||
mNavButtonTranslationYMultiplier.value = 1;
|
||||
|
||||
mA11yLongClickListener = view -> {
|
||||
@@ -290,12 +289,15 @@ public class NavbarButtonsViewController {
|
||||
}
|
||||
}
|
||||
|
||||
public void updateStateForSysuiFlags(int systemUiStateFlags) {
|
||||
public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) {
|
||||
if (systemUiStateFlags == mSysuiStateFlags) {
|
||||
return;
|
||||
}
|
||||
parseSystemUiFlags(systemUiStateFlags);
|
||||
applyState();
|
||||
if (skipAnim) {
|
||||
mPropertyHolders.forEach(StatePropertyHolder::endAnimation);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -70,7 +70,6 @@ import com.android.launcher3.util.ViewCache;
|
||||
import com.android.launcher3.views.ActivityContext;
|
||||
import com.android.quickstep.SysUINavigationMode;
|
||||
import com.android.quickstep.SysUINavigationMode.Mode;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
@@ -158,7 +157,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
|
||||
new TaskbarKeyguardController(this),
|
||||
new StashedHandleViewController(this, stashedHandleView),
|
||||
new TaskbarStashController(this),
|
||||
new TaskbarEduController(this));
|
||||
new TaskbarEduController(this),
|
||||
new TaskbarAutohideSuspendController(this));
|
||||
}
|
||||
|
||||
public void init(TaskbarSharedState sharedState) {
|
||||
@@ -191,6 +191,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
|
||||
|
||||
// Initialize controllers after all are constructed.
|
||||
mControllers.init(sharedState);
|
||||
updateSysuiStateFlags(sharedState.sysuiStateFlags, true /* fromInit */);
|
||||
|
||||
mWindowManager.addView(mDragLayer, mWindowLayoutParams);
|
||||
}
|
||||
@@ -325,26 +326,28 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
|
||||
mWindowManager.removeViewImmediate(mDragLayer);
|
||||
}
|
||||
|
||||
public void updateSysuiStateFlags(int systemUiStateFlags) {
|
||||
mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags);
|
||||
public void updateSysuiStateFlags(int systemUiStateFlags, boolean fromInit) {
|
||||
mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags,
|
||||
fromInit);
|
||||
mControllers.taskbarViewController.setImeIsVisible(
|
||||
mControllers.navbarButtonsViewController.isImeVisible());
|
||||
int shadeExpandedFlags = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED
|
||||
| SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
|
||||
onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0);
|
||||
onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0, fromInit);
|
||||
mControllers.taskbarViewController.setRecentsButtonDisabled(
|
||||
mControllers.navbarButtonsViewController.isRecentsDisabled());
|
||||
mControllers.stashedHandleViewController.setIsHomeButtonDisabled(
|
||||
mControllers.navbarButtonsViewController.isHomeDisabled());
|
||||
mControllers.taskbarKeyguardController.updateStateForSysuiFlags(systemUiStateFlags);
|
||||
mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags);
|
||||
mControllers.taskbarScrimViewController.updateStateForSysuiFlags(systemUiStateFlags);
|
||||
mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags, fromInit);
|
||||
mControllers.taskbarScrimViewController.updateStateForSysuiFlags(systemUiStateFlags,
|
||||
fromInit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides the taskbar icons and background when the notication shade is expanded.
|
||||
*/
|
||||
private void onNotificationShadeExpandChanged(boolean isExpanded) {
|
||||
private void onNotificationShadeExpandChanged(boolean isExpanded, boolean skipAnim) {
|
||||
float alpha = isExpanded ? 0 : 1;
|
||||
AnimatorSet anim = new AnimatorSet();
|
||||
anim.play(mControllers.taskbarViewController.getTaskbarIconAlpha().getProperty(
|
||||
@@ -354,6 +357,9 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
|
||||
.animateToValue(alpha));
|
||||
}
|
||||
anim.start();
|
||||
if (skipAnim) {
|
||||
anim.end();
|
||||
}
|
||||
}
|
||||
|
||||
public void onRotationProposal(int rotation, boolean isValid) {
|
||||
@@ -375,7 +381,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
|
||||
* Updates the TaskbarContainer to MATCH_PARENT vs original Taskbar size.
|
||||
*/
|
||||
public void setTaskbarWindowFullscreen(boolean fullscreen) {
|
||||
SystemUiProxy.INSTANCE.getNoCreate().notifyTaskbarAutohideSuspend(fullscreen);
|
||||
mControllers.taskbarAutohideSuspendController.updateFlag(
|
||||
TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN, fullscreen);
|
||||
mIsFullscreen = fullscreen;
|
||||
setTaskbarWindowHeight(fullscreen ? MATCH_PARENT : mLastRequestedNonFullscreenHeight);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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.taskbar;
|
||||
|
||||
import androidx.annotation.IntDef;
|
||||
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
/**
|
||||
* Normally Taskbar will auto-hide when entering immersive (fullscreen) apps. This controller allows
|
||||
* us to suspend that behavior in certain cases (e.g. opening a Folder or dragging an icon).
|
||||
*/
|
||||
public class TaskbarAutohideSuspendController {
|
||||
|
||||
public static final int FLAG_AUTOHIDE_SUSPEND_FULLSCREEN = 1 << 0;
|
||||
public static final int FLAG_AUTOHIDE_SUSPEND_DRAGGING = 1 << 1;
|
||||
@IntDef(flag = true, value = {
|
||||
FLAG_AUTOHIDE_SUSPEND_FULLSCREEN,
|
||||
FLAG_AUTOHIDE_SUSPEND_DRAGGING,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface AutohideSuspendFlag {}
|
||||
|
||||
private final SystemUiProxy mSystemUiProxy;
|
||||
|
||||
private @AutohideSuspendFlag int mAutohideSuspendFlags = 0;
|
||||
|
||||
public TaskbarAutohideSuspendController(TaskbarActivityContext activity) {
|
||||
mSystemUiProxy = SystemUiProxy.INSTANCE.get(activity);
|
||||
}
|
||||
|
||||
public void onDestroy() {
|
||||
mSystemUiProxy.notifyTaskbarAutohideSuspend(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds or removes the given flag, then notifies system UI proxy whether to suspend auto-hide.
|
||||
*/
|
||||
public void updateFlag(@AutohideSuspendFlag int flag, boolean enabled) {
|
||||
if (enabled) {
|
||||
mAutohideSuspendFlags |= flag;
|
||||
} else {
|
||||
mAutohideSuspendFlags &= ~flag;
|
||||
}
|
||||
mSystemUiProxy.notifyTaskbarAutohideSuspend(mAutohideSuspendFlags != 0);
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ public class TaskbarControllers {
|
||||
public final StashedHandleViewController stashedHandleViewController;
|
||||
public final TaskbarStashController taskbarStashController;
|
||||
public final TaskbarEduController taskbarEduController;
|
||||
public final TaskbarAutohideSuspendController taskbarAutohideSuspendController;
|
||||
|
||||
/** Do not store this controller, as it may change at runtime. */
|
||||
@NonNull public TaskbarUIController uiController = TaskbarUIController.DEFAULT;
|
||||
@@ -53,7 +54,8 @@ public class TaskbarControllers {
|
||||
TaskbarKeyguardController taskbarKeyguardController,
|
||||
StashedHandleViewController stashedHandleViewController,
|
||||
TaskbarStashController taskbarStashController,
|
||||
TaskbarEduController taskbarEduController) {
|
||||
TaskbarEduController taskbarEduController,
|
||||
TaskbarAutohideSuspendController taskbarAutoHideSuspendController) {
|
||||
this.taskbarActivityContext = taskbarActivityContext;
|
||||
this.taskbarDragController = taskbarDragController;
|
||||
this.navButtonController = navButtonController;
|
||||
@@ -67,6 +69,7 @@ public class TaskbarControllers {
|
||||
this.stashedHandleViewController = stashedHandleViewController;
|
||||
this.taskbarStashController = taskbarStashController;
|
||||
this.taskbarEduController = taskbarEduController;
|
||||
this.taskbarAutohideSuspendController = taskbarAutoHideSuspendController;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -75,7 +78,8 @@ public class TaskbarControllers {
|
||||
* in constructors for now, as some controllers may still be waiting for init().
|
||||
*/
|
||||
public void init(TaskbarSharedState sharedState) {
|
||||
navbarButtonsViewController.init(this, sharedState);
|
||||
taskbarDragController.init(this);
|
||||
navbarButtonsViewController.init(this);
|
||||
if (taskbarActivityContext.isThreeButtonNav()) {
|
||||
rotationButtonController.init();
|
||||
}
|
||||
@@ -101,5 +105,6 @@ public class TaskbarControllers {
|
||||
taskbarUnfoldAnimationController.onDestroy();
|
||||
taskbarViewController.onDestroy();
|
||||
stashedHandleViewController.onDestroy();
|
||||
taskbarAutohideSuspendController.onDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,6 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipDescription;
|
||||
import android.content.Intent;
|
||||
@@ -49,7 +46,6 @@ import com.android.launcher3.dragndrop.DragOptions;
|
||||
import com.android.launcher3.dragndrop.DragView;
|
||||
import com.android.launcher3.dragndrop.DraggableView;
|
||||
import com.android.launcher3.graphics.DragPreviewProvider;
|
||||
import com.android.launcher3.icons.FastBitmapDrawable;
|
||||
import com.android.launcher3.logging.StatsLogManager;
|
||||
import com.android.launcher3.model.data.ItemInfo;
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||
@@ -65,6 +61,9 @@ public class TaskbarDragController extends DragController<TaskbarActivityContext
|
||||
private final int mDragIconSize;
|
||||
private final int[] mTempXY = new int[2];
|
||||
|
||||
// Initialized in init.
|
||||
TaskbarControllers mControllers;
|
||||
|
||||
// Where the initial touch was relative to the dragged icon.
|
||||
private int mRegistrationX;
|
||||
private int mRegistrationY;
|
||||
@@ -77,6 +76,10 @@ public class TaskbarDragController extends DragController<TaskbarActivityContext
|
||||
mDragIconSize = resources.getDimensionPixelSize(R.dimen.taskbar_icon_drag_icon_size);
|
||||
}
|
||||
|
||||
public void init(TaskbarControllers controllers) {
|
||||
mControllers = controllers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to start a system drag and drop operation for the given View, using its tag to
|
||||
* generate the ClipDescription and Intent.
|
||||
@@ -90,19 +93,17 @@ public class TaskbarDragController extends DragController<TaskbarActivityContext
|
||||
BubbleTextView btv = (BubbleTextView) view;
|
||||
|
||||
mActivity.setTaskbarWindowFullscreen(true);
|
||||
view.post(() -> {
|
||||
btv.post(() -> {
|
||||
startInternalDrag(btv);
|
||||
btv.setVisibility(INVISIBLE);
|
||||
btv.getIcon().setIsDisabled(true);
|
||||
mControllers.taskbarAutohideSuspendController.updateFlag(
|
||||
TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING, true);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
private void startInternalDrag(BubbleTextView btv) {
|
||||
float iconScale = 1f;
|
||||
Drawable icon = btv.getIcon();
|
||||
if (icon instanceof FastBitmapDrawable) {
|
||||
iconScale = ((FastBitmapDrawable) icon).getAnimatedScale();
|
||||
}
|
||||
float iconScale = btv.getIcon().getAnimatedScale();
|
||||
|
||||
// Clear the pressed state if necessary
|
||||
btv.clearFocus();
|
||||
@@ -239,16 +240,17 @@ public class TaskbarDragController extends DragController<TaskbarActivityContext
|
||||
shadowSize.set(mDragIconSize, mDragIconSize);
|
||||
// The registration point was taken before the icon scaled to mDragIconSize, so
|
||||
// offset the registration to where the touch is on the new size.
|
||||
int offset = (mDragIconSize - btv.getIconSize()) / 2;
|
||||
shadowTouchPoint.set(mRegistrationX + offset, mRegistrationY + offset);
|
||||
int offsetX = (mDragIconSize - mDragObject.dragView.getDragRegionWidth()) / 2;
|
||||
int offsetY = (mDragIconSize - mDragObject.dragView.getDragRegionHeight()) / 2;
|
||||
shadowTouchPoint.set(mRegistrationX + offsetX, mRegistrationY + offsetY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDrawShadow(Canvas canvas) {
|
||||
canvas.save();
|
||||
float scale = (float) mDragIconSize / btv.getIconSize();
|
||||
float scale = mDragObject.dragView.getScaleX();
|
||||
canvas.scale(scale, scale);
|
||||
btv.getIcon().draw(canvas);
|
||||
mDragObject.dragView.draw(canvas);
|
||||
canvas.restore();
|
||||
}
|
||||
};
|
||||
@@ -330,7 +332,9 @@ public class TaskbarDragController extends DragController<TaskbarActivityContext
|
||||
|
||||
private void maybeOnDragEnd() {
|
||||
if (!isDragging()) {
|
||||
((View) mDragObject.originalView).setVisibility(VISIBLE);
|
||||
((BubbleTextView) mDragObject.originalView).getIcon().setIsDisabled(false);
|
||||
mControllers.taskbarAutohideSuspendController.updateFlag(
|
||||
TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
int configDiff = mOldConfig.diff(newConfig);
|
||||
int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS
|
||||
| ActivityInfo.CONFIG_LAYOUT_DIRECTION;
|
||||
| ActivityInfo.CONFIG_LAYOUT_DIRECTION | ActivityInfo.CONFIG_UI_MODE;
|
||||
if ((configDiff & configsRequiringRecreate) != 0) {
|
||||
// Color has changed, recreate taskbar to reload background color & icons.
|
||||
recreateTaskbar();
|
||||
@@ -231,7 +231,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
|
||||
public void onSystemUiFlagsChanged(int systemUiStateFlags) {
|
||||
mSharedState.sysuiStateFlags = systemUiStateFlags;
|
||||
if (mTaskbarActivityContext != null) {
|
||||
mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags);
|
||||
mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags, false /* fromInit */);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ public class TaskbarScrimViewController {
|
||||
/**
|
||||
* Updates the scrim state based on the flags.
|
||||
*/
|
||||
public void updateStateForSysuiFlags(int stateFlags) {
|
||||
public void updateStateForSysuiFlags(int stateFlags, boolean skipAnim) {
|
||||
final boolean bubblesExpanded = (stateFlags & SYSUI_STATE_BUBBLES_EXPANDED) != 0;
|
||||
final boolean manageMenuExpanded =
|
||||
(stateFlags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0;
|
||||
@@ -73,15 +73,18 @@ public class TaskbarScrimViewController {
|
||||
// what the total transparency would be.
|
||||
? (SCRIM_ALPHA + (SCRIM_ALPHA * (1 - SCRIM_ALPHA)))
|
||||
: showScrim ? SCRIM_ALPHA : 0;
|
||||
showScrim(showScrim, scrimAlpha);
|
||||
showScrim(showScrim, scrimAlpha, skipAnim);
|
||||
}
|
||||
|
||||
private void showScrim(boolean showScrim, float alpha) {
|
||||
private void showScrim(boolean showScrim, float alpha, boolean skipAnim) {
|
||||
mScrimView.setOnClickListener(showScrim ? (view) -> onClick() : null);
|
||||
mScrimView.setClickable(showScrim);
|
||||
ObjectAnimator anim = mScrimAlpha.animateToValue(showScrim ? alpha : 0);
|
||||
anim.setInterpolator(showScrim ? SCRIM_ALPHA_IN : SCRIM_ALPHA_OUT);
|
||||
anim.start();
|
||||
if (skipAnim) {
|
||||
anim.end();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateScrimAlpha() {
|
||||
|
||||
@@ -408,10 +408,10 @@ public class TaskbarStashController {
|
||||
}
|
||||
|
||||
/** Called when some system ui state has changed. (See SYSUI_STATE_... in QuickstepContract) */
|
||||
public void updateStateForSysuiFlags(int systemUiStateFlags) {
|
||||
public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) {
|
||||
updateStateForFlag(FLAG_STASHED_IN_APP_PINNED,
|
||||
hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING));
|
||||
applyState();
|
||||
applyState(skipAnim ? 0 : TASKBAR_STASH_DURATION);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -274,7 +274,6 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
mFeedbackView.findViewById(R.id.gesture_tutorial_fragment_feedback_subtitle);
|
||||
subtitle.setText(subtitleResId);
|
||||
if (isGestureSuccessful) {
|
||||
hideCloseButton();
|
||||
if (mTutorialFragment.isAtFinalStep()) {
|
||||
showActionButton();
|
||||
}
|
||||
@@ -402,6 +401,7 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
void transitToController() {
|
||||
hideFeedback();
|
||||
hideActionButton();
|
||||
updateCloseButton();
|
||||
updateSubtext();
|
||||
updateDrawables();
|
||||
updateLayout();
|
||||
@@ -412,26 +412,21 @@ abstract class TutorialController implements BackGestureAttemptCallback,
|
||||
}
|
||||
}
|
||||
|
||||
void hideCloseButton() {
|
||||
mCloseButton.setVisibility(GONE);
|
||||
}
|
||||
|
||||
void showCloseButton() {
|
||||
mCloseButton.setVisibility(View.VISIBLE);
|
||||
void updateCloseButton() {
|
||||
mCloseButton.setTextAppearance(Utilities.isDarkTheme(mContext)
|
||||
? R.style.TextAppearance_GestureTutorial_Feedback_Subtext
|
||||
: R.style.TextAppearance_GestureTutorial_Feedback_Subtext_Dark);
|
||||
}
|
||||
|
||||
void hideActionButton() {
|
||||
showCloseButton();
|
||||
mCloseButton.setVisibility(View.VISIBLE);
|
||||
// Invisible to maintain the layout.
|
||||
mActionButton.setVisibility(View.INVISIBLE);
|
||||
mActionButton.setOnClickListener(null);
|
||||
}
|
||||
|
||||
void showActionButton() {
|
||||
hideCloseButton();
|
||||
mCloseButton.setVisibility(GONE);
|
||||
mActionButton.setVisibility(View.VISIBLE);
|
||||
mActionButton.setOnClickListener(this::onActionButtonClicked);
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
|
||||
|
||||
@Override
|
||||
public void onScrollChanged() {
|
||||
RecentsView rv = mTaskView.getRecentsView();
|
||||
RecentsView rv = mActivity.getOverviewPanel();
|
||||
setPosition(mTaskView.getX() - rv.getScrollX(), mTaskView.getY() - rv.getScrollY(),
|
||||
rv.getOverScrollShift());
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import java.util.ArrayList;
|
||||
@ProvidesInterface(action = OneSearch.ACTION, version = OneSearch.VERSION)
|
||||
public interface OneSearch extends Plugin {
|
||||
String ACTION = "com.android.systemui.action.PLUGIN_ONE_SEARCH";
|
||||
int VERSION = 3;
|
||||
int VERSION = 4;
|
||||
|
||||
/**
|
||||
* Get the content provider warmed up.
|
||||
@@ -40,4 +40,7 @@ public interface OneSearch extends Plugin {
|
||||
* @param query The query to get the search suggests for.
|
||||
*/
|
||||
ArrayList<Parcelable> getSuggests(Parcelable query);
|
||||
|
||||
/** Get image bitmap with the URL. */
|
||||
Parcelable getImageBitmap(String imageUrl);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user